:root{--bg:#fff;--surface:#f6f8fa;--text:#1f2328;--muted:#59636e;--border:#d1d9e0;--accent:#2563eb;--accent-soft:#e8f0fe;--code-bg:#f6f8fa;--max:760px}@media (prefers-color-scheme:dark){:root{--bg:#0d1117;--surface:#151b23;--text:#e6edf3;--muted:#9198a1;--border:#2a313c;--accent:#4c8dff;--accent-soft:#14233f;--code-bg:#151b23}}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--bg);color:var(--text);flex-direction:column;min-height:100vh;margin:0;font:17px/1.7 Inter,system-ui,-apple-system,Segoe UI,sans-serif;display:flex}.wrap{max-width:var(--max);margin:0 auto;padding:0 20px}main.wrap{flex:1;width:100%;padding-top:48px;padding-bottom:72px}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}.site-header{border-bottom:1px solid var(--border);background:color-mix(in srgb, var(--bg) 88%, transparent);backdrop-filter:blur(8px);z-index:10;width:100%;position:sticky;top:0}.header-inner{justify-content:space-between;align-items:center;height:60px;display:flex}.brand{color:var(--text);align-items:center;gap:10px;font-weight:600;display:flex}.brand:hover{text-decoration:none}.brand-mark{background:var(--accent);color:#fff;letter-spacing:.5px;border-radius:8px;padding:4px 7px;font-size:13px;font-weight:700}.nav{gap:22px;display:flex}.nav a{color:var(--muted);font-size:15px;font-weight:500}.nav a.active,.nav a:hover{color:var(--text);text-decoration:none}.site-footer{border-top:1px solid var(--border);width:100%;color:var(--muted);font-size:14px}.footer-inner{flex-wrap:wrap;justify-content:space-between;gap:12px;padding-top:24px;padding-bottom:24px;display:flex}.footer-inner .links{gap:16px;display:flex}.footer-inner a{color:var(--muted)}.hero{margin-bottom:56px}.hero .eyebrow{color:var(--accent);letter-spacing:.06em;text-transform:uppercase;margin:0 0 12px;font-size:14px;font-weight:600}.hero h1{letter-spacing:-.02em;margin:0 0 18px;font-size:clamp(32px,6vw,46px);line-height:1.15}.hero p.lead{color:var(--muted);margin:0 0 24px;font-size:19px}.cta{flex-wrap:wrap;gap:12px;display:flex}.btn{border:1px solid var(--border);color:var(--text);border-radius:8px;padding:9px 18px;font-size:15px;font-weight:600;display:inline-block}.btn:hover{border-color:var(--accent);text-decoration:none}.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}h2.section{text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin:56px 0 18px;font-size:14px;font-weight:600}.cards{grid-template-columns:repeat(2,1fr);gap:14px;display:grid}.card{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:18px}.card .num{color:var(--accent);font-size:26px;font-weight:700;line-height:1.2}.card h3{margin:6px 0 4px;font-size:16px}.card p{color:var(--muted);margin:0;font-size:15px;line-height:1.55}.post-list{margin:0;padding:0;list-style:none}.post-list li{border-bottom:1px solid var(--border)}.post-list li:last-child{border-bottom:0}.post-list a{color:var(--text);padding:16px 0;display:block}.post-list a:hover{text-decoration:none}.post-list a:hover .pl-title{color:var(--accent)}.pl-title{font-size:18px;font-weight:600;line-height:1.4;display:block}.pl-meta{color:var(--muted);margin-top:2px;font-size:14px;display:block}.pl-excerpt{color:var(--muted);margin-top:6px;font-size:15px;line-height:1.55;display:block}.year{color:var(--muted);margin:36px 0 4px;font-size:15px;font-weight:600}.post-header{margin-bottom:32px}.back{color:var(--muted);font-size:14px}.post-header h1{letter-spacing:-.015em;margin:12px 0 10px;font-size:clamp(28px,5vw,38px);line-height:1.2}.meta{color:var(--muted);margin:0;font-size:15px}.badge{background:var(--surface);border:1px solid var(--border);border-radius:999px;margin-left:8px;padding:2px 8px;font-size:12px}.tags{flex-wrap:wrap;gap:6px;margin:12px 0 0;display:flex}.tag{background:var(--accent-soft);color:var(--accent);border-radius:999px;padding:2px 10px;font-size:13px}.prose h1{letter-spacing:-.015em;font-size:clamp(28px,5vw,38px);line-height:1.2}.prose h2{letter-spacing:-.01em;margin-top:40px;font-size:24px}.prose h3{margin-top:28px;font-size:19px}.prose img{border-radius:8px;max-width:100%;height:auto}.prose blockquote{border-left:3px solid var(--accent);color:var(--muted);margin:20px 0;padding:4px 18px}.prose table{border-collapse:collapse;width:100%;font-size:15px;display:block;overflow-x:auto}.prose th,.prose td{border:1px solid var(--border);text-align:left;padding:6px 10px}code{background:var(--code-bg);border:1px solid var(--border);border-radius:5px;padding:1px 5px;font-family:JetBrains Mono,ui-monospace,monospace;font-size:.86em}pre{background:var(--code-bg);border:1px solid var(--border);border-radius:10px;padding:16px;line-height:1.5;overflow-x:auto}pre code{background:0 0;border:0;padding:0;font-size:14px}.timeline{padding:0;list-style:none}.timeline>li{border-left:2px solid var(--border);padding:0 0 22px 20px;position:relative}.timeline>li:before{content:"";background:var(--accent);border-radius:50%;width:10px;height:10px;position:absolute;top:9px;left:-6px}.timeline .when{color:var(--muted);font-size:14px}.timeline ul{margin:6px 0 0;padding-left:18px}@media (width<=520px){.cards{grid-template-columns:1fr}body{font-size:16px}.nav{gap:16px}.brand-name{display:none}}.astro-code{border:1px solid var(--border)}@media (prefers-color-scheme:dark){.astro-code,.astro-code span{color:var(--shiki-dark)!important;background-color:var(--shiki-dark-bg)!important}}.journey{gap:0;margin:0;padding:0;list-style:none;display:grid}.journey li{border-bottom:1px solid var(--border);grid-template-columns:92px 1fr;gap:16px;padding:14px 0;display:grid}.journey li:last-child{border-bottom:0}.journey .yr{color:var(--accent);font-variant-numeric:tabular-nums;font-size:15px;font-weight:600}.journey .what{font-weight:600}.journey .detail{color:var(--muted);margin-top:2px;font-size:15px;line-height:1.55;display:block}.hero .place{color:var(--muted);align-items:center;gap:8px;margin:0 0 20px;font-size:15px;display:inline-flex}.now-updated{color:var(--muted);font-size:14px}.avatar{object-fit:cover;border:3px solid var(--surface);width:112px;height:112px;box-shadow:0 0 0 1px var(--border);border-radius:50%;margin:0 0 22px;display:block}.prose img.about-avatar{border-radius:50%;width:160px;height:160px}a.card-link{color:var(--text);display:block}a.card-link:hover{border-color:var(--accent);text-decoration:none}.card-link h3{word-break:break-word}.proj-status{color:var(--accent);background:var(--accent-soft);border-radius:999px;padding:1px 9px;font-size:12px;font-weight:600;display:inline-block}
