.theme-toggle[data-astro-cid-x3pjskd3]{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border:1px solid var(--c-border);border-radius:var(--radius-full);background:var(--c-surface);color:var(--c-text-muted);cursor:pointer;transition:color var(--duration-fast) var(--ease-in-out),border-color var(--duration-fast) var(--ease-in-out),background var(--duration-fast) var(--ease-in-out),transform var(--duration-fast) var(--ease-out);flex-shrink:0}.theme-toggle[data-astro-cid-x3pjskd3]:hover{color:var(--c-text);border-color:var(--c-text-muted);transform:scale(1.05)}.theme-toggle[data-astro-cid-x3pjskd3]:active{transform:scale(.95)}.icon-sun[data-astro-cid-x3pjskd3]{display:none}.icon-moon[data-astro-cid-x3pjskd3],[data-theme=dark] .icon-sun[data-astro-cid-x3pjskd3]{display:block}[data-theme=dark] .icon-moon[data-astro-cid-x3pjskd3]{display:none}.site-header[data-astro-cid-3ef6ksr2]{position:sticky;top:0;z-index:100;height:var(--header-h);background:var(--c-bg);border-bottom:1px solid transparent;transition:border-color var(--duration-fast) var(--ease-in-out),box-shadow var(--duration-fast) var(--ease-in-out),background-color var(--duration-normal) var(--ease-in-out)}.site-header[data-astro-cid-3ef6ksr2]:before{content:"";position:absolute;inset:0;background:var(--c-bg);opacity:.85;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);z-index:-1}.site-header[data-astro-cid-3ef6ksr2].scrolled{border-bottom-color:var(--c-border);box-shadow:var(--shadow-sm)}.header-inner[data-astro-cid-3ef6ksr2]{display:flex;align-items:center;justify-content:space-between;height:100%;gap:var(--space-md)}.site-title[data-astro-cid-3ef6ksr2]{font-weight:700;font-size:var(--fs-lg);color:var(--c-text);text-decoration:none;letter-spacing:-.01em;transition:color var(--duration-fast) var(--ease-in-out);flex-shrink:0}.site-title[data-astro-cid-3ef6ksr2]:hover{color:var(--c-accent);text-decoration:none}.desktop-nav[data-astro-cid-3ef6ksr2]{display:flex;align-items:center}.nav-list[data-astro-cid-3ef6ksr2]{display:flex;gap:var(--space-xs);list-style:none}.nav-link[data-astro-cid-3ef6ksr2]{display:inline-flex;align-items:center;font-size:var(--fs-sm);font-weight:450;color:var(--c-text-muted);text-decoration:none;padding:.35em .75em;border-radius:var(--radius-md);transition:color var(--duration-fast) var(--ease-in-out),background var(--duration-fast) var(--ease-in-out)}.nav-link[data-astro-cid-3ef6ksr2]:hover{color:var(--c-text);background:var(--c-accent-subtle);text-decoration:none}.nav-link[data-astro-cid-3ef6ksr2].active{color:var(--c-accent);font-weight:600;background:var(--c-accent-subtle)}.header-actions[data-astro-cid-3ef6ksr2]{display:flex;align-items:center;gap:var(--space-sm)}.hamburger[data-astro-cid-3ef6ksr2]{display:none;flex-direction:column;justify-content:center;align-items:center;gap:5px;width:36px;height:36px;border:1px solid var(--c-border);border-radius:var(--radius-full);background:var(--c-surface);cursor:pointer;transition:border-color var(--duration-fast) var(--ease-in-out)}.hamburger[data-astro-cid-3ef6ksr2]:hover{border-color:var(--c-text-muted)}.hamburger-line[data-astro-cid-3ef6ksr2]{display:block;width:16px;height:1.5px;background:var(--c-text-muted);border-radius:1px}@media(max-width:768px){.desktop-nav[data-astro-cid-3ef6ksr2]{display:none}.hamburger[data-astro-cid-3ef6ksr2]{display:flex}}.drawer-backdrop[data-astro-cid-3ef6ksr2]{position:fixed;inset:0;z-index:200;background:var(--c-overlay);animation:fadeIn var(--duration-fast) var(--ease-out) both}.drawer-backdrop[data-astro-cid-3ef6ksr2][hidden]{display:none}.mobile-drawer[data-astro-cid-3ef6ksr2]{position:fixed;top:0;right:0;bottom:0;z-index:201;width:var(--sidebar-w);max-width:85vw;background:var(--c-surface);box-shadow:var(--shadow-xl);display:flex;flex-direction:column;animation:slideInRight var(--duration-normal) var(--ease-out) both;overflow-y:auto}.mobile-drawer[data-astro-cid-3ef6ksr2][hidden]{display:none}.drawer-header[data-astro-cid-3ef6ksr2]{display:flex;align-items:center;justify-content:space-between;padding:var(--space-md) var(--space-lg);border-bottom:1px solid var(--c-border)}.drawer-title[data-astro-cid-3ef6ksr2]{font-weight:600;font-size:var(--fs-sm);color:var(--c-text-muted);text-transform:uppercase;letter-spacing:.06em}.drawer-close[data-astro-cid-3ef6ksr2]{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border:none;background:none;color:var(--c-text-muted);cursor:pointer;border-radius:var(--radius-full);transition:color var(--duration-fast),background var(--duration-fast)}.drawer-close[data-astro-cid-3ef6ksr2]:hover{color:var(--c-text);background:var(--c-accent-subtle)}.drawer-links[data-astro-cid-3ef6ksr2]{list-style:none;padding:var(--space-sm) var(--space-md);flex:1}.drawer-link[data-astro-cid-3ef6ksr2]{display:flex;align-items:center;padding:var(--space-md);font-size:var(--fs-base);font-weight:450;color:var(--c-text);text-decoration:none;border-radius:var(--radius-md);transition:background var(--duration-fast) var(--ease-in-out)}.drawer-link[data-astro-cid-3ef6ksr2]:hover{background:var(--c-accent-subtle);text-decoration:none}.drawer-link[data-astro-cid-3ef6ksr2].active{color:var(--c-accent);font-weight:600;background:var(--c-accent-subtle)}.drawer-footer[data-astro-cid-3ef6ksr2]{padding:var(--space-lg);border-top:1px solid var(--c-border)}.drawer-socials[data-astro-cid-3ef6ksr2]{display:flex;gap:var(--space-lg);font-size:var(--fs-sm)}.drawer-socials[data-astro-cid-3ef6ksr2] a[data-astro-cid-3ef6ksr2]{color:var(--c-text-muted);text-decoration:none}.drawer-socials[data-astro-cid-3ef6ksr2] a[data-astro-cid-3ef6ksr2]:hover{color:var(--c-accent)}.social-links[data-astro-cid-zamss57n]{display:flex;align-items:center;gap:var(--space-sm)}.social-btn[data-astro-cid-zamss57n]{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:var(--radius-full);color:var(--c-text-muted);border:1px solid var(--c-border);background:var(--c-surface);transition:color var(--duration-fast) var(--ease-in-out),border-color var(--duration-fast) var(--ease-in-out),background var(--duration-fast) var(--ease-in-out),transform var(--duration-fast) var(--ease-out),box-shadow var(--duration-fast) var(--ease-in-out);text-decoration:none}.social-btn[data-astro-cid-zamss57n]:hover{color:var(--c-accent);border-color:var(--c-accent);background:var(--c-accent-subtle);transform:translateY(-2px);box-shadow:var(--shadow-sm);text-decoration:none}.social-btn[data-astro-cid-zamss57n]:active{transform:translateY(0)}.social-btn[data-astro-cid-zamss57n] svg[data-astro-cid-zamss57n]{flex-shrink:0}.site-footer[data-astro-cid-sz7xmlte]{margin-top:auto;border-top:1px solid var(--c-border);padding:var(--space-xl) 0;transition:border-color var(--duration-normal) var(--ease-in-out)}.footer-inner[data-astro-cid-sz7xmlte]{display:flex;flex-direction:column;align-items:center;gap:var(--space-lg)}.footer-bottom[data-astro-cid-sz7xmlte]{display:flex;align-items:center;gap:var(--space-lg);font-size:var(--fs-sm);color:var(--c-text-faint)}.footer-rss[data-astro-cid-sz7xmlte]{color:var(--c-text-faint);text-decoration:none;transition:color var(--duration-fast) var(--ease-in-out)}.footer-rss[data-astro-cid-sz7xmlte]:hover{color:var(--c-text)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--font-sans: "Inter", "Noto Sans SC", "Noto Sans TC", system-ui, -apple-system, sans-serif;--font-serif: "Source Serif 4", "Noto Serif SC", "Noto Serif TC", "Songti SC", serif;--font-mono: "JetBrains Mono", "Fira Code", ui-monospace, monospace;--fs-xs: .75rem;--fs-sm: .875rem;--fs-base: 1rem;--fs-lg: 1.125rem;--fs-xl: 1.25rem;--fs-2xl: 1.5rem;--fs-3xl: 1.875rem;--fs-4xl: 2.25rem;--fs-5xl: 3rem;--c-bg: #fafaf9;--c-surface: #ffffff;--c-surface-raised: #ffffff;--c-text: #1c1917;--c-text-muted: #78716c;--c-text-faint: #a8a29e;--c-border: #e7e5e4;--c-border-subtle: #f5f5f4;--c-accent: #2563eb;--c-accent-hover: #1d4ed8;--c-accent-subtle: rgba(37, 99, 235, .08);--c-code-bg: #f5f5f4;--c-overlay: rgba(0, 0, 0, .5);--shadow-sm: 0 1px 2px rgba(0, 0, 0, .04);--shadow-md: 0 2px 8px rgba(0, 0, 0, .06), 0 1px 2px rgba(0, 0, 0, .04);--shadow-lg: 0 4px 24px rgba(0, 0, 0, .08), 0 2px 8px rgba(0, 0, 0, .04);--shadow-xl: 0 8px 40px rgba(0, 0, 0, .1), 0 2px 12px rgba(0, 0, 0, .06);--radius-sm: 4px;--radius-md: 8px;--radius-lg: 12px;--radius-xl: 16px;--radius-full: 9999px;--space-xs: .25rem;--space-sm: .5rem;--space-md: 1rem;--space-lg: 1.5rem;--space-xl: 2rem;--space-2xl: 3rem;--space-3xl: 4rem;--space-4xl: 6rem;--ease-out: cubic-bezier(.16, 1, .3, 1);--ease-in-out: cubic-bezier(.4, 0, .2, 1);--duration-fast: .15s;--duration-normal: .25s;--duration-slow: .4s;--max-w-prose: 68ch;--max-w-content: 56rem;--max-w-wide: 72rem;--header-h: 4rem;--sidebar-w: 280px;color-scheme:light}[data-theme=dark]{--c-bg: #0c0a09;--c-surface: #1c1917;--c-surface-raised: #292524;--c-text: #fafaf9;--c-text-muted: #a8a29e;--c-text-faint: #78716c;--c-border: #292524;--c-border-subtle: #1c1917;--c-accent: #60a5fa;--c-accent-hover: #93c5fd;--c-accent-subtle: rgba(96, 165, 250, .1);--c-code-bg: #1c1917;--c-overlay: rgba(0, 0, 0, .7);--shadow-sm: 0 1px 2px rgba(0, 0, 0, .2);--shadow-md: 0 2px 8px rgba(0, 0, 0, .3), 0 1px 2px rgba(0, 0, 0, .2);--shadow-lg: 0 4px 24px rgba(0, 0, 0, .35), 0 2px 8px rgba(0, 0, 0, .2);--shadow-xl: 0 8px 40px rgba(0, 0, 0, .4), 0 2px 12px rgba(0, 0, 0, .3);color-scheme:dark}html{font-family:var(--font-sans);font-size:16px;line-height:1.7;color:var(--c-text);background:var(--c-bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;scroll-behavior:smooth}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}body{min-height:100dvh;display:flex;flex-direction:column;transition:background-color var(--duration-normal) var(--ease-in-out),color var(--duration-normal) var(--ease-in-out)}a{color:var(--c-accent);text-decoration:none;transition:color var(--duration-fast) var(--ease-in-out)}a:hover{color:var(--c-accent-hover)}:focus-visible{outline:2px solid var(--c-accent);outline-offset:2px;border-radius:var(--radius-sm)}:focus:not(:focus-visible){outline:none}img{max-width:100%;height:auto;display:block}:lang(zh-Hans),:lang(zh-CN){font-family:Inter,Noto Sans SC,PingFang SC,Microsoft YaHei,sans-serif}:lang(zh-Hant),:lang(zh-TW){font-family:Inter,Noto Sans TC,PingFang TC,Microsoft JhengHei,sans-serif}p,li,td,th,blockquote{overflow-wrap:break-word;word-break:break-word;line-break:strict;hanging-punctuation:allow-end}.prose{max-width:var(--max-w-prose);font-size:var(--fs-base);line-height:1.8}.prose h1{font-size:var(--fs-3xl);font-weight:700;margin-top:var(--space-3xl);margin-bottom:var(--space-lg);line-height:1.3;letter-spacing:-.01em}.prose h2{font-size:var(--fs-2xl);font-weight:600;margin-top:var(--space-2xl);margin-bottom:var(--space-md);line-height:1.35;letter-spacing:-.01em}.prose h3{font-size:var(--fs-xl);font-weight:600;margin-top:var(--space-xl);margin-bottom:var(--space-sm)}.prose p{margin-bottom:var(--space-md)}.prose ul,.prose ol{margin-bottom:var(--space-md);padding-left:var(--space-xl)}.prose li{margin-bottom:var(--space-xs)}.prose blockquote{border-left:3px solid var(--c-accent);padding-left:var(--space-lg);color:var(--c-text-muted);margin-bottom:var(--space-md);font-style:italic}.prose pre{background:var(--c-code-bg);border:1px solid var(--c-border);border-radius:var(--radius-md);padding:var(--space-md) var(--space-lg);overflow-x:auto;margin-bottom:var(--space-md);font-family:var(--font-mono);font-size:var(--fs-sm);line-height:1.6;box-shadow:var(--shadow-sm)}.prose code{font-family:var(--font-mono);font-size:.88em;background:var(--c-code-bg);padding:.15em .4em;border-radius:var(--radius-sm);border:1px solid var(--c-border-subtle)}.prose pre code{background:none;padding:0;border-radius:0;border:none;font-size:inherit}.prose table{width:100%;border-collapse:collapse;margin-bottom:var(--space-md);font-size:var(--fs-sm);border-radius:var(--radius-md);overflow:hidden;box-shadow:var(--shadow-sm)}.prose th,.prose td{border:1px solid var(--c-border);padding:var(--space-sm) var(--space-md);text-align:left}.prose th{background:var(--c-code-bg);font-weight:600}.prose img{border-radius:var(--radius-md);margin:var(--space-lg) 0;box-shadow:var(--shadow-md)}.prose hr{border:none;border-top:1px solid var(--c-border);margin:var(--space-2xl) 0}.prose sup a{text-decoration:none;font-weight:600;color:var(--c-accent)}.prose .footnotes{font-size:var(--fs-sm);color:var(--c-text-muted);border-top:1px solid var(--c-border);margin-top:var(--space-2xl);padding-top:var(--space-lg)}.katex{font-size:1.05em}.katex-display{margin:var(--space-lg) 0;overflow-x:auto;overflow-y:hidden}@keyframes fadeInUp{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes scaleIn{0%{opacity:0;transform:scale(.97)}to{opacity:1;transform:scale(1)}}@keyframes slideInRight{0%{transform:translate(100%)}to{transform:translate(0)}}@keyframes slideOutRight{0%{transform:translate(0)}to{transform:translate(100%)}}.reveal{opacity:0;transform:translateY(20px);transition:opacity var(--duration-slow) var(--ease-out),transform var(--duration-slow) var(--ease-out)}.reveal.revealed{opacity:1;transform:translateY(0)}.stagger>.reveal:nth-child(1){transition-delay:0ms}.stagger>.reveal:nth-child(2){transition-delay:60ms}.stagger>.reveal:nth-child(3){transition-delay:80ms}.stagger>.reveal:nth-child(4){transition-delay:.12s}.stagger>.reveal:nth-child(5){transition-delay:.16s}.stagger>.reveal:nth-child(6){transition-delay:.2s}.stagger>.reveal:nth-child(7){transition-delay:.24s}.stagger>.reveal:nth-child(8){transition-delay:.28s}.stagger>.reveal:nth-child(9){transition-delay:.32s}.page-enter{animation:fadeInUp var(--duration-slow) var(--ease-out) both}@media(prefers-reduced-motion:reduce){.reveal{opacity:1;transform:none;transition:none}.page-enter{animation:none}*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}.container{width:100%;max-width:var(--max-w-wide);margin:0 auto;padding:0 var(--space-xl)}@media(max-width:768px){.container{padding:0 var(--space-lg)}}@media(max-width:640px){.container{padding:0 var(--space-md)}}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.card-hover{border-radius:var(--radius-lg);transition:background var(--duration-fast) var(--ease-in-out),box-shadow var(--duration-fast) var(--ease-in-out),transform var(--duration-fast) var(--ease-out)}.card-hover:hover{background:var(--c-surface);box-shadow:var(--shadow-md);transform:translateY(-1px)}.card-hover:active{transform:translateY(0)}@media(pointer:coarse){.touch-target{min-height:44px;min-width:44px}}
