:root{--blog-primary: #B45309;--blog-primary-700: #92400E;--blog-primary-600: #B45309;--blog-primary-500: #D97706;--blog-primary-400: #F59E0B;--blog-primary-50: #FFFBEB;--blog-background: #FDFCF8;--blog-foreground: #1F1F1E;--blog-card: #FFFFFF;--blog-card-foreground: #1F1F1E;--blog-popover: #FFFFFF;--blog-popover-foreground: #1F1F1E;--blog-muted: #F5F3EE;--blog-muted-foreground: #6B6B66;--blog-border: #E8E6E0;--blog-input: #E8E6E0;--blog-ring: #B45309;--blog-primary-foreground: #FFFFFF;--blog-state-success: #15803D;--blog-state-warning: #A16207;--blog-state-error: #B91C1C;--blog-state-info: #0369A1;--blog-radius-sm: 2px;--blog-radius-md: 8px;--blog-radius-lg: 12px;--blog-radius-full: 9999px;--blog-shadow-1: 0 1px 2px rgba(31, 31, 30, .04), 0 1px 1px rgba(31, 31, 30, .02);--blog-shadow-2: 0 8px 24px -8px rgba(31, 31, 30, .05);--blog-font-title: "Source Han Serif SC", "Noto Serif SC", "STSong", "SimSun", Georgia, serif;--blog-font-body: "Inter", "Noto Sans SC", "PingFang SC", "Microsoft YaHei", system-ui, sans-serif;--blog-font-mono: ui-monospace, SFMono-Regular, "SF Mono", "Fira Code", "Noto Sans SC", monospace;--blog-space-1: 4px;--blog-space-2: 8px;--blog-space-3: 12px;--blog-space-4: 16px;--blog-space-5: 24px;--blog-space-6: 32px;--blog-space-7: 48px;--blog-space-8: 64px;--blog-space-9: 96px;--blog-transition-fast: .12s cubic-bezier(.2, .8, .2, 1);--blog-transition-base: .16s cubic-bezier(.2, .8, .2, 1);--contrast: var(--blog-foreground);--contrast-2: var(--blog-muted-foreground);--contrast-3: var(--blog-muted-foreground);--base: var(--blog-border);--base-2: var(--blog-muted);--base-3: var(--blog-card);--accent: var(--blog-primary);--accent-hover: var(--blog-primary-700)}.dark{--blog-background: #121211;--blog-foreground: #F2F1EE;--blog-card: #1C1C1B;--blog-card-foreground: #F2F1EE;--blog-popover: #1C1C1B;--blog-popover-foreground: #F2F1EE;--blog-muted: #272724;--blog-muted-foreground: #9A9A94;--blog-border: #343431;--blog-input: #343431;--blog-primary-foreground: #FFFFFF}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;scroll-behavior:smooth}body{font-family:var(--blog-font-body);line-height:1.75;color:var(--blog-foreground);background:var(--blog-background);font-size:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;min-height:100vh;display:flex;flex-direction:column}a{color:var(--blog-primary);text-decoration:none;transition:color var(--blog-transition-fast)}a:hover{color:var(--blog-primary-700)}img{max-width:100%;height:auto}.shell-header{position:sticky;top:0;z-index:50;border-bottom:1px solid var(--blog-border);background:var(--blog-background)}.shell-header-inner{max-width:1152px;margin:0 auto;padding:0 16px;height:64px;display:flex;align-items:center;justify-content:space-between}.shell-logo{font-family:var(--blog-font-title);font-size:20px;font-weight:600;color:var(--blog-primary);text-decoration:none;letter-spacing:-.01em;display:inline-flex;align-items:center;gap:10px}.shell-logo:hover{color:var(--blog-primary-700)}.shell-logo-img{width:32px;height:32px;border-radius:var(--blog-radius-full);object-fit:cover}.shell-nav{display:flex;align-items:center;gap:28px}.shell-nav-link{font-family:var(--blog-font-body);font-size:14px;color:var(--blog-foreground);text-decoration:none;padding:8px 0;transition:color var(--blog-transition-fast)}.shell-nav-link:hover{color:var(--blog-primary)}.shell-nav-link[data-active=true]{color:var(--blog-primary);border-bottom:2px solid var(--blog-primary)}.shell-main{width:100%;max-width:1152px;margin:0 auto;padding:32px 16px 64px;flex:1}@media (min-width: 768px){.shell-main{padding-top:48px;padding-bottom:96px}}.shell-footer{border-top:1px solid var(--blog-border);background:var(--blog-background)}.shell-footer-inner{max-width:1152px;margin:0 auto;padding:32px 16px;display:flex;flex-direction:column;align-items:center;gap:16px}.shell-footer-links{display:flex;align-items:center;gap:24px}@media (min-width: 768px){.shell-footer-inner{flex-direction:row;justify-content:space-between}}.shell-footer-text,.shell-footer-link{font-family:var(--blog-font-body);font-size:13px;color:var(--blog-muted-foreground);text-decoration:none}.shell-footer-link:hover{color:var(--blog-primary)}.blog-h1{font-family:var(--blog-font-title);font-size:clamp(32px,4vw,52px);line-height:1.18;font-weight:600;letter-spacing:-.02em;color:var(--blog-foreground)}.blog-h2{font-family:var(--blog-font-title);font-size:clamp(24px,2.8vw,36px);line-height:1.22;font-weight:600;letter-spacing:-.015em;color:var(--blog-foreground)}.blog-h3{font-family:var(--blog-font-title);font-size:clamp(20px,2vw,24px);line-height:1.3;font-weight:600;color:var(--blog-foreground)}.blog-h4{font-family:var(--blog-font-body);font-size:18px;line-height:1.35;font-weight:600;color:var(--blog-foreground)}.blog-body{font-family:var(--blog-font-body);font-size:16px;line-height:1.75;color:var(--blog-foreground)}.blog-body-lg{font-family:var(--blog-font-body);font-size:18px;line-height:1.7;color:var(--blog-foreground)}.blog-caption{font-family:var(--blog-font-body);font-size:13px;line-height:1.5;color:var(--blog-muted-foreground)}.blog-mono{font-family:var(--blog-font-mono);font-size:13px;line-height:1.5}.article-content{color:var(--blog-foreground)}.article-content>*+*{margin-top:var(--blog-space-5)}.article-content h1,.article-content h2,.article-content h3,.article-content h4,.article-content h5,.article-content h6{font-family:var(--blog-font-title);line-height:1.3;margin-top:var(--blog-space-6);margin-bottom:var(--blog-space-4);font-weight:600;color:var(--blog-foreground)}.article-content h1{font-size:clamp(28px,3vw,36px)}.article-content h2{font-size:clamp(24px,2.8vw,30px);border-bottom:1px solid var(--blog-border);padding-bottom:var(--blog-space-3)}.article-content h3{font-size:22px}.article-content h4{font-size:18px;font-family:var(--blog-font-body)}.article-content p{margin:var(--blog-space-5) 0;line-height:1.85}.article-content ul,.article-content ol{margin:var(--blog-space-5) 0;padding-left:var(--blog-space-6);line-height:1.85}.article-content ul{list-style-type:disc}.article-content ol{list-style-type:decimal}.article-content li{margin-bottom:var(--blog-space-3)}.article-content li::marker{color:var(--blog-primary)}.article-content blockquote{margin:var(--blog-space-6) 0;padding:var(--blog-space-5) var(--blog-space-6);border-left:3px solid var(--blog-primary);background:var(--blog-muted);border-radius:0 var(--blog-radius-md) var(--blog-radius-md) 0;font-family:var(--blog-font-title);font-style:italic;color:var(--blog-foreground);line-height:1.75}.article-content blockquote p{margin:0}.article-content img{display:block;margin:var(--blog-space-6) auto;border-radius:var(--blog-radius-lg);box-shadow:var(--blog-shadow-1)}.article-content code{background:var(--blog-muted);padding:.15em .4em;border-radius:var(--blog-radius-sm);font-family:var(--blog-font-mono);font-size:.9em;color:var(--blog-primary-700)}.article-content pre{background:#2d2d2d;color:#e4e4e7;padding:var(--blog-space-5);border-radius:var(--blog-radius-md);overflow-x:auto;margin:var(--blog-space-6) 0;font-size:14px;line-height:1.6}.article-content pre code{background:none;padding:0;color:inherit;font-size:inherit}.article-content hr{border:none;border-top:1px solid var(--blog-border);margin:var(--blog-space-7) 0}.article-content a{color:var(--blog-primary);text-decoration:underline;text-underline-offset:3px}.article-content a:hover{color:var(--blog-primary-700)}.article-content table{width:100%;border-collapse:collapse;margin:var(--blog-space-6) 0;font-size:15px}.article-content th,.article-content td{border:1px solid var(--blog-border);padding:var(--blog-space-3) var(--blog-space-4);text-align:left}.article-content th{background:var(--blog-muted);font-weight:600}.comments-area{background:var(--blog-card);border:1px solid var(--blog-border);border-radius:var(--blog-radius-lg);padding:var(--blog-space-6);margin-top:var(--blog-space-7)}.load-comments-btn{display:block;width:100%;max-width:320px;margin:0 auto;padding:12px 24px;background:var(--blog-card);color:var(--blog-primary);border:2px solid var(--blog-primary);border-radius:var(--blog-radius-md);font-size:1rem;font-weight:600;cursor:pointer;transition:all var(--blog-transition-base);text-align:center}.load-comments-btn:hover:not(:disabled){background:var(--blog-primary);color:var(--blog-primary-foreground)}.load-comments-btn:disabled{opacity:.7;cursor:not-allowed}@media (max-width: 600px){.shell-nav{gap:18px}.shell-nav-link{font-size:13px}.shell-logo{font-size:18px}}
