:root{--bg:#fbfaf7;--fg:#1d2327;--muted:#5f6b73;--line:#e4e1da;--accent:#1f6f78;--card:#fff;--code-bg:#f1efe9}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#14181b;--fg:#e6e8ea;--muted:#9aa5ad;--line:#2a3237;--accent:#5fb7c1;--card:#1b2125;--code-bg:#20272c}}:root[data-theme=dark]{--bg:#14181b;--fg:#e6e8ea;--muted:#9aa5ad;--line:#2a3237;--accent:#5fb7c1;--card:#1b2125;--code-bg:#20272c}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--bg);color:var(--fg);margin:0;font-family:system-ui,-apple-system,Segoe UI,Noto Sans TC,Microsoft JhengHei,sans-serif;font-size:17px;line-height:1.8}a{color:var(--accent);text-underline-offset:3px}main,.site-header,.site-footer{max-width:720px;margin:0 auto;padding:0 16px}main{min-height:60vh;padding-bottom:48px}.site-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 24px;padding-top:28px;padding-bottom:28px;display:flex}.brand-row{align-items:center;gap:10px;display:flex}.divider{color:var(--line)}.lang-switch{color:var(--muted);font-size:.9rem;text-decoration:none}.lang-switch:hover{color:var(--accent)}.theme-toggle{width:32px;height:32px;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:6px;justify-content:center;align-items:center;padding:0;display:inline-flex}.theme-toggle:hover{color:var(--accent);background:var(--code-bg)}.theme-toggle .icon-sun{display:none}:root[data-theme=dark] .theme-toggle .icon-sun{display:block}:root[data-theme=dark] .theme-toggle .icon-moon{display:none}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .theme-toggle .icon-sun{display:block}:root:not([data-theme=light]) .theme-toggle .icon-moon{display:none}}.brand{color:var(--fg);font-size:1.15rem;font-weight:700;text-decoration:none}.brand span{color:var(--muted);margin-left:4px;font-size:.9rem;font-weight:400}.site-header nav{gap:20px;display:flex}.site-header nav a{color:var(--muted);text-decoration:none}.site-header nav a:hover,.site-header nav a[aria-current]{color:var(--accent)}.site-footer{border-top:1px solid var(--line);color:var(--muted);padding-top:20px;padding-bottom:40px;font-size:.85rem}.site-footer p{margin:4px 0}h1{margin:.4em 0 .3em;font-size:1.9rem;line-height:1.35}h2{margin:2em 0 .6em;font-size:1.35rem}h3{margin:1.6em 0 .5em;font-size:1.1rem}.lead{color:var(--muted);font-size:1.05rem}img{border-radius:6px;max-width:100%;height:auto}code{background:var(--code-bg);border-radius:4px;padding:.1em .35em;font-size:.9em}pre{background:var(--code-bg);border-radius:8px;padding:14px 16px;line-height:1.5;overflow-x:auto}pre code{background:0 0;padding:0}blockquote{border-left:3px solid var(--accent);color:var(--muted);margin:1em 0;padding:.2em 1em}table{border-collapse:collapse;width:100%;display:block;overflow-x:auto}th,td{border:1px solid var(--line);text-align:left;padding:6px 10px}.post-list{margin:0;padding:0;list-style:none}.post-list li{border-bottom:1px solid var(--line);padding:16px 0}.post-list a.title{color:var(--fg);font-size:1.08rem;font-weight:600;text-decoration:none}.post-list a.title:hover{color:var(--accent)}.post-list p{color:var(--muted);margin:4px 0 0;font-size:.95rem}.meta{color:var(--muted);flex-wrap:wrap;gap:10px;font-size:.85rem;display:flex}.chip{border:1px solid var(--line);color:var(--muted);border-radius:999px;padding:0 10px;font-size:.8rem;text-decoration:none;display:inline-block}a.chip:hover,a.chip[aria-current]{border-color:var(--accent);color:var(--accent)}.chips{flex-wrap:wrap;gap:8px;margin:12px 0 8px;display:flex}.cv-section{margin-top:2em}.cv-item{grid-template-columns:110px 1fr;gap:4px 16px;padding:6px 0;display:grid}.cv-item .when{color:var(--muted);font-size:.9rem}.cv-item .what a{word-break:break-word}.cv-head{margin-bottom:1em}.cv-head p{margin:2px 0}.cv-sub{color:var(--muted);margin:1.2em 0 .2em;font-size:.95rem;font-weight:600}@media (width<=520px){.cv-item{grid-template-columns:1fr}}.todo{color:#5c4a00;background:#fff3c4;border-radius:3px;padding:0 .3em}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .todo{color:#ffe9a3;background:#4a3f12}}:root[data-theme=dark] .todo{color:#ffe9a3;background:#4a3f12}
