:root{--bg:#111010;--bg-soft:#191817;--bg-card:#1c1b1a;--fg:#f5f5f4;--fg-muted:#a8a29e;--fg-dim:#6f6a66;--line:#ffffff17;--line-strong:#ffffff29;--accent:#85b7eb;--accent-soft:#85b7eb24;--radius:14px;--radius-sm:10px;--ease:cubic-bezier(.23, 1, .32, 1);--wrap:720px;--wrap-wide:960px;--font-sans:ui-sans-serif, system-ui, -apple-system, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;--font-mono:ui-monospace, SFMono-Regular, Menlo, Consolas, monospace}:root[data-theme=light]{--bg:#faf8f5;--bg-soft:#f2efea;--bg-card:#fff;--fg:#1b1a18;--fg-muted:#5c5650;--fg-dim:#8b847c;--line:#0000001a;--line-strong:#0003;--accent:#1f5fa0;--accent-soft:#1f5fa01a}:root[data-theme=light] .art{filter:drop-shadow(0 0 .6px #00000073)}:root[data-theme=light] .bend:before{opacity:.5}:root[data-theme=light] .dock{box-shadow:0 8px 26px #00000021}html{color-scheme:dark}:root[data-theme=light]{color-scheme:light}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--bg);color:var(--fg);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;padding-bottom:calc(84px + env(safe-area-inset-bottom,0px));margin:0;font-size:16px;line-height:1.75;overflow-x:hidden}a{color:inherit;text-decoration:none}a:hover{color:var(--accent)}img{max-width:100%;height:auto;display:block}button{font:inherit}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:6px}.wrap{width:100%;max-width:var(--wrap);margin:0 auto;padding:0 22px}.wrap-wide{max-width:var(--wrap-wide)}.skip{position:absolute;left:-9999px}.skip:focus{z-index:999;background:var(--bg-card);border:1px solid var(--line-strong);border-radius:var(--radius-sm);padding:10px 14px;top:12px;left:12px}.proj-list{margin:0;padding:0;list-style:none}.proj{border-bottom:1px solid var(--line);padding:18px 0}.proj:last-child{border-bottom:0}.proj-head{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.proj h3{letter-spacing:-.01em;margin:0;font-size:16px;font-weight:600}.proj h3 a{padding:6px 0;display:inline-block}.proj-year{font-family:var(--font-mono);color:var(--fg-dim);flex:none;font-size:11.5px}.proj p{color:var(--fg-muted);margin:8px 0 10px;font-size:14px;line-height:1.75}.proj:last-child p{margin-bottom:0}.site-foot{border-top:1px solid var(--line);color:var(--fg-dim);margin-top:72px;padding:28px 0 40px;font-size:12.5px}.site-foot .wrap-wide{flex-wrap:wrap;justify-content:space-between;gap:4px 20px;display:flex}.site-foot a{margin-right:-10px;padding:6px 10px;display:inline-block}.page-title{letter-spacing:-.02em;margin:48px 0 6px;font-size:26px;font-weight:600}.page-desc{color:var(--fg-muted);margin:0 0 34px;font-size:14px}.post-list{margin:0;padding:0;list-style:none}.post-item{border-top:1px solid var(--line);padding:20px 0}.post-item:last-child{border-bottom:1px solid var(--line)}.post-item h2{letter-spacing:-.01em;margin:0 0 6px;font-size:17px;font-weight:600}.post-item h2 a,.prose a,.more-link{padding:6px 0;display:inline-block}.post-item p{color:var(--fg-muted);margin:0 0 8px;font-size:14px}.meta{color:var(--fg-dim);flex-wrap:wrap;align-items:center;gap:10px;font-size:12.5px;display:flex}.tags{flex-wrap:wrap;gap:6px;display:flex}.tag{border:1px solid var(--line-strong);color:var(--fg-muted);border-radius:999px;padding:5px 10px;font-size:11.5px;display:inline-block}.tag:hover{color:var(--accent);border-color:var(--accent)}.empty{color:var(--fg-dim);padding:40px 0;font-size:14px}.prose{font-size:16.5px;line-height:1.85}.prose>*+*{margin-top:1.15em}.prose h2{letter-spacing:-.015em;margin-top:2em;margin-bottom:.2em;font-size:21px;font-weight:600}.prose h3{margin-top:1.7em;margin-bottom:.2em;font-size:17.5px;font-weight:600}.prose ul,.prose ol{padding-left:1.35em}.prose li+li{margin-top:.4em}.prose a{color:var(--accent);text-underline-offset:3px;text-decoration:underline 1px}.prose blockquote{border-left:2px solid var(--line-strong);color:var(--fg-muted);margin:1.5em 0;padding:2px 0 2px 16px}.prose code{font-family:var(--font-mono);background:var(--accent-soft);border-radius:5px;padding:.15em .4em;font-size:.875em}.prose pre{border-radius:var(--radius);border:1px solid var(--line);padding:16px 18px;font-size:13.5px;line-height:1.65;overflow-x:auto}.prose pre code{font-size:inherit;background:0 0;padding:0}.prose hr{border:0;border-top:1px solid var(--line);margin:2.4em 0}.prose table{border-collapse:collapse;width:100%;font-size:14px}.prose th,.prose td{border:1px solid var(--line);text-align:left;padding:8px 10px}.prose th{background:var(--bg-soft);font-weight:600}.prose img{border-radius:var(--radius);border:1px solid var(--line)}@media (width<=640px){body,.prose{font-size:15.5px}.page-title{margin-top:34px;font-size:22px}.nav{gap:14px}}.section{margin-top:76px}.section-head{border-bottom:1px solid var(--line);align-items:baseline;gap:12px;margin-bottom:22px;padding-bottom:14px;display:flex}.section-num{font-family:var(--font-mono);color:var(--fg-dim);letter-spacing:.08em;flex:none;padding-top:2px;font-size:12px}.section-title{letter-spacing:-.01em;margin:0;font-size:17px;font-weight:600}.section-en{font-family:var(--font-mono);color:var(--fg-dim);letter-spacing:.06em;text-transform:uppercase;font-size:11.5px}.section-more{color:var(--fg-muted);font-size:12.5px;font-family:var(--font-mono);flex:none;margin-left:auto;padding:8px 0 8px 12px;display:inline-block}.section-more:hover{color:var(--accent)}.count{font-family:var(--font-mono);color:var(--fg-dim);border:1px solid var(--line-strong);border-radius:999px;flex:none;padding:1px 7px;font-size:11px}.xp-list{margin:0;padding:0;list-style:none}.xp{border-bottom:1px solid var(--line);grid-template-columns:150px 1fr;gap:20px;padding:16px 0;display:grid}.xp:last-child{border-bottom:0}.xp-period{font-family:var(--font-mono);color:var(--fg-dim);padding-top:3px;font-size:12px}.xp-role{letter-spacing:-.01em;margin:0 0 3px;font-size:15px;font-weight:600}.xp-org{color:var(--fg-muted);font-size:13px}.xp-desc{color:var(--fg-muted);margin:7px 0 0;font-size:13.5px;line-height:1.7}.xp-now{font-family:var(--font-mono);letter-spacing:.06em;color:var(--accent);border:1px solid color-mix(in srgb, var(--accent) 45%, transparent);vertical-align:1px;border-radius:999px;margin-left:8px;padding:0 6px;font-size:10.5px;display:inline-block}.card-grid{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:18px;margin:0;padding:0;list-style:none;display:grid}.card{border:1px solid var(--line);border-radius:var(--radius);background:var(--bg-soft);transition:border-color .2s var(--ease), transform .3s var(--ease);flex-direction:column;display:flex;overflow:hidden}.card:hover{border-color:var(--line-strong);transform:translateY(-2px)}.card-cover{aspect-ratio:16/9;background:linear-gradient(135deg, color-mix(in srgb, var(--accent) 18%, transparent), transparent);font-family:var(--font-mono);color:var(--fg-dim);border-bottom:1px solid var(--line);justify-content:center;align-items:center;font-size:22px;display:flex;overflow:hidden}.card-cover img{object-fit:cover;width:100%;height:100%}.card-body{flex-direction:column;flex:1;gap:7px;padding:14px 16px 16px;display:flex}.card-title{letter-spacing:-.01em;margin:0;font-size:15px;font-weight:600;line-height:1.45}.card-desc{color:var(--fg-muted);flex:1;margin:0;font-size:13px;line-height:1.65}.card-meta{font-family:var(--font-mono);color:var(--fg-dim);align-items:center;gap:8px;font-size:11.5px;display:flex}.photo-grid{grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:10px;margin:0;padding:0;list-style:none;display:grid}.photo-grid a{aspect-ratio:1;border-radius:var(--radius-sm);border:1px solid var(--line);background:var(--bg-soft);display:block;overflow:hidden}.photo-grid img{object-fit:cover;width:100%;height:100%;transition:transform .45s var(--ease)}.photo-grid a:hover img{transform:scale(1.05)}.foot-line{flex-wrap:wrap;align-items:center;gap:6px 18px;width:100%;display:flex}.foot-mono{font-family:var(--font-mono);color:var(--fg-dim);letter-spacing:.04em;font-size:11.5px}.foot-sign{color:var(--fg-muted);font-size:12.5px}@media (width<=640px){.section{margin-top:56px}.xp{grid-template-columns:1fr;gap:6px}.xp-period{padding-top:0}.card-grid{grid-template-columns:1fr}}@media (prefers-reduced-motion:reduce){.card,.photo-grid img{transition:none}}
