:root{color-scheme:light dark;--bg:#f7faf9;--bg-soft:#eef4f2;--bg-elev:#fff;--ink:#12161a;--ink-soft:#4a545e;--ink-faint:#6f7984;--line:#e2e8e6;--line-strong:#cbd5d2;--bg-blob-1:#0f7d6724;--bg-blob-2:#5ecae033;--bg-blob-3:#a0e6c82e;--brand:#0f7d67;--brand-strong:#0a5f4e;--brand-soft:#e7f4f0;--brand-ink:#fff;--panel:#0e0e12;--panel-2:#17171f;--panel-ink:#eceff3;--panel-ink-soft:#a6afba;--panel-line:#2a2a34;--note-bg:#fff9ea;--note-line:#eddaa8;--note-ink:#6a4f11;--radius-lg:18px;--radius:12px;--radius-sm:8px;--fs-display:clamp(2.4rem, 1.6rem + 3.2vw, 3.5rem);--fs-h1:clamp(1.85rem, 1.3rem + 2.4vw, 2.9rem);--fs-h2:clamp(1.45rem, 1.15rem + 1.2vw, 2rem);--fs-h3:1.15rem;--fs-lead:1.15rem;--space-section:clamp(3rem, 1.5rem + 6vw, 6rem);--space-section-tight:clamp(2rem, 1.25rem + 3.5vw, 4rem);--space-block:clamp(2rem, 1.5rem + 2vw, 3.5rem);--gap-grid:24px;--wrap:1080px;--wrap-narrow:720px;--font:-apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Source Han Sans SC", "Noto Sans CJK SC", sans-serif;--font-mono:ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;--shadow-sm:0 1px 2px #0e16120f;--shadow:0 1px 2px #0e16120f, 0 10px 28px -14px #0e161238}@media (prefers-color-scheme:dark){:root{--bg:#0c0f13;--bg-soft:#12161b;--bg-elev:#151a20;--ink:#e8edf1;--ink-soft:#a9b4be;--ink-faint:#7d8892;--line:#232a31;--line-strong:#333c45;--bg-blob-1:#3ec9a71f;--bg-blob-2:#46aadc24;--bg-blob-3:#3ec9a712;--brand:#3ec9a7;--brand-strong:#6bd8bb;--brand-soft:#10241f;--brand-ink:#06231c;--panel:#16161d;--panel-2:#1e1e27;--panel-ink:#eceff3;--panel-ink-soft:#a6afba;--panel-line:#2f2f3a;--note-bg:#2a2213;--note-line:#4a3c1c;--note-ink:#e8cd8a;--shadow-sm:0 1px 2px #0006;--shadow:0 1px 2px #0006, 0 10px 28px -14px #0009}}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}body{background-color:var(--bg);background-image:radial-gradient(900px 520px at 8% -10%, var(--bg-blob-1), transparent 65%), radial-gradient(1000px 560px at 92% -5%, var(--bg-blob-2), transparent 65%), radial-gradient(1200px 640px at 50% -15%, var(--bg-blob-3), transparent 70%);color:var(--ink);font-family:var(--font);letter-spacing:.01em;-webkit-font-smoothing:antialiased;background-repeat:no-repeat;background-attachment:fixed;margin:0;font-size:17px;line-height:1.75}h1,h2,h3,h4{letter-spacing:-.01em;text-wrap:balance;margin:0 0 .5em;font-weight:700;line-height:1.3}h1{font-size:var(--fs-h1)}h2{font-size:var(--fs-h2)}h3{font-size:var(--fs-h3)}p{margin:0 0 1em}a{color:var(--brand);text-underline-offset:3px;text-decoration-thickness:1px}a:hover{color:var(--brand-strong)}:focus-visible{outline:2px solid var(--brand);outline-offset:2px;border-radius:4px}img{max-width:100%;height:auto}ul,ol{padding-left:1.4em}code,kbd{font-family:var(--font-mono);background:var(--bg-soft);border:1px solid var(--line);border-radius:4px;padding:.1em .35em;font-size:.9em}hr{border:0;border-top:1px solid var(--line);margin:2.5em 0}.wrap{width:100%;max-width:var(--wrap);margin-inline:auto;padding-inline:20px}.wrap-narrow{width:100%;max-width:var(--wrap-narrow);margin-inline:auto;padding-inline:20px}.section{padding-block:var(--space-section)}.section-tight{padding-block:var(--space-section-tight)}.lead{font-size:var(--fs-lead);color:var(--ink-soft);max-width:60ch}.muted{color:var(--ink-faint);font-size:.9rem}.skip-link{z-index:100;background:var(--brand);color:var(--brand-ink);border-radius:var(--radius-sm);padding:10px 16px;text-decoration:none;transition:top .15s;position:absolute;top:-60px;left:12px}.skip-link:focus{color:var(--brand-ink);top:12px}.visually-hidden{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.btn{font:inherit;cursor:pointer;border:1px solid #0000;border-radius:999px;justify-content:center;align-items:center;gap:.5em;padding:.7em 1.3em;font-size:.98rem;font-weight:600;line-height:1.2;text-decoration:none;transition:background-color .15s,color .15s,border-color .15s;display:inline-flex}.btn-primary{background:var(--brand);color:var(--brand-ink)}.btn-primary:hover{background:var(--brand-strong);color:var(--brand-ink)}.btn-ghost{border-color:var(--line-strong);color:var(--ink);background:0 0}.btn-ghost:hover{border-color:var(--brand);color:var(--brand)}.btn-lg{padding:.85em 1.6em;font-size:1.05rem}.btn-row{flex-wrap:wrap;gap:12px;margin-block:1.5em;display:flex}.card{background:var(--bg-elev);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-sm);padding:1.35rem 1.45rem;transition:border-color .18s,box-shadow .18s,transform .18s}.card:hover{border-color:var(--brand);box-shadow:var(--shadow);transform:translateY(-3px)}.note{background:var(--note-bg);border:1px solid var(--note-line);color:var(--note-ink);border-radius:var(--radius);padding:1rem 1.2rem}.note h2,.note h3{color:inherit;margin-top:0}.note a{color:inherit}.note ul{margin-block:.5em 0}.prose{max-width:68ch}.prose h2{margin-top:2em}.prose h3{margin-top:1.6em}.prose>:first-child{margin-top:0}.prose img{border-radius:var(--radius);border:1px solid var(--line)}.prose table{border-collapse:collapse;width:100%;margin-block:1.5em;font-size:.95rem}.prose th,.prose td{border:1px solid var(--line);text-align:left;padding:.55em .75em}.prose th{background:var(--bg-soft);font-weight:600}.grid{gap:var(--gap-grid);grid-template-columns:repeat(auto-fill,minmax(240px,1fr));display:grid}.site-header[data-astro-cid-nen7h5rs]{border-bottom:1px solid var(--line);background:color-mix(in srgb, var(--bg) 88%, transparent);backdrop-filter:blur(8px);z-index:20;position:sticky;top:0}.inner[data-astro-cid-nen7h5rs]{align-items:center;gap:1.25rem;padding-block:1rem;display:flex}.brand[data-astro-cid-nen7h5rs]{color:var(--ink);letter-spacing:-.01em;align-items:center;gap:.5rem;font-size:1.05rem;font-weight:700;text-decoration:none;display:inline-flex}.mark[data-astro-cid-nen7h5rs]{color:var(--brand);flex:none}.nav[data-astro-cid-nen7h5rs]{gap:1.1rem;margin-inline-start:auto;font-size:.94rem;display:flex}.nav[data-astro-cid-nen7h5rs] a[data-astro-cid-nen7h5rs]{color:var(--ink-soft);text-decoration:none}.nav[data-astro-cid-nen7h5rs] a[data-astro-cid-nen7h5rs]:hover{color:var(--brand)}.header-cta[data-astro-cid-nen7h5rs]{padding:.5em 1em;font-size:.9rem}@media (width<=720px){.inner[data-astro-cid-nen7h5rs]{flex-wrap:wrap;gap:.5rem .9rem}.nav[data-astro-cid-nen7h5rs]{order:3;gap:1rem;width:100%;margin-inline-start:0;font-size:.9rem}.header-cta[data-astro-cid-nen7h5rs]{margin-inline-start:auto}}.site-footer[data-astro-cid-jo6i4kqk]{border-top:1px solid var(--line);background:var(--bg-soft);margin-top:4rem;padding-block:2.25rem 1.75rem;font-size:.94rem}.cols[data-astro-cid-jo6i4kqk]{grid-template-columns:1fr 1.5fr .9fr;gap:2rem;display:grid}.brand-line[data-astro-cid-jo6i4kqk]{margin:0 0 .25em;font-size:1.02rem}.brand-col[data-astro-cid-jo6i4kqk] .muted[data-astro-cid-jo6i4kqk]{margin:0;line-height:1.6}.tool-list[data-astro-cid-jo6i4kqk]{grid-template-columns:repeat(2,minmax(0,1fr));gap:.45em 1.2em;display:grid}.links[data-astro-cid-jo6i4kqk] h2[data-astro-cid-jo6i4kqk]{text-transform:uppercase;letter-spacing:.06em;color:var(--ink-faint);margin:0 0 .8em;font-size:.85rem;font-weight:600}.links[data-astro-cid-jo6i4kqk] h2[data-astro-cid-jo6i4kqk] a[data-astro-cid-jo6i4kqk]{color:inherit;text-decoration:none}.links[data-astro-cid-jo6i4kqk] h2[data-astro-cid-jo6i4kqk] a[data-astro-cid-jo6i4kqk]:hover{color:var(--brand)}.links[data-astro-cid-jo6i4kqk] ul[data-astro-cid-jo6i4kqk]{gap:.45em;margin:0;padding:0;list-style:none;display:grid}.links[data-astro-cid-jo6i4kqk] a[data-astro-cid-jo6i4kqk]{color:var(--ink-soft);text-decoration:none}.links[data-astro-cid-jo6i4kqk] a[data-astro-cid-jo6i4kqk]:hover{color:var(--brand);text-decoration:underline}.copyright[data-astro-cid-jo6i4kqk]{border-top:1px solid var(--line);margin:2rem 0 0;padding-top:1.1rem;font-size:.85rem}@media (width<=800px){.cols[data-astro-cid-jo6i4kqk]{grid-template-columns:1fr 1fr;gap:1.5rem}.brand-col[data-astro-cid-jo6i4kqk]{grid-column:1/-1}}
