@layer reset{*,:after,:before{box-sizing:border-box}:not(dialog){margin:0}@media (prefers-reduced-motion:no-preference){html{interpolate-size:allow-keywords}}body{line-height:1.5;-webkit-font-smoothing:antialiased}canvas,img,picture,svg,video{display:block;max-width:100%}button,input,select,textarea{font:inherit}h1,h2,h3,h4,h5,h6,p{overflow-wrap:break-word}p{text-wrap:pretty}h1,h2,h3,h4,h5,h6{text-wrap:balance}}@layer base{@font-face{font-family:Merriweather;font-weight:600;font-display:fallback;src:local("Merriweather SemiBold"),local("Merriweather-SemiBold"),url(/a/merriweather-semibold-CUW1v6sR.woff2) format("woff2")}@font-face{font-family:Raleway;font-weight:100 900;font-display:fallback;src:url(/a/raleway-variable-0Zdmkbn-.woff2) format("woff2-variations")}@font-face{font-family:Raleway;font-weight:100 900;font-style:italic;font-display:fallback;src:url(/a/ralewayitalic-variable-Cxt1TWXo.woff2) format("woff2-variations")}@font-face{font-family:Source Code Pro;font-weight:200 900;font-display:fallback;src:url(/a/sourcecodepro-variable-BNgr1uQ8.woff2) format("woff2-variations")}@font-face{font-family:Source Code Pro;font-weight:200 900;font-style:italic;font-display:fallback;src:url(/a/sourcecodepro-italic-variable-DHENjI2I.woff2) format("woff2-variations")}}@layer base{:root{--tf-heading:Merriweather,Tahoma,sans-serif;--tf-body:Raleway,Tahoma,sans-serif;--tf-mono:Source Code Pro,monospace}html{font-size:100%}body{font:var(--weight-norm) var(--font-base) /1.5 var(--tf-body)}@media (max-resolution:1dppx){body{-webkit-font-smoothing:subpixel-antialiased}}.as-h1,.as-h2,.as-h3,h1,h2,h3{margin:1.5rlh 0 .5rlh;font:var(--weight-bold) 1rem/1.3 var(--tf-heading)}:is(h1,h2,h3,.as-h1,.as-h2,.as-h3)+p{margin-block-start:0}:is(h1,h2,h3,.as-h1,.as-h2,.as-h3):first-child{margin-block-start:0}.as-h1,h1{margin-block-end:1rlh;font-size:var(--font-primary)}.as-h2,h2{font-size:var(--font-secondary)}.as-h3,h3{font-size:var(--font-tertiary)}p{margin:1rlh 0}p:first-child{margin-block-start:0}p:last-child{margin-block-end:0}strong{font-weight:var(--weight-semi)}em{font-style:italic}small{font-size:var(--font-small)}code,pre,tt{font-family:var(--tf-mono);font-weight:calc(var(--weight-semi) - 50)}.lede{font-size:var(--font-tertiary)}body{opacity:1}.a11y:not(:focus):not(:active){position:absolute;transform:scale(0);opacity:0}a{color:var(--colour-fg);text-decoration:var(--colour-accent-1) underline 1px;text-underline-offset:.2rem;font-weight:calc(var(--weight-norm) + 50);transition:color .15s,box-shadow .15s}a:hover{color:var(--brand,var(--colour-accent-1))}a{outline:none;box-shadow:var(--colour-hilite) 0 0 0 var(--outline,0);border-radius:2px}}@layer base{a:focus-visible{--outline:2px}abbr[title]{cursor:help;border-bottom:none;text-decoration:underline;text-decoration:underline dotted rgb(from var(--colour-fg) r g b/.6)}body{display:flex;flex-direction:column;min-block-size:100vh;min-block-size:100dvh}main{--block-padding:clamp(2rem,0rem + 6.6667vw,4rem);flex:1;padding-block-start:var(--block-padding);padding-block-end:calc(var(--block-padding)*2)}hr{position:relative;display:grid;place-content:center;margin:2rlh var(--mi);border:none;height:1.2rem;color:#fff4}@supports (color:light-dark(black,white)){hr{color:light-dark(#0003,#fff4)}}hr:before{position:absolute;inset-block-start:50%;height:1px;width:100%;transform:translateY(-50%);background:currentcolor;mask-image:linear-gradient(90deg,transparent,#000 10%,#000 calc(50% - 1.5rem),transparent calc(50% - .5rem),transparent calc(50% + .5rem),#000 calc(50% + 2.5rem),#000 90%,transparent);content:""}hr:after{font-size:120%;transform:rotate(45deg);content:"※"}}@layer utils{.flex{display:flex;align-items:center;gap:var(--gap,1rem)}.flex.-distribute{justify-content:space-between}.flex.-wrap{flex-wrap:wrap}ol.plain,ul.plain{margin:0;padding:0;list-style:none}.container{--inline-padding:clamp(1.25rem,-1.3971rem + 8.8235vw,5rem);margin-inline:auto;inline-size:min(100% - calc(var(--inline-padding)*2),var(--max-width,62.5rem))}.container.-narrow{--max-width:50rem}.icon{flex-shrink:0;display:inline-block;width:var(--size,1em);height:var(--size,1em);vertical-align:middle;fill:currentcolor}.icon.-large{inline-size:1.4em}button.square{padding:var(--padding,.5rem);border:none;border-radius:var(--radius,.5rem);color:var(--colour-fg);background:transparent;line-height:1;cursor:pointer;transition:color .15s,box-shadow .15s,background .15s}button.square:hover{color:var(--colour-accent-1)}button.square .icon{display:block}}@layer components{.article-list li+li{margin-top:3rlh}.article header{margin-block-end:2rlh}}@layer components{:is(.article header) h1{margin-block-end:.5rlh}:is(.article header) dl{--gap:0;font-size:var(--font-small)}:is(:is(.article header) dl) dt{margin-inline-end:.5rem}:is(:is(.article header) dl) dd:not(:last-child){margin-inline-end:1.5rem}:is(:is(.article header) dl) .icon{--size:1.2rem}}@layer components{.footer{padding-block:.75rem}.footer p{font-size:var(--font-small);margin-block:0}.header{padding-block:.75rem;border-block-start:.25rem solid #000;border-block-end:1px solid #0005}.header .logomark{inline-size:100%;max-inline-size:8.375rem;aspect-ratio:134/21;fill:currentColor}}@layer components{:is(.header .logomark) svg{inline-size:100%}.header nav{border:0;background:transparent}:is(.header nav) a{text-decoration:none}@media (width < 480px){.header .close,.header .trigger-nav{--padding:.25rem;--size:1.4rem}.header nav{--tx:.15s;position:fixed;inset:0 0 0 auto;block-size:auto;inline-size:min(80vw,15rem);padding:4.5em 1rem;border:0;border-block-start:.25rem solid #000;background:var(--colour-bg);box-shadow:0 0 1rem 0 #0004;opacity:0;transform:translateX(100%);transition:transform var(--tx) ease,opacity var(--tx) ease,display var(--tx) ease allow-discrete,overlay var(--tx) ease allow-discrete}:is(.header nav)::backdrop{background:#0000;backdrop-filter:blur(0);transition:background var(--tx),backdrop-filter var(--tx)}:is(.header nav):popover-open{display:flex;flex-direction:column;transform:translateX(0);opacity:1}:is(.header nav):popover-open::backdrop{background:#0001;backdrop-filter:blur(4px)}@starting-style{:is(.header nav):popover-open{opacity:0;transform:translateX(100%)}:is(.header nav):popover-open::backdrop{background:#0000;backdrop-filter:blur(0)}}@media (prefers-reduced-motion:reduce){.header nav{--tx:0s}}.header .nav-list{flex:1;flex-direction:column;align-items:stretch;font-size:var(--font-tertiary)}.header .close{position:absolute;inset-block-start:.75rem;inset-inline-end:var(--inline-padding)}}@media (width >= 480px){.header .close,.header .trigger-nav{display:none}.header nav{position:static;inset:unset;display:flex;gap:1.5rem}.header .nav-list{gap:2rem}}}@layer components{.home{display:flex;flex-direction:column;justify-content:center}.home h1{align-items:start;margin-block-end:4rem;font-family:var(--tf-body);font-weight:var(--weight-norm)}.prose{--pulled-inline-padding:clamp(1rem,-1.1176rem + 7.0588vw,4rem);--pulled-bg:rgba(0,0,0,.1);--table-border-color:hsla(0,0%,100%,.15);--inline-code-bg:rgba(0,0,0,.1);--inline-code-sh:rgba(0,0,0,.2)}}@layer components{@supports (color:light-dark(black,white)){.prose{--pulled-bg:light-dark(#e4484911,#0001);--table-border-color:light-dark(rgba(0,0,0,.25),hsla(0,0%,100%,.15));--inline-code-bg:light-dark(rgb(0 0 0/3%),rgba(0,0,0,.1));--inline-code-sh:light-dark(transparent,rgba(0,0,0,.2))}}.prose ol,.prose ul{--inset:2rem;margin:1rlh 0;padding:0;padding-inline-start:var(--inset);list-style:none;counter-reset:--listTop}:is(.prose ul,.prose ol) li{position:relative}:is(:is(.prose ul,.prose ol) li):before{position:absolute;inset-inline-start:calc(.5rem - var(--inset));display:inline-block;color:var(--colour-hint-1);content:""}:is(:is(.prose ul,.prose ol) li)+li{margin-top:.5rlh}:is(.prose ul,.prose ol)>li{counter-increment:--listTop}:is(.prose ul,.prose ol) ol,:is(.prose ul,.prose ol) ul{--inset:1.6rem;margin:0;counter-reset:--listNest}:is(:is(.prose ul,.prose ol) ul,:is(.prose ul,.prose ol) ol)>li{counter-increment:--listNest}.prose ul>li:before{inset-block-start:.75rem;width:.5rem;height:.5rem;border-radius:100%;background:currentcolor}.prose li ul>li:before{inset-block-start:.9rem;block-size:var(--weight-ul);border-radius:0}.prose ol>li:before{inset-block-start:.25rem;font-size:var(--font-small);font-weight:var(--weight-ol);font-variant-numeric:oldstyle-nums;content:counter(--listTop,decimal) "."}.prose ol ol>li:before{content:counter(--listNest,lower-alpha) "."}.prose ul ol>li:before{content:counter(--listNest,decimal) "."}.prose dl{margin:1rlh 0}:is(.prose dl) dt{font-weight:var(--weight-semi)}:is(.prose dl) dd{margin:.2rlh 0 0}:is(.prose dl) dd+dt{margin-block-start:1.5rlh}.prose hr{margin-block:2.5rlh}.prose blockquote{position:relative;margin:2rlh 0;padding-inline:var(--pulled-inline-padding);font-weight:var(--weight-bold);font-size:var(--font-tertiary);font-family:var(--tf-heading)}:is(.prose blockquote):after,:is(.prose blockquote):before{position:absolute;font-size:200%;color:var(--colour-accent-2);opacity:.8}:is(.prose blockquote):before{inset-block-start:-.3em;inset-inline-start:clamp(-1rem,-2.4118rem + 4.7059vw,1rem);content:"\275D"}:is(.prose blockquote) p:first-child{margin-block-start:0}:is(.prose blockquote) p:last-child{margin-block-end:0}.prose .pulled{padding:clamp(1rlh,.3493rem + 2.7941vw,2rlh) var(--pulled-inline-padding);margin-block:3rlh;margin-inline:clamp(-.625rem,-2.5rem + 6.25vw,0rem);background:var(--pulled-bg);border-radius:1rem}.prose table{border-collapse:collapse}.prose td,.prose th{padding:.1rem .5rem}.prose thead th{padding-block:.15rem;border-block-end:1px solid var(--table-border-color)}.prose tbody th{border-inline-end:1px solid var(--table-border-color)}.prose p code{padding-inline:.3rem;background:var(--inline-code-sh);text-shadow:1px 1px 1px var(--inline-code-bg)}.prose>p:last-child:after{display:inline-block;break-before:avoid;vertical-align:middle;margin-inline-start:.6em;color:var(--colour-accent-1);line-height:1;content:"\2756"}.syntax{counter-reset:syntax}.syntax header{margin:0}}@layer components{:is(.syntax header) *{font-family:var(--tf-body);font-size:var(--font-small);font-weight:var(--weight-semi)}:is(:is(.syntax header) *):after{content:":"}.syntax pre{--padding:1rem;position:relative;border-radius:.25rem;color:#76d9e6;background:#2a2a2a;white-space:normal;tab-size:2;font-size:.8em;line-height:1.4}:is(.syntax pre):before{position:absolute;inset-block-start:0;inset-inline-start:0;block-size:100%;inline-size:2.6rem;background:#2f2f2f;content:"";z-index:1}.syntax code{display:block;max-inline-size:100%;overflow-x:scroll;padding:var(--padding);scrollbar-width:none;-ms-overflow-style:none;font-weight:400}:is(.syntax code)::-webkit-scrollbar{display:none}.syntax .line{position:relative;display:block;counter-increment:syntax;min-inline-size:100%;white-space:pre;transition:background .15s ease}:is(.syntax .line):before{position:sticky;display:inline-block;inset-inline-start:0;transform:translateX(calc(var(--padding)*-1));inline-size:1.6rem;padding-inline:.5rem;margin-inline-end:.5rem;color:hsla(0,0%,100%,.4);font-size:.8em;text-align:right;content:counter(syntax);z-index:2;transition:color .15s ease}:is(.syntax .line):hover{background:hsla(0,0%,100%,.08)}:is(.syntax .line):hover:before{color:hsla(0,0%,100%,.6)}.syntax .token.namespace{opacity:.7}.syntax .token.cdata,.syntax .token.comment,.syntax .token.doctype,.syntax .token.prolog{color:#6f705e}.syntax .token.boolean,.syntax .token.number,.syntax .token.operator{color:#a77afe}.syntax .language-css .token.string,.syntax .style .token.string,.syntax .token.attr-name,.syntax .token.entity,.syntax .token.string,.syntax .token.url{color:#e6d06c}.syntax .token.inserted,.syntax .token.selector{color:#a6e22d}.syntax .token.atrule,.syntax .token.attr-value,.syntax .token.deleted,.syntax .token.important,.syntax .token.keyword{color:#ef3b7d}.syntax .token.regex,.syntax .token.statement{color:#76d9e6}.syntax .token.placeholder,.syntax .token.variable{color:#fff}.syntax .token.bold,.syntax .token.important,.syntax .token.statement{font-weight:600}.syntax .token.punctuation{color:#bebec5}.syntax .token.entity{cursor:help}.syntax .token.italic{font-style:italic}.syntax code.language-markup{color:#f9f9f9}.syntax code.language-markup .token.tag{color:#ef3b7d}.syntax code.language-markup .token.attr-name{color:#a6e22d}.syntax code.language-markup .token.attr-value{color:#e6d06c}.syntax code.language-markup .token.script,.syntax code.language-markup .token.script .token.keyword,.syntax code.language-markup .token.style{color:#76d9e6}.syntax .line-highlight.line-highlight{padding:0;background:hsla(0,0%,100%,.08)}.syntax .line-highlight.line-highlight:before,.syntax .line-highlight.line-highlight[data-end]:after{padding:.2em .5em;background-color:hsla(0,0%,100%,.4);color:#000;height:1em;line-height:1em;box-shadow:0 1px 1px hsla(0,0%,100%,.7)}.theme-switcher{--radius:.5rem;--offsetY:.75rem;display:none}}@layer components{@supports (color:light-dark(black,white)){.theme-switcher{display:block}}.theme-switcher ul{border:0;inset:unset;list-style:none}.theme-switcher svg.-tick{display:none}@media (width < 480px){.theme-switcher h2{font:var(--weight-norm) var(--font-base) /1.5 var(--tf-body)}.theme-switcher button{display:none}.theme-switcher ul{display:flex;background:transparent;gap:1rem}.theme-switcher a{--size:1.5rem;aspect-ratio:1;padding:.5rem;border:1px dotted var(--colour-fg);border-radius:var(--radius)}:is(.theme-switcher a) span{display:none}@container viewport style(--colour-scheme: light dark){.theme-switcher a[data-theme=default]{border:1px solid var(--colour-accent-1);background:var(--colour-accent-3)}}@container viewport style(--colour-scheme: light){.theme-switcher a[data-theme=light]{border:1px solid var(--colour-accent-1);background:var(--colour-accent-3)}}@container viewport style(--colour-scheme: dark){.theme-switcher a[data-theme=dark]{border:1px solid var(--colour-accent-1);background:var(--colour-accent-3)}}}@media (width >= 480px){.theme-switcher h2{display:none}.theme-switcher button{padding:.5rem;aspect-ratio:1;border:none;border-radius:var(--radius);color:var(--colour-fg);background:transparent;cursor:pointer;transition:color .15s,box-shadow .15s,background .15s}:is(.theme-switcher button):hover{color:var(--colour-accent-1)}:is(.theme-switcher button):has(+:popover-open){background:var(--colour-ov)}.theme-switcher ul{position:relative;overflow:visible;border-radius:var(--radius);padding-block:.75rem;inline-size:max-content;background:var(--colour-ov);box-shadow:0 .125rem .5rem 0 #0003;font-size:clamp(.875rem,.625rem + .8333vw,1.125rem);transform:translate(calc(2.25rem - 100%),var(--offsetY))}:is(.theme-switcher ul):after{position:absolute;inset-block-start:0;inset-inline-end:.75rem;width:.8rem;height:.8rem;border-radius:2px;background:inherit;clip-path:polygon(0 0,100% 0,0 100%);transform:translateY(-50%) rotate(45deg);content:""}.theme-switcher li+li{margin-block-start:.5rem}.theme-switcher a{--gap:.75rem;padding-inline:.5rem}@supports (anchor-name:--foo){.theme-switcher button{anchor-name:--theme-switcher}.theme-switcher ul{--tx:.15s;position-anchor:--theme-switcher;position-area:end span-start;inset-block-start:var(--offsetY);transform:translateY(-1rem);opacity:0;transition:transform var(--tx) ease-out,opacity var(--tx) ease-in,display var(--tx) allow-discrete,overlay var(--tx) allow-discrete}:is(.theme-switcher ul):popover-open{transform:translateY(0);opacity:1}@starting-style{:is(.theme-switcher ul):popover-open{transform:translateY(-1rem);opacity:0}}@media (prefers-reduced-motion:reduce){.theme-switcher ul{--tx:0s}}}.theme-switcher svg.-tick{--size:.75rem}@container viewport style(--colour-scheme: light dark){.theme-switcher a[data-theme=default] svg.-tick{display:block}}@container viewport style(--colour-scheme: light){.theme-switcher a[data-theme=light] svg.-tick{display:block}}@container viewport style(--colour-scheme: dark){.theme-switcher a[data-theme=dark] svg.-tick{display:block}}}}