:root{color-scheme:light;--bg:#f2f5f7;--surface:#fff;--surface-2:#e9eef1;--ink:#1c2a33;--strong:#0b161d;--muted:#56666f;--line:#d6dfe4;--line-strong:#b4c3cb;--accent:#036c8f;--amber:#93540a;--dot:#14465f29;--glow:0 0 0;--led:0 0 0 3px color-mix(in srgb, currentColor 22%, transparent);--panel-shadow:0 1px 0 #0a28370a, 0 12px 28px -16px #0a324647;--max:54rem;--measure:42rem;--sans:system-ui, -apple-system, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans CJK SC", "Source Han Sans SC", sans-serif;--mono:ui-monospace, "SF Mono", "JetBrains Mono", "Cascadia Mono", Menlo, Consolas, "Noto Sans Mono CJK SC", monospace;font-family:var(--sans);color:var(--ink);background:var(--bg);-webkit-text-size-adjust:100%;font-size:17px;line-height:1.8}:root[data-theme=dark]{color-scheme:dark;--bg:#0b1014;--surface:#10171c;--surface-2:#141d23;--ink:#d5dee3;--strong:#f1f6f8;--muted:#7f8e98;--line:#1e2a32;--line-strong:#2c3c46;--accent:#3fd0f0;--amber:#f0b44c;--dot:#78aabe21;--glow:0 0 6px;--led:0 0 6px currentColor;--panel-shadow:none}*,:before,:after{box-sizing:border-box}body{overflow-wrap:break-word;flex-direction:column;min-height:100vh;margin:0;display:flex;position:relative}body:before{content:"";z-index:-1;pointer-events:none;background-image:radial-gradient(var(--dot) 1px, transparent 1.2px);background-size:22px 22px;height:38rem;position:absolute;inset:0 0 auto;-webkit-mask-image:linear-gradient(#000 30%,#0000);mask-image:linear-gradient(#000 30%,#0000)}.wrap{max-width:var(--max);width:100%;margin:0 auto;padding:0 1.25rem}a{color:var(--accent);text-underline-offset:.25em;text-decoration:underline 1px;text-decoration-color:color-mix(in srgb, var(--accent) 45%, transparent)}a:hover{text-decoration-color:currentColor}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:2px}::selection{background:color-mix(in srgb, var(--accent) 35%, transparent)}h1,h2,h3{color:var(--strong);font-weight:700;line-height:1.35}h1{letter-spacing:.01em;margin:0 0 1rem;font-size:2rem}h2{margin:2.75rem 0 .75rem;font-size:1.35rem}h3{margin:2rem 0 .5rem;font-size:1.12rem}p{margin:0 0 1.1em}code,pre,time,.mono{font-family:var(--mono)}header.site{border-bottom:1px solid var(--line);background:color-mix(in srgb, var(--bg) 82%, transparent)}header.site .wrap{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem 1rem;padding-top:1rem;padding-bottom:1rem;display:flex}header.site a{text-decoration:none}.brand{color:var(--strong);letter-spacing:.04em;white-space:nowrap;align-items:center;gap:.65rem;font-size:1.05rem;font-weight:700;display:inline-flex}.mark{border:1px solid var(--accent);width:1.85rem;height:1.85rem;color:var(--accent);font-family:var(--mono);letter-spacing:0;box-shadow:var(--glow) color-mix(in srgb, var(--accent) 35%, transparent), inset var(--glow) color-mix(in srgb, var(--accent) 20%, transparent);border-radius:4px;place-items:center;font-size:.8rem;font-weight:700;display:inline-grid}.hd-right{align-items:center;gap:1.4rem;display:flex}header.site nav{font-family:var(--mono);gap:1.4rem;font-size:.92rem;display:flex}.toggles{align-items:center;gap:.5rem;display:flex}.theme-toggle,header.site .lang-switch{font:inherit;font-family:var(--mono);color:var(--muted);border:1px solid var(--line-strong);cursor:pointer;white-space:nowrap;background:0 0;border-radius:4px;padding:.35rem .5rem;font-size:.85rem;line-height:1}.theme-toggle:before{content:attr(data-dark)}[data-theme=dark] .theme-toggle:before{content:attr(data-light)}header.site .lang-switch:before{content:attr(data-label)}.theme-toggle:hover,header.site .lang-switch:hover{color:var(--accent);border-color:var(--accent)}.theme-toggle[hidden]{display:none}header.site nav a{color:var(--muted);white-space:nowrap;padding:.2rem 0}header.site nav a:before{content:"/";opacity:.5;margin-right:.1em}header.site nav a:hover{color:var(--strong)}header.site nav a[aria-current=page]{color:var(--accent)}header.site nav a[aria-current=page]:before{opacity:1}main.wrap{flex:1;padding-top:3rem;padding-bottom:5rem}main.wrap>:not(.home){max-width:var(--measure)}.label{font-family:var(--mono);color:var(--muted);margin:0 0 .75rem;font-size:.9rem;font-weight:500}.label:before{content:"// ";color:var(--accent)}.home{grid-template-columns:minmax(0,1fr) minmax(0,20rem);align-items:start;gap:2.5rem 3rem;display:grid}.hero{padding-top:.5rem}.cmd{font-family:var(--mono);color:var(--muted);margin:0 0 .4rem;font-size:.95rem}.cmd:first-letter{color:var(--accent)}.hero h1{letter-spacing:.03em;margin:0 0 1.4rem;font-size:clamp(2.6rem,9vw,3.9rem);line-height:1.15}.hero h1:after{content:"";vertical-align:-.06em;background:var(--accent);width:.09em;height:.9em;box-shadow:var(--glow) var(--accent);margin-left:.12em;animation:1.1s step-end infinite blink;display:inline-block}@keyframes blink{50%{opacity:0}}@media (prefers-reduced-motion:reduce){.hero h1:after{animation:none}}.lede{color:var(--muted);max-width:30em;margin:0;font-size:1.1rem}.recent{max-width:var(--measure);grid-column:1/-1}.more{font-family:var(--mono);margin-top:.9rem;font-size:.9rem;display:inline-block}.panel{border:1px solid var(--line-strong);background:var(--surface);box-shadow:var(--panel-shadow);border-radius:6px;font-size:.95rem;overflow:hidden}.panel-head{border-bottom:1px solid var(--line);background:var(--surface-2);font-family:var(--mono);color:var(--muted);justify-content:space-between;align-items:baseline;gap:1rem;padding:.6rem 1rem;font-size:.8rem;display:flex}.panel-head h2{font-size:inherit;color:var(--ink);margin:0;font-weight:500}.panel-head h2:before{content:"$ ";color:var(--accent)}.panel ul{margin:0;padding:.35rem 0;list-style:none}.panel li{grid-template-columns:1fr auto;column-gap:1rem;padding:.55rem 1rem;display:grid}.panel li+li{border-top:1px dashed var(--line)}.panel li a{color:var(--strong);font-weight:600;text-decoration:none}.panel li a:hover{color:var(--accent)}.panel li p{color:var(--muted);grid-column:1/-1;margin:.1rem 0 0;font-size:.88rem;line-height:1.6}.status{font-family:var(--mono);color:var(--muted);white-space:nowrap;align-items:center;gap:.45em;font-size:.8rem;font-weight:400;display:inline-flex}.status:before{content:"";background:currentColor;border-radius:50%;width:.5rem;height:.5rem}.status[data-status=在用]{color:var(--accent)}.status[data-status=实验]{color:var(--amber)}.status[data-status=在用]:before,.status[data-status=实验]:before{box-shadow:var(--led)}.status[data-status=归档]:before{border:1px solid var(--muted);background:0 0}.post-list{border-top:1px solid var(--line);margin:0;padding:0;list-style:none}.post-list li{border-bottom:1px solid var(--line);grid-template-columns:7rem 1fr;column-gap:1.25rem;padding:.75rem 0;display:grid}.post-list time{color:var(--muted);padding-top:.15rem;font-size:.85rem}.post-list a{color:var(--strong);font-weight:600;text-decoration:none}.post-list a:hover{color:var(--accent)}.post-list p{color:var(--muted);grid-column:2;margin:.2rem 0 0;font-size:.95rem}main.wrap>h1+.post-list{margin-top:1.5rem}.projects{border-top:1px solid var(--line);margin:1.75rem 0 0;padding:0;list-style:none}.projects>li{border-bottom:1px solid var(--line);padding:1.1rem 0 1.2rem;scroll-margin-top:1rem}.projects h2{flex-wrap:wrap;align-items:center;gap:.25rem 1rem;margin:0 0 .35rem;font-size:1.15rem;display:flex}.projects p{margin:0 0 .4rem}.projects .links{font-family:var(--mono);flex-wrap:wrap;gap:.25rem 1.25rem;font-size:.88rem;display:flex}.projects>li:target{box-shadow:-1.25rem 0 0 -1.1rem var(--accent)}.post-head{border-bottom:1px solid var(--line);margin-bottom:2.5rem;padding-bottom:1.25rem}.post-head h1{margin-bottom:.6rem;font-size:clamp(1.8rem,6vw,2.35rem)}.meta{font-family:var(--mono);color:var(--muted);flex-wrap:wrap;gap:.25rem 1rem;margin:0;font-size:.85rem;display:flex}.meta span{color:var(--accent)}.prose strong{color:var(--strong)}.prose ul,.prose ol{margin:0 0 1.1em;padding-left:1.4em}.prose li{margin:.25em 0}.prose li::marker{color:var(--accent);font-family:var(--mono)}.prose blockquote{border:1px solid var(--line);border-left:2px solid var(--amber);background:var(--surface);color:var(--ink);border-radius:0 4px 4px 0;margin:1.6em 0;padding:.8em 1.1em}.prose blockquote p:last-child{margin-bottom:0}.prose img{border:1px solid var(--line);border-radius:4px;max-width:100%;height:auto;margin:1.6em auto;display:block}.prose hr{border:0;border-top:1px dashed var(--line-strong);margin:2.5em 0}code,pre{font-size:.86em}:not(pre)>code{background:var(--surface);border:1px solid var(--line);color:var(--strong);border-radius:3px;padding:.08em .35em}pre{border:1px solid var(--line-strong);background:var(--surface);border-radius:6px;margin:1.6em 0;padding:1.1rem 1.15rem;line-height:1.65;position:relative;overflow-x:auto}pre code{font-size:inherit}pre[data-language]{padding-top:1.9rem}pre[data-language]:before{content:attr(data-language);color:var(--muted);font-size:.75rem;position:absolute;top:.35rem;left:1.15rem}.astro-code,.astro-code span{color:var(--shiki-light)}[data-theme=dark] .astro-code,[data-theme=dark] .astro-code span{color:var(--shiki-dark)}.prose table{border-collapse:collapse;max-width:100%;margin:1.6em 0;font-size:.95rem;line-height:1.6;display:block;overflow-x:auto}.prose th,.prose td{border-bottom:1px solid var(--line);text-align:left;padding:.55em 1.5em .55em 0}.prose th{font-family:var(--mono);color:var(--muted);border-bottom-color:var(--line-strong);white-space:nowrap;font-size:.82rem;font-weight:500}.not-found{gap:2rem;display:grid}.not-found h1{margin-bottom:.5rem;font-size:1.6rem}html:lang(en){--measure:38rem;line-height:1.7}.empty{color:var(--muted)}footer.site{color:var(--muted);font-family:var(--mono);border-top:1px solid var(--line);padding:1.5rem 0 2rem;font-size:.8rem}footer.site .wrap{flex-wrap:wrap;justify-content:space-between;gap:.5rem 1rem;display:flex}@media (width<=48rem){.home{grid-template-columns:minmax(0,1fr)}}@media (width<=30rem){:root{font-size:16.5px}main.wrap{padding-top:2rem}.post-list li{grid-template-columns:1fr}.post-list p{grid-column:1}header.site .wrap{flex-wrap:nowrap}.brand{gap:.5rem}header.site nav a:before{content:none}header.site .wrap{column-gap:.7rem}header.site nav,.hd-right{gap:.7rem}.toggles{gap:.35rem}.theme-toggle,header.site .lang-switch{padding:.3rem}header.site .lang-switch:before{content:attr(data-short)}html:lang(zh-CN) .brand .mark{display:none}html:lang(en) .brand .name{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.theme-toggle:before{content:attr(data-dark-short)}[data-theme=dark] .theme-toggle:before{content:attr(data-light-short)}}
