:root{--bg: #f8f5ef;--bg-2: #f1ece2;--surface: #fffdf9;--text: #22201c;--muted: #6f6a61;--faint: #a29b8f;--border: #e7e0d3;--accent: #b4532a;--accent-ink: #fff;--accent-soft: #f5e6dc;--code-bg: #f3efe7;--shadow: 0 1px 2px rgb(60 40 20 / .05), 0 8px 24px -8px rgb(60 40 20 / .1);--shadow-lg: 0 24px 64px -16px rgb(40 25 10 / .3);--tint-l: 94%;--tint-c: .035;--ink-l: 48%;--sans: -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans CJK SC", sans-serif;--serif: "Noto Serif SC", "Songti SC", "Source Han Serif SC", serif;--mono: ui-monospace, "SF Mono", "JetBrains Mono", Menlo, Consolas, monospace;color-scheme:light}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--bg: #141413;--bg-2: #1b1a18;--surface: #1d1c1a;--text: #ebe7df;--muted: #a39d92;--faint: #6f6a61;--border: #2e2c28;--accent: #e8895e;--accent-ink: #1a120d;--accent-soft: #3a2a21;--code-bg: #1a1918;--shadow: 0 0 0 1px rgb(255 255 255 / .02);--shadow-lg: 0 24px 64px -12px rgb(0 0 0 / .7);--tint-l: 28%;--tint-c: .05;--ink-l: 78%;color-scheme:dark}}:root[data-theme=dark]{--bg: #141413;--bg-2: #1b1a18;--surface: #1d1c1a;--text: #ebe7df;--muted: #a39d92;--faint: #6f6a61;--border: #2e2c28;--accent: #e8895e;--accent-ink: #1a120d;--accent-soft: #3a2a21;--code-bg: #1a1918;--shadow: 0 0 0 1px rgb(255 255 255 / .02);--shadow-lg: 0 24px 64px -12px rgb(0 0 0 / .7);--tint-l: 28%;--tint-c: .05;--ink-l: 78%;color-scheme:dark}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--text);font:16px/1.8 var(--sans);-webkit-font-smoothing:antialiased;min-height:100vh;display:flex;flex-direction:column}body.no-scroll{overflow:hidden}main{flex:1}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline;text-underline-offset:3px}::selection{background:color-mix(in srgb,var(--accent) 30%,transparent)}.wrap{max-width:1120px;margin:0 auto;padding:0 16px}.narrow{max-width:820px}kbd{font:600 .72rem/1 var(--mono);padding:3px 5px;border-radius:5px;color:var(--muted);border:1px solid var(--border);border-bottom-width:2px;background:var(--surface)}button{font:inherit;color:inherit}[style*=--h]{--cat: oklch(var(--ink-l) .13 var(--h));--cat-soft: oklch(var(--tint-l) var(--tint-c) var(--h))}#progress{position:fixed;inset:0 0 auto;height:3px;z-index:30;transform-origin:0 50%;transform:scaleX(0);background:linear-gradient(90deg,var(--accent),color-mix(in srgb,var(--accent) 50%,#f2b33d))}.site-header{position:sticky;top:0;z-index:20;background:color-mix(in srgb,var(--bg) 82%,transparent);backdrop-filter:saturate(1.4) blur(12px);-webkit-backdrop-filter:saturate(1.4) blur(12px);border-bottom:1px solid color-mix(in srgb,var(--border) 70%,transparent)}.header-inner{display:flex;align-items:center;justify-content:space-between;height:62px;gap:12px}.brand{display:flex;align-items:center;gap:10px;font:900 1.2rem var(--serif);color:var(--text);letter-spacing:.06em;white-space:nowrap}.brand:hover{text-decoration:none}.brand-mark{display:grid;place-items:center;width:32px;height:32px;border-radius:9px;font-size:1.05rem;letter-spacing:0;background:var(--accent);color:var(--accent-ink);box-shadow:inset 0 -2px #00000026}nav{display:flex;align-items:center;gap:2px}nav>a{color:var(--muted);padding:6px 10px;border-radius:8px;font-size:.94rem;white-space:nowrap}nav>a:hover,nav>a.active{color:var(--text);background:var(--bg-2);text-decoration:none}.icon-btn{display:inline-flex;align-items:center;gap:8px;background:none;border:0;color:var(--muted);cursor:pointer;padding:7px;border-radius:8px}.icon-btn:hover{color:var(--text);background:var(--bg-2)}.search-trigger{border:1px solid var(--border);background:var(--surface);padding:5px 6px 5px 10px;margin:0 6px;font-size:.88rem}.search-trigger .label{margin-right:18px}#theme-toggle .sun{display:none}:root[data-theme=dark] #theme-toggle .sun{display:block}:root[data-theme=dark] #theme-toggle .moon{display:none}@media(prefers-color-scheme:dark){:root:not([data-theme=light]) #theme-toggle .sun{display:block}:root:not([data-theme=light]) #theme-toggle .moon{display:none}}@media(max-width:640px){.search-trigger .label,.search-trigger kbd{display:none}.search-trigger{border:0;background:none;padding:7px;margin:0}nav>a{padding:6px 7px}.brand{font-size:1.05rem}}.site-footer{border-top:1px solid var(--border);color:var(--muted);font-size:.85rem;padding:28px 0 36px;margin-top:80px;text-align:center}.site-footer p{margin:4px 0}.site-footer .hint{color:var(--faint)}.site-footer .hint kbd{margin:0 2px}@media(hover:none){.site-footer .hint{display:none}}.btn{display:inline-flex;align-items:center;gap:8px;padding:10px 18px;border-radius:10px;cursor:pointer;border:1px solid var(--border);background:var(--surface);color:var(--text);font-size:.95rem;font-weight:500;box-shadow:var(--shadow);transition:transform .15s,box-shadow .15s}.btn:hover{transform:translateY(-1px);text-decoration:none}.btn.primary{background:var(--accent);color:var(--accent-ink);border-color:transparent}.btn.primary kbd{background:#ffffff2e;color:inherit;border-color:#ffffff40}.hero{position:relative;overflow:hidden;border-bottom:1px solid var(--border)}.hero-bg{position:absolute;inset:0;pointer-events:none;background:radial-gradient(600px 300px at 85% 10%,color-mix(in srgb,var(--accent) 16%,transparent),transparent 70%),radial-gradient(500px 300px at 5% 100%,color-mix(in srgb,#3c7bd9 10%,transparent),transparent 70%)}.hero-bg:after{content:"";position:absolute;inset:0;opacity:.5;background-image:linear-gradient(var(--border) 1px,transparent 1px),linear-gradient(90deg,var(--border) 1px,transparent 1px);background-size:44px 44px;mask-image:radial-gradient(ellipse at 70% 30%,#000 10%,transparent 65%);-webkit-mask-image:radial-gradient(ellipse at 70% 30%,#000 10%,transparent 65%)}.hero-inner{position:relative;display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:48px;align-items:center;padding-top:80px;padding-bottom:72px}@media(max-width:860px){.hero-inner{grid-template-columns:minmax(0,1fr);padding-top:48px;padding-bottom:48px;gap:32px}}.eyebrow{margin:0 0 14px;font-size:.8rem;letter-spacing:.18em;color:var(--accent);font-weight:600;text-transform:uppercase}.hero h1{font:900 clamp(2.6rem,8vw,4.2rem)/1.1 var(--serif);margin:0 0 18px;letter-spacing:.04em}.lead{color:var(--muted);font-size:1.12rem;margin:0;max-width:32em}.hero-actions{display:flex;gap:12px;margin-top:28px;flex-wrap:wrap}.stats{display:flex;gap:36px;margin-top:40px;flex-wrap:wrap}.stats div{display:flex;flex-direction:column}.stats b{font:900 2rem/1.1 var(--serif);font-variant-numeric:tabular-nums}.stats span{color:var(--muted);font-size:.85rem}.pick-card{background:var(--surface);border:1px solid var(--border);border-radius:18px;padding:22px 24px 24px;box-shadow:var(--shadow-lg);transform:rotate(1deg);transition:transform .3s}.pick-card:hover{transform:rotate(0) translateY(-2px)}.pick-label{display:flex;justify-content:space-between;align-items:center;font-size:.8rem;color:var(--faint);letter-spacing:.12em;margin-bottom:12px}.reshuffle{background:var(--bg-2);border:0;border-radius:50%;width:30px;height:30px;cursor:pointer;font-size:1rem;color:var(--muted);transition:transform .4s}.reshuffle:hover{transform:rotate(180deg);color:var(--accent)}#pick{display:block;color:var(--text)}#pick:hover{text-decoration:none}#pick:hover .pick-title{color:var(--accent)}.pick-cat{font-size:.8rem;color:var(--accent);font-weight:600}.pick-title{display:block;font:900 1.5rem/1.35 var(--serif);margin:6px 0 10px;transition:color .15s}.pick-ex{color:var(--muted);font-size:.92rem;line-height:1.7;margin:0 0 16px;display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}.pick-min{font-size:.85rem;color:var(--muted)}.continue{margin-top:32px}.continue a{display:grid;grid-template-columns:auto minmax(0,1fr) 120px auto;align-items:center;gap:20px;background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:14px 20px;color:var(--text);box-shadow:var(--shadow)}.continue a:hover{text-decoration:none;border-color:var(--accent)}.c-label{font-size:.78rem;font-weight:700;color:var(--accent-ink);background:var(--accent);padding:3px 9px;border-radius:6px;white-space:nowrap}.c-main{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.c-cat{color:var(--muted);font-size:.85rem;margin-right:10px}.c-bar{height:6px;border-radius:3px;background:var(--bg-2);position:relative;overflow:hidden}.c-bar:after{content:"";position:absolute;inset:0;width:var(--p, 0%);background:var(--accent);border-radius:3px}.c-go{color:var(--accent)}@media(max-width:560px){.continue a{grid-template-columns:auto minmax(0,1fr) auto}.c-bar{display:none}}.section-title{display:flex;align-items:center;gap:12px;font:900 1.4rem var(--serif);margin:56px 0 20px}.section-title:after{content:"";flex:1;height:1px;background:var(--border)}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr));gap:16px}.card{position:relative;display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:22px;color:var(--text);box-shadow:var(--shadow);overflow:hidden;transition:border-color .2s,transform .2s,box-shadow .2s}.card:before{content:"";position:absolute;inset:0 0 auto;height:3px;background:var(--cat);opacity:0;transition:opacity .2s}.card:hover{border-color:color-mix(in srgb,var(--cat) 45%,var(--border));text-decoration:none;transform:translateY(-3px);box-shadow:var(--shadow-lg)}.card:hover:before{opacity:1}.card-top{display:flex;align-items:center;gap:14px;margin-bottom:12px}.card h3{margin:0;font-size:1.12rem}.card p{margin:0 0 18px;color:var(--muted);font-size:.92rem;line-height:1.65;flex:1}.badge{display:inline-grid;place-items:center;flex:none;width:40px;height:40px;border-radius:11px;background:var(--cat-soft);color:var(--cat);font:900 1.15rem var(--serif)}.badge.big{width:52px;height:52px;font-size:1.5rem;border-radius:14px}.progress{display:flex;align-items:center;gap:12px}.progress-track{flex:1;height:5px;border-radius:3px;background:var(--bg-2);overflow:hidden}.progress-fill{height:100%;width:var(--p, 0%);background:var(--cat, var(--accent));border-radius:3px;transition:width .6s ease}.progress-label{font-size:.8rem;color:var(--muted);white-space:nowrap;font-variant-numeric:tabular-nums}.page-head{padding:48px 0 8px}.page-head h1{font:900 2.2rem/1.3 var(--serif);margin:6px 0 8px;display:flex;align-items:center;gap:16px}.page-head p{color:var(--muted);margin:0}.page-head .sub{font-size:.88rem;color:var(--faint);margin:4px 0 20px}.cat-head{padding-bottom:12px}.cat-head .progress{max-width:420px}.btn.start{margin-top:24px}.crumbs{font-size:.88rem;color:var(--muted);display:flex;align-items:center;gap:12px;flex-wrap:wrap}.crumbs a{color:var(--muted)}.chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:20px}.chip{display:inline-flex;align-items:center;gap:6px;padding:4px 12px;border-radius:999px;font-size:.88rem;background:var(--cat-soft);color:var(--cat)}.chip span{opacity:.7;font-size:.8rem}.chip:hover{text-decoration:none;filter:brightness(.97)}.cat-section{scroll-margin-top:80px}.cat-title{display:flex;align-items:center;gap:12px;font-size:1.3rem;margin:56px 0 12px}.cat-title a{color:var(--text)}.cat-section .progress{max-width:360px}.post-list{list-style:none;padding:0;margin:24px 0 0}.post-list li{border-bottom:1px solid var(--border)}.post-list a{display:flex;gap:16px;align-items:baseline;padding:14px 10px;color:var(--text);border-radius:10px;transition:background .15s}.post-list a:hover{text-decoration:none;background:var(--surface)}.post-list .num{color:var(--faint);font:600 .82rem var(--mono);min-width:2em}.post-list .t{flex:1;min-width:0;font-weight:500}.post-list .t small{display:block;font-weight:400;color:var(--muted);font-size:.86rem;margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.post-list .rt{color:var(--faint);font-size:.8rem;white-space:nowrap}.post-list .check{width:20px;height:20px;flex:none;align-self:center;border-radius:50%;display:grid;place-items:center;font-size:.7rem;border:1.5px solid var(--border);color:transparent}.post-list li.is-read .check{background:var(--cat, var(--accent));border-color:transparent;color:#fff}.post-list li.is-read .t{color:var(--muted)}.tag{display:inline-block;font-size:.72rem;padding:0 7px;border-radius:5px;background:var(--accent-soft);color:var(--accent);margin-left:8px;vertical-align:2px;font-weight:500;line-height:1.7}@media(max-width:560px){.post-list .rt{display:none}}.post-layout{display:grid;grid-template-columns:minmax(0,1fr) 250px;gap:64px;padding-top:44px}@media(max-width:1000px){.post-layout{grid-template-columns:minmax(0,1fr)}.sidebar{display:none}}article{max-width:760px}.post-head{padding-bottom:28px;margin-bottom:8px;border-bottom:1px solid var(--border)}.cat-pill{background:var(--cat-soft);color:var(--cat)!important;padding:2px 12px;border-radius:999px;font-weight:600;font-size:.82rem}.cat-pill:hover{text-decoration:none}.post-title{font:900 clamp(1.9rem,5.5vw,2.7rem)/1.3 var(--serif);margin:16px 0;letter-spacing:.02em}.post-meta{display:flex;align-items:center;gap:16px;color:var(--muted);font-size:.88rem;flex-wrap:wrap}.mark-read{margin-left:auto;background:none;border:1px solid var(--border);border-radius:999px;padding:3px 12px;cursor:pointer;color:var(--muted);font-size:.82rem;transition:all .2s}.mark-read:hover{border-color:var(--cat);color:var(--cat)}.mark-read.done{background:var(--cat);border-color:transparent;color:#fff}.sidebar{position:sticky;top:86px;align-self:start;max-height:calc(100vh - 110px);display:flex;flex-direction:column;gap:28px;font-size:.85rem}.sidebar h4{margin:0 0 10px;font-size:.78rem;letter-spacing:.12em;color:var(--faint)}.sidebar h4 a{color:inherit}.toc{min-height:0;overflow:auto;flex:0 1 auto}.toc ul{list-style:none;padding:0;margin:0;border-left:2px solid var(--border)}.toc li a{display:block;color:var(--muted);padding:4px 0 4px 14px;margin-left:-2px;border-left:2px solid transparent;line-height:1.5;transition:color .15s}.toc li.d3 a{padding-left:26px;font-size:.82rem}.toc li a:hover{color:var(--text);text-decoration:none}.toc li a.active{color:var(--cat);border-left-color:var(--cat);font-weight:600}.series{min-height:0;overflow:auto;flex:0 1 auto;max-height:40vh;padding-top:20px;border-top:1px solid var(--border)}.series ol{list-style:none;padding:0;margin:0}.series li a{display:flex;gap:8px;color:var(--muted);padding:4px 8px;border-radius:6px;line-height:1.5}.series li a:before{content:"";flex:none;width:7px;height:7px;border-radius:50%;border:1.5px solid var(--faint);margin-top:.45em}.series li.is-read a:before{background:var(--cat);border-color:var(--cat)}.series li a:hover{background:var(--bg-2);text-decoration:none;color:var(--text)}.series li.current a{background:var(--cat-soft);color:var(--cat);font-weight:600}.prose{font-size:1.05rem;overflow-wrap:anywhere}.prose h1,.prose h2,.prose h3,.prose h4{line-height:1.45;margin:2.2em 0 .8em;scroll-margin-top:84px}.prose h1{font:900 1.65rem var(--serif)}.prose h2{font:900 1.45rem var(--serif);padding-left:14px;border-left:4px solid var(--cat, var(--accent))}.prose h3{font-size:1.18rem}.prose h4{font-size:1.04rem}.prose p,.prose ul,.prose ol{margin:1em 0}.prose li{margin:.3em 0}.prose li::marker{color:var(--faint)}.prose strong{color:var(--text);background:linear-gradient(transparent 62%,color-mix(in srgb,var(--accent) 22%,transparent) 62%)}.prose img{max-width:100%;height:auto;border-radius:10px;display:block;margin:1.6em auto;cursor:zoom-in;box-shadow:var(--shadow);border:1px solid var(--border)}.prose blockquote{margin:1.4em 0;padding:.6em 1.2em;border-left:3px solid var(--accent);background:var(--bg-2);border-radius:0 10px 10px 0;color:var(--muted)}.prose code{font-family:var(--mono);font-size:.86em;background:var(--code-bg);border:1px solid var(--border);padding:.1em .4em;border-radius:5px}.prose pre{font-size:.87rem;line-height:1.65;padding:16px 18px;margin:0;overflow-x:auto}.prose pre code{background:none;border:0;padding:0;font-size:inherit}.code-wrap{margin:1.4em 0;border:1px solid var(--border);border-radius:12px;overflow:hidden;background:var(--code-bg)}.code-head{display:flex;justify-content:space-between;align-items:center;padding:6px 10px 6px 16px;border-bottom:1px solid var(--border);font:600 .75rem var(--mono);color:var(--faint);text-transform:lowercase}.code-head button{background:none;border:0;cursor:pointer;color:var(--muted);font:500 .78rem var(--sans);padding:3px 8px;border-radius:6px}.code-head button:hover{background:var(--surface);color:var(--text)}.prose table{border-collapse:collapse;display:block;overflow-x:auto;margin:1.4em 0;font-size:.93rem}.prose th,.prose td{border:1px solid var(--border);padding:7px 13px;text-align:left}.prose th{background:var(--bg-2)}.prose hr{border:0;text-align:center;margin:2.4em 0}.prose hr:after{content:"· · ·";color:var(--faint);letter-spacing:.6em}.prose .katex-display{overflow-x:auto;overflow-y:hidden}.astro-code{background-color:var(--code-bg)!important}:root[data-theme=dark] .astro-code,:root[data-theme=dark] .astro-code span{color:var(--shiki-dark)!important}@media(prefers-color-scheme:dark){:root:not([data-theme=light]) .astro-code,:root:not([data-theme=light]) .astro-code span{color:var(--shiki-dark)!important}}.pager{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:64px}.pager a{border:1px solid var(--border);border-radius:14px;padding:14px 18px;color:var(--text);background:var(--surface);font-weight:500;transition:border-color .15s,transform .15s}.pager a:hover{border-color:var(--cat, var(--accent));text-decoration:none;transform:translateY(-2px)}.pager small{display:block;color:var(--faint);font-size:.78rem;font-weight:400;margin-bottom:2px}.pager .next{text-align:right;grid-column:2}#search-modal{position:fixed;inset:0;z-index:50;display:flex;justify-content:center;align-items:flex-start;padding:12vh 16px 16px}#search-modal[hidden]{display:none}.sm-backdrop{position:absolute;inset:0;background:#140f0a73;backdrop-filter:blur(3px);animation:fade .15s}.sm-panel{position:relative;width:100%;max-width:640px;max-height:72vh;display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--border);border-radius:16px;box-shadow:var(--shadow-lg);overflow:hidden;animation:pop .18s ease-out}.sm-input{display:flex;align-items:center;gap:12px;padding:16px 18px;border-bottom:1px solid var(--border);color:var(--muted)}.sm-input input{flex:1;min-width:0;border:0;outline:0;background:none;font:1.1rem var(--sans);color:var(--text)}.sm-input input::-webkit-search-cancel-button{display:none}.sm-input kbd{cursor:pointer}#sm-results{list-style:none;margin:0;padding:8px;overflow-y:auto}#sm-results:empty{display:none}#sm-results li a{display:block;padding:10px 14px;border-radius:10px;color:var(--text)}#sm-results li a:hover{text-decoration:none}#sm-results li.active a{background:var(--accent-soft)}#sm-results strong{display:block;font-size:1rem}.sm-cat{float:right;font-size:.75rem;color:var(--faint);margin-left:12px}.sm-ex{display:block;color:var(--muted);font-size:.86rem;line-height:1.6;margin-top:2px}.sm-ex mark{background:none;color:var(--accent);font-weight:600}.sm-empty{padding:24px;text-align:center;color:var(--muted)}.sm-foot{display:flex;gap:16px;padding:10px 18px;border-top:1px solid var(--border);font-size:.78rem;color:var(--faint)}.sm-foot kbd{margin-right:3px}@keyframes pop{0%{opacity:0;transform:translateY(-8px) scale(.98)}}@keyframes fade{0%{opacity:0}}#to-top{position:fixed;right:20px;bottom:24px;z-index:15;width:42px;height:42px;border-radius:50%;display:grid;place-items:center;background:var(--surface);border:1px solid var(--border);color:var(--muted);cursor:pointer;box-shadow:var(--shadow);opacity:0;transform:translateY(10px);pointer-events:none;transition:all .25s}#to-top.show{opacity:1;transform:none;pointer-events:auto}#to-top:hover{color:var(--accent);border-color:var(--accent)}.lightbox{position:fixed;inset:0;z-index:60;display:grid;place-items:center;padding:24px;background:#0a0806d9;cursor:zoom-out;animation:fade .2s}.lightbox[hidden]{display:none}.lightbox img{max-width:100%;max-height:100%;border-radius:8px;box-shadow:0 20px 60px #00000080;animation:pop .2s}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}.progress-track,.c-bar{background:color-mix(in srgb,var(--text) 9%,transparent)}.prose p:has(.katex){overflow-x:auto;overflow-y:hidden}@media(max-width:860px){.pick-card{transform:none}}@media(hover:none){.btn kbd{display:none}}
