:root{--t-cyan:#22d3ee;--t-blue:#3b82f6;--t-violet:#8b5cf6;--t-pink:#ec4899;--t-grad:linear-gradient(115deg, #22d3ee 0%, #3b82f6 34%, #8b5cf6 68%, #ec4899 100%);--t-grad-soft:linear-gradient(115deg, rgba(34, 211, 238, .14), rgba(139, 92, 246, .14));--t-card-bg:rgba(255, 255, 255, .70);--t-card-line:rgba(59, 130, 246, .14);--t-card-shadow:0 10px 40px -24px rgba(12, 25, 55, .55);--t-card-shadow-hover:0 18px 50px -20px rgba(34, 211, 238, .42);--t-inner:inset 0 1px 0 rgba(255, 255, 255, .65);--t-soft:rgba(59, 130, 246, .07);--t-hair:rgba(59, 130, 246, .16);--t-accent-text:#0e7490;--t-muted:#64748b;--t-radius:14px;--t-ease:cubic-bezier(.22, 1, .36, 1)}[data-theme=dark]{--t-card-bg:rgba(17, 21, 32, .62);--t-card-line:rgba(120, 180, 255, .13);--t-card-shadow:0 10px 40px -24px rgba(0, 0, 0, .9);--t-card-shadow-hover:0 18px 50px -18px rgba(34, 211, 238, .35);--t-accent-text:#67e8f9;--t-muted:#94a3b8;--t-inner:inset 0 1px 0 rgba(255, 255, 255, .06);--t-soft:rgba(120, 180, 255, .06);--t-hair:rgba(120, 180, 255, .14)}body::before{content:"";position:fixed;inset:-25%;z-index:-3;pointer-events:none;background:radial-gradient(38% 42% at 18% 20%,rgba(34,211,238,.3),transparent 62%),radial-gradient(34% 38% at 82% 14%,rgba(139,92,246,.26),transparent 60%),radial-gradient(42% 46% at 70% 84%,rgba(59,130,246,.22),transparent 64%);filter:blur(24px);animation:t-drift 28s var(--t-ease) infinite alternate}[data-theme=dark] body::before{background:radial-gradient(38% 42% at 18% 20%,rgba(34,211,238,.16),transparent 62%),radial-gradient(34% 38% at 82% 14%,rgba(139,92,246,.2),transparent 60%),radial-gradient(42% 46% at 70% 84%,rgba(37,99,235,.18),transparent 64%)}@keyframes t-drift{0%{transform:translate3d(-2%,-1%,0) scale(1)}50%{transform:translate3d(2%,1.5%,0) scale(1.06)}100%{transform:translate3d(-1%,2%,0) scale(1.02)}}body::after{content:"";position:fixed;inset:0;z-index:-2;pointer-events:none;background-image:linear-gradient(to right,rgba(70,120,235,.13) 1px,transparent 1px),linear-gradient(to bottom,rgba(70,120,235,.13) 1px,transparent 1px);background-size:46px 46px;-webkit-mask-image:radial-gradient(ellipse 90% 65% at 50% 0%,#000 5%,transparent 78%);mask-image:radial-gradient(ellipse 90% 65% at 50% 0%,#000 5%,transparent 78%)}[data-theme=dark] body::after{background-image:linear-gradient(to right,rgba(110,160,255,.1) 1px,transparent 1px),linear-gradient(to bottom,rgba(110,160,255,.1) 1px,transparent 1px)}#tech-particles{position:fixed;inset:0;z-index:-1;pointer-events:none;opacity:.85}body #page-header{background-color:transparent;background-image:none}@media (min-width:769px){body #page-header #nav,body #page-header.not-top-img #nav{background:rgba(9,13,24,.82);-webkit-backdrop-filter:blur(20px) saturate(170%);backdrop-filter:blur(20px) saturate(170%);box-shadow:0 12px 40px -28px rgba(0,0,0,.9);border-bottom:1px solid rgba(34,211,238,.18)}body #nav .site-page,body #nav .social-icon,body #nav a,body #nav i,body #nav span{color:rgba(226,238,255,.88);text-shadow:none}body #nav .site-page:hover,body #nav .social-icon:hover,body #nav a:hover{color:#67e8f9}body #page-header.nav-fixed #nav #blog-info,body #page-header.nav-fixed #nav a,body #page-header.nav-fixed #nav i,body #page-header.nav-fixed #nav span.site-page{color:rgba(226,238,255,.88)}body #page-header.nav-fixed #nav,body #page-header.not-top-img.nav-fixed #nav{background:rgba(9,13,24,.9);-webkit-backdrop-filter:blur(22px) saturate(180%);backdrop-filter:blur(22px) saturate(180%)}}@media (max-width:768px){body #page-header #nav,body #page-header.not-top-img #nav{background:rgba(255,255,255,.62);-webkit-backdrop-filter:blur(14px) saturate(160%);backdrop-filter:blur(14px) saturate(160%);border-bottom:1px solid var(--t-hair);box-shadow:none}}body #nav{position:relative}body #nav::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:1px;background:var(--t-grad);opacity:.6;pointer-events:none}[data-theme=dark] body #page-header #nav,[data-theme=dark] body #page-header.not-top-img #nav{background:rgba(9,13,24,.82)}body #blog-info .site-name{background:var(--t-grad);background-size:220% 100%;-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent;animation:t-flow 9s linear infinite;font-weight:700;letter-spacing:.02em}@keyframes t-flow{0%{background-position:0 50%}100%{background-position:220% 50%}}body #menus .site-page{position:relative;transition:color .3s var(--t-ease)}body #menus .site-page>span{position:relative}body #menus .site-page>span::after{content:"";position:absolute;left:50%;bottom:-4px;width:0;height:2px;border-radius:2px;background:var(--t-grad);transform:translateX(-50%);transition:width .32s var(--t-ease)}body #menus .site-page:hover>span::after{width:100%}body #post,body #recent-posts .recent-post-item,body .card-widget,body .layout .pagination>:not(.space),body .layout>div:first-child:not(.nc){background:var(--t-card-bg);background-image:none;border:1px solid var(--t-card-line);border-radius:var(--t-radius);box-shadow:var(--t-inner),var(--t-card-shadow);-webkit-backdrop-filter:blur(16px) saturate(150%);backdrop-filter:blur(16px) saturate(150%);transition:transform .38s var(--t-ease),box-shadow .38s var(--t-ease),border-color .38s var(--t-ease)}body #recent-posts .recent-post-item:hover,body .card-widget:hover{transform:translateY(-4px);border-color:rgba(34,211,238,.38);box-shadow:var(--t-card-shadow-hover)}@media (hover:hover) and (pointer:fine){body #recent-posts .recent-post-item,body .card-widget{background-image:radial-gradient(260px circle at var(--mx,50%) var(--my,0),rgba(34,211,238,.11),transparent 62%),linear-gradient(150deg,rgba(255,255,255,.5) 0,rgba(236,254,255,.34) 48%,rgba(245,243,255,.42) 100%)}[data-theme=dark] body #recent-posts .recent-post-item,[data-theme=dark] body .card-widget{background-image:radial-gradient(260px circle at var(--mx,50%) var(--my,0),rgba(34,211,238,.13),transparent 62%),linear-gradient(150deg,rgba(255,255,255,.05) 0,rgba(34,211,238,.05) 50%,rgba(139,92,246,.06) 100%)}}body .post_cover img{transition:transform .7s var(--t-ease),filter .5s var(--t-ease)}body #recent-posts .recent-post-item:hover .post_cover img{transform:scale(1.06);filter:saturate(120%) brightness(1.04)}body #recent-posts .recent-post-item .article-title{transition:color .3s var(--t-ease)}body #recent-posts .recent-post-item:hover .article-title{background:var(--t-grad);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent}body #post-info .post-title{position:relative;padding-bottom:.5rem}body #post-info .post-title::after{content:"";position:absolute;left:0;bottom:0;width:96px;height:3px;border-radius:3px;background:var(--t-grad);box-shadow:0 0 14px rgba(34,211,238,.55)}body #article-container h2{position:relative;padding-left:16px;transition:color .3s var(--t-ease)}body #article-container h2::before{content:"";position:absolute;left:0;top:.32em;bottom:.32em;width:4px;border-radius:4px;background:var(--t-grad);box-shadow:0 0 12px rgba(34,211,238,.55);transition:width .3s var(--t-ease),box-shadow .3s var(--t-ease)}body #article-container h2:hover::before{width:6px;box-shadow:0 0 20px rgba(34,211,238,.85)}body #article-container h3{position:relative;padding-left:15px}body #article-container h3::before{content:"";position:absolute;left:2px;top:.62em;width:7px;height:7px;border-radius:50%;background:var(--t-grad);box-shadow:0 0 10px rgba(139,92,246,.7)}body #article-container li a,body #article-container p a{position:relative;text-decoration:none;background-image:var(--t-grad);background-repeat:no-repeat;background-position:0 100%;background-size:0 2px;transition:background-size .35s var(--t-ease),color .3s}body #article-container li a:hover,body #article-container p a:hover{background-size:100% 2px;color:inherit}body #article-container blockquote{border-left:3px solid transparent;border-image:var(--t-grad) 1;background:var(--t-soft);border-radius:0 10px 10px 0}body #article-container :not(pre)>code{border:1px solid var(--t-hair);background:var(--t-soft)!important;border-radius:5px;transition:border-color .3s,box-shadow .3s}body #article-container :not(pre)>code:hover{border-color:rgba(34,211,238,.45);box-shadow:0 0 12px rgba(34,211,238,.16)}body #article-container table{overflow:hidden;border-radius:10px;border:1px solid var(--t-hair)}body #article-container table thead{background:var(--t-grad-soft)}body #article-container table tbody tr{transition:background .25s var(--t-ease)}body #article-container table tbody tr:hover{background:var(--t-soft)}body #article-container hr{border:none;height:1px;background:linear-gradient(90deg,transparent,var(--t-hair) 20%,var(--t-hair) 80%,transparent)}body #article-container pre,body figure.highlight{position:relative;border:1px solid var(--t-hair);border-radius:12px;transition:border-color .35s var(--t-ease),box-shadow .35s var(--t-ease)}body figure.highlight::before{content:"";position:absolute;top:0;left:0;right:0;height:2px;background:var(--t-grad);opacity:.55;pointer-events:none;z-index:1}body #article-container pre:hover,body figure.highlight:hover{border-color:rgba(34,211,238,.34);box-shadow:0 10px 36px -22px rgba(34,211,238,.8)}body .note{border-radius:10px;transition:transform .3s var(--t-ease),box-shadow .3s var(--t-ease)}body .note:hover{transform:translateX(3px);box-shadow:0 8px 26px -18px rgba(34,211,238,.7)}body #aside-content #card-toc .toc-content .toc-link{position:relative;border-radius:6px;padding-left:12px;transition:color .25s var(--t-ease),background .25s var(--t-ease)}body #aside-content #card-toc .toc-content .toc-link::before{content:"";position:absolute;left:0;top:50%;width:3px;height:0;border-radius:3px;background:var(--t-grad);transform:translateY(-50%);transition:height .28s var(--t-ease),box-shadow .28s var(--t-ease)}body #aside-content #card-toc .toc-content .toc-link:hover{background:var(--t-soft)}body #aside-content #card-toc .toc-content .toc-link.active{background:var(--t-soft);color:var(--t-accent-text);font-weight:600;box-shadow:inset 0 0 0 1px rgba(34,211,238,.16)}body #aside-content #card-toc .toc-content .toc-link.active::before{height:68%;box-shadow:0 0 12px rgba(34,211,238,.8)}body .pagination .extend,body .pagination .page-number{border-radius:9px;transition:transform .28s var(--t-ease),box-shadow .28s var(--t-ease),background .28s}body .pagination .extend:hover,body .pagination .page-number:not(.current):hover{transform:translateY(-2px);box-shadow:0 8px 20px -12px rgba(34,211,238,.9)}body .pagination .page-number.current{background:var(--t-grad);color:#fff;box-shadow:0 8px 22px -12px rgba(99,102,241,.9)}body #go-up{background:var(--t-grad);box-shadow:0 8px 24px -10px rgba(34,211,238,.8);transition:transform .3s var(--t-ease)}body #go-up:hover{transform:translateY(-3px) scale(1.05)}body #rightside>div>a,body #rightside>div>button{border-radius:10px;transition:transform .3s var(--t-ease),box-shadow .3s var(--t-ease)}body #rightside>div>a:hover,body #rightside>div>button:hover{transform:translateX(-3px);box-shadow:0 6px 20px -10px rgba(34,211,238,.9)}body #post .tag_share .post-meta__tags,body .post-categories a,body .post-meta__categories{border-radius:999px;transition:transform .25s var(--t-ease),box-shadow .25s var(--t-ease)}body #post .tag_share .post-meta__tags:hover,body .post-categories a:hover,body .post-meta__categories:hover{transform:translateY(-2px);box-shadow:0 6px 18px -10px rgba(34,211,238,.9)}body #footer{position:relative;background:linear-gradient(180deg,rgba(8,12,22,0) 0,rgba(8,12,22,.92) 55%,#060911 100%);color:rgba(230,241,255,.72)}body #footer::before{content:"";position:absolute;top:0;left:0;right:0;height:1px;background:var(--t-grad);opacity:.55}body #footer .copyright,body #footer .footer-separator,body #footer a{color:rgba(230,241,255,.72)}body #footer a:hover{color:var(--t-cyan)}::selection{background:rgba(34,211,238,.3);color:inherit}body ::-webkit-scrollbar{width:9px;height:9px}body ::-webkit-scrollbar-track{background:0 0}body ::-webkit-scrollbar-thumb{background:linear-gradient(180deg,var(--t-cyan),var(--t-violet));border-radius:99px;border:2px solid transparent;background-clip:content-box}body ::-webkit-scrollbar-thumb:hover{background:linear-gradient(180deg,var(--t-cyan),var(--t-pink));background-clip:content-box}#tech-progress{position:fixed;top:0;left:0;width:100%;height:3px;z-index:1001;pointer-events:none;background:0 0}#tech-progress>i{display:block;height:100%;width:0;background:var(--t-grad);box-shadow:0 0 14px rgba(34,211,238,.85);transition:width .12s linear;border-radius:0 3px 3px 0}.tech-js .tech-reveal{opacity:0;transform:translateY(18px)}.tech-js .tech-reveal.tech-in{opacity:1;transform:none;transition:opacity .7s var(--t-ease),transform .7s var(--t-ease)}body .site-page:focus-visible,body a:focus-visible,body button:focus-visible{outline:2px solid var(--t-cyan);outline-offset:3px;border-radius:6px}@media (max-width:768px){body #post,body #recent-posts .recent-post-item,body .card-widget,body .layout .pagination>:not(.space),body .layout>div:first-child:not(.nc){-webkit-backdrop-filter:none;backdrop-filter:none;background:var(--card-bg)}body #nav{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}#tech-particles{opacity:.5}body #article-container h2{padding-left:13px}}@media (prefers-reduced-motion:reduce){body #blog-info .site-name,body::before{animation:none!important}.tech-reveal{opacity:1!important;transform:none!important}*,::after,::before{transition-duration:NaNs!important;animation-duration:NaNs!important}}body #card-info-btn,body #card-info-btn i,body #card-info-btn span{color:#fff!important}body #card-info-btn{background:var(--t-grad)!important;border:none;box-shadow:0 10px 26px -14px rgba(34,211,238,.95);transition:transform .3s var(--t-ease),box-shadow .3s var(--t-ease)}body #card-info-btn:hover{transform:translateY(-2px);box-shadow:0 14px 32px -12px rgba(139,92,246,.9)}body #local-search .search-dialog{background:var(--t-card-bg);-webkit-backdrop-filter:blur(22px) saturate(170%);backdrop-filter:blur(22px) saturate(170%);border:1px solid var(--t-card-line);border-radius:16px;box-shadow:0 30px 80px -30px rgba(6,12,26,.75)}body #local-search .search-nav .search-icon{color:var(--t-cyan)}@media (min-width:769px){body #search-button .search{animation:t-pulse 3.6s ease-in-out infinite}}@keyframes t-pulse{0%,100%{opacity:.85}50%{opacity:1;filter:drop-shadow(0 0 6px rgba(34, 211, 238, .8))}}body #article-container img:not(.emoji){border-radius:10px;transition:box-shadow .4s var(--t-ease),transform .4s var(--t-ease)}body #article-container img:not(.emoji):hover{box-shadow:0 16px 44px -24px rgba(34,211,238,.9)}@media (min-width:769px){body #page-header #nav #blog-info .site-name,body #page-header.nav-fixed #nav #blog-info .site-name{background-image:linear-gradient(115deg,#a5f3fc 0,#dbeafe 42%,#e9d5ff 74%,#fbcfe8 100%);background-size:220% 100%;-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;font-weight:800;filter:drop-shadow(0 0 12px rgba(34, 211, 238, .45))}}@media (max-width:768px){body #page-header #nav #blog-info .site-name{background-image:linear-gradient(115deg,#0891b2 0,#2563eb 40%,#7c3aed 72%,#be185d 100%)}}@media print{.tech-js .tech-reveal,.tech-reveal{opacity:1!important;transform:none!important}#tech-particles,#tech-progress,body::after,body::before{display:none!important}}body #local-search .search-dialog{background:rgba(255,255,255,.95)}[data-theme=dark] body #local-search .search-dialog{background:rgba(15,19,30,.95)}body #local-search .local-search-input input{border-width:1px;border-radius:10px;transition:box-shadow .3s var(--t-ease),border-color .3s var(--t-ease)}body #local-search .local-search-input input:focus{border-color:var(--t-cyan);box-shadow:0 0 0 3px rgba(34,211,238,.18),0 0 18px rgba(34,211,238,.25);outline:0}body #footer{background:#070b14;border-top:1px solid rgba(34,211,238,.18)}body #footer::before{height:2px;top:-1px;opacity:.8}html[data-theme=light]{--global-bg:#eef4ff}body .tag-cloud-list>a{position:relative;border-radius:999px!important;border:1px solid rgba(255,255,255,.5);background-image:linear-gradient(rgba(255,255,255,.58),rgba(255,255,255,.58))!important;color:#16324f!important;box-shadow:0 6px 18px -12px rgba(12,32,64,.55),inset 0 1px 0 rgba(255,255,255,.8);transition:transform .28s var(--t-ease),box-shadow .28s var(--t-ease),color .28s var(--t-ease)}body .tag-cloud-list>a:hover{transform:translateY(-3px) scale(1.04);color:#0b1a2b!important;box-shadow:0 12px 26px -12px rgba(34,211,238,.65),inset 0 1px 0 rgba(255,255,255,.9)}[data-theme=dark] body .tag-cloud-list>a{background-image:linear-gradient(rgba(8,12,22,.45),rgba(8,12,22,.45))!important;border-color:rgba(120,180,255,.22);color:#cfe6ff!important;box-shadow:0 6px 18px -12px rgba(0,0,0,.9),inset 0 1px 0 rgba(255,255,255,.08)}[data-theme=dark] body .tag-cloud-list>a:hover{color:#eaf6ff!important;box-shadow:0 12px 26px -12px rgba(34,211,238,.55),inset 0 1px 0 rgba(255,255,255,.12)}#tech-navbar{position:fixed;top:0;left:0;width:100%;height:3px;z-index:1002;pointer-events:none;opacity:0;transition:opacity .28s var(--t-ease)}#tech-navbar.tech-on{opacity:1}#tech-navbar>i{display:block;height:100%;width:0;border-radius:0 3px 3px 0;background:var(--t-grad);box-shadow:0 0 14px rgba(34,211,238,.9);transition:width .45s cubic-bezier(.2, .8, .3, 1)}body #body-wrap{transition:opacity .22s var(--t-ease)}body #body-wrap.tech-leaving{opacity:.5}body #body-wrap.tech-entering{animation:t-page-in .55s var(--t-ease) both}@keyframes t-page-in{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){body #body-wrap.tech-entering{animation:none}body #body-wrap.tech-leaving{opacity:1}}[data-theme=dark] body #article-container table td,[data-theme=dark] body #article-container table th{border-color:rgba(120,180,255,.1)}[data-theme=dark] body #article-container table thead th{background:linear-gradient(180deg,rgba(34,211,238,.1),rgba(139,92,246,.08))}body #article-container table thead th{font-weight:600}body figure.highlight::before{z-index:3}body figure.highlight .copy-button:hover,body figure.highlight .fa-clipboard:hover{color:var(--t-cyan);filter:drop-shadow(0 0 6px rgba(34, 211, 238, .8))}body .mermaid-wrap{background:linear-gradient(180deg,rgba(255,255,255,.62),rgba(255,255,255,.28));border:1px solid var(--t-hair);border-radius:12px;padding:10px 6px;transition:border-color .35s var(--t-ease),box-shadow .35s var(--t-ease)}body .mermaid-wrap:hover{border-color:rgba(34,211,238,.34);box-shadow:0 14px 40px -28px rgba(34,211,238,.85)}[data-theme=dark] body .mermaid-wrap{background:linear-gradient(180deg,rgba(120,180,255,.045),rgba(120,180,255,.015))}body .mermaid-wrap .mermaid-open-btn{width:34px;height:34px;border-radius:50%;background:rgba(255,255,255,.72);border:1px solid var(--t-hair);color:#334155;box-shadow:0 6px 18px -12px rgba(12,32,64,.7);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);transition:transform .28s var(--t-ease),box-shadow .28s var(--t-ease),color .28s}body .mermaid-wrap .mermaid-open-btn:focus-visible,body .mermaid-wrap .mermaid-open-btn:hover{background:rgba(255,255,255,.92);color:var(--t-cyan);box-shadow:0 8px 22px -10px rgba(34,211,238,.9)}[data-theme=dark] body .mermaid-wrap .mermaid-open-btn{background:rgba(22,28,40,.8);color:#cfe6ff}[data-theme=dark] body .mermaid-wrap .mermaid-open-btn:focus-visible,[data-theme=dark] body .mermaid-wrap .mermaid-open-btn:hover{background:rgba(34,42,58,.95);color:var(--t-cyan)}body .mermaid-wrap:not(:has(svg)){display:flex;align-items:center;justify-content:center;min-height:140px}body .mermaid-wrap:not(:has(svg))::after{content:"图表加载中…";font-size:13px;letter-spacing:.04em;color:var(--t-muted);animation:t-breathe 1.8s ease-in-out infinite}@keyframes t-breathe{0%,100%{opacity:.45}50%{opacity:.9}}