@font-face{font-family:body;src:url(../media/atkinson_hyperlegible_next_latin_wght_normal-s.p.1o9o6__l__p-w.woff2)format("woff2");font-display:swap;font-weight:200 800;font-style:normal}@font-face{font-family:body Fallback;src:local(Arial);ascent-override:99.04%;descent-override:31.8%;line-gap-override:0.0%;size-adjust:99.36%}.Z55IdG_className{font-family:body,body Fallback;font-style:normal}.Z55IdG_variable{--nf-body:"body", "body Fallback"}
@font-face{font-family:mono;src:url(../media/atkinson_hyperlegible_mono_latin_400_normal-s.0l-vg5qf29aze.woff2)format("woff2");font-display:swap;font-weight:400;font-style:normal}@font-face{font-family:mono;src:url(../media/atkinson_hyperlegible_mono_latin_700_normal-s.3rv7a40ggvddl.woff2)format("woff2");font-display:swap;font-weight:700;font-style:normal}@font-face{font-family:mono Fallback;src:local(Arial);ascent-override:71.04%;descent-override:22.82%;line-gap-override:0.0%;size-adjust:138.5%}.qjTtQa_className{font-family:mono,mono Fallback}.qjTtQa_variable{--nf-mono:"mono", "mono Fallback"}
:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:var(--lightningcss-light,#f3f5f9)var(--lightningcss-dark,#06070a);--surface:var(--lightningcss-light,#fff)var(--lightningcss-dark,#0d1016);--surface-2:var(--lightningcss-light,#e9edf3)var(--lightningcss-dark,#151a22);--ink:var(--lightningcss-light,#0a0d14)var(--lightningcss-dark,#f5f4f1);--ink-2:var(--lightningcss-light,#4a5568)var(--lightningcss-dark,#aab1bd);--line:var(--lightningcss-light,#d3dae5)var(--lightningcss-dark,#232a35);--outline:var(--lightningcss-light,#66768a)var(--lightningcss-dark,#7d8796);--ember:var(--lightningcss-light,#c2410c)var(--lightningcss-dark,#ff7a2f);--focus:var(--lightningcss-light,#0a0d14)var(--lightningcss-dark,#ffb27a);--mark:var(--lightningcss-light,#d4dde9)var(--lightningcss-dark,#3a2616);--dot:var(--lightningcss-light,#cdd3dd)var(--lightningcss-dark,#232831);--font-body:var(--nf-body), "Segoe UI", system-ui, sans-serif;--font-mono:var(--nf-mono), ui-monospace, "SF Mono", Menlo, Consolas, monospace;--col:40rem;--gutter:clamp(1.25rem, 5vw, 1.5rem);--radius:.75rem;--radius-sm:.5rem;--ease:cubic-bezier(.2, .7, .2, 1)}:root[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media print{:root{--bg:#fff;--surface:#fff;--surface-2:#f0f0f0;--ink:#000;--ink-2:#333;--line:#bbb}}
*,:before,:after{box-sizing:border-box}html{-moz-text-size-adjust:100%;text-size-adjust:100%;scroll-padding-top:1rem}body{background:var(--bg);min-height:100dvh;color:var(--ink);font-family:var(--font-body);font-kerning:normal;text-rendering:optimizelegibility;overflow-wrap:break-word;flex-direction:column;margin:0;font-size:1.0625rem;font-weight:400;line-height:1.7;display:flex}main{flex:1}img,svg,iframe{max-width:100%}body:before{content:"";z-index:-1;pointer-events:none;background-image:radial-gradient(circle at center, var(--dot) 1px, transparent 1.6px);background-size:22px 22px;position:fixed;inset:0;-webkit-mask-image:radial-gradient(85% 75% at 50% 25%,#000 0%,#00000080 45%,#0000 85%);mask-image:radial-gradient(85% 75% at 50% 25%,#000 0%,#00000080 45%,#0000 85%)}a{color:var(--ink);text-underline-offset:.2em;text-decoration-thickness:.06em}a:hover{text-decoration-thickness:.14em}:focus-visible{outline:2px solid var(--focus);outline-offset:3px;border-radius:var(--radius-sm)}::selection{background:var(--mark);color:var(--ink)}.skip-link{z-index:20;background:var(--surface);color:var(--ink);border:1px solid var(--outline);border-radius:var(--radius-sm);transition:top .15s var(--ease);padding:.5rem .9rem;position:absolute;top:-4rem;left:1rem}.skip-link:focus{top:.75rem}.visually-hidden{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.wrap{width:100%;max-width:calc(var(--col) + 2 * var(--gutter));padding-inline:var(--gutter);margin-inline:auto}h1,h2,h3{text-wrap:balance;font-weight:700;line-height:1.2}h1{margin:0;font-size:clamp(1.75rem,1.35rem + 1.6vw,2.25rem);line-height:1.15}
.site-header{z-index:10;position:relative}.site-header__inner{grid-template-columns:1fr auto;grid-template-areas:"brand toggle""nav nav";align-items:center;gap:0 1rem;padding-block:.5rem;display:grid}.brand{min-height:2.75rem;color:var(--ink);grid-area:brand;justify-self:start;align-items:center;text-decoration:none;display:inline-flex}.brand .shark{flex:none;width:2.4rem;height:auto}.site-header .theme-toggle{grid-area:toggle}.site-nav{flex-wrap:wrap;grid-area:nav;gap:0;margin-inline:-.5rem;display:flex}.site-nav a{min-height:2.5rem;color:var(--ink-2);white-space:nowrap;align-items:center;padding:0 .5rem;font-size:.9375rem;text-decoration:none;display:inline-flex}.site-nav a:hover{color:var(--ink);text-underline-offset:.3em;text-decoration:underline;text-decoration-thickness:.06em}.site-nav a[aria-current]{color:var(--ink);text-underline-offset:.3em;text-decoration:underline;text-decoration-thickness:.1em}.theme-toggle{width:2.75rem;height:2.75rem;color:var(--ink);cursor:pointer;transition:border-color .2s var(--ease);background:0 0;border:1px solid #0000;border-radius:50%;place-items:center;padding:0;display:inline-grid}.theme-toggle:hover{border-color:var(--outline)}.theme-toggle svg{width:1.3rem;height:1.3rem}.theme-toggle .half{fill:currentColor;transform-origin:50%;transition:transform .4s var(--ease)}:root:not([data-theme=light]) .theme-toggle .half{transform:rotate(180deg)}@media (min-width:40rem){.site-header__inner{grid-template-columns:auto 1fr auto;grid-template-areas:"brand nav toggle";gap:0 1.5rem;padding-block:.75rem}.site-nav{justify-self:end;margin-inline:0}}.site-footer{color:var(--ink-2);border-top:1px solid var(--line);margin-top:clamp(3rem,8vw,5rem)}.site-footer__row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.25rem 2rem;padding-block:1.25rem 2rem;display:flex}.site-footer__brand{color:var(--ink);align-items:center;gap:.6rem;margin:0;font-size:.9375rem;display:inline-flex}.site-footer__brand .shark{width:2.4rem;height:auto}.site-footer ul{flex-wrap:wrap;margin:0 -.5rem;padding:0;list-style:none;display:flex}.site-footer ul a{min-height:2.5rem;color:var(--ink-2);align-items:center;padding:0 .5rem;font-size:.9375rem;text-decoration:none;display:inline-flex}.site-footer ul a:hover{color:var(--ink);text-underline-offset:.3em;text-decoration:underline}.notfound{justify-items:start;gap:.5rem;padding-block:clamp(2rem,8vw,4rem);display:grid}.notfound .shark{width:7rem;margin-bottom:.5rem}.notfound__code{color:var(--ink-2);font-variant-numeric:tabular-nums;margin:0;font-size:.9375rem}.notfound p:not(.notfound__code){max-width:36ch;color:var(--ink-2);margin:0}
.prose p,.prose ul,.prose ol{margin-block:0 1.1em}.prose p,.prose li{text-wrap:pretty}.prose>:first-child{margin-top:0}.prose>:last-child{margin-bottom:0}.prose h2{margin:2.2em 0 .5em;font-size:1.3rem}.prose ul,.prose ol{padding-left:1.3em}.prose li{margin-block:.4em}.prose li::marker{color:var(--ink-2)}.prose strong{font-weight:700}
.home,.about{padding-block:clamp(1.5rem,5vw,2.5rem) 0}.home>*{margin-block:0}.home>*+*{margin-top:clamp(1.75rem,5vw,2.25rem)}.intro{gap:1.25rem;display:grid}.intro__photo{aspect-ratio:4/5;border-radius:var(--radius);background:var(--surface-2);width:160px;display:block;overflow:hidden}.intro__photo img{object-fit:cover;width:100%;height:100%;display:block}.intro__line{color:var(--ink-2);text-wrap:balance;margin:.35rem 0 0;font-size:1.0625rem;line-height:1.5}.intro h1{overflow-wrap:anywhere}@media (min-width:36rem){.intro{grid-template:"photo text""photo stats"1fr/220px minmax(0,1fr);align-items:start;column-gap:1.5rem}.intro__photo{grid-area:photo;width:220px}.intro__text{grid-area:text}.intro .stats{grid-area:stats}}.stats{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);grid-template-columns:repeat(2,1fr);margin:0;padding:0;list-style:none;display:grid;overflow:hidden}.stats li{border-top:1px solid var(--line);min-width:0}.stats li:nth-child(-n+2){border-top:0}.stats li:nth-child(2n){border-left:1px solid var(--line)}.stats a{height:100%;color:var(--ink);padding:.85rem 1rem;text-decoration:none;display:block}.stats a:hover{background:var(--surface-2)}.stats a:focus-visible{outline-offset:-4px}.stats__value{font-variant-numeric:tabular-nums;font-size:1.75rem;font-weight:700;line-height:1.15;display:block}.stats__label{color:var(--ink-2);text-wrap:balance;margin-top:.15rem;font-size:.875rem;line-height:1.35;display:block}.rows{gap:.35rem 1rem;display:grid}.rows__label{color:var(--ink-2);margin:.75rem 0 0;font-size:.875rem;line-height:1.5rem}.rows__label:first-child{margin-top:0}.chips{flex-wrap:wrap;gap:.4rem;margin:0;padding:0;list-style:none;display:flex}@media (min-width:34rem){.rows{grid-template-columns:7.5rem 1fr;align-items:start;gap:.9rem 1rem}.rows__label,.rows__label:first-child{margin:0;line-height:2rem}}.chip{min-height:2rem;color:var(--ink);background:color-mix(in srgb, var(--ink) 7%, var(--bg));transition:background-color .15s var(--ease), border-color .15s var(--ease);border:1px solid #0000;border-radius:.5rem;align-items:center;gap:.4rem;padding:.125rem .65rem;font-size:.9375rem;line-height:1.3;text-decoration:none;display:inline-flex}.chip:hover{background:color-mix(in srgb, var(--ink) 13%, var(--bg));border-color:var(--line)}.chip__avatar{border-radius:50%;flex:none;width:18px;height:18px;display:block}.chip__stars{color:var(--ink-2);font-variant-numeric:tabular-nums;align-items:center;gap:.2rem;font-size:.8125rem;display:inline-flex}.chip__star{width:.75rem;height:.75rem;fill:var(--ember)}.home__about p{color:var(--ink)}.block h2{margin:0 0 .6rem;font-size:1.3rem}.block p{margin:0}.block__more{margin-top:.75rem;font-size:.9375rem}.block__more a{align-items:center;min-height:1.625rem;display:inline-flex}.selected-fixes{gap:.9rem;margin:0;padding-left:1.25rem;display:grid}.selected-fixes li{padding-left:.15rem}.block .selected-fixes__links{flex-wrap:wrap;gap:.75rem;margin-top:.3rem;font-size:.875rem;display:flex}.posts{gap:.15rem;margin:0;padding:0;list-style:none;display:grid}.posts li{gap:0;padding-block:.3rem;display:grid}.posts time{color:var(--ink-2);font-variant-numeric:tabular-nums;font-size:.875rem;line-height:1.5}.posts a{-webkit-text-decoration-color:color-mix(in srgb, var(--ink) 35%, transparent);text-decoration-color:color-mix(in srgb, var(--ink) 35%, transparent)}.posts a:hover{text-decoration-color:currentColor}@media (min-width:34rem){.posts{gap:0}.posts li{grid-template-columns:7.5rem 1fr;gap:1rem;padding-block:.25rem}.posts time{line-height:1.7}}.about__head{align-items:start;gap:1.5rem;margin-bottom:clamp(1.75rem,5vw,2.25rem);display:grid}.about__photo{aspect-ratio:4/5;border-radius:var(--radius);background:var(--surface-2);width:min(100%,12rem);display:block;overflow:hidden}.about__photo img{object-fit:cover;width:100%;height:100%;display:block}.about h1{font-size:2rem;line-height:1.15}.about__lede{text-wrap:pretty;margin:.75rem 0 0;font-size:1.1875rem;line-height:1.55}.about__intro{color:var(--ink-2);text-wrap:pretty;margin:.75rem 0 0}@media (min-width:38rem){.about__head{grid-template-columns:14rem 1fr;gap:2rem}.about__photo{width:14rem}}
.page{padding-block:clamp(1.5rem,5vw,2.5rem) 0}.page__head{margin-bottom:clamp(1.75rem,5vw,2.25rem)}.page__lede{text-wrap:pretty;margin:.75rem 0 0;font-size:1.1875rem;line-height:1.55}.page__meta{color:var(--ink-2);margin:.75rem 0 0;font-size:.9375rem}.page .prose h3{margin:1.6em 0 .4em;font-size:1.05rem}.page .prose code{background:var(--surface-2);overflow-wrap:anywhere;border-radius:.25rem;padding:.05em .3em;font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;font-size:.875em}
:root{--code-bg:var(--lightningcss-light,#fff)var(--lightningcss-dark,#0a0f17);--code-inline:var(--lightningcss-light,#e6ecf3)var(--lightningcss-dark,#162030)}.blog-head{margin-bottom:clamp(1.5rem,5vw,2.25rem)}.blog-head .lede{color:var(--ink-2);text-wrap:pretty;margin:.75rem 0 0;font-size:1.1875rem;line-height:1.55}.blog-head .chips{margin-top:1.1rem}.eyebrow{color:var(--ink-2);margin:0 0 .35rem;font-size:.875rem;line-height:1.5}.eyebrow a{color:inherit;margin-block:-.2rem;padding-block:.2rem;text-decoration:none;display:inline-block}.eyebrow a:hover{color:var(--ink);text-decoration:underline}.blog-meta{color:var(--ink-2);margin:.6rem 0 0;font-size:.9375rem}.blog-meta time{font-variant-numeric:tabular-nums}.blog-head--post h1{font-size:clamp(1.9rem,1.45rem + 1.9vw,2.5rem);line-height:1.12}.wrap--wide-prose .table-wrap{width:max-content;min-width:100%;max-width:min(70rem, 100vw - 2 * var(--gutter));position:relative;left:50%;translate:-50%}@media (min-width:44rem){.post-body .table-wrap{width:max-content;min-width:100%;max-width:min(52rem, 50vw + 50% - var(--gutter))}}.blog-chips{margin-top:1.1rem}.chip--cat:before{content:"";background:var(--cat);width:.65rem;height:.65rem;box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--ink) 30%, transparent);border-radius:50%;flex:none}.chip--tag:before{content:"#" / "";color:var(--ink-2);font-weight:700}.chip[aria-current=page]{background:color-mix(in srgb, var(--ink) 13%, var(--bg));border-color:var(--ink)}.chip__count{color:var(--ink-2);border-left:1px solid var(--line);font-variant-numeric:tabular-nums;padding-left:.5rem;font-size:.875rem}.month-head{color:var(--ink-2);margin:2.25rem 0 .6rem;font-size:1.0625rem;font-weight:700}.month-head:first-child{margin-top:0}.start-here{margin-bottom:.5rem}.start-here>p{color:var(--ink-2);margin:0 0 .6rem}.posts--blog li{padding-block:.45rem}.posts__title{font:inherit;text-wrap:pretty;margin:0;line-height:1.45}.posts__blurb{color:var(--ink-2);text-wrap:pretty;margin:.1rem 0 0;font-size:.9375rem;line-height:1.5}.posts__meta{color:var(--ink-2);flex-wrap:wrap;align-items:center;gap:.1rem .9rem;margin:.25rem 0 0;font-size:.8125rem;line-height:1.5;display:flex}.posts__cat:before{content:"";background:var(--cat);width:.55rem;height:.55rem;box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--ink) 30%, transparent);border-radius:50%;margin-right:.35rem;display:inline-block}.empty{color:var(--ink-2);padding:1rem 0}.tag-more{border-top:1px solid var(--line);margin-top:2.5rem;padding-top:1.25rem}.tag-more h2{color:var(--ink-2);margin:0 0 .75rem;font-size:1.0625rem;font-weight:700}.tag-more>summary{cursor:pointer;align-items:center;min-height:2.75rem;font-weight:700;display:flex}.tag-more[open]>summary{margin-bottom:.5rem}.post-body>*+*{margin-top:1.5rem}.lesson-layout{position:relative}.toc{font-size:1rem}.toc--inline{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:.35rem 1rem}.toc--inline>summary{cursor:pointer;align-items:center;min-height:2.5rem;font-weight:700;display:flex}.toc--inline>summary::-webkit-details-marker{display:none}.tag-more>summary::-webkit-details-marker{display:none}.toc--inline>summary:after,.tag-more>summary:after{content:"";width:.5rem;height:.5rem;transition:transform .2s var(--ease);border:2px solid;border-width:0 2px 2px 0;flex:none;margin:-.2rem .2rem 0 auto;transform:rotate(45deg)}.toc--inline[open]>summary{margin-bottom:.25rem}.toc--inline[open]>summary:after,.tag-more[open]>summary:after{margin-top:.2rem;transform:rotate(-135deg)}.toc ol{gap:.15rem;margin:0;padding:0;list-style:none;display:grid}.toc--inline ol{margin-bottom:.6rem}.toc a{color:var(--ink-2);border-left:2px solid var(--line);align-items:baseline;padding:.3rem .5rem .3rem .85rem;line-height:1.35;text-decoration:none;display:flex}.toc a:hover{color:var(--ink);background:var(--surface-2);border-left-color:var(--ink)}.toc--side h2{margin:0 0 .5rem;font-size:1rem}.toc-rail,.toc--side{display:none}@media (min-width:70rem){.toc-rail{width:12.5rem;display:block;position:absolute;top:0;bottom:0;right:calc(100% + 1.5rem)}.toc--side{max-height:calc(100vh - 4rem);display:block;position:sticky;top:2rem;overflow-y:auto}.toc--inline{display:none}}@media (min-width:80rem){.toc-rail{width:15rem}}.prose blockquote,.summary{background:var(--surface);border:1px solid var(--line);border-left:3px solid var(--ink);border-radius:0 var(--radius) var(--radius) 0}.summary{padding:1rem 1.25rem 1.1rem}.summary h2,.summary h3{margin:0 0 .5rem;font-size:1.15rem}.summary+.prose>h2:first-child{margin-top:2.2em}.summary p{text-wrap:pretty;margin:0;font-size:1.0625rem;line-height:1.6}.summary p+p{margin-top:.75rem}.prose+.summary{margin-top:1.5rem}.pr-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);align-items:flex-start;gap:.9rem;padding:1rem 1.15rem .8rem;display:flex}.pr-card__icon{flex:none;width:1.5rem;height:1.5rem;margin-top:.2rem}.pr-card__body{flex:1;min-width:0}.pr-card__top{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.4rem .75rem;margin:0;display:flex}.pr-card__project{min-width:0;line-height:1.2;display:grid}.pr-card__project small{color:var(--ink-2);font-size:.875rem}.pr-card__project strong{overflow-wrap:anywhere;font-size:1.3rem}.pr-card__top+.pr-card__link{margin-top:.15rem}.pr-card__link{overflow-wrap:anywhere;flex-wrap:wrap;align-items:baseline;gap:0 .6rem;padding:.45rem 0;font-size:1rem;line-height:1.35;display:flex}.pr-card__link b{font-weight:700}.pr-card__link span{color:var(--ink-2);font-family:var(--font-mono);font-size:.85em}.pr-card__status{background:color-mix(in srgb, var(--ink) 7%, var(--bg));border-radius:.5rem;align-self:flex-start;padding:.1rem .6rem;font-size:.875rem}.post-nav{border-top:1px solid var(--line);gap:.75rem;margin-top:2.5rem;padding-top:1.5rem;display:grid}.post-nav a{color:var(--ink);background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);transition:border-color .15s var(--ease);padding:.8rem 1rem;text-decoration:none;display:block}.post-nav a:hover{border-color:var(--ink)}.post-nav small{color:var(--ink-2);font-size:.875rem;display:block}.post-nav strong{font-size:1.0625rem;line-height:1.3}@media (min-width:40rem){.post-nav{grid-template-columns:1fr 1fr}.post-nav a:only-child{grid-column:2}.post-nav a.next{text-align:right}}.next-step{color:var(--ink-2);border:1px solid var(--line);border-radius:var(--radius);flex-wrap:wrap;align-items:center;gap:.4rem 1.25rem;margin:2rem 0 0;padding:.9rem 1.2rem;font-size:1rem;line-height:1.45;display:flex}.next-step h2{color:var(--ink);margin:0;font-size:1.05rem}.next-step p{flex:16rem;margin:0}.prose p,.prose ul,.prose ol,.prose dl,.prose blockquote,.prose pre,.prose table,.prose details{margin-block:0 1.1em}.prose h3{margin:1.8em 0 .45em;font-size:1.12rem}.prose h4{margin:1.5em 0 .4em;font-size:1rem}.prose li>p{margin-block:.4em}.prose hr{border:0;border-top:1px solid var(--line);margin:2.25em 0}.prose blockquote{margin-inline:0;padding:.9rem 1.15rem}.prose blockquote>:last-child,.prose blockquote ul{margin-bottom:0}.prose code{font-family:var(--font-mono);background:var(--code-inline);border-radius:var(--radius-sm);overflow-wrap:anywhere;padding:.12em .35em;font-size:.88em}.prose pre{max-width:100%;font-family:var(--font-mono);tab-size:4;background:var(--code-bg);border:1px solid var(--line);border-radius:var(--radius);padding:.9rem 1rem;font-size:.875rem;line-height:1.6;position:relative;overflow-x:auto}.prose pre code{font-size:inherit;overflow-wrap:normal;background:0 0;border-radius:0;padding:0}.astro-code,.astro-code span{color:var(--lightningcss-light,var(--shiki-light))var(--lightningcss-dark,var(--shiki-dark))}.astro-code{background-color:var(--code-bg)}.table-wrap{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);max-width:100%;margin-block:0 1.3em;overflow-x:auto}.table-wrap:focus-visible{outline-offset:0}.table-wrap table{border-collapse:collapse;min-width:100%;margin:0;font-size:.9375rem;line-height:1.4}.prose th,.prose td{text-align:left;vertical-align:top;border-bottom:1px solid var(--line);padding:.55rem .8rem}.prose th{color:var(--ink);white-space:nowrap;background:var(--surface-2);font-size:.875rem}.prose tr:last-child td{border-bottom:0}.prose td:first-child,.prose td:last-child{white-space:nowrap;font-variant-numeric:tabular-nums}@media (max-width:26.25rem){.prose th,.prose td:first-child,.prose td:last-child{white-space:normal}.prose th,.prose td{padding-inline:.35rem;font-size:.8125rem}}.prose tbody tr:hover{background:var(--surface-2)}.prose p:has(>img:only-child){text-align:center;margin-block:1.75rem .6rem}.prose p>img:only-child{border:1px solid var(--line);border-radius:var(--radius);background:#fff;width:100%;height:auto;margin-inline:auto;padding:clamp(.4rem,2vw,1rem);display:block}.prose p:has(>img:only-child)+p:has(>em:only-child){color:var(--ink-2);margin:0 0 1.75rem;font-size:.9375rem;line-height:1.5}.prose p:has(>img:only-child)+p>em:only-child{font-style:normal}.prose img{max-width:100%;height:auto}.prose details{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}.prose details>summary{cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:.6rem;padding:.6rem 1rem;font-weight:700;list-style:none;display:flex}.prose details>summary::-webkit-details-marker{display:none}.prose details>summary:before{content:"";width:.5rem;height:.5rem;transition:transform .2s var(--ease);border-bottom:2px solid;border-right:2px solid;transform:rotate(-45deg)}.prose details[open]>summary:before{transform:rotate(45deg)}.prose details>:not(summary){margin-inline:1rem}.prose details>p{margin-block:.75rem}.prose details>p:last-child{margin-bottom:1rem}
.astro-code.\30 2,.astro-code .\30 2{--shiki-light:#0e1116;--shiki-dark:#f0f3f6}.astro-code.\35 c,.astro-code .\35 c{--shiki-light:#6e011a;--shiki-light-bg:#fff0ee;--shiki-dark:#ffb1af;--shiki-dark-bg:#ad0116}.astro-code.\37 t,.astro-code .\37 t{--shiki-light:#6e011a;--shiki-light-font-style:italic;--shiki-dark:#ffb1af;--shiki-dark-font-style:italic}.astro-code.\39 Z,.astro-code .\39 Z{--shiki-light:#622cbc;--shiki-light-font-weight:bold;--shiki-dark:#dbb7ff;--shiki-dark-font-weight:bold}.astro-code.a5,.astro-code .a5{--shiki-light:#023b95;--shiki-light-font-weight:bold;--shiki-dark:#91cbff;--shiki-dark-font-weight:bold}.astro-code.AG,.astro-code .AG{--shiki-light:#fff;--shiki-light-bg:#a0111f;--shiki-light-font-style:italic;--shiki-light-text-decoration:underline;--shiki-dark:#fff;--shiki-dark-bg:#ff9492;--shiki-dark-font-style:italic;--shiki-dark-text-decoration:underline}.astro-code.AR,.astro-code .AR{--shiki-light:#a0111f;--shiki-dark:#ff9492}.astro-code.Bh,.astro-code .Bh{--shiki-light:#032563;--shiki-dark:#addcff}.astro-code.c7,.astro-code .c7{--shiki-light:#0e1116;--shiki-light-text-decoration:line-through;--shiki-dark:#f0f3f6;--shiki-dark-text-decoration:line-through}.astro-code.e_,.astro-code .e_{--shiki-light:#4b535d;--shiki-dark:#bdc4cc}.astro-code.ii,.astro-code .ii{--shiki-light:#702c00;--shiki-light-bg:#ffc67b;--shiki-dark:#ffb757;--shiki-dark-bg:#a74c00}.astro-code.K_,.astro-code .K_{--shiki-light:#0e1116;--shiki-light-font-style:italic;--shiki-dark:#f0f3f6;--shiki-dark-font-style:italic}.astro-code.kQ,.astro-code .kQ{--shiki-light:#66707b;--shiki-dark:#bdc4cc}.astro-code.le,.astro-code .le{--shiki-light:#023b95;--shiki-dark:#91cbff}.astro-code.LK,.astro-code .LK{--shiki-light:#e7ecf0;--shiki-light-bg:#023b95;--shiki-dark:#272b33;--shiki-dark-bg:#91cbff}.astro-code.oq,.astro-code .oq{--shiki-light:#0e1116;--shiki-dark:#f0f3f6;--shiki-light-bg:#fff;--shiki-dark-bg:#0a0c10;overflow-x:auto}.astro-code.pL,.astro-code .pL{--shiki-light:#0e1116;--shiki-light-font-weight:bold;--shiki-dark:#f0f3f6;--shiki-dark-font-weight:bold}.astro-code.QA,.astro-code .QA{--shiki-light:#702c00;--shiki-dark:#ffb757}.astro-code.qm,.astro-code .qm{--shiki-light:#622cbc;--shiki-dark:#dbb7ff}.astro-code.T5,.astro-code .T5{--shiki-light:#0e1116;--shiki-light-text-decoration:underline;--shiki-dark:#f0f3f6;--shiki-dark-text-decoration:underline}.astro-code.Ua,.astro-code .Ua{--shiki-light:#6e011a;--shiki-dark:#ffb1af}.astro-code.uR,.astro-code .uR{--shiki-light:#024c1a;--shiki-light-font-weight:bold;--shiki-dark:#72f088;--shiki-dark-font-weight:bold}.astro-code.XE,.astro-code .XE{--shiki-light:#024c1a;--shiki-light-bg:#d2fedb;--shiki-dark:#72f088;--shiki-dark-bg:#006222}.astro-code.zm,.astro-code .zm{--shiki-light:#024c1a;--shiki-dark:#72f088}
.wrap.lesson{max-width:calc(70rem + 2 * var(--gutter));font-size:1.125rem}@media (min-width:70rem){.lesson .lesson-layout{grid-template-columns:15rem minmax(0,1fr);gap:0 3rem;display:grid}.lesson .lesson-layout--solo{grid-template-columns:minmax(0,1fr)}.lesson .toc-rail{width:auto;position:static}}.lesson-body{max-width:52rem}.lesson-body .sec>:where(p,ul,ol,h3,h4,blockquote,dl),.lesson-body>:where(p,ul,ol,h3,h4,blockquote,dl){max-width:68ch}.crumbs ol{flex-wrap:wrap;gap:0 .5rem;margin:0;padding:0;list-style:none;display:flex}.crumbs li+li:before{content:"/";content:"/" / "";margin-right:.5rem}.lesson-head{margin-bottom:clamp(1.5rem,5vw,2.25rem)}.lesson-head h1{text-wrap:balance;max-width:24ch;margin:0;font-size:clamp(1.9rem,1.45rem + 1.9vw,2.5rem);line-height:1.12}.lesson-head .lede{max-width:62ch;color:var(--ink-2);text-wrap:pretty;margin:.75rem 0 0;font-size:1.1875rem;line-height:1.55}.lesson-meta{margin-top:1.1rem}.lesson-time{flex-wrap:wrap;gap:.4rem;margin:0;padding:0;list-style:none;display:flex}.lesson-time .chip .icon{flex:none;width:1rem;height:1rem}.toc .opt{color:var(--ink-2);letter-spacing:.1em;text-transform:uppercase;border:1px solid var(--line);border-radius:.3rem;align-self:center;margin-left:.5rem;padding:0 .4rem;font-size:.6875rem;line-height:1.5}.lesson-layout>article>.toc--inline{margin-bottom:1.5rem}.lesson-body>p:first-child{font-size:1.1875rem;line-height:1.6}.sec{margin-block:0 clamp(1.75rem,4vw,2.5rem)}.lesson-body>.sec:first-child,.lesson-body>p+.sec{margin-top:clamp(1.75rem,5vw,2.5rem)}.prose .sec__title{text-wrap:balance;margin:0 0 .8rem;font-size:clamp(1.45rem,1.2rem + 1vw,1.85rem);line-height:1.15}.sec--minute,.sec--skills{background:var(--surface);border:1px solid var(--line);border-left:3px solid var(--ink);border-radius:0 var(--radius) var(--radius) 0;padding:clamp(1rem,3.5vw,1.4rem) clamp(1rem,3.5vw,1.6rem)}.sec--minute>p{font-size:1.1875rem;line-height:1.6}.sec--minute>:last-child,.sec--turn>:last-child,.sec--deeper>:last-child{margin-bottom:0}.sec--skills ul{gap:.55rem;padding:0;list-style:none;display:grid}.sec--skills li{margin:0;padding-left:1.6rem;position:relative}.sec--skills li:before{content:"";background:var(--ink);width:.5rem;height:.5rem;position:absolute;top:.7em;left:.2rem}.sec--skills>p:last-child{border-top:1px solid var(--line);margin:1.1rem 0 0;padding-top:.9rem}.sec--how .sec__title+p,.sec--build .sec__title+p{margin-top:0}.sec--how ol:has(+h3[id=each-step-in-code]){--step:1.9rem;counter-reset:step;gap:.7rem;margin-bottom:1.6rem;padding:0;list-style:none;display:grid}.sec--how ol:has(+h3[id=each-step-in-code])>li{padding:.75rem 1rem .75rem calc(var(--step) + 1.6rem);background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);counter-increment:step;margin:0;position:relative}.sec--how ol:has(+h3[id=each-step-in-code])>li:before{content:counter(step);width:var(--step);height:var(--step);color:var(--bg);background:var(--ink);border-radius:50%;place-items:center;font-weight:700;line-height:1;display:grid;position:absolute;top:.75rem;left:.8rem}.sec--how h3[id=each-step-in-code]~.table-wrap td{white-space:normal}.sec--how h3[id=each-step-in-code]~.table-wrap td:first-child{width:9rem;min-width:8rem;font-weight:700}.sec--how h3[id=each-step-in-code]~.table-wrap td:nth-child(2){width:42%}.sec--how h3[id=each-step-in-code]~.table-wrap td:nth-child(2) code:first-child{color:var(--ink-2);background:0 0;margin-bottom:.3rem;padding:0;font-weight:700;display:inline-block}@media (max-width:40rem){.sec--how h3[id=each-step-in-code]~.table-wrap{background:0 0;border:0;overflow:visible}.sec--how h3[id=each-step-in-code]~.table-wrap :where(table,tbody,tr,td){width:auto;min-width:0;display:block}.sec--how h3[id=each-step-in-code]~.table-wrap thead{clip-path:inset(50%);width:1px;height:1px;position:absolute;overflow:hidden}.sec--how h3[id=each-step-in-code]~.table-wrap tr{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);margin-bottom:.8rem}.sec--how h3[id=each-step-in-code]~.table-wrap td{border:0;padding:.4rem .85rem}.sec--how h3[id=each-step-in-code]~.table-wrap td:first-child{width:auto;padding-top:.7rem;font-size:1.05rem}.sec--how h3[id=each-step-in-code]~.table-wrap td:nth-child(2){width:auto}.sec--how h3[id=each-step-in-code]~.table-wrap td:last-child{padding-bottom:.7rem}.sec--how h3[id=each-step-in-code]~.table-wrap tbody tr:hover{background:var(--surface)}.sec--how ol:has(+h3[id=each-step-in-code])>li{padding:.7rem .8rem .7rem calc(var(--step) + 1.2rem)}.sec--how ol:has(+h3[id=each-step-in-code])>li:before{top:.7rem;left:.6rem}}.sec--turn{background:var(--surface);border:2px dashed var(--outline);border-radius:var(--radius);padding:clamp(1rem,3.5vw,1.4rem) clamp(1rem,3.5vw,1.6rem)}.turn-tag{color:var(--bg);letter-spacing:.16em;text-transform:uppercase;background:var(--ink);border-radius:.3rem;margin:0 0 .7rem;padding:.1rem .6rem;font-size:.72rem;font-weight:700;display:inline-block}.sec--turn>.sec__title{margin-bottom:.8rem}.sec--turn details{background:var(--surface-2)}.sec--turn details>pre{margin-top:0}.sec--build ul{gap:.6rem;padding:0;list-style:none;display:grid}.sec--build li{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);margin:0;padding:.65rem 1rem .65rem 3rem;position:relative}.sec--build li:before{content:"";border:1.5px solid var(--ink);border-radius:50%;width:1.15rem;height:1.15rem;position:absolute;top:1rem;left:.95rem}.sec--build li:after{content:"";border:solid var(--ink);border-width:0 1.5px 1.5px 0;width:.3rem;height:.55rem;position:absolute;top:1.2rem;left:1.37rem;transform:rotate(40deg)}.widget{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);margin:2.25rem 0 2.5rem;padding:.5rem;position:relative}.widget:before{content:"Interactive";z-index:1;color:var(--ink-2);letter-spacing:.16em;text-transform:uppercase;background:var(--bg);padding:0 .6rem;font-size:.72rem;line-height:1.4rem;position:absolute;top:-.7rem;left:1rem}.widget iframe{border-radius:var(--radius-sm);background:#fff;border:0;width:100%;height:44rem;display:block}.widget iframe[data-themed]{background:var(--surface)}@media (max-width:40rem){.widget iframe{height:56rem}}.sec--play .widget:before{content:none}.sec--play .widget{margin-top:1.5rem}.sec--deeper{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius);padding:clamp(1rem,3.5vw,1.6rem)}.band-tag{flex-wrap:wrap;align-items:center;gap:.4rem .8rem;margin:0 0 .9rem;display:flex}.band-tag__optional{color:var(--ink-2);letter-spacing:.16em;text-transform:uppercase;border:1px solid var(--outline);border-radius:.3rem;padding:.1rem .55rem;font-size:.72rem;font-weight:700}.band-tag__time{color:var(--ink-2);font-size:.95rem}.sec--deeper>.sec__title{margin-bottom:.7rem}.sec--deeper>.sec__title+p{color:var(--ink-2)}.sec--deeper>h3:first-of-type{margin-top:1.3em}.prereq{flex-wrap:wrap;align-items:baseline;gap:.4rem .75rem;margin-bottom:1.1rem;display:flex}.prereq h3{color:var(--ink-2);margin:0;font-size:1rem}.prereq ul{flex-wrap:wrap;gap:.4rem .5rem;margin:0;padding:0;list-style:none;display:flex}.prereq li{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-sm);margin:0;padding:.15rem .75rem;font-size:1rem;line-height:1.4}.receipts{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);max-width:36rem;margin:0 0 clamp(1.75rem,5vw,2.5rem);padding:1rem 1.25rem 1.1rem}.prose .receipts h2{align-items:center;gap:.5rem;margin:0 0 .5rem;font-size:1.15rem;display:flex}.receipts h2 svg{flex:none;width:1.3rem;height:1.3rem}.receipts ul{gap:.15rem;margin:0;padding:0;list-style:none;display:grid}.receipts li{margin:0}.receipts a{overflow-wrap:anywhere;padding:.3rem 0;font-size:1rem;line-height:1.35;display:block}.receipts a b{font-weight:700}.receipts a span{color:var(--ink-2);font-family:var(--font-mono);margin-left:.5rem;font-size:.85em}.sec--check{counter-reset:q}.sec--check ol{gap:1.25rem;margin:0;padding:0;list-style:none;display:grid}.sec--check ol+ol{margin-top:1.25rem}.sec--check ol>li{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);counter-increment:q;grid-template-columns:auto minmax(0,1fr);align-items:start;gap:.5rem 1rem;margin:0;padding:1rem 1.15rem 1.15rem;display:grid}.sec--check ol>li:before{content:counter(q);border:1px solid var(--ink);border-radius:50%;place-items:center;width:2.25rem;height:2.25rem;font-size:1.05rem;font-weight:700;display:grid}.sec--check ol>li>*{grid-column:2}.sec--check ol>li>p{margin:.2rem 0 0;font-size:1.125rem;line-height:1.5}.sec--check ol>li>details{background:var(--surface-2);border-radius:var(--radius-sm);grid-column:1/-1;margin:.5rem 0 0}.sec--check ol>li>details>summary:after{content:"Flip the card";color:var(--ink-2);margin-left:auto;font-size:.9rem;font-weight:400}.sec--check ol>li>details[open]{background:var(--bg);border-color:var(--ink)}.sec--check ol>li>details[open]>summary:after{content:"Flip back"}.sec--check ol>li>details[open]>:not(summary){animation:flip-in .45s var(--ease) both;transform-origin:top}.sec--check ol>li>details>:not(summary){margin-inline:1.1rem}.sec--check ol>li>details>p:last-child{margin-bottom:1.1rem}@keyframes flip-in{0%{opacity:0;transform:perspective(700px)rotateX(-75deg)}to{opacity:1;transform:perspective(700px)rotateX(0)}}.sec--reading ul{padding-left:1.2em}.sec--reading p:has(>strong:only-child){margin:1.5em 0 .4em;font-size:1.1rem}.sec--reading li{overflow-wrap:anywhere}.code-files{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius);margin-top:clamp(2.25rem,6vw,3.25rem);padding:clamp(1rem,3.5vw,1.6rem)}.code-files>h2{margin:0 0 .35rem;font-size:clamp(1.45rem,1.2rem + 1vw,1.85rem);line-height:1.15}.code-files>p:not(.band-tag){color:var(--ink-2);margin:0 0 1.25rem;font-size:1.0625rem}.code-file{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-sm);margin-bottom:.75rem;overflow:hidden}.code-file__bar{justify-content:space-between;align-items:center;gap:.75rem;padding:.55rem .95rem;display:flex}.code-file__name{font-family:var(--font-mono);overflow-wrap:anywhere;font-size:.95rem;font-weight:700}.code-file__tools{flex:none;align-items:center;gap:.75rem;font-size:1rem;display:flex}.code-file__lines{color:var(--ink-2);font-family:var(--font-mono);font-size:.85rem}.code-file details>summary{cursor:pointer;background:var(--surface-2);border-top:1px solid var(--line);padding:.5rem .95rem;font-weight:700}.code-file details[open]>summary{border-bottom:1px solid var(--line)}.code-file pre{max-height:36rem;font-family:var(--font-mono);tab-size:4;border:0;border-radius:0;margin:0;padding:1rem 1.15rem;font-size:.875rem;line-height:1.6;overflow:auto}.code-file pre code{font-family:inherit}@media (max-width:34rem){.code-file__bar{flex-wrap:wrap}}.next-card{color:var(--bg);background:var(--ink);border:1px solid var(--ink);border-radius:var(--radius);transition:background-color .2s var(--ease), color .2s var(--ease);gap:.5rem;margin:clamp(2.25rem,6vw,3.25rem) 0 0;padding:clamp(1.1rem,4vw,1.6rem);display:grid;position:relative}.next-card:hover{color:var(--ink);background:0 0}.next-card__label{letter-spacing:.16em;text-transform:uppercase;margin:0;font-size:.78rem}.next-card h2{margin:0;font-size:clamp(1.45rem,1.2rem + 1.2vw,2rem);line-height:1.15}.next-card h2 a{color:inherit;text-decoration:none}.next-card h2 a:after{content:"";border-radius:var(--radius);position:absolute;inset:0}.next-card:has(h2 a:focus-visible){outline:2px solid var(--focus);outline-offset:4px}.next-card h2 a:focus-visible{outline:none}.next-card p{max-width:56ch;margin:0}.next-card h2+p{margin-top:.4rem}.next-card__row{align-items:center;gap:.75rem;margin-top:.5rem;font-weight:700;display:flex}.next-card__row .go{width:1.7rem;height:1.7rem;margin-left:auto}
.page-head{margin-bottom:clamp(1.5rem,5vw,2.25rem)}.page-head h1{font-size:clamp(1.9rem,1.45rem + 1.9vw,2.5rem);line-height:1.12}.page-head .lede{color:var(--ink-2);text-wrap:pretty;margin:.75rem 0 0;font-size:1.1875rem;line-height:1.55}.learn-start{margin:1.25rem 0 0;font-size:1.0625rem;font-weight:700}.chapter-rows{border-top:1px solid var(--line);interpolate-size:allow-keywords;margin:0;padding:0;list-style:none}.chapter-rows>li{border-bottom:1px solid var(--line)}.chapter-row>summary{cursor:pointer;padding:1.1rem 2.75rem 1.2rem 0;list-style:none;display:block;position:relative}.chapter-row>summary::-webkit-details-marker{display:none}.chapter-row>summary:after{content:"";background:linear-gradient(var(--ink), var(--ink)) center / 100% 2px no-repeat, linear-gradient(var(--ink), var(--ink)) center / 2px 100% no-repeat;width:1rem;height:1rem;transition:transform .25s var(--ease);position:absolute;top:1.5rem;right:.35rem}.chapter-row[open]>summary:after{transform:rotate(45deg)}.chapter-row>summary:hover h2{text-underline-offset:.2em;text-decoration:underline;text-decoration-thickness:.06em}.chapter-row>summary:focus-visible{outline:2px solid var(--focus);outline-offset:4px}.chapter-row h2{margin:0;font-size:clamp(1.3rem,1.1rem + .9vw,1.6rem);line-height:1.15}.chapter-row::details-content{block-size:0;overflow:clip}.chapter-row[open]::details-content{block-size:auto}@media (prefers-reduced-motion:no-preference){.chapter-row::details-content{transition-behavior:allow-discrete;transition-property:block-size,content-visibility;transition-duration:.3s;transition-timing-function:ease}}@media (prefers-reduced-motion:reduce){.chapter-row>summary:after{transition:none}}.chapter-row__lessons{margin:0;padding:0 0 1.2rem;list-style:none}.chapter-row__lessons li{border-top:1px solid var(--line);justify-content:space-between;align-items:baseline;gap:1rem;padding:.55rem 0;display:flex}.chapter-row__lessons a{text-wrap:pretty;font-weight:700;line-height:1.35}.chapter-row__lessons a,.chapter-lessons h2 a{-webkit-text-decoration-color:color-mix(in srgb, var(--ink) 35%, transparent);text-decoration-color:color-mix(in srgb, var(--ink) 35%, transparent)}.chapter-row__lessons a:hover,.chapter-lessons h2 a:hover{text-decoration-color:currentColor}.chapter-row__lessons span{color:var(--ink-2);font-variant-numeric:tabular-nums;flex:none;font-size:.9375rem}.chapter-row__goal{color:var(--ink-2);text-wrap:pretty;margin:.35rem 0 0;font-size:1.0625rem;line-height:1.5}.chapter-row__meta,.chapter-lessons__meta{color:var(--ink-2);font-variant-numeric:tabular-nums;flex-wrap:wrap;gap:0 1rem;margin:.45rem 0 0;font-size:.9375rem;display:flex}.learn-glossary{color:var(--ink-2);margin:1.5rem 0 0;font-size:1rem}.chapter-lessons{border-top:1px solid var(--line);margin:0;padding:0;list-style:none}.chapter-lessons>li{border-bottom:1px solid var(--line);padding:1.1rem 0 1.2rem}.chapter-lessons h2{margin:0;font-size:clamp(1.25rem,1.05rem + .8vw,1.5rem);line-height:1.2}.chapter-lessons li>p:not(.chapter-lessons__meta){color:var(--ink-2);text-wrap:pretty;margin:.35rem 0 0;font-size:1.0625rem;line-height:1.5}.az ul{flex-wrap:wrap;gap:.3rem;margin:0 0 clamp(1.75rem,5vw,2.5rem);padding:0;list-style:none;display:flex}.az a{border-radius:var(--radius-sm);background:var(--surface);border:1px solid var(--line);place-items:center;min-width:2.5rem;height:2.5rem;font-weight:700;text-decoration:none;transition:border-color .15s;display:grid}.az a:hover{border-color:var(--ink)}@media (max-width:30rem){.az ul{grid-template-columns:repeat(6,minmax(0,1fr));display:grid}}.glossary__group{margin-bottom:clamp(1.75rem,5vw,2.5rem)}.glossary__group>h2{border-bottom:1px solid var(--line);margin:0 0 .5rem;padding-bottom:.4rem;font-size:1.75rem;line-height:1}.glossary dl{margin:0}.gloss{padding:.8rem 0 .9rem;position:relative}.gloss+.gloss{border-top:1px solid var(--line)}.gloss:target:before{content:"";background:var(--ink);width:3px;position:absolute;top:.8rem;bottom:.9rem;left:-.75rem}.gloss dt{margin:0}.gloss dfn{font-size:1.1875rem;font-style:normal;font-weight:700;line-height:1.2}.gloss dd{margin:.3rem 0 0}.gloss dd p{text-wrap:pretty;margin:0;font-size:1.0625rem;line-height:1.55}.gloss .gloss__src{color:var(--ink-2);margin-top:.45rem;font-size:.9375rem}.lesson-body a[href^="/learn/glossary/#"]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted;text-decoration-thickness:.14em}.lesson-body a[href^="/learn/glossary/#"]:hover{text-decoration-style:solid}
.oss .stats{margin-bottom:0}.oss__stat{margin:0;padding:.85rem 1rem}.oss .stats__value--date{font-size:1.25rem;line-height:2.1rem}.oss__section{margin-top:clamp(2rem,6vw,3rem)}.oss__head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.15rem 1rem;display:flex}.oss__head h2,.oss__section>h2{margin:0;font-size:1.3rem}.oss__head a{font-size:.9375rem}.oss__lede{color:var(--ink-2);text-wrap:pretty;margin:.4rem 0 .9rem}.chart-grid{align-items:start;gap:1.25rem;margin-top:.9rem;display:grid}@media (min-width:36rem){.chart-grid{grid-template-columns:minmax(0,1fr) 11rem}}.chart{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);margin:0;padding:.6rem .4rem .4rem}.chart svg{width:100%;height:auto;display:block}.chart text{fill:var(--ink-2);font-family:var(--font-body);font-size:16px}.chart__total{fill:var(--ink);font-weight:700}.chart__tick{font-variant-numeric:tabular-nums}.chart__grid{stroke:var(--line);stroke-width:1px}.chart__base{stroke:var(--outline);stroke-width:1.5px}.chart__seg{fill:var(--cat);stroke:var(--surface);stroke-width:1px}.legend{gap:.15rem;margin:0;padding:0;list-style:none;display:grid}.legend a{min-height:2.5rem;color:var(--ink);border-radius:var(--radius-sm);align-items:center;gap:.6rem;padding:.2rem .5rem;font-size:.9375rem;text-decoration:none;display:flex}.legend a:hover{background:var(--surface-2)}.legend__dot{background:var(--cat);width:.9rem;height:.9rem;box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--ink) 30%, transparent);border-radius:2px;flex:none}.legend b{font-variant-numeric:tabular-nums;margin-left:auto}.chart-data{margin-top:1.25rem}.chart-data summary{cursor:pointer;align-items:center;min-height:2.5rem;display:flex}:where(.chart-data) .table-wrap{border:1px solid var(--line);border-radius:var(--radius-sm);margin-top:.5rem;overflow-x:auto}:where(.chart-data) .table-wrap table{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%;font-size:.9375rem}:where(.chart-data) .table-wrap th,:where(.chart-data) .table-wrap td{text-align:right;border-top:1px solid var(--line);white-space:nowrap;padding:.4rem .75rem}:where(.chart-data) .table-wrap thead th,:where(.chart-data) .table-wrap tbody th,:where(.chart-data) .table-wrap tfoot th{text-align:left;font-weight:700}:where(.chart-data) .table-wrap thead th:not(:first-child){text-align:right}:where(.chart-data) .table-wrap thead tr:first-child th{border-top:0}:where(.chart-data) .table-wrap tfoot th,:where(.chart-data) .table-wrap tfoot td{font-weight:700}.prs{border-top:1px solid var(--line);margin:0;padding:0;list-style:none}.pr{border-bottom:1px solid var(--line);padding-block:.85rem}.pr p,.pr h3{margin:0}.pr__top{color:var(--ink-2);flex-wrap:wrap;justify-content:space-between;gap:0 1rem;font-size:.875rem;line-height:1.5;display:flex}.pr__repo{overflow-wrap:anywhere}.pr h3{overflow-wrap:anywhere;text-wrap:pretty;margin-block:.15rem;font-size:1.0625rem;line-height:1.35}.pr__meta{color:var(--ink-2);flex-wrap:wrap;gap:0 1rem;font-size:.875rem;line-height:1.6;display:flex}.pr__meta a{color:var(--ink)}
.shark{display:block;overflow:visible}.shark *{stroke-linecap:round;stroke-linejoin:round}.shark{--shark-line:var(--lightningcss-light,#10243e)var(--lightningcss-dark,#cfe3fa)}.shark__ink path{stroke:var(--shark-line);stroke-width:5px}.shark__body{fill:#2f93e8}.shark__ink .shark__belly{fill:#fff;stroke:none}.shark__outline{fill:none}.shark__fin{fill:#e8402a}.shark__ink .shark__shine{fill:none;stroke:#fff;stroke-width:5px;opacity:.55}.shark__gill{fill:none;stroke:#10243e;stroke-width:4px;opacity:.45}.shark__cheek{fill:#ff8f1f;opacity:.85}.shark__eye{fill:#10243e}.shark__glint{fill:#fff}.shark__smile{fill:none;stroke:#10243e;stroke-width:5px}.shark__tooth{fill:#fff;stroke:#10243e;stroke-width:2.5px}.shark__bubbles circle{fill:none;stroke:#2f93e8;stroke-width:3.5px}.shark--small .shark__gill,.shark--small .shark__tooth,.shark--small .shark__bubbles,.shark--small .shark__shine{display:none}.shark--small .shark__ink path:not(.shark__belly),.shark--small .shark__smile{stroke-width:7px}
::view-transition-group(site-header){z-index:100;animation:none}::view-transition-old(site-header){display:none}::view-transition-new(site-header){animation:none}::view-transition{pointer-events:none}@keyframes fade{0%{filter:blur(3px);opacity:0}to{filter:blur();opacity:1}}@keyframes slide{0%{translate:var(--slide-offset)}to{translate:0}}::view-transition-old(.nav-forward){--slide-offset:-60px;animation:.15s ease-in reverse both fade,.4s ease-in-out reverse both slide}::view-transition-new(.nav-forward){--slide-offset:60px;animation:.21s ease-out .15s both fade,.4s ease-in-out both slide}::view-transition-old(.nav-back){--slide-offset:60px;animation:.15s ease-in reverse both fade,.4s ease-in-out reverse both slide}::view-transition-new(.nav-back){--slide-offset:-60px;animation:.21s ease-out .15s both fade,.4s ease-in-out both slide}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}::view-transition-old(*){animation-duration:0s!important;animation-delay:0s!important}::view-transition-new(*){animation-duration:0s!important;animation-delay:0s!important}::view-transition-group(*){animation-duration:0s!important;animation-delay:0s!important}}@media print{body:before,.site-header,.site-footer,.theme-toggle{display:none}body{color:#000;background:#fff;font-size:11pt}}

