@layer astro.images{:where([data-astro-image]){height:auto}:where([data-astro-image=full-width]){width:100%}:where([data-astro-image=constrained]){max-width:100%}[data-astro-image-fit=fill]{object-fit:fill}[data-astro-image-fit=contain]{object-fit:contain}[data-astro-image-fit=cover]{object-fit:cover}[data-astro-image-fit=scale-down]{object-fit:scale-down}[data-astro-image-pos=top]{object-position:top}[data-astro-image-pos=bottom]{object-position:bottom}[data-astro-image-pos=left]{object-position:left}[data-astro-image-pos=right]{object-position:right}[data-astro-image-pos=center]{object-position:center}[data-astro-image-pos=top-bottom]{object-position:top bottom}[data-astro-image-pos=top-left]{object-position:top left}[data-astro-image-pos=top-right]{object-position:top right}[data-astro-image-pos=top-center]{object-position:top center}[data-astro-image-pos=bottom-top]{object-position:bottom top}[data-astro-image-pos=bottom-left]{object-position:bottom left}[data-astro-image-pos=bottom-right]{object-position:bottom right}[data-astro-image-pos=bottom-center]{object-position:bottom center}[data-astro-image-pos=left-top]{object-position:left top}[data-astro-image-pos=left-bottom]{object-position:left bottom}[data-astro-image-pos=left-right]{object-position:left right}[data-astro-image-pos=left-center]{object-position:left center}[data-astro-image-pos=right-top]{object-position:right top}[data-astro-image-pos=right-bottom]{object-position:right bottom}[data-astro-image-pos=right-left]{object-position:right left}[data-astro-image-pos=right-center]{object-position:right center}[data-astro-image-pos=center-top]{object-position:center top}[data-astro-image-pos=center-bottom]{object-position:center bottom}[data-astro-image-pos=center-left]{object-position:center left}[data-astro-image-pos=center-right]{object-position:center right}}.theme-toggle[data-astro-cid-l6lhmie6] .moon[data-astro-cid-l6lhmie6],:root[data-theme=dark] .theme-toggle[data-astro-cid-l6lhmie6] .sun[data-astro-cid-l6lhmie6]{display:none}:root[data-theme=dark] .theme-toggle[data-astro-cid-l6lhmie6] .moon[data-astro-cid-l6lhmie6]{display:block}.header-actions[data-astro-cid-nen7h5rs] .label[data-astro-cid-nen7h5rs]{color:var(--ink-muted)}.header-actions[data-astro-cid-nen7h5rs] .label[data-astro-cid-nen7h5rs]:hover{color:var(--accent-hover)}.drawer-gap[data-astro-cid-nen7h5rs]{flex:none;inline-size:30px;display:none}@media (width<=800px){.drawer-gap[data-astro-cid-nen7h5rs]{display:block}}.nav-tree[data-astro-cid-t6fjpl24] summary[data-astro-cid-t6fjpl24]>a[data-astro-cid-t6fjpl24]{min-inline-size:0;color:inherit;font:inherit;border-radius:0;flex:1;padding:0;display:inline}.nav-tree[data-astro-cid-t6fjpl24] summary[data-astro-cid-t6fjpl24]>a[data-astro-cid-t6fjpl24]:hover{color:var(--accent-hover);background:0 0}.nav-tree[data-astro-cid-zhzzu2wd] summary[data-astro-cid-zhzzu2wd]>a[data-astro-cid-zhzzu2wd]{min-inline-size:0;color:inherit;font:inherit;border-radius:0;flex:1;padding:0;display:inline}.nav-tree[data-astro-cid-zhzzu2wd] summary[data-astro-cid-zhzzu2wd]>a[data-astro-cid-zhzzu2wd]:hover{color:var(--accent-hover);background:0 0}:root{--paper:oklch(97.5% .006 60);--surface:oklch(99.4% .004 60);--ink:oklch(24.5% .012 60);--ink-strong:oklch(17% .014 60);--ink-muted:oklch(55% .012 60);--ink-faint:oklch(63% .01 60);--rule:oklch(90.5% .007 60);--rule-strong:oklch(84% .009 60);--accent:oklch(55% .11 70);--accent-hover:oklch(45% .115 70);--accent-ink:oklch(100% 0 0);--soft:oklch(55% .11 70/.11);--mark:oklch(91% .145 96);--mark-ink:oklch(28% .06 80);--focus:oklch(52% .14 70);--scrim:oklch(20% .02 60/.35);--hue-note:70;--hue-tip:165;--hue-success:145;--hue-question:300;--hue-warning:55;--hue-danger:22;--hue-example:288;--hue-quote:250;--callout-chroma:.12;--font-body:var(--font-sans), ui-sans-serif, system-ui, sans-serif;--font-code:var(--font-mono), ui-monospace, SFMono-Regular, monospace;--step-display:2.375rem;--step-title:2.0625rem;--step-index:1.8125rem;--step-section:1.1875rem;--step-lead:1.15625rem;--step-body:1.0625rem;--step-quote:1.03125rem;--step-ui:1rem;--step-small:.96875rem;--step-excerpt:.90625rem;--step-nav:.84375rem;--step-code:.8125rem;--step-meta:.71875rem;--step-label:.625rem;--leading-display:1.15;--leading-title:1.2;--leading-section:1.3;--leading-body:1.72;--leading-ui:1.65;--leading-meta:1.7;--weight-normal:400;--weight-medium:500;--weight-semibold:600;--tracking-label:.1em;--tracking-meta:.06em;--tracking-title:-.025em;--tracking-tight:-.01em;--measure:66ch;--space-3xs:.25rem;--space-2xs:.5rem;--space-xs:.75rem;--space-s:1rem;--space-m:1.5rem;--space-l:2rem;--space-xl:3rem;--space-2xl:3.5rem;--space-3xl:8.75rem;--sidebar-width:250px;--column-width:660px;--rail-width:218px;--rail-gap:3.25rem;--header-height:52px;--radius-xs:3px;--radius-s:4px;--radius-m:5px;--radius-l:7px;--radius-xl:8px;--hairline:1px;--duration-fast:90ms;--duration-base:.17s;--ease:cubic-bezier(.2, 0, .13, 1)}:root[data-theme=dark]{--paper:oklch(19% .008 60);--surface:oklch(23.2% .008 60);--ink:oklch(92% .008 60);--ink-strong:oklch(97% .005 60);--ink-muted:oklch(63.5% .012 60);--ink-faint:oklch(54% .011 60);--rule:oklch(30.5% .008 60);--rule-strong:oklch(38% .01 60);--accent:oklch(79% .1 70);--accent-hover:oklch(88% .085 70);--accent-ink:oklch(17% .02 60);--soft:oklch(79% .1 70/.15);--mark:oklch(52% .12 96);--mark-ink:oklch(97% .02 96);--focus:oklch(80% .12 70);--scrim:oklch(8% .01 60/.55)}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--paper:oklch(19% .008 60);--surface:oklch(23.2% .008 60);--ink:oklch(92% .008 60);--ink-strong:oklch(97% .005 60);--ink-muted:oklch(63.5% .012 60);--ink-faint:oklch(54% .011 60);--rule:oklch(30.5% .008 60);--rule-strong:oklch(38% .01 60);--accent:oklch(79% .1 70);--accent-hover:oklch(88% .085 70);--accent-ink:oklch(17% .02 60);--soft:oklch(79% .1 70/.15);--mark:oklch(52% .12 96);--mark-ink:oklch(97% .02 96);--focus:oklch(80% .12 70);--scrim:oklch(8% .01 60/.55)}}:dir(rtl){--tracking-label:normal;--tracking-meta:normal;--tracking-title:normal;--tracking-tight:normal;--leading-display:1.4;--leading-title:1.45;--leading-section:1.5;--leading-body:1.8;--leading-ui:1.75;--leading-meta:1.8}:dir(rtl) :dir(ltr){--tracking-label:.1em;--tracking-meta:.06em;--tracking-title:-.025em;--tracking-tight:-.01em;--leading-display:1.15;--leading-title:1.2;--leading-section:1.3;--leading-body:1.72;--leading-ui:1.65;--leading-meta:1.7}@media (width<=640px){:root{--step-display:2rem;--step-title:1.75rem;--step-index:1.625rem;--step-section:1.125rem;--step-lead:1.0625rem;--step-body:1rem}}@media (prefers-reduced-motion:reduce){:root{--duration-fast:0s;--duration-base:0s}}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-block-start:calc(var(--header-height) + var(--space-m))}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}body{background:var(--paper);color:var(--ink);font-family:var(--font-body);font-size:var(--step-ui);line-height:var(--leading-ui);font-synthesis-weight:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;margin:0}::selection{background:var(--soft)}*{scrollbar-width:thin;scrollbar-color:var(--rule) transparent}::-webkit-scrollbar{width:9px;height:9px}::-webkit-scrollbar-thumb{background:var(--rule);border-radius:9px}::-webkit-scrollbar-track{background:0 0}:where(h1,h2,h3,h4,h5,h6,p,figure,blockquote,dl,dd,ul,ol){margin:0}:where(ul,ol){padding-inline-start:0;list-style:none}:where(a){color:var(--accent);text-decoration:none}:where(a:hover){color:var(--accent-hover)}.prose a,.landing-intro a,.actions a{border-block-end:var(--hairline) solid var(--soft)}.prose a:hover,.landing-intro a:hover,.actions a:hover{border-block-end-color:var(--accent)}.external-link:after{content:"↗";vertical-align:baseline;unicode-bidi:isolate;border:0;margin-inline-start:.15em;font-size:.85em;line-height:1;text-decoration:none;display:inline-block}:where(img,svg,video){block-size:auto;max-inline-size:100%}:where(button,input,select,textarea){font:inherit;color:inherit}:focus-visible{outline:2px solid var(--focus);outline-offset:2px;border-radius:var(--radius-xs)}.visually-hidden{clip-path:inset(50%);white-space:nowrap;border:0;block-size:1px;inline-size:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.skip-link{z-index:100;padding:var(--space-2xs) var(--space-s);background:var(--surface);color:var(--ink-strong);border:var(--hairline) solid var(--rule-strong);border-radius:var(--radius-l);position:absolute;inset-block-start:var(--space-2xs);inset-inline-start:var(--space-2xs);transform:translateY(-200%)}.skip-link:focus-visible{transform:none}.label{font-family:var(--font-code);font-size:var(--step-label);line-height:1.4;font-weight:var(--weight-normal);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--ink-muted)}.meta{font-family:var(--font-code);font-size:var(--step-meta);line-height:var(--leading-meta);font-weight:var(--weight-normal);color:var(--ink-muted)}.page{grid-template-columns:var(--sidebar-width) minmax(0, 1fr);grid-template-rows:auto minmax(0,1fr);grid-template-areas:"header header""sidebar main";min-block-size:100dvh;display:grid}.page[data-nav=none]{grid-template-columns:minmax(0,1fr);grid-template-areas:"header""main"}.site-header{z-index:20;block-size:var(--header-height);align-items:center;gap:var(--space-m);background:var(--surface);border-block-end:var(--hairline) solid var(--rule);grid-area:header;padding-inline:22px;display:flex;position:sticky;inset-block-start:0}.site-title{font-size:var(--step-small);font-weight:var(--weight-semibold);letter-spacing:var(--tracking-tight);color:var(--ink-strong);white-space:nowrap}.site-title:hover{color:var(--ink-strong)}.header-spacer{flex:1}.header-actions{align-items:center;gap:var(--space-s);display:flex}.icon-button{border:var(--hairline) solid transparent;border-radius:var(--radius-m);block-size:30px;inline-size:30px;color:var(--ink-muted);cursor:pointer;transition:color var(--duration-fast) var(--ease), background-color var(--duration-fast) var(--ease);background:0 0;place-items:center;padding:0;display:inline-grid}.icon-button:hover{color:var(--accent-hover);background:var(--soft)}.sidebar{background:var(--surface);border-inline-end:var(--hairline) solid var(--rule);padding:var(--space-m) 18px var(--space-xl);block-size:calc(100dvh - var(--header-height));flex-direction:column;grid-area:sidebar;gap:22px;display:flex;position:sticky;inset-block-start:var(--header-height);overflow-y:auto}.sidebar-heading{margin-block-end:var(--space-xs);padding-inline-start:6px}.nav-tree{gap:var(--hairline);flex-direction:column;margin:0;display:flex}.nav-tree li{min-inline-size:0;margin:0}.nav-tree a,.nav-tree summary{padding:var(--space-3xs) 6px;border-radius:var(--radius-m);font-size:var(--step-nav);color:var(--ink);align-items:center;gap:7px;line-height:1.4;text-decoration:none;display:flex}.nav-tree a:hover,.nav-tree summary:hover{background:var(--soft);color:var(--ink)}.nav-tree a[aria-current=page]{background:var(--soft);color:var(--accent-hover);font-weight:var(--weight-medium)}.nav-tree summary{cursor:pointer;font-weight:var(--weight-medium);list-style:none}.nav-tree summary::-webkit-details-marker{display:none}.nav-tree summary:before{content:"▸";inline-size:8px;font-family:var(--font-code);font-size:var(--step-label);color:var(--ink-muted);flex:none;line-height:1}.nav-tree details[open]>summary:before{content:"▾"}[dir=rtl] .nav-tree summary:before{content:"◂"}[dir=rtl] .nav-tree details[open]>summary:before{content:"▾"}.nav-tree details>ul{border-inline-start:var(--hairline) solid var(--rule);margin-inline-start:11px;padding-inline-start:19px}.nav-count{font-family:var(--font-code);color:var(--ink-muted);flex:none;margin-inline-start:auto;font-size:10.5px}.main{min-inline-size:0;padding-block:var(--space-2xl) var(--space-3xl);padding-inline:var(--space-xl);grid-area:main}.note-layout{grid-template-columns:minmax(0, var(--column-width));justify-content:center;display:grid}.note-toc{padding:var(--space-xs) var(--space-s);background:var(--surface);border:var(--hairline) solid var(--rule);border-radius:var(--radius-l);margin-block-end:var(--space-m)}.note-toc .toc-list{max-block-size:40dvh;overflow-y:auto}.note-body{min-inline-size:0}.note-rail{gap:var(--space-l);border-block-start:var(--hairline) solid var(--rule);flex-direction:column;margin-block-start:var(--space-2xl);padding-block-start:var(--space-m);display:flex}@media (width>=1101px){.note-layout[data-layout=panels]{grid-template-columns:minmax(0, var(--column-width)) var(--rail-width);column-gap:var(--rail-gap);grid-template-rows:auto 1fr;align-items:start}.note-layout[data-layout=panels]>.note-head{grid-area:1/1}.note-layout[data-layout=panels]>.note-body{grid-area:2/1}.note-layout[data-layout=panels]>.note-aside{align-self:start;gap:var(--space-l);flex-direction:column;grid-area:1/2/span 2;display:flex;position:sticky;inset-block-start:calc(var(--header-height) + var(--space-m))}.note-layout[data-layout=panels] :is(.note-toc,.note-rail){background:0 0;border:0;margin:0;padding:0}.note-layout[data-layout=panels] .note-toc>summary{margin-block-end:var(--space-3xs)}.note-layout[data-layout=panels] .note-toc .toc-list{max-block-size:none;overflow-y:visible}.note-layout[data-layout=panels] .backlink-card{border-radius:var(--radius-m);background:0 0;padding:7px 9px}.note-layout[data-layout=panels] .backlink-card-title{font-size:var(--step-nav);font-weight:var(--weight-normal);color:var(--ink);line-height:1.4}.note-layout[data-layout=panels] .backlink-card-excerpt{display:none}}@media (width<=1100px){.note-layout[data-layout=panels]>.note-aside{display:contents}.note-layout[data-layout=panels]>.note-body{grid-row:3}.note-layout[data-layout=panels] .note-rail{grid-row:4}}.rail-section{gap:var(--space-2xs);flex-direction:column;display:flex}.rail-heading{margin-block-end:var(--space-3xs)}.rail-links{gap:var(--space-2xs);flex-direction:column;display:flex}.rail-links a{border:var(--hairline) solid var(--rule);border-radius:var(--radius-m);color:var(--ink);font-size:var(--step-nav);padding:7px 9px;line-height:1.4}.rail-links a:hover{border-color:var(--accent);color:var(--accent-hover)}.rail-empty{font-size:var(--step-nav);color:var(--ink-faint);line-height:1.45}.graph-canvas{aspect-ratio:200/210;max-block-size:260px;font-family:var(--font-body);font-size:var(--step-label);background:var(--surface);border:var(--hairline) solid var(--rule);border-radius:var(--radius-l);position:relative;overflow:hidden}.graph-canvas:empty{display:none}.graph-canvas canvas,.graph-stage canvas{cursor:grab;touch-action:pan-y;block-size:100%;inline-size:100%;display:block}.graph-expand{z-index:1;position:absolute;inset-block-start:var(--space-3xs);inset-inline-end:var(--space-3xs)}.graph-dialog{background:var(--surface);border:var(--hairline) solid var(--rule);border-radius:var(--radius-l);block-size:min(85dvh,760px);inline-size:min(92vw,1100px);padding:0;overflow:hidden}.graph-close{z-index:1;position:absolute;inset-block-start:var(--space-2xs);inset-inline-end:var(--space-2xs)}.graph-dialog::backdrop{background:var(--scrim)}.graph-stage{block-size:100%;inline-size:100%;font-family:var(--font-body);font-size:var(--step-nav)}.search-dialog{background:var(--surface);border:var(--hairline) solid var(--rule);border-radius:var(--radius-l);max-block-size:min(70dvh,34rem);inline-size:min(92vw,40rem);color:var(--ink);margin-block:12vh auto;margin-inline:auto;padding:0;overflow:hidden}.search-dialog[open]{flex-direction:column;display:flex}.search-dialog::backdrop{background:var(--scrim)}.search-head{align-items:center;gap:var(--space-2xs);padding-block:var(--space-2xs);padding-inline:var(--space-s) var(--space-2xs);border-block-end:var(--hairline) solid var(--rule);color:var(--ink-faint);flex:none;display:flex}.search-input{min-inline-size:0;padding-block:var(--space-2xs);color:var(--ink-strong);font-size:var(--step-ui);line-height:var(--leading-ui);background:0 0;border:0;flex:1;padding-inline:0}.search-input::placeholder{color:var(--ink-faint)}.search-status{padding:var(--space-2xs) var(--space-s);font-family:var(--font-code);font-size:var(--step-meta);line-height:var(--leading-meta);letter-spacing:var(--tracking-meta);color:var(--ink-muted);flex:none}.search-status:empty{padding-block:0}.search-results{flex:1;padding-block-end:var(--space-2xs);overflow-y:auto}.search-result,.search-section{padding:var(--space-2xs) var(--space-s);color:var(--ink);display:block}.search-result:hover,.search-section:hover,.search-result:focus-visible,.search-section:focus-visible{background:var(--soft)}.search-result:focus-visible,.search-section:focus-visible{outline-offset:-2px}.search-result-title{font-size:var(--step-ui);font-weight:var(--weight-medium);color:var(--ink-strong);letter-spacing:var(--tracking-tight);display:block}.search-excerpt{font-size:var(--step-excerpt);line-height:var(--leading-ui);color:var(--ink-muted);margin-block-start:2px;display:block}.search-excerpt mark{background:var(--mark);color:var(--mark-ink);border-radius:var(--radius-xs)}.search-sections{border-inline-start:var(--hairline) solid var(--rule);margin-inline-start:var(--space-l)}.search-section .search-result-title{font-size:var(--step-nav);font-weight:var(--weight-normal);color:var(--ink)}.note-preview{padding:var(--space-xs) var(--space-s);background:var(--surface);border:var(--hairline) solid var(--rule);border-radius:var(--radius-l);block-size:auto;inline-size:min(22rem,80vw);color:var(--ink);font-family:var(--font-body);line-height:var(--leading-ui);position-anchor:--jotter-preview;position-area:block-end span-inline-end;position-try-fallbacks:flip-block, flip-inline;position-visibility:anchors-visible;margin:0;margin-block:var(--space-3xs);opacity:0;transition:opacity var(--duration-fast) var(--ease), overlay var(--duration-fast) var(--ease) allow-discrete, display var(--duration-fast) var(--ease) allow-discrete;inset:auto;overflow:visible}.note-preview:popover-open{opacity:1}@starting-style{.note-preview:popover-open{opacity:0}}.note-preview-title{font-size:var(--step-nav);font-weight:var(--weight-semibold);color:var(--ink-strong);letter-spacing:var(--tracking-tight);display:block}.note-preview-text{font-size:var(--step-excerpt);color:var(--ink-muted);margin-block-start:var(--space-3xs);display:block}.note-toc>summary{cursor:pointer;list-style:none}.note-toc>summary::-webkit-details-marker{display:none}.toc-list{gap:var(--space-3xs);flex-direction:column;margin-block-start:var(--space-2xs);display:flex}.toc-list a{color:var(--ink-muted);font-size:var(--step-nav);border-inline-start:2px solid var(--rule);padding-block:2px;padding-inline-start:var(--space-2xs);line-height:1.45;display:block}.toc-list a:hover{color:var(--accent-hover);border-inline-start-color:var(--accent)}.toc-list a[data-depth="3"]{padding-inline-start:var(--space-s)}.toc-list a[data-depth="4"]{padding-inline-start:var(--space-m)}.note-head{gap:var(--space-s);flex-direction:column;margin-block-end:var(--space-l);display:flex}.note-crumb{gap:var(--space-3xs);flex-wrap:wrap;display:flex}.note-crumb a{color:inherit}.note-crumb a:hover{color:var(--accent-hover)}.home-title{font-size:var(--step-display);line-height:var(--leading-display);font-weight:var(--weight-semibold);letter-spacing:var(--tracking-title);color:var(--ink-strong);text-wrap:balance}.note-title{font-size:var(--step-title);line-height:var(--leading-title);font-weight:var(--weight-semibold);letter-spacing:var(--tracking-title);color:var(--ink-strong);text-wrap:balance}.index-title{font-size:var(--step-index);line-height:var(--leading-title);font-weight:var(--weight-semibold);letter-spacing:var(--tracking-title);color:var(--ink-strong);text-wrap:balance}.note-frontmatter{background:var(--surface);border:var(--hairline) solid var(--rule);border-radius:var(--radius-l);font-family:var(--font-code);font-size:var(--step-meta);line-height:var(--leading-meta);flex-direction:column;gap:3px;padding:13px 15px;display:flex}.note-frontmatter>div{gap:var(--space-xs);display:flex}.note-frontmatter dt{min-inline-size:74px;color:var(--ink-muted);flex:none}.note-frontmatter dd{min-inline-size:0;color:var(--ink);margin:0}.tag-list{flex-wrap:wrap;gap:6px;padding:0;list-style:none;display:flex}.tag-chip{border:var(--hairline) solid transparent;border-radius:var(--radius-s);background:var(--soft);color:var(--accent-hover);font-family:var(--font-code);font-size:var(--step-meta);white-space:nowrap;padding:2px 7px;line-height:1.5;display:inline-block}.tag-chip:hover{color:var(--accent-hover);border-color:var(--accent)}.note-grid{border:var(--hairline) solid var(--rule);border-radius:var(--radius-xl);grid-template-columns:1fr 1fr;display:grid;overflow:hidden}.note-card{background:var(--surface);border-block-start:var(--hairline) solid var(--rule);border-inline-start:var(--hairline) solid var(--rule);color:inherit;transition:background-color var(--duration-fast) var(--ease);flex-direction:column;gap:6px;padding:19px 21px;display:flex}.note-card:hover{background:var(--soft);color:inherit}.note-card:nth-child(-n+2){border-block-start:0}.note-card:nth-child(odd){border-inline-start:0}.note-card-title{font-size:var(--step-ui);font-weight:var(--weight-medium);letter-spacing:var(--tracking-tight);color:var(--ink-strong);line-height:1.35}.note-card-excerpt{font-size:var(--step-nav);color:var(--ink-muted);-webkit-line-clamp:3;line-clamp:3;-webkit-box-orient:vertical;line-height:1.5;display:-webkit-box;overflow:hidden}.note-rows{flex-direction:column;display:flex}.note-row{align-items:baseline;column-gap:var(--space-m);row-gap:var(--space-3xs);border-block-end:var(--hairline) solid var(--rule);color:inherit;grid-template-columns:minmax(0,1fr) auto;padding-block:14px;display:grid}.note-row:hover{color:inherit}.note-row:hover .note-row-title{color:var(--accent-hover)}.note-row-title{font-size:var(--step-body);font-weight:var(--weight-medium);color:var(--ink-strong);line-height:1.4}.note-row-date{white-space:nowrap;font-size:11px}.note-row-excerpt{font-size:var(--step-excerpt);color:var(--ink-muted);-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;grid-column:1/-1;line-height:1.5;display:-webkit-box;overflow:hidden}.note-rows.is-compact .note-row{padding-block:9px}.note-rows.is-compact .note-row-title{font-size:var(--step-ui);font-weight:var(--weight-normal)}.backlink-cards{gap:var(--space-xs);flex-direction:column;display:flex}.backlink-card{gap:var(--space-3xs);background:var(--surface);border:var(--hairline) solid var(--rule);border-radius:var(--radius-l);color:inherit;transition:border-color var(--duration-fast) var(--ease);flex-direction:column;padding:13px 15px;display:flex}.backlink-card:hover{border-color:var(--accent);color:inherit}.backlink-card-title{font-size:var(--step-small);font-weight:var(--weight-medium);color:var(--ink-strong);line-height:1.4}.backlink-card-excerpt{font-size:var(--step-excerpt);color:var(--ink-muted);-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;line-height:1.5;display:-webkit-box;overflow:hidden}.prev-next{gap:var(--space-xs);border-block-start:var(--hairline) solid var(--rule);grid-template-columns:1fr 1fr;margin-block-start:var(--space-2xl);padding-block-start:var(--space-m);display:grid}.prev-next a{border:var(--hairline) solid var(--rule);border-radius:var(--radius-l);color:inherit;transition:border-color var(--duration-fast) var(--ease);padding:13px 15px}.prev-next a:hover{border-color:var(--accent);color:inherit}.prev-next .next{text-align:end;grid-column:2}.section-heading{font-size:var(--step-section);line-height:var(--leading-section);font-weight:var(--weight-semibold);letter-spacing:var(--tracking-tight);color:var(--ink-strong)}.landing-intro{max-inline-size:54ch;font-size:var(--step-lead);color:var(--ink-muted);text-wrap:pretty;margin-block:var(--space-s) 0;line-height:1.6}.stack{gap:var(--space-s);flex-direction:column;display:flex}.stack-l{gap:var(--space-2xl);flex-direction:column;display:flex}.note-card-title,.note-row-title,.backlink-card-title,.prev-next-title,.toc-list a,.tag-chip,.note-crumb a,.graph-list a{unicode-bidi:isolate}.search-result-title,.search-excerpt{unicode-bidi:plaintext}.drawer-checkbox{z-index:40;appearance:none;border:var(--hairline) solid transparent;border-radius:var(--radius-m);block-size:30px;inline-size:30px;color:var(--ink-muted);cursor:pointer;background:0 0;margin:0;display:none;position:fixed;inset-block-start:calc((var(--header-height) - 30px) / 2);inset-inline-start:22px}.drawer-checkbox:before,.drawer-checkbox:after{content:"";block-size:1.5px;transition:transform var(--duration-base) var(--ease);background:currentColor;border-radius:1px;position:absolute;inset-inline:7px}.drawer-checkbox:before{inset-block-start:10px;box-shadow:0 5px}.drawer-checkbox:after{inset-block-start:20px}.drawer-checkbox:hover{color:var(--accent-hover);background:var(--soft)}.drawer-backdrop{display:none}@media (width<=800px){.page,.page[data-nav=none]{grid-template-columns:minmax(0,1fr);grid-template-areas:"header""main"}.main{padding-block:var(--space-l) var(--space-2xl);padding-inline:var(--space-s)}.drawer-checkbox{display:block}.sidebar{inset-block:var(--header-height) 0;z-index:30;inline-size:min(var(--sidebar-width), 82vw);border-inline-end:var(--hairline) solid var(--rule-strong);transition:transform var(--duration-base) var(--ease);block-size:auto;position:fixed;inset-inline-start:0;transform:translate(-101%)}[dir=rtl] .sidebar{transform:translate(101%)}.drawer-checkbox:checked~.page .sidebar{transform:none}.drawer-checkbox:checked~.page .drawer-backdrop{inset:var(--header-height) 0 0;z-index:25;background:var(--scrim);border:0;inline-size:100%;display:block;position:fixed}}@media (width<=640px){.note-grid{grid-template-columns:1fr}.note-card{border-inline-start:0}.note-card:nth-child(-n+2){border-block-start:var(--hairline) solid var(--rule)}.note-card:first-child{border-block-start:0}.prev-next{grid-template-columns:1fr}.prev-next .next{grid-column:1}}.prose{max-inline-size:var(--measure);font-size:var(--step-body);line-height:var(--leading-body);color:var(--ink);overflow-wrap:break-word}.prose>*+*{margin-block-start:1.15em}.prose>*+:is(h2,h3,h4,h5,h6){margin-block-start:2em}.prose :is(h2,h3,h4,h5,h6)+*{margin-block-start:.65em}.prose :is(h1,h2,h3,h4,h5,h6){color:var(--ink-strong);font-weight:var(--weight-semibold);letter-spacing:var(--tracking-tight);line-height:var(--leading-section);text-wrap:balance;scroll-margin-block-start:calc(var(--header-height) + var(--space-m))}.prose h1{font-size:var(--step-title);line-height:var(--leading-title);letter-spacing:var(--tracking-title)}.prose h2{font-size:var(--step-section)}.prose h3{font-size:var(--step-body)}.prose :is(h4,h5,h6){font-size:var(--step-small)}.prose :is(h2,h3,h4)>.heading-anchor{opacity:0;color:var(--ink-faint);font-weight:var(--weight-normal);border-block-end:0;margin-inline-start:var(--space-3xs)}.prose :is(h2,h3,h4):hover>.heading-anchor,.prose .heading-anchor:focus-visible{opacity:1}.prose .dead-link{color:var(--ink-muted);cursor:default;border-block-end:1px dotted}.prose mark{background:var(--mark);color:var(--mark-ink);border-radius:2px;padding-inline:.12em}.prose strong{font-weight:var(--weight-semibold);color:var(--ink-strong)}.prose sup,.prose sub{font-size:.72em;line-height:0}.prose abbr[title]{text-decoration:underline dotted}.prose :is(ul,ol){list-style:revert;padding-inline-start:0}.prose li{text-align:start;margin-inline-start:21px}.prose li+li{margin-block-start:.45em}.prose li::marker{color:var(--ink-faint)}.prose li>:is(ul,ol){margin-block-start:.45em}.prose li:has(>input[type=checkbox]){margin-inline-start:0;padding-inline-start:21px;list-style:none}.prose input[type=checkbox]{accent-color:var(--accent);margin-inline-end:var(--space-3xs)}.prose :is(dl){gap:var(--space-3xs) var(--space-s);grid-template-columns:auto 1fr;display:grid}.prose dt{font-weight:var(--weight-semibold);color:var(--ink-strong)}.prose dd{margin:0}.prose blockquote{border-inline-start:2px solid var(--accent);font-size:var(--step-quote);color:var(--ink-muted);margin-block:1.6em;padding-inline-start:20px;font-style:italic}.prose :not(pre)>code{font-family:var(--font-code);background:var(--soft);border-radius:var(--radius-xs);white-space:break-spaces;padding:.1em .35em;font-size:.87em}.prose pre{font-family:var(--font-code);font-size:var(--step-code);background:var(--surface);border:var(--hairline) solid var(--rule);border-radius:var(--radius-l);margin-block:1.7em;padding:15px 17px;line-height:1.65;overflow-x:auto}.prose pre code{font:inherit;background:0 0;border:0;padding:0}.prose pre.astro-code{background-color:var(--surface)!important}:root[data-theme=dark] .prose .astro-code,:root[data-theme=dark] .prose .astro-code span{color:var(--shiki-dark)!important;font-style:var(--shiki-dark-font-style)!important;font-weight:var(--shiki-dark-font-weight)!important}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .prose .astro-code,:root:not([data-theme=light]) .prose .astro-code span{color:var(--shiki-dark)!important;font-style:var(--shiki-dark-font-style)!important;font-weight:var(--shiki-dark-font-weight)!important}}.prose .table-scroll{overflow-x:auto}.prose table{border-collapse:collapse;inline-size:100%;font-size:var(--step-small)}.prose :is(th,td){padding:var(--space-2xs) var(--space-xs);border-block-end:var(--hairline) solid var(--rule);text-align:start}.prose th{font-weight:var(--weight-semibold);color:var(--ink-strong);border-block-end-color:var(--rule-strong)}.prose :is(img,video){border:var(--hairline) solid var(--rule);border-radius:var(--radius-l);display:block}.prose :is(video,audio){inline-size:100%;max-inline-size:100%}.prose .file-embed{align-items:center;gap:var(--space-xs);padding:var(--space-xs) var(--space-s);border:var(--hairline) solid var(--rule);border-radius:var(--radius-l);background:var(--surface);color:var(--ink-strong);overflow-wrap:anywhere;text-decoration:none;display:flex}.prose .file-embed:before{content:attr(data-file);font-family:var(--font-code);font-size:var(--step-code);text-transform:uppercase;color:var(--ink-muted);border-inline-end:var(--hairline) solid var(--rule);flex:none;padding-inline-end:var(--space-xs)}.prose .file-embed:hover{border-color:var(--rule-strong);color:var(--accent)}.prose :is(.embed-figure,.doc-embed){flex-direction:column;gap:9px;margin-block:2em;display:flex}.prose .embed-figure .doc-embed{margin-block:0}.prose .doc-frame{border:var(--hairline) solid var(--rule);border-radius:var(--radius-l);background:var(--surface);inline-size:100%}.prose .doc-frame:not([height]){block-size:min(70dvh,40rem)}.prose .video-embed{aspect-ratio:16/9;border:var(--hairline) solid var(--rule);border-radius:var(--radius-l);background:var(--surface);margin-block:2em;display:block;position:relative;overflow:hidden}.prose .embed-figure .video-embed{margin-block:0}.prose .video-embed-link{justify-content:center;align-items:center;gap:var(--space-xs);color:var(--ink-strong);border:0;flex-direction:column;text-decoration:none;display:flex;position:absolute;inset:0}.prose .video-embed-poster{object-fit:cover;filter:brightness(.72);block-size:100%;inline-size:100%;transition:filter .12s ease-out;position:absolute;inset:0}.prose .video-embed-link:hover .video-embed-poster,.prose .video-embed-link:focus-visible .video-embed-poster{filter:brightness(.55)}.prose .video-embed-play{border-radius:var(--radius-m);background:var(--ink-strong);opacity:.85;justify-content:center;align-items:center;block-size:2.4rem;inline-size:3.5rem;transition:opacity .12s ease-out;display:flex;position:relative}.prose .video-embed-play:before{content:"";background:var(--surface);clip-path:polygon(0 0,100% 50%,0 100%);block-size:1.1rem;inline-size:.9rem;transform:translate(.1rem)}.prose .video-embed-link:hover .video-embed-play,.prose .video-embed-link:focus-visible .video-embed-play{opacity:1}.prose .video-embed-label{padding:2px var(--space-xs);border-radius:var(--radius-xs);background:var(--ink-strong);color:var(--surface);font-family:var(--font-code);font-size:var(--step-code);position:relative}.prose .video-embed-frame{border:0;block-size:100%;inline-size:100%;position:absolute;inset:0}.prose .tweet-embed{gap:var(--space-xs);padding:var(--space-s) var(--space-m);border:var(--hairline) solid var(--rule);border-radius:var(--radius-l);background:var(--surface);flex-direction:column;margin-block:2em;display:flex}.prose .tweet-embed-text{white-space:pre-wrap;overflow-wrap:anywhere;unicode-bidi:isolate}.prose .tweet-embed-meta{gap:var(--space-xs);font-size:var(--step-small);color:var(--ink-muted);border:0;align-items:baseline;display:flex}.prose .tweet-embed-date{color:var(--ink-muted)}.prose .embed-card{align-items:baseline;gap:var(--space-xs);padding:var(--space-xs) var(--space-s);border:var(--hairline) solid var(--rule);border-radius:var(--radius-l);background:var(--surface);color:var(--ink-strong);overflow-wrap:anywhere;margin-block:2em;text-decoration:none;display:flex}.prose .embed-card:hover{border-color:var(--rule-strong);color:var(--accent)}.prose .embed-card-host{font-family:var(--font-code);font-size:var(--step-code);color:var(--ink-muted);border-inline-end:var(--hairline) solid var(--rule);flex:none;padding-inline-end:var(--space-xs)}.prose .embed-card-path{unicode-bidi:isolate}.prose figcaption{font-family:var(--font-code);font-size:var(--step-code);color:var(--ink-muted);text-align:start;line-height:1.5}.prose hr{border:0;border-block-start:var(--hairline) solid var(--rule);margin-block:var(--space-xl)}.prose .footnotes{border-block-start:var(--hairline) solid var(--rule);font-size:var(--step-small);color:var(--ink-muted);margin-block-start:var(--space-xl);padding-block-start:var(--space-m)}.prose .callout{--callout-hue:var(--hue-note);--callout-edge:oklch(58% var(--callout-chroma) var(--callout-hue));--callout-label:oklch(45% var(--callout-chroma) var(--callout-hue));border:var(--hairline) solid var(--rule);border-inline-start:3px solid var(--callout-edge);border-radius:var(--radius-l);background:var(--surface);color:var(--ink);font-size:var(--step-small);margin-block:1.7em;padding:15px 18px;font-style:normal;line-height:1.6}.prose .callout>*+*{margin-block-start:.7em}.prose .callout-title{font-family:var(--font-code);font-size:var(--step-label);font-weight:var(--weight-normal);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--callout-label);margin-block-end:7px;line-height:1.4;display:block}:root[data-theme=dark] .prose .callout{--callout-edge:oklch(70% calc(var(--callout-chroma) * .85) var(--callout-hue));--callout-label:oklch(80% calc(var(--callout-chroma) * .8) var(--callout-hue))}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .prose .callout{--callout-edge:oklch(70% calc(var(--callout-chroma) * .85) var(--callout-hue));--callout-label:oklch(80% calc(var(--callout-chroma) * .8) var(--callout-hue))}}details.callout>summary.callout-title{cursor:pointer;align-items:center;gap:var(--space-3xs);list-style:none;display:flex}details.callout>summary::-webkit-details-marker{display:none}details.callout>summary.callout-title:after{content:"▾";transition:transform var(--duration-fast) var(--ease);margin-inline-start:auto}details.callout[open]>summary.callout-title:after{transform:rotate(180deg)}.prose .callout[data-callout=tip],.prose .callout[data-callout=hint],.prose .callout[data-callout=important]{--callout-hue:var(--hue-tip)}.prose .callout[data-callout=success],.prose .callout[data-callout=check],.prose .callout[data-callout=done]{--callout-hue:var(--hue-success)}.prose .callout[data-callout=question],.prose .callout[data-callout=help],.prose .callout[data-callout=faq]{--callout-hue:var(--hue-question)}.prose .callout[data-callout=warning],.prose .callout[data-callout=caution],.prose .callout[data-callout=attention],.prose .callout[data-callout=todo]{--callout-hue:var(--hue-warning)}.prose .callout[data-callout=danger],.prose .callout[data-callout=error],.prose .callout[data-callout=failure],.prose .callout[data-callout=fail],.prose .callout[data-callout=missing],.prose .callout[data-callout=bug]{--callout-hue:var(--hue-danger)}.prose .callout[data-callout=example]{--callout-hue:var(--hue-example)}.prose .callout[data-callout=quote],.prose .callout[data-callout=cite]{--callout-hue:var(--hue-quote)}.prose .transclusion{background:var(--surface);border:var(--hairline) solid var(--rule);border-inline-start:3px solid var(--rule-strong);border-radius:var(--radius-l);font-size:var(--step-small);margin-block:1.7em;padding:15px 18px;line-height:1.6}.prose .transclusion>*+*{margin-block-start:.7em}.prose .transclusion-source{font-family:var(--font-code);font-size:var(--step-label);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--ink-muted);border-block-end:0;margin-block-start:var(--space-2xs);display:inline-block}.prose .transclusion-source:before{content:"↳ "}.prose .transclusion-source:dir(rtl):before{content:"↲ "}.prose .transclusion-source:hover{color:var(--accent-hover)}.prose .transclusion-stopped{color:var(--ink-muted);font-style:italic}@media print{:root{--paper:#fff;--surface:#fff;--soft:#f2f2f2;--ink:#111;--ink-strong:#000;--ink-muted:#444;--ink-faint:#666;--rule:#ccc;--rule-strong:#999;--accent:#000;--accent-hover:#000;--measure:none}.site-header,.sidebar,.note-rail,.note-toc,.prev-next,.skip-link,.drawer-backdrop,.header-actions{display:none!important}.note-frontmatter{border:0;padding:0}.page{display:block}.main{padding:0}.note-layout{display:block}body{font-size:11pt;line-height:1.5}.prose{max-inline-size:none}.prose a[href^=http]:after{content:" (" attr(href) ")";color:#555;word-break:break-all;direction:ltr;unicode-bidi:isolate;font-size:.85em}.prose a{text-decoration:underline}.prose .dead-link{color:#666;border:0}.prose :is(h1,h2,h3,h4,h5,h6){break-after:avoid;break-inside:avoid}.prose :is(pre,blockquote,figure,table,.callout,.transclusion){break-inside:avoid;border:1px solid #ccc}.prose img{max-inline-size:100%}details{display:block}details>:not(summary){display:revert!important}@page{margin:18mm 16mm}}
