@font-face{font-family:Geist Sans;src:url(/fonts/geist-sans-variable.woff2)format("woff2");font-style:normal;font-weight:100 900;font-display:swap}@font-face{font-family:Geist Mono;src:url(/fonts/geist-mono-variable.woff2)format("woff2");font-style:normal;font-weight:100 900;font-display:swap}@font-face{font-family:DM Sans;src:url(/fonts/dm-sans-latin.woff2)format("woff2");font-style:normal;font-weight:100 1000;font-display:swap;unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:DM Sans;src:url(/fonts/dm-sans-latin-ext.woff2)format("woff2");font-style:normal;font-weight:100 1000;font-display:swap;unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Cooper Lt BT;src:url(/fonts/CooperLtBT-400.woff2)format("woff2");font-style:normal;font-weight:400;font-display:swap}@font-face{font-family:Cooper Lt BT;src:url(/fonts/CooperLtBT-500.woff2)format("woff2");font-style:normal;font-weight:500;font-display:swap}@font-face{font-family:Cooper Lt BT;src:url(/fonts/CooperLtBT-600.woff2)format("woff2");font-style:normal;font-weight:600;font-display:swap}@font-face{font-family:Cooper Lt BT;src:url(/fonts/CooperLtBT-700.woff2)format("woff2");font-style:normal;font-weight:700;font-display:swap}@font-face{font-family:Cooper Lt BT;src:url(/fonts/CooperLtBT-800.woff2)format("woff2");font-style:normal;font-weight:800;font-display:swap}:root,:root[data-theme=light]{--color-bg:#fff;--color-bg-secondary:#f8f9fa;--color-text:#1a1a2e;--color-text-secondary:#555;--color-accent:#3b82f6;--color-accent-hover:#2563eb;--color-border:#e5e7eb;--color-code-bg:#1e1e2e;--color-card-bg:#fff;--color-tag-bg:#eff6ff;--color-tag-text:#3b82f6;--pill-bg:#1a1a2e0a;--pill-bg-hover:#1a1a2e14;--pill-highlight:#0000000d;--header-bg:#ffffffb3;--font-sans:"Geist Sans", system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono:"Geist Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--max-width:720px;--radius:8px}:root[data-theme=dark]{--color-bg:#0f172a;--color-bg-secondary:#1e293b;--color-text:#e2e8f0;--color-text-secondary:#94a3b8;--color-accent:#60a5fa;--color-accent-hover:#93bbfd;--color-border:#334155;--color-code-bg:#1a1a2e;--color-card-bg:#1e293b;--color-tag-bg:#1e3a5f;--color-tag-text:#60a5fa;--pill-bg:#e2e8f00f;--pill-bg-hover:#e2e8f01f;--pill-highlight:#ffffff0f;--header-bg:#0f172ab3}@media (prefers-color-scheme:dark){:root:not([data-theme]){--color-bg:#0f172a;--color-bg-secondary:#1e293b;--color-text:#e2e8f0;--color-text-secondary:#94a3b8;--color-accent:#60a5fa;--color-accent-hover:#93bbfd;--color-border:#334155;--color-code-bg:#1a1a2e;--color-card-bg:#1e293b;--color-tag-bg:#1e3a5f;--color-tag-text:#60a5fa;--pill-bg:#e2e8f00f;--pill-bg-hover:#e2e8f01f;--pill-highlight:#ffffff0f;--header-bg:#0f172ab3}}html[lang=zh]{--font-sans:"LXGW Neo XiHei", "Geist Sans", system-ui, -apple-system, "PingFang SC", "Microsoft YaHei", sans-serif}html[lang=en]{--font-sans:"DM Sans", "Geist Sans", system-ui, -apple-system, "Segoe UI", sans-serif;--font-serif:"Cooper Lt BT", Georgia, "Times New Roman", serif}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{font-family:var(--font-sans);color:var(--color-text);background-color:var(--color-bg);scroll-behavior:smooth;font-size:17px;line-height:1.75}body{min-height:100vh}a{color:var(--color-accent);text-decoration:none;transition:color .2s}a:hover{color:var(--color-accent-hover)}.container{max-width:var(--max-width);margin:0 auto;padding:0 1.5rem}main.container{padding-top:4.5rem}.site-header{z-index:50;pointer-events:none;background:0 0;padding:.6rem 1.25rem;position:fixed;top:0;left:0;right:0}.header-bar{pointer-events:auto;justify-content:space-between;align-items:center;gap:1rem;max-width:1200px;margin:0 auto;display:flex;position:relative}.brand-pill{color:var(--color-text);background:var(--pill-bg);box-shadow:0 1px 0 var(--pill-highlight);-webkit-backdrop-filter:blur(16px);border-radius:999px;align-items:center;gap:.5rem;padding:.4rem .85rem;font-size:.875rem;font-weight:600;transition:transform .25s cubic-bezier(.16,1,.3,1),background .2s,box-shadow .25s;display:inline-flex}.brand-pill:hover{background:var(--pill-bg-hover);box-shadow:0 1px 0 var(--pill-highlight), 0 6px 16px -6px #0000001a;transform:translateY(-1px)}.brand-pill:active{transform:translateY(0)}.site-logo{flex-shrink:0;width:1.25rem;height:1.25rem}.brand-name{letter-spacing:-.01em}.nav-pills{background:var(--pill-bg);box-shadow:0 1px 0 var(--pill-highlight);-webkit-backdrop-filter:blur(16px);border-radius:999px;align-items:center;gap:.15rem;padding:.2rem;display:inline-flex;position:absolute;left:50%;transform:translate(-50%)}.nav-pill{color:var(--color-text-secondary);cursor:pointer;background:0 0;border:none;border-radius:999px;align-items:center;gap:.4rem;padding:.35rem .8rem;font-size:.8125rem;font-weight:500;transition:background .2s,color .2s,transform .25s cubic-bezier(.16,1,.3,1);display:inline-flex}.nav-pill svg{flex-shrink:0;width:.95rem;height:.95rem}.nav-pill:hover,.nav-pill.active{color:var(--color-text);background:var(--pill-bg-hover)}.nav-pill:active{transform:scale(.97)}.header-actions{align-items:center;gap:.5rem;display:inline-flex}.icon-btn{background:var(--pill-bg);width:1.85rem;height:1.85rem;color:var(--color-text);cursor:pointer;box-shadow:0 1px 0 var(--pill-highlight);-webkit-backdrop-filter:blur(16px);border:none;border-radius:999px;justify-content:center;align-items:center;padding:0;transition:background .2s,transform .25s cubic-bezier(.16,1,.3,1),box-shadow .25s;display:inline-flex}.icon-btn:hover{background:var(--pill-bg-hover);box-shadow:0 1px 0 var(--pill-highlight), 0 6px 16px -6px #0000001a;transform:translateY(-1px)}.icon-btn:active{transform:scale(.95)}.icon-btn svg{width:1rem;height:1rem}:root[data-theme=light] .icon-moon{display:block}:root[data-theme=light] .icon-sun,:root[data-theme=dark] .icon-moon{display:none}:root[data-theme=dark] .icon-sun,:root:not([data-theme]) .icon-moon{display:block}:root:not([data-theme]) .icon-sun{display:none}.nav-pill-cta{background:var(--color-text);color:var(--color-bg);font-weight:600}.nav-pill-cta:hover,.nav-pill-cta.active{background:var(--color-accent);color:#fff}.icon-menu{display:block}.icon-close,[aria-expanded=true] .icon-menu{display:none}[aria-expanded=true] .icon-close{display:block}.mobile-only{display:none}.desktop-only{display:inline-flex}.mobile-menu{background:var(--header-bg);-webkit-backdrop-filter:blur(20px)saturate(180%);box-shadow:0 8px 24px -8px #0000001f, 0 1px 0 var(--pill-highlight);border:1px solid var(--color-border);pointer-events:auto;border-radius:1.25rem;flex-direction:column;gap:.25rem;margin-top:.75rem;padding:.5rem;display:none}.mobile-menu.open{animation:.25s cubic-bezier(.16,1,.3,1) menuSlideIn;display:flex}@keyframes menuSlideIn{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.mobile-menu-item{color:var(--color-text);border-radius:.75rem;align-items:center;gap:.75rem;padding:.75rem 1rem;font-size:.9375rem;font-weight:500;transition:background .2s;display:flex}.mobile-menu-item svg{width:1.1rem;height:1.1rem;color:var(--color-text-secondary);flex-shrink:0}.mobile-menu-item:hover{background:var(--pill-bg-hover)}.mobile-menu-cta{background:var(--color-text);color:var(--color-bg);justify-content:center}.mobile-menu-cta svg{color:var(--color-bg)}.mobile-menu-cta:hover{background:var(--color-accent);color:#fff}.mobile-menu-cta:hover svg{color:#fff}body.menu-open{overflow:hidden}.blog-list{flex-direction:column;gap:1.5rem;list-style:none;display:flex}.blog-card{border-bottom:1px solid var(--color-border);padding:1.25rem 0}.blog-card:last-child{border-bottom:none}.blog-card h3{margin-bottom:.35rem;font-size:1.2rem;font-weight:600}.blog-card h3 a{color:var(--color-text)}.blog-card h3 a:hover{color:var(--color-accent)}.blog-card .meta{color:var(--color-text-secondary);flex-wrap:wrap;gap:.75rem;font-size:.8rem;display:flex}.blog-card .summary{color:var(--color-text-secondary);margin-top:.5rem;font-size:.9rem;line-height:1.6}.tags{flex-wrap:wrap;gap:.4rem;margin-top:.5rem;display:flex}.tag{background:var(--color-tag-bg);color:var(--color-tag-text);border-radius:999px;padding:.15rem .6rem;font-size:.75rem}.article-header{margin-bottom:2rem}.article-header h1{letter-spacing:-.02em;margin-bottom:.75rem;font-size:2rem;font-weight:700;line-height:1.3}.article-meta{color:var(--color-text-secondary);flex-wrap:wrap;align-items:center;gap:1rem;font-size:.85rem;display:flex}.article-content{font-size:1.05rem;line-height:1.85}.article-content h2{margin-top:2rem;margin-bottom:.75rem;font-size:1.4rem;font-weight:600}.article-content h3{margin-top:1.5rem;margin-bottom:.5rem;font-size:1.2rem;font-weight:600}.article-content p{margin-bottom:1.25rem}.article-content ul,.article-content ol{margin-bottom:1.25rem;padding-left:1.5rem}.article-content li{margin-bottom:.35rem}.article-content blockquote{border-left:4px solid var(--color-accent);background:var(--color-bg-secondary);border-radius:0 var(--radius) var(--radius) 0;margin:1.25rem 0;padding:.75rem 1.25rem}.article-content pre{font-size:.9rem;font-family:var(--font-mono);margin:1.25rem 0;line-height:1.65}.article-content :not(pre)>code{background:var(--color-bg-secondary);font-size:.9em;font-family:var(--font-mono);border:1px solid var(--color-border);border-radius:4px;padding:.15rem .4rem}.article-content img{border-radius:var(--radius);max-width:100%;margin:1.25rem 0}.article-content hr{border:none;border-top:1px solid var(--color-border);margin:2rem 0}.site-footer{border-top:1px solid var(--color-border);text-align:center;color:var(--color-text-secondary);margin-top:4rem;padding:2rem 0;font-size:.8rem}.category-list{flex-wrap:wrap;gap:.5rem;margin-bottom:2rem;display:flex}.category-link{border-radius:var(--radius);border:1px solid var(--color-border);color:var(--color-text-secondary);padding:.4rem 1rem;font-size:.9rem;transition:all .2s}.category-link:hover{border-color:var(--color-accent);color:var(--color-accent)}.pagination{justify-content:center;gap:1rem;margin-top:2.5rem;display:flex}.pagination a,.pagination span{border:1px solid var(--color-border);border-radius:var(--radius);padding:.4rem .8rem;font-size:.9rem}.empty-state{text-align:center;color:var(--color-text-secondary);padding:4rem 0}.empty-state p{font-size:1.1rem}html[lang=en] h1,html[lang=en] h2,html[lang=en] h3,html[lang=en] h4,html[lang=en] h5,html[lang=en] h6{font-family:var(--font-serif);letter-spacing:-.01em}@media (width<=768px){.nav-pills,.desktop-only{display:none}.mobile-only{display:inline-flex}.article-header h1{font-size:1.5rem}.site-header{padding:.75rem 1rem}}@media (width<=640px){.container{padding:0 1rem}}html.js .reveal{opacity:0;will-change:opacity, transform;transform:translateY(24px)}.blog-card{transition:transform .3s cubic-bezier(.16,1,.3,1),box-shadow .3s}.blog-card:hover{transform:translateY(-3px)}.blog-card h3 a{transition:color .2s;position:relative}.blog-card h3 a:after{content:"";transform-origin:0;background:currentColor;width:100%;height:2px;transition:transform .3s cubic-bezier(.16,1,.3,1);position:absolute;bottom:-2px;left:0;transform:scaleX(0)}.blog-card h3 a:hover:after{transform:scaleX(1)}.brand-pill:hover .site-logo{transform:scale(1.08)rotate(-6deg)}.site-logo{transition:transform .35s cubic-bezier(.16,1,.3,1)}.reading-progress{transform-origin:0;background:linear-gradient(90deg, var(--color-accent), var(--color-accent-hover));z-index:60;pointer-events:none;width:100%;height:3px;position:fixed;top:0;left:0;transform:scaleX(0)}.back-to-top{background:var(--pill-bg);width:2.6rem;height:2.6rem;color:var(--color-text);box-shadow:0 1px 0 var(--pill-highlight), 0 6px 16px -6px #00000026;-webkit-backdrop-filter:blur(16px);cursor:pointer;opacity:0;visibility:hidden;z-index:55;border:none;border-radius:999px;justify-content:center;align-items:center;transition:opacity .3s,visibility .3s,transform .3s,background .2s;display:inline-flex;position:fixed;bottom:1.5rem;right:1.5rem;transform:translateY(10px)}.back-to-top.visible{opacity:1;visibility:visible;transform:translateY(0)}.back-to-top:hover{background:var(--pill-bg-hover)}.back-to-top:active{transform:scale(.95)}.back-to-top svg{width:1.15rem;height:1.15rem}@media (prefers-reduced-motion:reduce){html.js .reveal{opacity:1;will-change:auto;transform:none}.reading-progress,.back-to-top{display:none}.blog-card,.blog-card h3 a:after,.site-logo{transition:none}}
