:root{--bg:#f6f8fb;--grid:#17202a09;--surface:#fff;--surface-soft:#ffffffc7;--surface-strong:#eef3f8;--line:#dce4ec;--line-soft:#d8e2ebe6;--text:#17202a;--text-strong:#05070a;--muted:#637083;--faint:#8b98a8;--accent:#19b9b4;--accent-alt:#12b8b4;--accent-deep:#07847f;--accent-soft:#19b9b414;--accent-line:#19b9b438;--accent-ink:#06736e;--ok:#0f8a5f;--ok-soft:#0f8a5f17;--ok-line:#0f8a5f38;--warn:#b45309;--warn-soft:#b4530914;--warn-line:#b4530938;--warn-ink:#92400e;--brand-bili:#00aeec;--brand-heihe:#1a1a1a;--brand-github:#24292f;--on-accent:#fff;--on-brand:#fff;--shadow-sm:0 6px 18px #192a3e0f;--shadow-md:0 16px 46px #212e3e14;--shadow-lg:0 18px 50px #192a3e1f;--radius:14px;--radius-sm:10px;--radius-xs:8px;--radius-pill:999px;--font:Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", Arial, sans-serif;--mono:ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;color-scheme:light}[data-theme=dark]{--bg:#05070a;--grid:#ffffff07;--surface:#0c1420;--surface-soft:#0c1420d6;--surface-strong:#161c26;--line:#222b38;--line-soft:#222b38eb;--text:#e6edf6;--text-strong:#fff;--muted:#94a4ba;--faint:#6d7f97;--accent:#2dd4cf;--accent-alt:#22c9c4;--accent-deep:#5ee4df;--accent-soft:#2dd4cf1a;--accent-line:#2dd4cf42;--accent-ink:#5ee4df;--ok:#34d399;--ok-soft:#34d3991a;--ok-line:#34d3993d;--warn:#fbbf24;--warn-soft:#fbbf241a;--warn-line:#fbbf243d;--warn-ink:#fbbf24;--brand-bili:#2ec5ff;--brand-heihe:#e8eef5;--brand-github:#e8eef5;--on-accent:#04211f;--on-brand:#0b1119;--shadow-sm:0 6px 18px #00000073;--shadow-md:0 16px 46px #0000008c;--shadow-lg:0 18px 50px #000000a6;color-scheme:dark}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}body{color:var(--text);font-family:var(--font);-webkit-font-smoothing:antialiased;background-color:var(--bg);background-image:linear-gradient(var(--grid) 1px, transparent 1px), linear-gradient(90deg, var(--grid) 1px, transparent 1px);background-size:36px 36px,36px 36px;margin:0;font-size:16px;line-height:1.7}a{color:inherit;text-decoration:none}a:hover{color:var(--accent-deep)}h1,h2,h3,h4{letter-spacing:0;color:var(--text-strong);margin:0;font-weight:800;line-height:1.3}p{margin:0}img{max-width:100%;height:auto}svg{flex:none}.wrap{max-width:1080px;margin:0 auto;padding:0 24px}.skip-link{z-index:100;background:var(--accent);color:var(--on-accent);border-radius:0 0 var(--radius-xs) 0;padding:10px 16px;position:absolute;top:0;left:-9999px}.skip-link:focus{left:0}.site-header{z-index:30;padding:14px 0 0;position:sticky;top:0}.site-header .wrap{background:color-mix(in srgb, var(--surface) 90%, transparent);border:1px solid var(--line-soft);height:64px;box-shadow:var(--shadow-md);backdrop-filter:blur(12px);border-radius:18px;justify-content:space-between;align-items:center;gap:20px;padding:0 24px;display:flex;position:relative}.brand{color:var(--text-strong);white-space:nowrap;align-items:center;gap:10px;font-size:16px;font-weight:800;display:flex}.brand:hover{color:var(--accent-deep)}.brand-mark{background:var(--accent);width:30px;height:30px;color:var(--on-accent);border-radius:var(--radius-xs);place-items:center;font-size:14px;font-weight:900;display:grid}.header-right{align-items:center;gap:4px;display:flex}.nav{align-items:center;gap:2px;font-size:15px;font-weight:700;display:flex}.nav a{border-radius:var(--radius-pill);color:var(--text);white-space:nowrap;padding:7px 13px}.nav a:hover{background:var(--surface-strong);color:var(--accent-deep)}.nav a[aria-current=page]{color:var(--accent-deep);background:var(--accent-soft)}.nav-actions{border-left:1px solid var(--line);align-items:center;gap:2px;margin-left:8px;padding-left:12px;display:flex}.icon-btn{width:34px;height:34px;color:var(--muted);border-radius:var(--radius-pill);cursor:pointer;background:0 0;border:0;place-items:center;display:grid}.icon-btn:hover{background:var(--surface-strong);color:var(--accent-deep)}.theme-toggle{background:var(--accent-soft);border:1px solid var(--accent-line);border-radius:var(--radius-pill);height:34px;color:var(--accent-ink);white-space:nowrap;cursor:pointer;align-items:center;gap:7px;margin-left:2px;padding:0 13px 0 11px;font-family:inherit;font-size:13px;font-weight:800;line-height:1;transition:border-color .15s,background .15s,color .15s;display:inline-flex}.theme-toggle:hover{background:color-mix(in srgb, var(--accent-soft) 60%, var(--accent-line));border-color:var(--accent)}.theme-toggle svg{flex:none}.theme-toggle .ico{display:none}[data-theme-pref=auto] .theme-toggle .ico-auto,[data-theme-pref=light] .theme-toggle .ico-light,[data-theme-pref=dark] .theme-toggle .ico-dark{display:block}.theme-toggle-label:after{content:"自动"}[data-theme-pref=light] .theme-toggle-label:after{content:"亮色"}[data-theme-pref=dark] .theme-toggle-label:after{content:"暗色"}.nav-toggle{border:1px solid var(--line);background:var(--surface);width:36px;height:36px;color:var(--text);border-radius:var(--radius-xs);cursor:pointer;place-items:center;display:none}.nav-toggle:hover{border-color:var(--accent-line);color:var(--accent-deep)}.section{padding:56px 0 0}.section-head{justify-content:space-between;align-items:center;gap:16px;margin-bottom:20px;display:flex}.section-head h2{align-items:baseline;gap:10px;font-size:21px;display:flex}.sec-num{color:var(--accent-deep);font-variant-numeric:tabular-nums;font-size:15px;font-weight:900}.more{color:var(--muted);align-items:center;gap:5px;font-size:13.5px;font-weight:700;display:inline-flex}.more:hover{color:var(--accent-deep)}.intro{padding:62px 0 8px}.eyebrow{color:var(--accent-alt);letter-spacing:.01em;align-items:center;gap:8px;margin-bottom:14px;font-size:13px;font-weight:800;display:flex}.eyebrow:before{content:"";background:var(--accent-alt);border-radius:2px;width:20px;height:2px}.intro h1{letter-spacing:0;margin-bottom:18px;font-size:58px;font-weight:900;line-height:1.12}.intro h1:after{content:"";background:var(--accent-alt);border-radius:3px;width:78px;height:6px;margin-top:14px;display:block}.intro p{color:var(--muted);max-width:620px;font-size:17px;line-height:1.75}.intro-placeholder{border:1.5px dashed var(--line);border-radius:var(--radius);background:var(--surface-soft);max-width:620px;color:var(--faint);align-items:flex-start;gap:10px;margin-top:22px;padding:20px 22px;font-size:14px;display:flex}.intro-placeholder svg{color:var(--accent-alt);margin-top:3px}.intro-placeholder strong{color:var(--muted);font-weight:800}.intro-links{flex-wrap:wrap;gap:10px;margin-top:30px;display:flex}.btn{border-radius:var(--radius-pill);cursor:pointer;white-space:nowrap;border:1px solid #0000;align-items:center;gap:8px;padding:11px 22px;font-family:inherit;font-size:15px;font-weight:700;line-height:1.4;display:inline-flex}.btn-primary{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}.btn-primary:hover{background:var(--accent-deep);border-color:var(--accent-deep);color:var(--on-accent)}.btn-ghost{background:var(--surface);border-color:var(--line);color:var(--text)}.btn-ghost:hover{border-color:var(--accent-line);color:var(--accent-deep);background:var(--surface)}.btn-sm{padding:8px 16px;font-size:13.5px}.tool-grid{grid-template-columns:repeat(2,1fr);gap:16px;display:grid}.tool-card{background:var(--surface-soft);border:1px solid var(--line);border-radius:var(--radius);backdrop-filter:blur(6px);flex-direction:column;gap:15px;padding:20px;transition:border-color .18s,transform .18s,box-shadow .18s;display:flex}.tool-card:hover{border-color:var(--accent-line);box-shadow:var(--shadow-md);transform:translateY(-2px)}.tool-card-top{align-items:flex-start;gap:14px;display:flex}.tool-icon{border-radius:var(--radius-sm);background:var(--accent-soft);width:44px;height:44px;color:var(--accent-deep);border:1px solid var(--accent-line);flex:none;place-items:center;display:grid}.tool-card h3{margin-bottom:6px;font-size:17px}.tool-card .desc{color:var(--muted);font-size:14px;line-height:1.68}.tool-meta{color:var(--faint);border-top:1px solid var(--line);font-variant-numeric:tabular-nums;align-items:center;gap:9px;margin-top:auto;padding-top:15px;font-size:12.5px;font-weight:600;display:flex}.dot{background:var(--line);border-radius:50%;width:3px;height:3px}.tool-meta .go{color:var(--accent-deep);align-items:center;gap:3px;margin-left:auto;font-weight:800;display:inline-flex}.update-list{background:var(--surface-soft);border:1px solid var(--line);border-radius:var(--radius);backdrop-filter:blur(6px);overflow:hidden}.update-item{align-items:flex-start;gap:16px;padding:17px 20px;transition:background .15s;display:flex}.update-item+.update-item{border-top:1px solid var(--line)}.update-item:hover{background:var(--accent-soft)}.update-date{color:var(--faint);font-variant-numeric:tabular-nums;flex:none;width:88px;padding-top:2px;font-size:12.5px;font-weight:600}.update-body{flex:1;min-width:0}.update-title{flex-wrap:wrap;align-items:center;gap:9px;margin-bottom:5px;display:flex}.update-title .name{color:var(--text);font-size:15px;font-weight:700}.update-tag{color:var(--accent-deep);background:var(--accent-soft);border:1px solid var(--accent-line);border-radius:var(--radius-pill);font-variant-numeric:tabular-nums;padding:2px 9px;font-size:11.5px;font-weight:900}.update-desc{color:var(--muted);font-size:14px;line-height:1.65}.log-entry{background:var(--surface-soft);border:1px solid var(--line);border-radius:var(--radius);backdrop-filter:blur(6px);margin-bottom:16px;padding:22px}.log-head{border-bottom:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:14px;padding-bottom:14px;display:flex}.log-head .tool{color:var(--text-strong);align-items:center;gap:8px;font-size:15px;font-weight:800;display:inline-flex}.log-head .ver{color:var(--accent-deep);background:var(--accent-soft);border:1px solid var(--accent-line);border-radius:var(--radius-pill);font-variant-numeric:tabular-nums;padding:3px 11px;font-size:13px;font-weight:900}.log-head .date{color:var(--faint);font-variant-numeric:tabular-nums;margin-left:auto;font-size:12.5px;font-weight:600}.log-body ul{color:var(--muted);margin:0;padding-left:19px;font-size:14.5px}.log-body li{margin-bottom:5px}.log-links{border-top:1px solid var(--line);flex-wrap:wrap;gap:9px;margin-top:16px;padding-top:14px;display:flex}.post-list{background:var(--surface-soft);border:1px solid var(--line);border-radius:var(--radius);backdrop-filter:blur(6px);overflow:hidden}.post-item{align-items:baseline;gap:18px;padding:15px 20px;transition:background .15s;display:flex}.post-item+.post-item{border-top:1px solid var(--line)}.post-item:hover{background:var(--accent-soft)}.post-item .date{color:var(--faint);font-variant-numeric:tabular-nums;flex:none;width:88px;font-size:12.5px;font-weight:600}.post-item .title{color:var(--text);font-size:15px;font-weight:700}.post-item:hover .title{color:var(--accent-deep)}.post-item .tag{color:var(--accent-deep);background:var(--accent-soft);border:1px solid var(--accent-line);border-radius:var(--radius-pill);flex:none;margin-left:auto;padding:3px 10px;font-size:11.5px;font-weight:800}.post-item .tag.misc{color:var(--muted);background:var(--surface-strong);border-color:var(--line)}.social-box{background:var(--surface-soft);border:1px solid var(--line);border-radius:var(--radius);backdrop-filter:blur(6px);flex-wrap:wrap;align-items:center;gap:28px;padding:22px 24px;display:flex}.social-text{flex:1;min-width:200px}.social-text h3{margin-bottom:6px;font-size:17px}.social-text p{color:var(--muted);font-size:13.5px}.social-links{flex-wrap:wrap;gap:10px;display:flex}.social-pill{border-radius:var(--radius-pill);border:1px solid var(--line);background:var(--surface);color:var(--text);align-items:center;gap:8px;padding:9px 16px 9px 12px;font-size:14px;font-weight:700;transition:border-color .15s,transform .15s,box-shadow .15s;display:inline-flex}.social-pill:hover{border-color:var(--accent-line);box-shadow:var(--shadow-sm);transform:translateY(-1px)}.social-pill .ico{width:26px;height:26px;color:var(--on-brand);border-radius:50%;flex:none;place-items:center;display:grid}.social-pill.bili .ico{background:var(--brand-bili)}.social-pill.heihe .ico{background:var(--brand-heihe)}.social-pill.github .ico{background:var(--brand-github)}.site-footer{color:var(--muted);margin-top:76px;padding:0 0 44px;font-size:13px}.site-footer .wrap{border-top:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding-top:24px;display:flex}.footer-links{flex-wrap:wrap;gap:18px;font-weight:600;display:flex}.footer-links a:hover{color:var(--accent-deep)}.site-footer .footer-friends-wrap{border-top:0;padding-top:0;display:block}.footer-friends{flex-wrap:wrap;align-items:center;gap:10px;margin-top:14px;display:flex}.footer-friends-label{color:var(--faint);font-size:12.5px;font-weight:700}.footer-friend{border:1px solid var(--line);border-radius:var(--radius-pill);background:var(--surface-soft);max-width:100%;color:var(--text);overflow-wrap:anywhere;align-items:center;padding:5px 13px;font-size:12.5px;font-weight:700;transition:border-color .15s,color .15s,transform .15s;display:inline-flex}.footer-friend:hover{border-color:var(--accent-line);color:var(--accent-deep);transform:translateY(-1px)}.friend-section{padding-top:36px}.friend-section h2{align-items:center;gap:9px;margin-bottom:14px;font-size:21px;display:flex}.friend-section h2:before{content:"";background:var(--accent-alt);border-radius:2px;flex:none;width:4px;height:19px}.friend-links{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px;display:grid}.friend-link{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface-soft);padding:15px 18px;transition:border-color .15s,transform .15s,box-shadow .15s;display:block}.friend-link:hover{border-color:var(--accent-line);box-shadow:var(--shadow-sm);transform:translateY(-2px)}.friend-link-name{color:var(--text);overflow-wrap:anywhere;align-items:center;gap:6px;font-size:15.5px;font-weight:800;display:flex}.friend-link:hover .friend-link-name{color:var(--accent-deep)}.friend-link-desc{color:var(--muted);margin-top:5px;font-size:13.5px;display:block}.page-head{border-bottom:1px solid var(--line);padding:46px 0 28px}.page-head h1{margin-bottom:11px;font-size:34px}.page-head p{color:var(--muted);max-width:600px;font-size:16px}.page-head p a{color:var(--accent-deep);text-underline-offset:3px;font-weight:600;text-decoration:underline}.page-head p a:hover{color:var(--accent-alt)}.crumbs{color:var(--faint);flex-wrap:wrap;align-items:center;gap:8px;padding:30px 0 0;font-size:13.5px;font-weight:600;display:flex}.crumbs a:hover{color:var(--accent-deep)}.filter-bar{flex-wrap:wrap;align-items:center;gap:9px;padding:20px 0;display:flex}.chip{border-radius:var(--radius-pill);border:1px solid var(--line);background:var(--surface);color:var(--muted);cursor:pointer;padding:7px 15px;font-family:inherit;font-size:13px;font-weight:800}.chip:hover{border-color:var(--accent-line);color:var(--accent-deep)}.chip.active{background:var(--accent-soft);color:var(--accent-deep);border-color:var(--accent-line)}.count{color:var(--faint);margin-left:auto;font-size:12.5px;font-weight:600}.badges{flex-wrap:wrap;gap:8px;margin-top:16px;display:flex}.badge{border-radius:var(--radius-pill);border:1px solid var(--line);background:var(--surface);color:var(--muted);font-variant-numeric:tabular-nums;padding:4px 11px;font-size:12px;font-weight:800}.badge.ok{color:var(--ok);background:var(--ok-soft);border-color:var(--ok-line)}.badge.pending{color:var(--warn);background:var(--warn-soft);border-color:var(--warn-line)}.pending-note{border:1.5px dashed var(--line);border-radius:var(--radius-sm);background:var(--surface-soft);color:var(--faint);align-items:flex-start;gap:9px;margin-top:14px;padding:16px 18px;font-size:13.5px;line-height:1.7;display:flex}.pending-note svg{color:var(--warn);margin-top:3px}.prose{max-width:760px}.prose h2{align-items:center;gap:9px;margin:38px 0 14px;font-size:21px;display:flex}.prose h2:before{content:"";background:var(--accent-alt);border-radius:2px;flex:none;width:4px;height:19px}.prose h3{margin:26px 0 10px;font-size:17px}.prose p{color:var(--muted);margin-bottom:16px;font-size:15.5px;line-height:1.85}.prose ul,.prose ol{color:var(--muted);margin:0 0 16px;padding-left:22px;font-size:15.5px;line-height:1.85}.prose li{margin-bottom:6px}.prose code{font-family:var(--mono);background:var(--surface-strong);border:1px solid var(--line);color:var(--text);border-radius:5px;padding:2px 6px;font-size:13px}.prose pre{background:var(--surface-strong);border:1px solid var(--line);border-radius:var(--radius-sm);margin:0 0 18px;padding:16px 18px;overflow-x:auto}[data-theme=dark] .prose pre.astro-code,[data-theme=dark] .prose pre.astro-code span{color:var(--shiki-dark)!important;background-color:var(--shiki-dark-bg)!important;font-style:var(--shiki-dark-font-style)!important;font-weight:var(--shiki-dark-font-weight)!important;text-decoration:var(--shiki-dark-text-decoration)!important}.prose pre code{color:inherit;background:0 0;border:0;padding:0;font-size:13px;line-height:1.7}.prose blockquote{border-left:3px solid var(--accent-line);background:var(--accent-soft);border-radius:0 var(--radius-xs) var(--radius-xs) 0;color:var(--muted);margin:0 0 16px;padding:12px 18px;font-size:15px}.prose a{color:var(--accent-ink);text-underline-offset:3px;font-weight:600;text-decoration:underline}.prose img{border-radius:var(--radius);border:1px solid var(--line);margin:6px 0 18px}.prose .shot-row{grid-template-columns:1fr 1fr;gap:14px;margin:6px 0 20px;display:grid}.prose .shot-row figure{margin:0}.prose .shot-row img{width:100%;margin:0;display:block}.prose .shot-row figcaption{color:var(--muted);text-align:center;margin-top:7px;font-size:13px}.prose .sample-row img{object-fit:contain;background:var(--surface);height:380px}@media (width<=720px){.prose .shot-row{grid-template-columns:1fr;gap:18px}}.prose table{border-collapse:collapse;width:100%;margin-bottom:18px;font-size:14px}.prose th,.prose td{border:1px solid var(--line);text-align:left;padding:9px 12px}.prose th{background:var(--surface-strong);font-weight:800}@media (width<=960px){.nav a{padding:7px 10px;font-size:14px}.social-box{gap:18px}}@media (width<=860px){.tool-grid{grid-template-columns:1fr}.intro h1{font-size:44px}.post-item .tag,.update-desc{display:none}}@media (width<=720px){.site-header .wrap{gap:10px}.nav-toggle{display:grid}.nav{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-lg);flex-direction:column;align-items:stretch;gap:2px;padding:8px;font-size:15px;display:none;position:absolute;top:calc(100% + 8px);left:0;right:0}.nav.open{display:flex}.nav a{border-radius:var(--radius-xs);padding:11px 14px}.nav-actions{border-left:0;border-top:1px solid var(--line);justify-content:flex-start;margin:6px 0 0;padding:8px 0 0}}@media (width<=560px){.wrap{padding:0 16px}.site-header{padding:10px 0 0}.site-header .wrap{border-radius:16px;height:58px;padding:0 14px}.brand{gap:8px;font-size:14px}.brand-mark{width:26px;height:26px;font-size:12px}.intro{padding:40px 0 6px}.intro h1{font-size:34px}.intro h1:after{width:58px;height:5px;margin-top:11px}.intro p{font-size:15.5px}.intro-placeholder{padding:16px 18px;font-size:13px}.eyebrow{font-size:12px}.section{padding:42px 0 0}.section-head h2{font-size:19px}.sec-num{font-size:13.5px}.tool-card{padding:17px}.tool-card h3{font-size:16px}.tool-icon{width:40px;height:40px}.update-item{gap:12px;padding:15px 16px}.update-date{width:74px;font-size:12px}.post-item{gap:12px;padding:14px 16px}.post-item .date{width:74px;font-size:12px}.post-item .title{font-size:14px}.log-entry{padding:18px}.log-head .date{width:100%;margin-left:0}.social-box{flex-direction:column;align-items:stretch;padding:18px}.page-head h1{font-size:26px}.site-footer{margin-top:56px}.site-footer .wrap{flex-direction:column;align-items:flex-start;gap:9px}.site-footer .footer-friends{flex-direction:row;align-items:center;gap:8px}.friend-section h2,.prose h2{font-size:18px}}
