:root{--space-3xs:.125rem;--space-2xs:.25rem;--space-xs:.5rem;--space-sm:.75rem;--space-md:1rem;--space-lg:1.5rem;--space-xl:2.5rem;--space-2xl:4rem;--space-3xl:6rem;--space-4xl:9rem;--text-xs:.8125rem;--text-sm:.875rem;--text-md:1rem;--text-lg:1.25rem;--text-xl:1.5625rem;--text-2xl:1.953rem;--text-3xl:2.441rem;--text-display-s:clamp(2.25rem, 4vw + .5rem, 3.75rem);--text-display:clamp(2.75rem, 5vw + 1rem, 5.25rem);--text-section:clamp(2rem, 2.5vw + 1rem, 3.5rem);--text-title:clamp(1.25rem, .75vw + .875rem, 1.625rem);--text-lead:clamp(1.125rem, .35vw + 1rem, 1.375rem);--ease-out:cubic-bezier(.16, 1, .3, 1);--ease-in:cubic-bezier(.7, 0, .84, 0);--ease-in-out:cubic-bezier(.65, 0, .35, 1);--dur-micro:.12s;--dur-short:.22s;--dur-long:.42s;--dur-reveal:.45s;--color-error:oklch(52% .19 27);--color-success:oklch(50% .12 150);--container:90rem;--gutter:4rem;--gap-columns:2rem;--section-gap-s:7.5rem;--section-gap:9rem;--section-gap-l:11rem;--z-base:1;--z-raised:10;--z-dropdown:100;--z-sticky:200;--z-sticky-nav:300;--z-modal:400;--z-toast:500;--z-tooltip:600;--color-paper:oklch(97.2% .007 295);--color-paper-2:oklch(94.3% .015 299);--color-paper-3:oklch(91.3% .02 295);--color-ink:oklch(32.7% .053 282);--color-ink-2:oklch(40% .05 285);--color-muted:oklch(45.8% .044 288);--color-rule:oklch(90% .019 293);--color-rule-2:oklch(80% .03 293);--color-accent:oklch(77.8% .132 74);--color-accent-ink:oklch(27.4% .051 281);--color-accent-hover:oklch(82.8% .114 75);--color-focus:oklch(32.7% .053 282);--color-focus-night:oklch(77.8% .132 74);--color-night:oklch(27.4% .051 281);--color-night-2:oklch(22.7% .05 280);--color-night-rule:oklch(37.4% .066 282);--color-on-night:oklch(94% .019 296);--color-on-night-2:oklch(78.9% .045 290);--font-display:"Gabarito", ui-rounded, system-ui, sans-serif;--font-body:"Source Serif 4", Georgia, serif;--font-outlier:"JetBrains Mono", ui-monospace, monospace;--radius-card:12px;--radius-input:10px;--radius-inner:6px;--radius-pill:999px;--rule-hair:1px;--shadow-card:0 0 0 1px oklch(32.7% .053 282/.1);--tracking-display:-.025em;--tracking-h1:-.03em;--tracking-h2:-.02em;--tracking-h3:-.01em}*,:before,:after{box-sizing:border-box}html,body{overflow-x:clip}html{scrollbar-color:var(--color-muted) var(--color-paper);scroll-padding-top:var(--space-3xl)}body{background:var(--color-paper);color:var(--color-ink);font-family:var(--font-body);font-size:var(--text-md);-webkit-font-smoothing:antialiased;caret-color:var(--color-accent);margin:0;line-height:1.55}::selection{background:color-mix(in oklab, var(--color-accent) 22%, transparent);color:var(--color-ink)}:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px}a{color:inherit;text-underline-offset:.16em;text-decoration-thickness:1px}h1,h2,h3{font-family:var(--font-display);font-weight:var(--display-weight,700);font-synthesis:none;letter-spacing:var(--tracking-display);overflow-wrap:break-word;text-wrap:balance;min-width:0;margin:0;line-height:1.05}h1{max-width:20ch;font-size:var(--text-display);letter-spacing:var(--tracking-h1)}h2{max-width:30ch;font-size:var(--text-section);letter-spacing:var(--tracking-h2)}h3{max-width:40ch;font-size:var(--text-title);letter-spacing:var(--tracking-h3);line-height:1.2}.lead{font-size:var(--text-lead);max-width:52ch;line-height:1.45}p{text-wrap:pretty;margin:0}p:not([class]){max-width:65ch}img,video{max-width:100%;height:auto;display:block}svg{display:block}[hidden]{display:none!important}button,input,select,textarea{font:inherit}.container{width:100%;max-width:var(--container);padding-inline:var(--gutter);box-sizing:border-box;margin-inline:auto}.num,.figure,td.num{font-variant-numeric:tabular-nums}.visually-hidden{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}[data-slot]{background:linear-gradient(160deg, var(--color-paper-2,var(--color-paper)), var(--color-paper-3,var(--color-paper)));position:relative;overflow:hidden}[data-slot]>img{object-fit:cover;z-index:1;width:100%;height:100%;position:absolute;inset:0}[data-slot]:has(>img)>:not(img):not([data-keep]){display:none!important}@media (width<=60rem){:root{--gutter:1.5rem;--section-gap-s:5rem;--section-gap:6rem;--section-gap-l:7.5rem}}@media (width<=40rem){:root{--gutter:1rem;--section-gap-s:3.5rem;--section-gap:4.5rem;--section-gap-l:6rem;--gap-columns:1rem}}@media (prefers-reduced-motion:reduce){:not(.keep-motion),:not(.keep-motion):before,:not(.keep-motion):after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}body{font-optical-sizing:auto;font-size:1.125rem;line-height:1.6}a{text-decoration-color:var(--color-accent);text-underline-offset:.2em;text-decoration-thickness:2px}a:hover{text-decoration-color:currentColor}code,pre,kbd{font-family:var(--font-outlier);font-size:.86em}:is(.hero,.close,.tile--plugins) :focus-visible{outline-color:var(--color-focus-night)}.wrap{width:100%;max-width:var(--container);padding-inline:var(--gutter);margin-inline:auto}.skip{left:var(--space-md);top:calc(-1 * var(--space-3xl));z-index:var(--z-toast);padding:var(--space-xs) var(--space-md);background:var(--color-ink);color:var(--color-paper);border-radius:var(--radius-inner);font-family:var(--font-display);position:absolute}.skip:focus-visible{top:var(--space-md)}.top{z-index:var(--z-sticky-nav);height:0;position:sticky;top:0}.top .wrap{padding-top:var(--space-md)}.pill{align-items:center;gap:var(--space-xl);width:fit-content;max-width:100%;min-height:3.5rem;padding:var(--space-xs) var(--space-lg) var(--space-xs) var(--space-md);background:var(--color-paper);border:1px solid var(--color-rule);border-radius:var(--radius-pill);display:flex}@supports (backdrop-filter:blur(1px)){.pill{background:color-mix(in oklab, var(--color-paper) 78%, transparent);backdrop-filter:blur(20px)saturate(180%);border-color:color-mix(in oklab, var(--color-paper) 55%, transparent)}}@media (prefers-reduced-transparency:reduce),(prefers-contrast:more){.pill{background:var(--color-paper);backdrop-filter:none;border-color:var(--color-ink)}}.brand{align-items:center;gap:var(--space-xs);font:700 1.5rem/1 var(--font-display);letter-spacing:-.01em;text-decoration:none;display:flex}.brand img{width:2rem;height:2rem}.pill nav{gap:var(--space-lg);font:600 1rem/1 var(--font-display);display:flex}.pill nav a{padding-block:var(--space-xs);transition:color var(--dur-short) var(--ease-out);text-decoration:none}.pill nav a:hover{color:var(--color-muted);text-decoration:underline;text-decoration-color:var(--color-accent);text-underline-offset:.35em;text-decoration-thickness:2px}.pill nav a[aria-current]{text-decoration:underline;text-decoration-color:var(--color-accent);text-underline-offset:.35em;text-decoration-thickness:2px}@media (width<=40rem){.pill{gap:var(--space-md);padding-inline:var(--space-sm) var(--space-md)}.pill nav{gap:var(--space-md)}.brand{font-size:1.25rem}.pill nav .wide{display:none}}.actions{gap:var(--space-sm);margin-top:var(--space-xl);flex-wrap:wrap;align-items:stretch;display:flex}.btn{min-height:3.25rem;padding-inline:var(--space-lg);background:var(--color-accent);color:var(--color-accent-ink);border:1px solid var(--color-accent);border-radius:var(--radius-input);font:600 1.0625rem/1 var(--font-display);white-space:nowrap;cursor:pointer;transition:background-color var(--dur-short) var(--ease-out), border-color var(--dur-short) var(--ease-out), transform var(--dur-micro) var(--ease-out);justify-content:center;align-items:center;text-decoration:none;display:inline-flex}.btn:hover{background:var(--color-accent-hover);border-color:var(--color-accent-hover)}.btn:active{transform:scale(.97)}.btn:disabled,.btn[aria-disabled=true]{opacity:.55;cursor:not-allowed;transform:none}.btn--quiet{color:var(--color-on-night);border-color:var(--color-on-night-2);background:0 0}.btn--quiet:hover{background:var(--color-night-2);border-color:var(--color-on-night)}.cmd{align-items:center;gap:var(--space-2xs);min-height:3.25rem;padding:0 var(--space-2xs) 0 var(--space-md);background:var(--color-night-2);color:var(--color-on-night);border:1px solid var(--color-night-rule);border-radius:var(--radius-input);font:500 .95rem var(--font-outlier);display:inline-flex}.cmd b{color:var(--color-on-night-2);user-select:none;font-weight:500}.cmd button{margin-left:var(--space-xs);min-height:2.625rem;padding-inline:var(--space-md);border-radius:calc(var(--radius-input) - var(--space-2xs));color:var(--color-on-night);font:600 .9rem var(--font-display);cursor:pointer;transition:background-color var(--dur-short) var(--ease-out), color var(--dur-short) var(--ease-out), transform var(--dur-micro) var(--ease-out);background:0 0;border:0}.cmd button:hover{background:var(--color-night-rule)}.cmd button:active{transform:scale(.96)}.cmd button:disabled{opacity:.55;cursor:not-allowed}.hero{min-height:100dvh;padding-block:var(--space-3xl) var(--space-2xl);background:var(--color-night);color:var(--color-on-night);align-items:center;display:flex}.hero .wrap{column-gap:var(--space-2xl);grid-template-columns:minmax(0,5fr) minmax(0,7fr);align-items:center;display:grid}.hero .lead{margin-top:var(--space-lg);max-width:34ch;color:var(--color-on-night-2)}.shot{aspect-ratio:1280/860;border-radius:var(--radius-card);box-shadow:var(--shadow-card);background:var(--color-paper-2);margin:0}.hero .shot{aspect-ratio:1280/860}@media (width<=60rem){.hero{min-height:0;padding-block:var(--space-3xl) var(--space-2xl)}.hero .wrap{row-gap:var(--space-xl);grid-template-columns:minmax(0,1fr)}}.sec{padding-top:var(--section-gap)}.sec--s{padding-top:var(--section-gap-s)}.sec--l{padding-top:var(--section-gap-l)}.band{margin-top:var(--section-gap-s);padding-block:var(--section-gap-s);background:var(--color-paper-2)}.grid{column-gap:var(--gap-columns);grid-template-columns:repeat(12,minmax(0,1fr));display:grid}.head{row-gap:var(--space-lg);margin-bottom:var(--space-2xl);align-items:start}.head h2{grid-column:1/span 5}.head .copy{grid-column:7/-1}.head .copy p+p,.copy p+p,.copy p+a,.copy p+.link{margin-top:var(--space-md)}.link{display:inline-block}.showcase .shot{width:100%}.kinds-grid{row-gap:var(--space-2xl);align-items:start}.kinds-grid h2{grid-column:1/span 4}.kinds-body{gap:var(--space-2xl);grid-column:5/-1;min-width:0;display:grid}.kinds{border-top:1px solid var(--color-ink);margin:0;padding:0;list-style:none}.kinds li{padding-block:var(--space-lg);border-bottom:1px solid var(--color-rule-2);font-size:var(--text-lead);line-height:1.4}.kinds b{font:700 var(--text-lead)/1.4 var(--font-display)}.band .shot{background:var(--color-paper-3)}.split{align-items:center;row-gap:var(--space-xl)}.split .shot{grid-area:1/1/auto/span 8}.split .copy{grid-area:1/9/auto/-1;padding-inline-start:var(--space-lg)}.split h2{margin-bottom:var(--space-lg)}.split--flip .copy{grid-column:1/span 4;padding-inline-start:0}.split--flip .shot{grid-column:5/-1}.spec{border-top:1px solid var(--color-ink);grid-template-columns:minmax(0,4fr) minmax(0,8fr);margin:0;display:grid}.spec dt,.spec dd{padding-block:var(--space-lg);border-bottom:1px solid var(--color-rule-2);margin:0}.spec dt{padding-right:var(--space-lg);font:700 var(--text-title)/1.25 var(--font-display)}.spec--narrow{grid-template-columns:minmax(0,1fr) minmax(0,2.4fr)}.spec--narrow dt{font-size:var(--text-lg)}.head--table h2{grid-column:1/span 7}.bento{row-gap:var(--gap-columns);align-items:stretch}.tile{gap:var(--space-md);min-width:0;padding:var(--space-xl);border-radius:var(--radius-card);flex-direction:column;display:flex}.tile h2{font-size:var(--text-2xl);line-height:1.1}.tile--desktop{background:var(--color-paper-2);grid-column:1/span 7}.tile--plugins{background:var(--color-night);color:var(--color-on-night);grid-column:8/-1}.tile--desktop .shot{aspect-ratio:3/2;border-radius:var(--radius-inner);box-shadow:none;background:var(--color-paper-3);margin-top:auto}.tile--plugins pre{margin:auto 0 0}.tile .link{margin-top:0}.cols{row-gap:var(--space-2xl);align-items:start}.cols>:first-child{grid-column:1/span 6}.cols>:last-child{grid-column:7/-1;padding-inline-start:var(--space-lg)}.cols h2{margin-bottom:var(--space-lg)}.measure{max-width:62ch}.notyet ul{columns:2 14rem;column-gap:var(--space-lg);margin:var(--space-md) 0;padding-left:1.1em}.notyet li{margin-bottom:var(--space-xs);break-inside:avoid}pre{padding:var(--space-md) var(--space-lg);background:var(--color-night-2);color:var(--color-on-night);border-radius:var(--radius-inner);tab-size:4;margin:0;font-size:.85rem;line-height:1.6;overflow-x:auto}pre code{font-size:inherit}:not(pre)>code{background:var(--color-paper-3);padding:0 var(--space-2xs);border-radius:var(--space-2xs)}pre .c{color:var(--color-on-night-2)}pre .p{color:var(--color-accent)}:is(.close,.tile--plugins) :not(pre)>code{background:var(--color-night-rule);color:var(--color-on-night)}.close{margin-top:var(--section-gap-l);padding-block:var(--section-gap-s);background:var(--color-night);color:var(--color-on-night)}.close .wrap>.grid{row-gap:var(--space-xl);align-items:start}.close .say{grid-column:1/span 5}.close .say p+p,.close .say ul+.btn{margin-top:var(--space-md)}.close .say h2{margin-bottom:var(--space-lg)}.close ul{margin:var(--space-xs) 0 var(--space-lg);padding-left:1.2em}.close li{margin-bottom:var(--space-xs)}.close .term{grid-column:6/-1;min-width:0}.close .term pre{padding:var(--space-lg);background:var(--color-night-2);border:1px solid var(--color-night-rule);font-size:.9375rem}@media (width<=60rem){.head h2,.head .copy,.kinds-grid h2,.kinds-body,.split .shot,.split .copy,.tile--desktop,.tile--plugins,.cols>:first-child,.cols>:last-child,.close .say,.close .term{grid-area:auto/1/auto/-1}.split .copy,.cols>:last-child{padding-inline-start:0}.spec,.spec--narrow{grid-template-columns:minmax(0,1fr)}.spec dt{padding-bottom:var(--space-3xs);border-bottom:0}.spec dd{padding-top:0}.close{margin-top:var(--section-gap)}}footer{padding-block:var(--section-gap-s) var(--space-2xl)}.foot-line{max-width:22ch;margin:0 0 var(--space-xl);font:700 var(--text-display-s)/1.05 var(--font-display);letter-spacing:var(--tracking-display);text-wrap:balance}.foot-links{gap:var(--space-md) var(--space-xl);padding-top:var(--space-lg);border-top:1px solid var(--color-rule-2);flex-wrap:wrap;display:flex}.foot-links a{color:var(--color-ink)}@keyframes rise{0%{opacity:0;transform:translateY(var(--space-lg))}}@keyframes settle{0%{opacity:0;transform:translateY(var(--space-lg)) scale(.97)}}@keyframes wipe{0%{clip-path:inset(0 0 100%)}to{clip-path:inset(0)}}@keyframes progress{to{transform:scaleX(1)}}.hero h1,.hero .lead,.hero .actions{animation:rise var(--dur-reveal) var(--ease-out) backwards}.hero .lead{animation-delay:80ms}.hero .actions{animation-delay:.16s}.hero .shot{animation:settle .9s var(--ease-out) .2s backwards}.js [data-reveal]{opacity:0;translate:0 var(--space-lg);transition:opacity var(--dur-reveal) var(--ease-out), translate var(--dur-reveal) var(--ease-out), scale var(--dur-reveal) var(--ease-out);transition-delay:calc(var(--i,0) * 50ms), calc(var(--i,0) * 50ms), calc(var(--i,0) * 50ms)}.js [data-reveal=shot]{scale:.97}.js [data-reveal=left]{translate:calc(-1 * var(--space-xl)) 0}.js [data-reveal=right]{translate:var(--space-xl) 0}.js [data-reveal].is-in{opacity:1;translate:none;scale:none}.js [data-wipe]:not(.is-in){clip-path:inset(0 0 100%)}.js [data-wipe].is-in{animation:1.4s steps(18,end) both wipe}:is(.link,.foot-links a){text-decoration:none;position:relative}:is(.link,.foot-links a):before,:is(.link,.foot-links a):after{content:"";left:0;right:0;bottom:calc(-1 * var(--space-3xs));transform-origin:0;height:2px;position:absolute}:is(.link,.foot-links a):before{background:var(--color-accent)}:is(.link,.foot-links a):after{transition:transform var(--dur-short) var(--ease-out);background:currentColor;transform:scaleX(0)}:is(.link,.foot-links a):hover:after,:is(.link,.foot-links a):focus-visible:after{transform:scaleX(1)}@keyframes draw{0%{transform:scaleX(0)}}@keyframes caret{50%{opacity:0}}.mark{white-space:nowrap;position:relative}.mark:after{content:"";border-radius:var(--radius-pill);background:var(--color-accent);transform-origin:0;height:.12em;position:absolute;bottom:-.06em;left:0;right:0}.hero .mark:after{animation:draw .7s var(--ease-out) .6s backwards}.js [data-reveal] .mark:after{transition:transform .7s var(--ease-out) .3s;transform:scaleX(0)}.js [data-reveal].is-in .mark:after{transform:scaleX(1)}.close .term code:after{content:"";width:.55em;height:1.1em;margin-left:var(--space-2xs);vertical-align:text-bottom;background:var(--color-accent);display:inline-block}.close .term .is-in code:after{animation:1s step-end 1.6s 8 caret}.shot{transform:perspective(1400px) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg))}.shot.is-leaving{transition:transform var(--dur-long) var(--ease-out)}.foot-btn{color:var(--color-muted);font:inherit;text-decoration:underline;text-decoration-color:var(--color-accent);text-underline-offset:.2em;cursor:pointer;background:0 0;border:0;margin-left:auto;padding:0;text-decoration-thickness:2px}.foot-btn:hover{color:var(--color-ink)}.foot-btn:active{transform:translateY(1px)}@supports (animation-timeline:scroll()){@media (prefers-reduced-motion:no-preference){.top:before{content:"";height:var(--space-2xs);background:var(--color-accent);transform-origin:0;z-index:var(--z-sticky-nav);animation:linear both progress scroll(root);position:fixed;inset:0 0 auto;transform:scaleX(0)}}}@media (prefers-reduced-motion:reduce){.js [data-reveal]{opacity:1;transition:none;translate:none;scale:none}.js [data-wipe]:not(.is-in){clip-path:none}.js [data-reveal] .mark:after{transition:none;transform:none}.foot-btn{display:none}}.still *,.still :before,.still :after{animation:none!important}.still [data-reveal]{opacity:1;transition:none;translate:none;scale:none}.still [data-wipe]:not(.is-in){clip-path:none}.still [data-reveal] .mark:after{transition:none;transform:none}.still .shot{transform:none}.docs{padding-block:var(--space-3xl) var(--section-gap-s);grid-template-columns:15rem minmax(0,1fr);column-gap:clamp(28px,5vw,72px);display:grid}.side{top:var(--space-3xl);font:600 1rem/1.3 var(--font-display);align-self:start;position:sticky}.side ul{border-left:2px solid var(--color-rule);margin:0;padding:0;list-style:none}.side li a{padding:var(--space-xs) var(--space-md);margin-left:calc(-1 * var(--space-3xs));border-left:2px solid #0000;text-decoration:none;display:block}.side li a:hover{border-left-color:var(--color-muted)}.side li a[aria-current]{border-left-color:var(--color-accent)}.side .on-page{margin-top:var(--space-lg);font:500 .92rem/1.3 var(--font-display)}.side .on-page a{color:var(--color-muted)}.prose{min-width:0;max-width:46rem}.prose :is(h1,h2,h3){max-width:none}.prose h1{font-size:var(--text-display-s);margin:0 0 var(--space-lg);line-height:1.05}.prose h2{margin:2.2em 0 .5em;padding-top:.2em;font-size:1.85rem}.prose h3{margin:1.8em 0 .4em;font-size:1.3rem}.prose h2 a,.prose h3 a{text-decoration:none}.prose :is(h2,h3):target{scroll-margin-top:var(--space-3xl)}.prose p{margin-bottom:1em}.prose img{border:1px solid var(--color-rule);border-radius:var(--radius-inner);margin:1.2em 0}.prose table{border-collapse:collapse;width:100%;margin:1.2em 0;font-size:.97rem;display:block;overflow-x:auto}.prose th,.prose td{text-align:left;padding:var(--space-xs) var(--space-md) var(--space-xs) 0;border-bottom:1px solid var(--color-rule);vertical-align:top}.prose th{font:700 .95rem var(--font-display);border-bottom:1px solid var(--color-ink)}.prose blockquote{padding:var(--space-3xs) 0 var(--space-3xs) var(--space-md);border-left:1px solid var(--color-rule-2);color:var(--color-muted);margin:1.2em 0}.prose li{margin-bottom:.35em}.prose hr{border:0;border-top:1px solid var(--color-rule);margin:2.5em 0}.prose pre{margin:1.2em 0}.source{color:var(--color-muted);margin:calc(-1 * var(--space-xs)) 0 var(--space-lg);font-size:.95rem}@media (width<=860px){.docs{grid-template-columns:minmax(0,1fr)}.side{position:static}.side ul{gap:var(--space-2xs) var(--space-md);border-left:0;flex-wrap:wrap;display:flex}.side li a{padding:var(--space-xs) 0;border:0;margin:0}.side li a[aria-current]{text-decoration:underline;text-decoration-color:var(--color-accent);text-decoration-thickness:3px}.side .on-page{display:none}}.prose pre.astro-code{background:var(--color-night-2)!important}.prose pre code{background:0 0;padding:0}
