.toc-folded[data-astro-cid-2rh22e3j] .toc-child[data-astro-cid-2rh22e3j]{display:none}.toc-hidden[data-astro-cid-2rh22e3j]{opacity:0;pointer-events:none;visibility:hidden}@media(min-width:1024px){[data-astro-cid-2rh22e3j][data-toc]:not(.toc-hidden) #toc-panel[data-astro-cid-2rh22e3j]{opacity:1!important;transform:none!important;pointer-events:auto!important;visibility:visible!important}[data-astro-cid-2rh22e3j][data-toc].toc-hidden #toc-panel[data-astro-cid-2rh22e3j]{opacity:0!important;transform:none!important;pointer-events:none!important;visibility:hidden!important}}.toc-link[data-astro-cid-2rh22e3j].active{color:var(--color-primary)!important;font-weight:600;background:color-mix(in oklch,var(--color-primary) 12%,var(--color-card) 88%)!important;border-radius:.375rem}.dark[data-astro-cid-2rh22e3j] .toc-link[data-astro-cid-2rh22e3j].active{background:color-mix(in oklch,var(--color-primary) 18%,var(--color-card) 82%)!important}.dark[data-astro-cid-2rh22e3j] #toc-panel[data-astro-cid-2rh22e3j]{background:color-mix(in oklch,var(--color-card) 85%,black 15%);backdrop-filter:blur(20px) saturate(.95)}.dark[data-astro-cid-2rh22e3j] [data-astro-cid-2rh22e3j][data-toc-toggle-mobile],.dark[data-astro-cid-2rh22e3j] [data-astro-cid-2rh22e3j][data-toc-show]{background:color-mix(in oklch,var(--color-card) 60%,black 40%);border-color:var(--color-border)}.blog-article-prose,.blog-article-prose *,.blog-article-prose *:before,.blog-article-prose *:after{box-sizing:border-box}.blog-article-shell{border:1px solid hsl(var(--border) / .7);border-radius:1.25rem;padding:clamp(1rem,2.5vw,1.9rem);background:radial-gradient(120% 100% at 100% 0%,hsl(var(--primary) / .045) 0%,transparent 40%),linear-gradient(180deg,hsl(var(--card) / .94),hsl(var(--card) / .9));box-shadow:0 14px 35px hsl(var(--foreground) / .06),inset 0 1px #ffffff73}.dark .blog-article-shell{border-color:hsl(var(--border) / .9);background:radial-gradient(120% 110% at 100% 0%,hsl(var(--primary) / .14) 0%,transparent 42%),linear-gradient(180deg,hsl(var(--card) / .94),hsl(var(--card) / .88));box-shadow:0 24px 60px #03040757,inset 0 1px #ffffff0a}.blog-article-prose.prose{height:100%;line-height:1.95;font-size:clamp(1rem,.96rem + .22vw,1.1rem);color:hsl(var(--foreground) / .92);font-family:"Noto Serif SC","Source Han Serif SC",Songti SC,STSong,Georgia,Noto Sans SC,Segoe UI,system-ui,serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}.blog-article-prose.blog-article-zh.prose{font-family:"Noto Serif SC","Source Han Serif SC",Songti SC,STSong,Georgia,Noto Sans SC,serif;line-height:1.95;letter-spacing:.01em;word-break:break-word}.blog-article-prose.blog-article-zh.prose p{text-indent:0}.blog-article-prose.blog-article-zh.prose p+p{text-indent:2em}.blog-article-prose.blog-article-en.prose{font-family:Iowan Old Style,Palatino Linotype,Book Antiqua,Georgia,Times New Roman,serif;line-height:1.82;letter-spacing:0;word-break:normal;overflow-wrap:anywhere;hyphens:auto}.blog-article-prose.prose>:first-child{margin-top:0!important}.blog-article-prose.prose>:last-child{margin-bottom:0!important}.blog-article-prose.prose h1,.blog-article-prose.prose h2,.blog-article-prose.prose h3,.blog-article-prose.prose h4{margin:1.4rem 0 .6rem;font-family:"Noto Serif SC","Source Han Serif SC",Songti SC,STSong,serif;font-weight:600;color:hsl(var(--foreground))}.blog-article-prose.blog-article-en.prose h1,.blog-article-prose.blog-article-en.prose h2,.blog-article-prose.blog-article-en.prose h3,.blog-article-prose.blog-article-en.prose h4{font-family:Iowan Old Style,Palatino Linotype,Book Antiqua,Georgia,Times New Roman,serif}.blog-article-prose.prose h1{font-size:clamp(2rem,1.75rem + .8vw,2.6rem);letter-spacing:-.03em;line-height:1.22}.blog-article-prose.blog-article-en.prose h1{letter-spacing:-.04em;line-height:1.14;max-width:22ch;text-wrap:balance}.blog-article-prose.prose h2,.blog-article-prose.prose h3{scroll-margin-top:5rem;letter-spacing:.02em}.blog-article-prose.blog-article-en.prose h2,.blog-article-prose.blog-article-en.prose h3{letter-spacing:-.015em;text-wrap:balance}.blog-article-prose.prose h2{font-size:clamp(1.6rem,1.45rem + .45vw,1.95rem)}.blog-article-prose.prose h3{font-size:clamp(1.2rem,1.12rem + .3vw,1.4rem)}.blog-article-prose.prose h4{font-size:1rem;color:hsl(var(--muted-foreground));letter-spacing:0}.blog-article-prose.prose h2:before,.blog-article-prose.prose h3:before{content:"";display:inline-block;width:6px;height:6px;background-color:hsl(var(--primary));border-radius:50%;margin-right:8px;vertical-align:middle}.blog-article-prose.prose p{margin:.8rem 0;text-wrap:pretty;color:hsl(var(--foreground) / .78)}.dark .blog-article-prose.prose p{color:hsl(var(--foreground) / .82)}.blog-article-prose.blog-article-en.prose p,.blog-article-prose.blog-article-en.prose li{max-width:68ch}.blog-article-prose.prose ul,.blog-article-prose.prose ol{margin:.4rem 0 .8rem 1.2rem;color:hsl(var(--foreground) / .76)}.blog-article-prose.prose li{margin:.3rem 0}.blog-article-prose.prose hr{border:none;height:1px;background:linear-gradient(90deg,transparent,hsl(var(--border)),transparent);margin:1.2rem 0}.blog-article-prose.prose a{color:hsl(var(--foreground) / .94);text-decoration:underline;text-underline-offset:.2em;text-decoration-thickness:1px;text-decoration-color:hsl(var(--primary) / .35);transition:color .18s ease,text-decoration-color .18s ease}.blog-article-prose.prose a:hover{color:hsl(var(--foreground));text-decoration-color:hsl(var(--primary) / .95)}.dark .blog-article-prose.prose a{color:hsl(var(--foreground) / .94);text-decoration-color:hsl(var(--primary) / .55)}.blog-article-prose.prose blockquote{border-left:4px solid hsl(var(--primary) / .55);background:linear-gradient(180deg,hsl(var(--muted) / .28),hsl(var(--muted) / .42));border-radius:.8rem;padding:.8rem 1rem;margin:1.2rem 0;color:hsl(var(--foreground) / .82)}.dark .blog-article-prose.prose blockquote{background:linear-gradient(180deg,hsl(var(--muted) / .56),hsl(var(--muted) / .78));color:hsl(var(--foreground) / .9)}.blog-article-prose.blog-article-en.prose blockquote{font-style:italic}.blog-article-prose.prose :where(pre){background:linear-gradient(180deg,hsl(var(--accent-foreground) / .96),hsl(var(--accent-foreground) / .9));border:1px solid hsl(var(--border) / .68);border-radius:.95rem;padding:1rem;overflow:auto;font-family:ui-monospace,JetBrains Mono,Roboto Mono,monospace;font-size:.9rem;color:hsl(var(--primary) / .92);box-shadow:inset 0 1px #ffffff14,0 8px 20px hsl(var(--foreground) / .05);margin:.8rem 0}.dark .blog-article-prose.prose :where(pre){background:linear-gradient(180deg,#1b1e28fa,#171a21f5);border-color:hsl(var(--border) / .96);color:hsl(var(--foreground) / .92);box-shadow:inset 0 1px #ffffff08,0 18px 32px #0304074d}.blog-article-prose.prose :where(code):not(pre code){background:hsl(var(--accent-foreground) / .94);border-radius:.35rem;padding:.08rem .32rem;border:1px solid hsl(var(--border) / .72);font-family:ui-monospace,JetBrains Mono,monospace;font-size:.9em;color:hsl(var(--primary) / .9)}.dark .blog-article-prose.prose :where(code):not(pre code){background:hsl(var(--accent) / .82);color:hsl(var(--foreground) / .92)}.blog-article-prose.blog-article-en.prose :where(code):not(pre code){font-size:.88em}.blog-article-prose.prose .callout{display:flex;gap:.75rem;align-items:flex-start;padding:.9rem;border-radius:1rem;border:1px solid hsl(var(--border) / .42);background:linear-gradient(180deg,hsl(var(--card) / .76),hsl(var(--card) / .96));color:hsl(var(--foreground));margin:1rem 0;box-shadow:0 8px 22px hsl(var(--foreground) / .04)}.dark .blog-article-prose.prose .callout{background:linear-gradient(180deg,hsl(var(--card) / .68),hsl(var(--card) / .88));border-color:hsl(var(--border) / .82);box-shadow:0 16px 30px #04070b33}.blog-article-prose.prose .callout .emoji{font-size:1.3rem;line-height:1}.blog-article-prose.prose .callout .content{color:hsl(var(--muted-foreground))}.blog-article-prose.prose .callout.info{border-left:4px solid hsl(var(--primary))}.blog-article-prose.prose .callout.success{border-left:4px solid #22c55e}.blog-article-prose.prose .callout.warn{border-left:4px solid #fbbf24}.blog-article-prose.prose .callout.danger{border-left:4px solid #ef4444}.blog-article-prose.prose .table-wrap{overflow:auto;border-radius:8px;margin:.8rem 0}.blog-article-prose.prose :where(table){width:100%;border-collapse:collapse;font-size:.95rem;color:hsl(var(--foreground) / .78);border-radius:.8rem;overflow:hidden;border:1px solid hsl(var(--border) / .68);background:hsl(var(--card) / .76)}.dark .blog-article-prose.prose :where(table){background:hsl(var(--card) / .84)}.blog-article-prose.prose :where(th),.blog-article-prose.prose :where(td){padding:.6rem .75rem;border-bottom:1px dashed hsl(var(--border))}.blog-article-prose.prose :where(thead th){color:hsl(var(--foreground));background:hsl(var(--muted) / .62)}.dark .blog-article-prose.prose :where(thead th){background:hsl(var(--muted) / .92)}.blog-article-prose.prose :where(img){border-radius:1rem;border:1px solid hsl(var(--border) / .65);box-shadow:0 10px 24px hsl(var(--foreground) / .08)}.dark .blog-article-prose.prose :where(img){box-shadow:0 18px 34px #03040757}.blog-article-prose.prose .card{background:hsl(var(--card));border-radius:1rem;padding:1rem;border:1px solid hsl(var(--border));box-shadow:0 6px 12px hsl(var(--foreground) / .04)}.blog-article-prose.prose .panel{background:hsl(var(--card));border-radius:.85rem;padding:.75rem;border:1px solid hsl(var(--border))}.blog-article-prose.prose .center{display:flex;justify-content:center;align-items:center}.blog-article-prose.prose .mono{font-family:ui-monospace,monospace}.blog-article-secondary+.blog-article-secondary{margin-top:1.2rem}.blog-article-secondary{content-visibility:auto;contain-intrinsic-size:320px}@media(max-width:640px){.blog-article-shell{border-radius:1rem;padding:.95rem .9rem}}.overlay[data-astro-cid-f2fvwurm]{position:fixed;inset:0;background:color-mix(in oklch,var(--color-background) 65%,black 35%);backdrop-filter:blur(12px) saturate(1.15);display:flex;align-items:center;justify-content:center;z-index:9999}.dark[data-astro-cid-f2fvwurm] .overlay[data-astro-cid-f2fvwurm]{background:color-mix(in oklch,var(--color-background) 75%,black 25%);backdrop-filter:blur(14px) saturate(.95)}.modal[data-astro-cid-f2fvwurm]{width:min(92%,460px);padding:2.2rem 1.8rem;border-radius:var(--radius-lg);background:var(--color-card);border:1px solid var(--color-border);color:var(--color-foreground);text-align:center;backdrop-filter:blur(18px) saturate(1.08);box-shadow:0 12px 48px #0000002e;animation:fadeIn .28s ease-out}.dark[data-astro-cid-f2fvwurm] .modal[data-astro-cid-f2fvwurm]{backdrop-filter:blur(20px) saturate(.98);box-shadow:0 12px 48px #00000047}.title[data-astro-cid-f2fvwurm]{font-size:1.38rem;font-weight:600;margin-bottom:.9rem;color:var(--color-foreground)}.description[data-astro-cid-f2fvwurm]{font-size:.92rem;color:var(--color-muted-foreground);margin-bottom:1.5rem;line-height:1.55}.topics[data-astro-cid-f2fvwurm]{display:flex;flex-direction:column;gap:.65rem;margin-bottom:2rem}.topic-item[data-astro-cid-f2fvwurm]{display:flex;align-items:center;justify-content:center;gap:.7rem;padding:.5rem 1rem;border-radius:var(--radius-md);background:color-mix(in oklch,var(--color-card) 94%,var(--color-primary) 6%);border:1px solid color-mix(in oklch,var(--color-border) 65%,transparent);font-size:.875rem;font-weight:500;color:var(--color-foreground)}.actions[data-astro-cid-f2fvwurm]{display:flex;flex-direction:column;gap:.9rem}.primary[data-astro-cid-f2fvwurm]{padding:.7rem 1.4rem;border-radius:999px;border:1px solid var(--color-primary);background:var(--color-primary);color:var(--color-primary-foreground);cursor:pointer;font-size:.92rem;font-weight:600;transition:all .24s ease}.primary[data-astro-cid-f2fvwurm]:hover{transform:translateY(-3px) scale(1.03);background:var(--color-primary);box-shadow:0 8px 24px color-mix(in oklch,var(--color-primary) 55%,transparent),0 0 0 3px color-mix(in oklch,var(--color-primary) 30%,transparent);border-color:var(--color-primary)}.secondary[data-astro-cid-f2fvwurm]{font-size:.88rem;color:var(--color-muted-foreground);text-decoration:none;transition:color .2s ease}.secondary[data-astro-cid-f2fvwurm]:hover{color:var(--color-primary)}@keyframes fadeIn{0%{opacity:0;transform:scale(.94) translateY(8px)}to{opacity:1;transform:scale(1) translateY(0)}}
