:root{--fabric-bg:#f4f4f6;--fabric-surface:#fff;--fabric-surface-raised:#fff;--fabric-sunken:#fafafc;--fabric-ink:#1b1c22;--fabric-muted:#686a75;--fabric-line:#e1e2e8;--fabric-line-strong:#c9cad3;--fabric-accent:#4b47c9;--fabric-accent-hover:#3d39b0;--fabric-accent-soft:#e9e8fb;--fabric-on-accent:#fff;--fabric-good:#23784f;--fabric-good-soft:#e0f2e8;--fabric-warn:#9a6400;--fabric-warn-soft:#fbf0d9;--fabric-bad:#b8402b;--fabric-bad-soft:#fbe8e3;--fabric-info:#2d6aa8;--fabric-info-soft:#e2edf8;--fabric-focus:0 0 0 3px color-mix(in srgb, var(--fabric-accent) 35%, transparent);--fabric-shadow-sm:0 1px 2px #14141e0f;--fabric-shadow-md:0 6px 24px #14141e1f, 0 1px 3px #14141e14;--fabric-scrim:#0f0f1973;--fabric-radius-sm:6px;--fabric-radius-md:8px;--fabric-radius-lg:12px;--fabric-radius-full:999px;--fabric-space-0:0;--fabric-space-1:4px;--fabric-space-2:8px;--fabric-space-3:12px;--fabric-space-4:16px;--fabric-space-5:20px;--fabric-space-6:24px;--fabric-space-7:32px;--fabric-space-8:48px;--fabric-font:system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--fabric-font-mono:ui-monospace, "SF Mono", Menlo, Consolas, monospace;--fabric-text-xs:12px;--fabric-text-sm:13px;--fabric-text-md:15px;--fabric-text-lg:17px;--fabric-text-xl:20px;--fabric-text-2xl:28px;--fabric-ease:cubic-bezier(.2, .8, .2, 1);--fabric-fast:.12s;--fabric-slow:.22s;color-scheme:light}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--fabric-bg:#131419;--fabric-surface:#1c1d24;--fabric-surface-raised:#23242d;--fabric-sunken:#17181e;--fabric-ink:#e9e9ef;--fabric-muted:#9a9ba8;--fabric-line:#2c2e38;--fabric-line-strong:#3d3f4c;--fabric-accent:#9d9af5;--fabric-accent-hover:#b4b2f8;--fabric-accent-soft:#26254a;--fabric-on-accent:#141330;--fabric-good:#5fcf98;--fabric-good-soft:#17301f;--fabric-warn:#e7b04f;--fabric-warn-soft:#382b12;--fabric-bad:#ef7d64;--fabric-bad-soft:#3b211b;--fabric-info:#7fb3ea;--fabric-info-soft:#172a3d;--fabric-shadow-md:0 8px 28px #00000080, 0 1px 3px #0006;--fabric-scrim:#0009;color-scheme:dark}}:root[data-theme=dark]{--fabric-bg:#131419;--fabric-surface:#1c1d24;--fabric-surface-raised:#23242d;--fabric-sunken:#17181e;--fabric-ink:#e9e9ef;--fabric-muted:#9a9ba8;--fabric-line:#2c2e38;--fabric-line-strong:#3d3f4c;--fabric-accent:#9d9af5;--fabric-accent-hover:#b4b2f8;--fabric-accent-soft:#26254a;--fabric-on-accent:#141330;--fabric-good:#5fcf98;--fabric-good-soft:#17301f;--fabric-warn:#e7b04f;--fabric-warn-soft:#382b12;--fabric-bad:#ef7d64;--fabric-bad-soft:#3b211b;--fabric-info:#7fb3ea;--fabric-info-soft:#172a3d;--fabric-shadow-md:0 8px 28px #00000080, 0 1px 3px #0006;--fabric-scrim:#0009;color-scheme:dark}:where(.fabric-root,body.fabric) :where(*){box-sizing:border-box}.fabric-root,body.fabric{background:var(--fabric-bg);color:var(--fabric-ink);font:var(--fabric-text-md)/1.5 var(--fabric-font);margin:0}.fabric-sr-only{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}@keyframes fabric-shimmer{50%{opacity:.45}}@keyframes fabric-spin{to{transform:rotate(360deg)}}@keyframes fabric-rise{0%{opacity:0;transform:translateY(6px)}}@keyframes fabric-indeterminate{0%{transform:translate(-100%)}to{transform:translate(250%)}}@media (prefers-reduced-motion:reduce){:root{--fabric-fast:0s;--fabric-slow:0s}}:root{--topbar-h:56px;--sidebar-w:260px;--toc-w:220px;--measure:78ch}html{scroll-padding-top:calc(var(--topbar-h) + var(--fabric-space-4));-webkit-text-size-adjust:100%}body.fabric{background:var(--fabric-bg);min-height:100dvh;overflow-x:hidden}.skip{left:var(--fabric-space-3);z-index:50;padding:var(--fabric-space-2) var(--fabric-space-3);background:var(--fabric-accent);color:var(--fabric-on-accent);border-radius:var(--fabric-radius-md);font-weight:600;position:absolute;top:-60px}.skip:focus{top:var(--fabric-space-2)}:where(a,button,summary):focus-visible{box-shadow:var(--fabric-focus);border-radius:var(--fabric-radius-sm);outline:none}.topbar{z-index:30;height:var(--topbar-h);align-items:center;gap:var(--fabric-space-3);padding:0 var(--fabric-space-4);background:color-mix(in srgb, var(--fabric-surface) 88%, transparent);backdrop-filter:saturate(1.4)blur(10px);border-bottom:1px solid var(--fabric-line);display:flex;position:sticky;top:0}.brand{align-items:center;gap:var(--fabric-space-2);color:var(--fabric-ink);font-weight:700;font-size:var(--fabric-text-lg);text-decoration:none;display:inline-flex}.brand img{border-radius:7px}.brand-sub{color:var(--fabric-muted);font-weight:500}.topbar button{border-radius:var(--fabric-radius-md);border:1px solid var(--fabric-line);background:var(--fabric-surface);height:36px;color:var(--fabric-ink);font:inherit;font-size:var(--fabric-text-sm);cursor:pointer;align-items:center;gap:6px;padding:0 10px;display:inline-flex}.topbar button:hover{border-color:var(--fabric-line-strong)}.topbar svg{fill:none;stroke:currentColor;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round}.search-open{min-width:180px;margin-left:auto;color:var(--fabric-muted)!important}.search-open kbd{border:1px solid var(--fabric-line);font:11px/18px var(--fabric-font-mono);color:var(--fabric-muted);border-radius:4px;margin-left:auto;padding:0 6px}.topbar .github{border-radius:var(--fabric-radius-md);border:1px solid var(--fabric-line);background:var(--fabric-surface);height:36px;color:var(--fabric-ink);font-size:var(--fabric-text-sm);align-items:center;gap:6px;padding:0 10px;text-decoration:none;display:inline-flex}.topbar .github:hover{border-color:var(--fabric-line-strong)}.topbar svg .fill{fill:currentColor;stroke:none}.theme-toggle svg{display:none}.theme-toggle[data-choice=system] .icon-system,.theme-toggle[data-choice=light] .icon-light,.theme-toggle[data-choice=dark] .icon-dark{display:block}.nav-toggle{display:none!important}.frame{grid-template-columns:var(--sidebar-w) minmax(0, 1fr) var(--toc-w);align-items:start;max-width:1440px;margin:0 auto;display:grid}.sidebar{top:var(--topbar-h);height:calc(100dvh - var(--topbar-h));padding:var(--fabric-space-5) var(--fabric-space-3) var(--fabric-space-8);border-right:1px solid var(--fabric-line);position:sticky;overflow-y:auto}.nav-section+.nav-section{margin-top:var(--fabric-space-5)}.nav-title{margin:0 0 var(--fabric-space-1);padding:0 var(--fabric-space-3);font-size:var(--fabric-text-xs);letter-spacing:.06em;text-transform:uppercase;color:var(--fabric-muted);font-weight:700}.sidebar ul,.toc ul{margin:0;padding:0;list-style:none}.sidebar a{padding:6px var(--fabric-space-3);border-radius:var(--fabric-radius-md);color:var(--fabric-ink);font-size:var(--fabric-text-sm);text-decoration:none;display:block}.sidebar a:hover{background:var(--fabric-surface)}.sidebar a[aria-current=page]{background:var(--fabric-accent-soft);color:var(--fabric-accent);font-weight:600}.content{min-width:0;padding:var(--fabric-space-7) var(--fabric-space-7) var(--fabric-space-8);outline:none}.prose{max-width:var(--measure)}.toc{top:var(--topbar-h);max-height:calc(100dvh - var(--topbar-h));padding:var(--fabric-space-7) var(--fabric-space-4) var(--fabric-space-6) 0;position:sticky;overflow-y:auto}.toc a{color:var(--fabric-muted);font-size:var(--fabric-text-sm);padding:3px 0;line-height:1.4;text-decoration:none;display:block}.toc a:hover{color:var(--fabric-accent)}.toc .depth-3 a{padding-left:var(--fabric-space-3);font-size:var(--fabric-text-xs)}.toc .nav-title{padding:0}.scrim{display:none}@media (width<=1240px){.frame{grid-template-columns:var(--sidebar-w) minmax(0, 1fr)}.toc{display:none}}@media (width<=900px){.frame{display:block}.nav-toggle{padding:0 8px!important;display:inline-flex!important}.brand-sub,.theme-label,.github-label,.search-label,.search-open kbd{display:none}.search-open{min-width:0;padding:0 8px!important}.sidebar{z-index:40;top:var(--topbar-h);width:min(300px,86vw);height:calc(100dvh - var(--topbar-h));background:var(--fabric-sunken);border-right:1px solid var(--fabric-line);transition:transform var(--fabric-slow) var(--fabric-ease);visibility:hidden;position:fixed;left:0;transform:translate(-102%)}body.nav-open .sidebar{visibility:visible;transform:none}body.nav-open .scrim{inset:var(--topbar-h) 0 0 0;z-index:35;background:var(--fabric-scrim);display:block;position:fixed}.content{padding:var(--fabric-space-5) var(--fabric-space-4) var(--fabric-space-7)}}.prose{font-size:var(--fabric-text-md);line-height:1.65}.prose h1{margin:0 0 var(--fabric-space-2);font-size:var(--fabric-text-2xl);letter-spacing:-.015em;line-height:1.2}.prose .lede{margin:0 0 var(--fabric-space-6);font-size:var(--fabric-text-lg);color:var(--fabric-muted);line-height:1.5}.prose h2{margin:var(--fabric-space-8) 0 var(--fabric-space-3);padding-top:var(--fabric-space-4);border-top:1px solid var(--fabric-line);font-size:var(--fabric-text-xl);letter-spacing:-.01em;line-height:1.3}.prose h3{margin:var(--fabric-space-6) 0 var(--fabric-space-2);font-size:var(--fabric-text-lg);line-height:1.35}.prose h4{margin:var(--fabric-space-5) 0 var(--fabric-space-2);font-size:var(--fabric-text-md)}.prose p,.prose ul,.prose ol{margin:0 0 var(--fabric-space-4)}.prose ul,.prose ol{padding-left:1.4em}.prose li{margin:0 0 var(--fabric-space-1)}.prose li>ul,.prose li>ol{margin:var(--fabric-space-1) 0 var(--fabric-space-2)}.prose a{color:var(--fabric-accent);text-underline-offset:2px;text-decoration-thickness:1px}.prose a:hover{color:var(--fabric-accent-hover)}.prose strong{font-weight:650}.prose hr{border:none;border-top:1px solid var(--fabric-line);margin:var(--fabric-space-7) 0}.prose :not(pre)>code{background:var(--fabric-sunken);border:1px solid var(--fabric-line);font:.88em/1.4 var(--fabric-font-mono);overflow-wrap:anywhere;border-radius:5px;padding:1px 5px}.foot code{font:.9em var(--fabric-font-mono)}.prose pre{margin:0 0 var(--fabric-space-5);padding:var(--fabric-space-4);border:1px solid var(--fabric-line);border-radius:var(--fabric-radius-lg);font:var(--fabric-text-sm)/1.6 var(--fabric-font-mono);tab-size:2;overflow-x:auto;background-color:var(--fabric-sunken)!important}.prose pre code{font:inherit;background:0 0;border:0;padding:0}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .astro-code,:root:not([data-theme=light]) .astro-code span{color:var(--shiki-dark)!important}}:root[data-theme=dark] .astro-code,:root[data-theme=dark] .astro-code span{color:var(--shiki-dark)!important}.prose table{width:100%;max-width:100%;margin:0 0 var(--fabric-space-5);border-collapse:collapse;font-size:var(--fabric-text-sm);line-height:1.5;display:block;overflow-x:auto}.prose thead th{text-align:left;color:var(--fabric-muted);font-weight:650;font-size:var(--fabric-text-xs);text-transform:uppercase;letter-spacing:.04em;white-space:nowrap}.prose th,.prose td{border-bottom:1px solid var(--fabric-line);vertical-align:top;padding:8px 12px}.prose tbody tr:hover td{background:color-mix(in srgb, var(--fabric-surface) 70%, transparent)}.prose td code{white-space:nowrap}.prose td:last-child{min-width:15em}.prose td:only-child{min-width:0}.prose td:first-child code{font-weight:600}.prose .note,.prose .tip,.prose .warn,.prose .why{--strong:var(--fabric-info);--soft:var(--fabric-info-soft);margin:0 0 var(--fabric-space-5);padding:var(--fabric-space-3) var(--fabric-space-4);border-radius:var(--fabric-radius-md);background:var(--soft);border:1px solid color-mix(in srgb, var(--strong) 28%, transparent);border-left:4px solid var(--strong)}.prose .tip{--strong:var(--fabric-good);--soft:var(--fabric-good-soft)}.prose .warn{--strong:var(--fabric-warn);--soft:var(--fabric-warn-soft)}.prose .why{--strong:var(--fabric-accent);--soft:var(--fabric-accent-soft)}.prose .note>:last-child,.prose .tip>:last-child,.prose .warn>:last-child,.prose .why>:last-child{margin-bottom:0}.prose .note>p:first-child strong:first-child,.prose .tip>p:first-child strong:first-child,.prose .warn>p:first-child strong:first-child,.prose .why>p:first-child strong:first-child{color:var(--strong)}.prose .note pre,.prose .tip pre,.prose .warn pre,.prose .why pre{background-color:var(--fabric-surface)!important}.cards{gap:var(--fabric-space-3);margin:0 0 var(--fabric-space-6);grid-template-columns:repeat(auto-fill,minmax(220px,1fr));display:grid}.cards a{padding:var(--fabric-space-4);border:1px solid var(--fabric-line);border-radius:var(--fabric-radius-lg);background:var(--fabric-surface);color:var(--fabric-ink);box-shadow:var(--fabric-shadow-sm);transition:border-color var(--fabric-fast) var(--fabric-ease);text-decoration:none;display:block}.cards a:hover{border-color:var(--fabric-accent);color:var(--fabric-ink)}.cards strong{color:var(--fabric-accent);margin-bottom:2px;display:block}.cards span{color:var(--fabric-muted);font-size:var(--fabric-text-sm);line-height:1.45;display:block}.prose ol.flow{gap:var(--fabric-space-2) var(--fabric-space-5);margin:0 0 var(--fabric-space-5);counter-reset:flow;flex-wrap:wrap;padding:0;list-style:none;display:flex}.prose ol.flow>li{padding:var(--fabric-space-3);border:1px solid var(--fabric-line);border-radius:var(--fabric-radius-md);background:var(--fabric-surface);font-size:var(--fabric-text-sm);counter-increment:flow;flex:170px;margin:0;padding-top:30px;line-height:1.45;position:relative}.prose ol.flow>li:before{content:counter(flow);top:8px;left:var(--fabric-space-3);background:var(--fabric-accent-soft);width:18px;height:18px;color:var(--fabric-accent);font:700 11px/18px var(--fabric-font);text-align:center;border-radius:50%;position:absolute}.prose ol.flow>li:not(:last-child):after{content:"→";right:calc(-1 * var(--fabric-space-5));width:var(--fabric-space-5);text-align:center;color:var(--fabric-muted);font-weight:700;position:absolute;top:50%;transform:translateY(-50%)}.prose ol.flow>li>strong:first-child{margin-bottom:2px;display:block}.figure{margin:0 0 var(--fabric-space-6);padding:var(--fabric-space-3);border:1px solid var(--fabric-line);border-radius:var(--fabric-radius-lg);background:var(--fabric-surface)}.figure .scroll{overflow-x:auto}.figure .hint{margin:var(--fabric-space-2) 0 0;color:var(--fabric-muted);font-size:var(--fabric-text-xs);display:none}@media (width<=700px){.figure .hint{display:block}}.figure figcaption{margin-top:var(--fabric-space-2);color:var(--fabric-muted);font-size:var(--fabric-text-sm)}.prose .m{min-width:3.6em;font:700 11px/18px var(--fabric-font-mono);text-align:center;background:var(--fabric-info-soft);color:var(--fabric-info);border-radius:4px;padding:0 6px;display:inline-block}.prose .m.post{background:var(--fabric-good-soft);color:var(--fabric-good)}.prose .m.put{background:var(--fabric-warn-soft);color:var(--fabric-warn)}.prose .m.delete{background:var(--fabric-bad-soft);color:var(--fabric-bad)}.pager{gap:var(--fabric-space-3);max-width:var(--measure);margin-top:var(--fabric-space-8);grid-template-columns:1fr 1fr;display:grid}.pager a{padding:var(--fabric-space-3) var(--fabric-space-4);border:1px solid var(--fabric-line);border-radius:var(--fabric-radius-lg);background:var(--fabric-surface);color:var(--fabric-accent);font-weight:600;text-decoration:none;display:block}.pager a:hover{border-color:var(--fabric-accent)}.pager a span{color:var(--fabric-muted);font-size:var(--fabric-text-xs);font-weight:500;display:block}.pager .next{text-align:right;grid-column:2}.foot{max-width:var(--measure);margin-top:var(--fabric-space-7);padding-top:var(--fabric-space-4);border-top:1px solid var(--fabric-line);color:var(--fabric-muted);font-size:var(--fabric-text-sm)}@media (width<=560px){.pager{grid-template-columns:1fr}.pager .next{grid-column:1}.prose h1{font-size:var(--fabric-text-xl)}}.edit{max-width:var(--measure);margin:var(--fabric-space-6) 0 0;font-size:var(--fabric-text-sm)}.edit a{color:var(--fabric-muted);text-underline-offset:2px}.edit a:hover{color:var(--fabric-accent)}.foot a{color:inherit;text-underline-offset:2px}dialog.search{width:min(680px, calc(100vw - 2 * var(--fabric-space-4)));max-height:min(80dvh,720px);padding:var(--fabric-space-4);border:1px solid var(--fabric-line);border-radius:var(--fabric-radius-lg);background:var(--fabric-surface);color:var(--fabric-ink);box-shadow:var(--fabric-shadow-md);--pagefind-ui-scale:.85;--pagefind-ui-primary:var(--fabric-accent);--pagefind-ui-text:var(--fabric-ink);--pagefind-ui-background:var(--fabric-surface);--pagefind-ui-border:var(--fabric-line);--pagefind-ui-tag:var(--fabric-sunken);--pagefind-ui-border-width:1px;--pagefind-ui-border-radius:8px;--pagefind-ui-font:var(--fabric-font);margin:10dvh auto auto;overflow-y:auto}dialog.search::backdrop{background:var(--fabric-scrim)}.search-head{margin-bottom:var(--fabric-space-3);justify-content:space-between;align-items:center;display:flex}.search-head .nav-title{margin:0;padding:0}.search-close{border-radius:var(--fabric-radius-sm);border:1px solid var(--fabric-line);background:var(--fabric-sunken);height:28px;color:var(--fabric-muted);font:11px var(--fabric-font-mono);cursor:pointer;padding:0 8px}.search-missing{color:var(--fabric-muted);font-size:var(--fabric-text-sm)}.search-missing code{font:.9em var(--fabric-font-mono)}.search mark{background:var(--fabric-accent-soft);color:var(--fabric-ink)}
