html,body{width:100%;height:100%}input::-ms-clear,input::-ms-reveal{display:none}*,*:before,*:after{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:rgba(0,0,0,0)}@-ms-viewport{width:device-width}body{margin:0}[tabindex="-1"]:focus{outline:none}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5em;font-weight:500}p{margin-top:0;margin-bottom:1em}abbr[title],abbr[data-original-title]{-webkit-text-decoration:underline dotted;text-decoration:underline;text-decoration:underline dotted;border-bottom:0;cursor:help}address{margin-bottom:1em;font-style:normal;line-height:inherit}input[type=text],input[type=password],input[type=number],textarea{-webkit-appearance:none}ol,ul,dl{margin-top:0;margin-bottom:1em}ol ol,ul ul,ol ul,ul ol{margin-bottom:0}dt{font-weight:500}dd{margin-bottom:.5em;margin-left:0}blockquote{margin:0 0 1em}dfn{font-style:italic}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}pre,code,kbd,samp{font-size:1em;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace}pre{margin-top:0;margin-bottom:1em;overflow:auto}figure{margin:0 0 1em}img{vertical-align:middle;border-style:none}a,area,button,[role=button],input:not([type=range]),label,select,summary,textarea{touch-action:manipulation}table{border-collapse:collapse}caption{padding-top:.75em;padding-bottom:.3em;text-align:left;caption-side:bottom}input,button,select,optgroup,textarea{margin:0;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}button,html [type=button],[type=reset],[type=submit]{-webkit-appearance:button}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{padding:0;border-style:none}input[type=radio],input[type=checkbox]{box-sizing:border-box;padding:0}input[type=date],input[type=time],input[type=datetime-local],input[type=month]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;margin:0;padding:0;border:0}legend{display:block;width:100%;max-width:100%;margin-bottom:.5em;padding:0;color:inherit;font-size:1.5em;line-height:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item}template{display:none}[hidden]{display:none!important}mark{padding:.2em;background-color:#feffe6}:root{--bg: #f4f6fb;--bg-card: #ffffff;--bg-soft: #eef1f8;--text: #0f172a;--text-soft: #5b6b83;--border: #e2e8f2;--primary: #2563eb;--primary-soft: #e5edff;--accent: #0891b2;--violet: #7c3aed;--grad: linear-gradient(120deg, #06b6d4, #2563eb 48%, #7c3aed);--glow-a: rgba(6, 182, 212, .1);--glow-b: rgba(124, 58, 237, .08);--grid-line: rgba(15, 23, 42, .045);--header-bg: rgba(255, 255, 255, .78);--card-glass: none;--shadow: 0 1px 2px rgba(15, 23, 42, .04), 0 8px 24px rgba(15, 23, 42, .06);--shadow-lift: 0 4px 12px rgba(37, 99, 235, .08), 0 16px 40px rgba(37, 99, 235, .12);--content-w: 1180px;--header-h: 64px;--fx-orb-opacity: .28}html[data-theme=dark]{--bg: #070b14;--bg-card: rgba(15, 21, 36, .72);--bg-soft: #121a2b;--text: #e6eaf2;--text-soft: #8b98b3;--border: rgba(148, 163, 184, .16);--primary: #38bdf8;--primary-soft: rgba(56, 189, 248, .12);--accent: #22d3ee;--violet: #a78bfa;--grad: linear-gradient(120deg, #22d3ee, #38bdf8 48%, #a78bfa);--glow-a: rgba(34, 211, 238, .12);--glow-b: rgba(167, 139, 250, .1);--grid-line: rgba(148, 163, 184, .06);--header-bg: rgba(7, 11, 20, .72);--card-glass: blur(14px);--shadow: 0 1px 0 rgba(255, 255, 255, .03) inset, 0 8px 32px rgba(0, 0, 0, .45);--shadow-lift: 0 2px 0 rgba(255, 255, 255, .05) inset, 0 16px 48px rgba(34, 211, 238, .1);--fx-orb-opacity: .55}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif;font-size:15px;line-height:1.7;transition:background-color .2s ease,color .2s ease}a{color:var(--primary);text-decoration:none}a:hover{text-decoration:underline}.blog-shell{position:relative;display:flex;flex-direction:column;min-height:100vh;padding-top:calc(var(--header-h) + 1px)}.blog-shell:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;z-index:-1;pointer-events:none;background:radial-gradient(56% 42% at 10% -6%,var(--glow-a),transparent 70%),radial-gradient(44% 36% at 92% -4%,var(--glow-b),transparent 70%),linear-gradient(var(--grid-line) 1px,transparent 1px),linear-gradient(90deg,var(--grid-line) 1px,transparent 1px);background-size:auto,auto,44px 44px,44px 44px;-webkit-mask-image:linear-gradient(#000 0%,#000 55%,transparent 96%);mask-image:linear-gradient(#000 0%,#000 55%,transparent 96%)}.blog-header{position:fixed;top:0;left:0;right:0;z-index:10;background:var(--header-bg);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-bottom:1px solid var(--border)}.blog-header-inner{max-width:var(--content-w);margin:0 auto;padding:0 24px;height:var(--header-h);display:flex;align-items:center;gap:24px}.blog-logo{position:relative;font-size:19px;font-weight:800;letter-spacing:.5px;background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent;white-space:nowrap}.blog-logo:after{content:"";display:inline-block;width:6px;height:6px;margin-left:3px;border-radius:50%;background:var(--accent);box-shadow:0 0 8px var(--accent);vertical-align:baseline}.blog-logo:hover{text-decoration:none;color:transparent}.blog-nav{display:flex;align-items:center;gap:4px;flex:1}.blog-nav .nav-link{position:relative;padding:6px 14px;border-radius:8px;color:var(--text-soft);transition:all .15s ease}.blog-nav .nav-link:hover{text-decoration:none;background:var(--bg-soft);color:var(--text)}.blog-nav .nav-link.router-link-active{color:var(--text);font-weight:600}.blog-nav .nav-link.router-link-active:after{content:"";position:absolute;left:14px;right:14px;bottom:0;height:2px;border-radius:2px;background:var(--grad)}.blog-nav .nav-link-dropdown{cursor:pointer;-webkit-user-select:none;user-select:none}.blog-nav .nav-link-dropdown.nav-link-active{color:var(--text);font-weight:600}.blog-nav .nav-link-dropdown.nav-link-active:after{content:"";position:absolute;left:14px;right:14px;bottom:0;height:2px;border-radius:2px;background:var(--grad)}.nav-caret{font-size:10px;opacity:.7}.blog-main{flex:1;width:100%;max-width:var(--content-w);margin:0 auto;padding:40px 24px 80px}.blog-footer{position:relative;border-top:1px solid var(--border);background:color-mix(in srgb,var(--bg-card) 45%,transparent);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);color:var(--text-soft);font-size:13px}.blog-footer:before{content:"";position:absolute;top:-1px;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,var(--primary) 30%,var(--violet) 70%,transparent);opacity:.5}.blog-footer-inner{max-width:var(--content-w);margin:0 auto;padding:30px 24px 18px;display:flex;justify-content:space-between;align-items:flex-start;gap:24px;flex-wrap:wrap}.footer-brand .blog-logo{font-size:17px}.footer-slogan{margin:6px 0 0;font-size:13px;color:var(--text-soft)}.footer-links{display:flex;align-items:center;gap:20px;padding-top:8px}.footer-links a{color:var(--text-soft);font-size:13px;transition:color .15s ease}.footer-links a:hover{color:var(--primary);text-decoration:none}.footer-bottom{max-width:var(--content-w);margin:0 auto;padding:12px 24px 20px;border-top:1px solid color-mix(in srgb,var(--border) 60%,transparent);display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:6px 16px;font-size:12px;color:var(--text-soft)}.footer-icp{color:inherit}.footer-icp:hover{color:var(--primary);text-decoration:none}.blog-card{position:relative;background:var(--bg-card);backdrop-filter:var(--card-glass);-webkit-backdrop-filter:var(--card-glass);border:1px solid var(--border);border-radius:14px;box-shadow:var(--shadow);padding:20px;transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease}.blog-card:before{content:"";position:absolute;top:0;left:14px;right:14px;height:2px;border-radius:0 0 3px 3px;background:var(--grad);opacity:0;transition:opacity .18s ease}.blog-card:hover:before{opacity:1}.blog-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-lift);border-color:color-mix(in srgb,var(--primary) 35%,var(--border))}.blog-card+.blog-card{margin-top:16px}.card-title{margin:0 0 8px;font-size:20px;line-height:1.45;letter-spacing:.2px}.card-title a{color:var(--text)}.card-title a:hover{color:var(--primary);text-decoration:none;background:none}.card-meta{display:flex;flex-wrap:wrap;align-items:center;gap:12px;color:var(--text-soft);font-size:13px}.card-summary{margin:10px 0 12px;color:var(--text-soft)}.post-body{position:relative;background:var(--bg-card);backdrop-filter:var(--card-glass);-webkit-backdrop-filter:var(--card-glass);border:1px solid var(--border);border-radius:14px;box-shadow:var(--shadow);padding:36px clamp(20px,5vw,52px);overflow-wrap:break-word}.post-body:before{content:"";position:absolute;top:0;left:18px;right:18px;height:2px;border-radius:0 0 3px 3px;background:var(--grad);opacity:.85}.markdown-body{color:var(--text)}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4{margin:1.6em 0 .6em;line-height:1.35;font-weight:700}.markdown-body h2,.markdown-body h3{position:relative;padding-left:14px}.markdown-body h2:before,.markdown-body h3:before{content:"";position:absolute;left:0;top:.18em;bottom:.18em;width:4px;border-radius:4px;background:var(--grad)}.markdown-body h1{font-size:27px}.markdown-body h2{font-size:22px}.markdown-body h3{font-size:18px}.markdown-body p{margin:.8em 0}.markdown-body img{max-width:100%;border-radius:10px;border:1px solid var(--border)}.markdown-body blockquote{margin:1em 0;padding:2px 16px;border-left:3px solid var(--primary);background:var(--bg-soft);color:var(--text-soft);border-radius:0 10px 10px 0}.markdown-body code{font-family:SF Mono,Menlo,Consolas,monospace;font-size:.9em;background:var(--bg-soft);border:1px solid var(--border);border-radius:4px;padding:1px 5px}.markdown-body pre{position:relative;background:var(--bg-soft);border:1px solid var(--border);border-radius:10px;padding:14px 16px;overflow-x:auto;line-height:1.55}.markdown-body .copy-btn{position:absolute;top:6px;right:6px;font-size:12px;line-height:1;padding:4px 10px;border-radius:6px;border:1px solid var(--border);background:var(--bg-card);color:var(--text-soft);cursor:pointer;opacity:0;transition:opacity .15s ease,color .15s ease,border-color .15s ease}.markdown-body pre:hover .copy-btn{opacity:1}.markdown-body .copy-btn:hover{color:var(--primary);border-color:var(--primary)}.markdown-body pre code{background:none;border:none;padding:0;font-size:13px}.markdown-body table{border-collapse:collapse;width:100%;margin:1em 0}.markdown-body th,.markdown-body td{border:1px solid var(--border);padding:8px 12px;text-align:left}.markdown-body th{background:var(--bg-soft)}.markdown-body ul,.markdown-body ol{padding-left:1.6em;margin:.8em 0}.markdown-body hr{border:none;height:1px;background:linear-gradient(90deg,transparent,var(--border),transparent);margin:2em 0}.back-top{position:fixed;right:28px;bottom:44px;z-index:20;border:1px solid var(--border)!important;box-shadow:var(--shadow-lift);opacity:.92}.fade-up-enter-active,.fade-up-leave-active{transition:opacity .2s ease,transform .2s ease}.fade-up-enter-from,.fade-up-leave-to{opacity:0;transform:translateY(10px)}.snippet mark{background:var(--primary-soft);color:var(--primary);border-radius:3px;padding:0 2px}@media(max-width:720px){.blog-header-inner{gap:12px;padding:0 12px}.blog-main{padding:18px 12px 44px}.card-title{font-size:18px}.blog-footer-inner{flex-direction:column;gap:14px;padding:20px 16px 14px}.footer-links{padding-top:0}.footer-bottom{padding:10px 16px 16px;justify-content:center;text-align:center}}
