.astro-route-announcer{position:absolute;left:0;top:0;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden;white-space:nowrap;width:1px;height:1px}:root{color-scheme:dark;--bg: #0f180f;--fg: #dfe6df;--muted: #96a196;--line: rgba(223, 230, 223, .15);--line-strong: rgba(223, 230, 223, .24);--link: #f2fff2;--link-hover: #ffffff;--accent: #ff8493;--code-bg: rgba(255, 255, 255, .05);--bg: oklch(.2 .02 145);--fg: oklch(.807 .02 145);--link: oklch(1 .02 145);--muted: color-mix(in oklch, var(--fg) 60%, transparent);--line: color-mix(in oklch, var(--fg) 15%, transparent);--line-strong: color-mix(in oklch, var(--fg) 26%, transparent);--w-narrow: 44rem;--w-wide: 66rem;--w-article: 42rem}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;background:var(--bg);scroll-behavior:smooth}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}body{margin:0;min-height:100vh;background:var(--bg);color:var(--fg);font-family:ui-sans-serif,system-ui,Helvetica Neue,PingFang SC,Hiragino Sans GB,Microsoft YaHei,WenQuanYi Micro Hei,Arial,sans-serif;font-size:16px;line-height:1.75;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}::selection{background:#ff849347;color:#fff}a{color:var(--link)}.bg{position:fixed;inset:0;z-index:0;background:url(/bg.jpg) center / cover no-repeat;filter:brightness(.24) contrast(1.06) saturate(.8) blur(6px);transform:translate3d(var(--par-x, 0px),var(--par-y, 0px),0) scale(calc(1.08 + var(--zoom, 0) * .05));transition:filter .7s ease;pointer-events:none;will-change:transform}.pointer-active .bg{filter:brightness(.34) contrast(1.06) saturate(.92) blur(4px)}.bg-grad{position:fixed;inset:0;z-index:1;pointer-events:none;background:linear-gradient(0deg,#101810f7,#101810e0 38%,#1018104d)}.lights{position:fixed;top:0;left:0;z-index:2;width:200px;height:calc(100lvw + 100lvh);opacity:.32;transition:opacity .7s ease;pointer-events:none;will-change:transform}.pointer-active .lights{opacity:.95}.lights .light{position:absolute;top:200px;left:0;width:100%;height:100%;transform-origin:0 0;transform:rotate(-62deg);filter:blur(3px);background:linear-gradient(#ffffc100,#ffffc133)}.lights .light2{width:30%;top:100px;transform:rotate(-63deg)}.lights .light3{width:20%;top:400px;transform:rotate(-60deg);filter:blur(2px)}.lights .light4{width:100%;top:-200px;transform:rotate(-70deg);filter:blur(10px);opacity:.5}.shell{position:relative;z-index:3;max-width:var(--w-narrow);margin:0 auto;padding:0 1.35rem}.shell-wide{max-width:var(--w-wide)}.topbar{display:flex;align-items:center;gap:1rem;padding:1.6rem 0 0}.topbar-spacer{flex:0 0 200px}.topnav{display:flex;align-items:center;gap:1.2rem;flex-wrap:nowrap;justify-content:center;flex:1 1 auto}.topnav a{display:inline-flex;align-items:center;gap:.38rem;color:var(--muted);font-size:.84rem;text-decoration:none;white-space:nowrap;flex:0 0 auto;transition:color .18s ease}.topnav a svg{opacity:.8}.topnav a:hover,.topnav a[aria-current=page]{color:var(--fg)}.topnav a[aria-current=page] svg{opacity:1;color:var(--link)}.search{position:relative;flex:0 0 200px}.search-icon{position:absolute;left:.7rem;top:50%;transform:translateY(-50%);color:var(--muted);pointer-events:none}.search input{width:100%;height:32px;padding:0 1.9rem 0 1.85rem;border-radius:999px;border:1px solid var(--line-strong);background:#ffffff0a;color:var(--fg);font-size:.8rem;font-family:inherit;outline:none;transition:border-color .15s ease,background .15s ease;-webkit-appearance:none;appearance:none}.search input::placeholder{color:var(--muted)}.search input::-webkit-search-cancel-button{display:none}.search input:focus{border-color:var(--accent);background:#ffffff12}.search-kbd{position:absolute;right:.55rem;top:50%;transform:translateY(-50%);font-size:.68rem;line-height:1;color:var(--muted);border:1px solid var(--line);border-radius:4px;padding:.15rem .3rem;pointer-events:none;transition:opacity .15s ease}.search input:focus~.search-kbd{opacity:0}.search-results{position:absolute;top:calc(100% + .5rem);right:0;z-index:20;width:min(380px,82vw);max-height:62vh;overflow-y:auto;padding:.35rem;border-radius:12px;border:1px solid var(--line-strong);background:#0b110bf0;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);box-shadow:0 24px 60px #0000008c}.search-hit{display:block;padding:.55rem .65rem;border-radius:8px;text-decoration:none;color:var(--fg);transition:background .12s ease}.search-hit:hover,.search-hit.is-active{background:#ffffff0f}.hit-title{display:block;font-size:.87rem;line-height:1.5}.hit-title mark{background:transparent;color:var(--accent);font-weight:600}.hit-meta{display:block;margin-top:.15rem;font-size:.72rem;color:var(--muted);font-variant-numeric:tabular-nums}.search-empty{margin:0;padding:.75rem .7rem;font-size:.82rem;color:var(--muted)}@media(max-width:720px){.topbar{flex-wrap:wrap}.topbar-spacer{display:none}.topnav{order:1;flex:1 1 100%}.search{order:2;flex:1 1 100%;margin-top:.15rem}.search-results{left:0;right:0;width:auto}}main{padding:2rem 0 4rem;min-height:52vh}.hero{text-align:center;padding:3.4rem 0 3.2rem}.hero-title{margin:0;font-size:clamp(2.5rem,6.4vw,4.1rem);font-weight:700;letter-spacing:.06em;line-height:1.15;text-shadow:0 0 90px rgba(180,255,212,.22),0 0 24px rgba(150,240,190,.12)}.hero-sub{margin:1rem 0 0;color:var(--muted);font-size:.95rem;letter-spacing:.02em}.intro h1{margin:0 0 .5rem;font-size:1.9rem;font-weight:680;letter-spacing:-.02em;line-height:1.35}.intro p{margin:0;color:var(--muted);font-size:.93rem}.post-list{list-style:none;margin:0;padding:0}.post-item{padding:1.5rem 0;border-top:1px solid var(--line)}.post-item time{display:block;font-size:.75rem;color:var(--muted);letter-spacing:.08em;font-variant-numeric:tabular-nums}.post-item h2{margin:.35rem 0 .4rem;font-size:1.15rem;font-weight:600;line-height:1.55}.post-item h2 a{color:var(--fg);text-decoration:none;transition:color .18s ease}.post-item h2 a:hover{color:var(--link)}.post-item p{margin:0;color:var(--muted);font-size:.9rem;line-height:1.7}.post-grid{display:grid;grid-template-columns:minmax(0,var(--w-article)) 13.5rem;gap:3.5rem;justify-content:center;align-items:start}.post-grid-plain{grid-template-columns:minmax(0,var(--w-article))}.post-header{margin-bottom:2.4rem}.post-header h1{margin:0 0 .85rem;font-size:clamp(2.15rem,4.4vw,2.9rem);font-weight:700;line-height:1.2;letter-spacing:-.02em}.post-meta{display:flex;flex-wrap:wrap;align-items:center;gap:.7rem;color:var(--muted);font-size:.78rem;font-variant-numeric:tabular-nums}.post-tags{display:flex;gap:.4rem}.tag{color:var(--muted);text-decoration:none;border:1px solid var(--line-strong);border-radius:999px;padding:.05rem .55rem;font-size:.73rem;line-height:1.7;transition:color .15s ease,border-color .15s ease}.tag:hover{color:var(--accent);border-color:var(--accent)}.back{margin:0 0 1.7rem;font-size:.8rem}.back a{color:var(--muted);text-decoration:none;transition:color .15s ease}.back a:hover{color:var(--fg)}.toc{position:sticky;top:2.2rem;padding-top:2.4rem;font-size:.79rem;line-height:1.7}.toc-title{margin:0 0 .7rem;color:var(--fg);font-size:.78rem;letter-spacing:.06em}.toc ul{list-style:none;margin:0;padding:0 0 0 .85rem;border-left:1px solid var(--line)}.toc-item{margin:0 0 .45rem}.toc-item.depth-3{padding-left:.8rem;font-size:.95em}.toc a{color:var(--muted);text-decoration:none;transition:color .15s ease}.toc a:hover,.toc a.is-active{color:var(--link)}@media(max-width:1024px){.post-grid{grid-template-columns:minmax(0,1fr);gap:0}.toc{display:none}}.prose{font-size:1rem}.prose>:first-child{margin-top:0}.prose h2{margin:2.8rem 0 .9rem;font-size:1.5rem;font-weight:700;line-height:1.4;letter-spacing:normal;scroll-margin-top:2rem}.prose h3{margin:2.1rem 0 .7rem;font-size:1.15rem;font-weight:700;scroll-margin-top:2rem}.prose p{margin:1rem 0}.prose ul,.prose ol{margin:1.15rem 0;padding-left:1.25rem}.prose li{margin:.35rem 0}.prose li::marker{color:var(--muted)}.prose a{color:var(--link);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.2em}.prose a:hover{color:var(--link-hover)}.prose strong{font-weight:630;color:#f4faf4}.prose blockquote{margin:1.7rem 0;padding:.1rem 0 .1rem 1.1rem;border-left:2px solid var(--line-strong);color:var(--muted)}.prose blockquote p{margin:.5rem 0}.prose hr{margin:2.9rem 0;border:0;border-top:1px solid var(--line)}.prose code{font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;font-size:.86em;background:var(--code-bg);padding:.15em .38em;border-radius:4px}.prose pre{margin:1.5rem 0;padding:1rem 1.15rem;background:#00000061;border:1px solid var(--line);border-radius:8px;overflow-x:auto;line-height:1.65;font-size:.85rem}.prose pre code{background:none;padding:0;font-size:inherit}.prose img{max-width:100%;height:auto;border-radius:6px}.prose table{width:100%;border-collapse:collapse;margin:1.5rem 0;font-size:.9rem}.prose th,.prose td{border-bottom:1px solid var(--line);padding:.55rem .65rem;text-align:left}.prose th{font-weight:600;color:var(--muted);font-size:.82rem;letter-spacing:.03em}.site-footer{display:flex;justify-content:space-between;align-items:baseline;gap:1rem;flex-wrap:wrap;padding:1.7rem 0 3.2rem;border-top:1px solid var(--line);color:var(--muted);font-size:.78rem}.foot-brand{font-weight:600;letter-spacing:.05em;color:var(--muted)}.foot-links{display:inline-flex;align-items:center;gap:.5rem}.foot-links a{color:var(--muted);text-decoration:none}.foot-links a:hover{color:var(--link)}.dot{opacity:.5}.empty{color:var(--muted);font-size:.9rem;margin-top:2rem}.notfound{padding:3rem 0;text-align:center}.notfound .code{font-size:3.4rem;font-weight:700;letter-spacing:-.03em;color:#e8ffe821;line-height:1;margin:0 0 .9rem}.docs{display:grid;grid-template-columns:15rem minmax(0,1fr);gap:3rem;align-items:start}.docs-side{position:sticky;top:1.8rem;max-height:calc(100dvh - 3rem);overflow-y:auto;padding-bottom:1rem;font-size:.83rem;scrollbar-width:thin}.docs-side-title{margin:0 0 .9rem;font-size:.7rem;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}.docs-group-block+.docs-group-block{margin-top:1.3rem}.docs-group{margin:0 0 .4rem;font-size:.72rem;letter-spacing:.06em;color:var(--muted);opacity:.85}.docs-side ul{list-style:none;margin:0;padding:0 0 0 .65rem;border-left:1px solid var(--line)}.docs-side li{margin:.1rem 0}.docs-side a{display:block;padding:.24rem .55rem;margin-left:-1px;border-left:1px solid transparent;border-radius:0 5px 5px 0;color:var(--muted);text-decoration:none;transition:color .15s ease,background .15s ease,border-color .15s ease}.docs-side a:hover{color:var(--fg);background:color-mix(in oklch,var(--fg) 6%,transparent)}.docs-side a[aria-current=page]{color:var(--link);border-left-color:var(--accent);background:color-mix(in oklch,var(--fg) 8%,transparent)}.crumbs{display:flex;align-items:center;gap:.4rem;margin-bottom:1.1rem;font-size:.78rem;color:var(--muted)}.crumbs a{color:var(--muted);text-decoration:none}.crumbs a:hover{color:var(--fg)}.crumbs span{opacity:.6}.docs-header{margin-bottom:2.1rem;padding-bottom:1.3rem;border-bottom:1px solid var(--line)}.docs-header h1{margin:0 0 .55rem;font-size:clamp(1.9rem,4vw,2.5rem);font-weight:700;line-height:1.2;letter-spacing:-.02em}.docs-desc{margin:0;color:var(--muted);font-size:.92rem}.heading-anchor{margin-left:.45rem;color:var(--muted);text-decoration:none;font-weight:400;opacity:0;transition:opacity .15s ease}.prose h2:hover .heading-anchor,.prose h3:hover .heading-anchor,.heading-anchor:focus-visible{opacity:.65}.callout{margin:1.5rem 0;padding:.8rem 1rem;border:1px solid;border-left-width:3px;border-radius:8px;font-size:.92rem;line-height:1.7}.callout p{margin:.35rem 0}.callout p:first-child{margin-top:0}.callout p:last-child{margin-bottom:0}.callout-title{font-weight:640;letter-spacing:.02em}.callout-info{border-color:#5aa9e6;background:#5aa9e61a}.callout-info .callout-title{color:#8ecbff}.callout-warn{border-color:#d8a54a;background:#d8a54a1a}.callout-warn .callout-title{color:#f0c777}.callout-danger{border-color:#d96b78;background:#d96b781a}.callout-danger .callout-title{color:#ff9aa6}.card-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(13.5rem,1fr));gap:.75rem;margin:1.4rem 0}.card{display:block;padding:.85rem 1rem;border:1px solid var(--line);border-radius:10px;background:color-mix(in oklch,var(--fg) 4%,transparent);text-decoration:none;transition:border-color .18s ease,background .18s ease,transform .18s ease}.card:hover{border-color:var(--line-strong);background:color-mix(in oklch,var(--fg) 7%,transparent);transform:translateY(-2px)}.prose .card,.prose .card:hover{text-decoration:none}.card-title{display:block;color:var(--link);font-size:.94rem;font-weight:600}.card-desc{display:block;margin-top:.25rem;color:var(--muted);font-size:.82rem;line-height:1.6}.docs-pager{display:grid;grid-template-columns:1fr 1fr;gap:.75rem;margin-top:3rem;padding-top:1.4rem;border-top:1px solid var(--line)}.docs-pager a{display:block;padding:.7rem .9rem;border:1px solid var(--line);border-radius:9px;text-decoration:none;transition:border-color .18s ease,background .18s ease}.docs-pager a:hover{border-color:var(--line-strong);background:color-mix(in oklch,var(--fg) 5%,transparent)}.docs-pager .next{grid-column:2;text-align:right}.docs-pager .label{display:block;font-size:.7rem;letter-spacing:.1em;color:var(--muted)}.docs-pager .name{display:block;margin-top:.2rem;color:var(--link);font-size:.88rem}.doc-index-group{margin:2.4rem 0 0}.doc-index-title{margin:0 0 .9rem;font-size:.78rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}.docs-intro{margin-bottom:1rem}@media(max-width:900px){.docs{grid-template-columns:1fr;gap:1.6rem}.docs-side{position:static;max-height:none;padding-bottom:1.2rem;border-bottom:1px solid var(--line)}.docs-side ul{display:flex;flex-wrap:wrap;gap:.3rem;padding-left:0;border-left:0}.docs-side a{border-left:0;border-radius:999px;background:color-mix(in oklch,var(--fg) 5%,transparent)}.docs-pager{grid-template-columns:1fr}.docs-pager .next{grid-column:1;text-align:left}}.trail{position:fixed;inset:0;z-index:4;pointer-events:none;opacity:0;transition:opacity .35s ease}.pointer-active .trail{opacity:1}.trail span{position:absolute;top:0;left:0;width:calc(12px - var(--i) * .9px);height:calc(12px - var(--i) * .9px);margin-left:calc(-6px + var(--i) * .45px);margin-top:calc(-6px + var(--i) * .45px);border-radius:50%;background:oklch(.96 .08 150 / calc(.5 - var(--i) * .035));filter:blur(calc(var(--i) * .3px));will-change:transform}@keyframes page-out{to{opacity:0;transform:translate3d(0,-12px,0) scale(.995)}}@keyframes page-in{0%{opacity:0;transform:translate3d(0,16px,0) scale(.995)}}::view-transition-old(root){animation:page-out .24s ease both}::view-transition-new(root){animation:page-in .36s cubic-bezier(.2,.7,.2,1) both}@media(prefers-reduced-motion:reduce){::view-transition-old(root),::view-transition-new(root){animation:none}}.comments{margin-top:3rem;padding-top:1.6rem;border-top:1px solid var(--line)}.comments .giscus{min-height:180px}.guestbook-note{margin-top:1.6rem}.guestbook-note .callout{margin:0}.guestbook-back{margin-top:2rem;font-size:.84rem}.guestbook-back a{color:var(--muted);text-decoration:none}.guestbook-back a:hover{color:var(--link)}
