:root{--code-keyword:var(--accent-ink);--image-filter:brightness(1);--font-display:"Charis SIL", Charter, "Bitstream Charter", "Iowan Old Style", Georgia, serif;--font-text:"Charis SIL", Charter, "Bitstream Charter", "Iowan Old Style", Georgia, serif;--font-mono:"IBM Plex Mono", ui-monospace, "SF Mono", Menlo, Consolas, monospace;--track-caps:.08em;--r:1.333;--step-0:clamp(1.0625rem, 1rem + .25vw, 1.1875rem);--step--1:max(.875rem, calc(var(--step-0) / var(--r)));--step--2:max(.75rem, calc(var(--step--1) / 1.12));--step-1:calc(var(--step-0) * var(--r));--step-2:calc(var(--step-1) * var(--r));--step-3:calc(var(--step-2) * var(--r));--step-4:calc(var(--step-3) * var(--r));--step-5:clamp(3rem, 1.6rem + 5.6vw, 6.5rem);--breath-1:clamp(1.25rem, 1rem + 1vw, 2rem);--breath-2:clamp(2.5rem, 2rem + 2vw, 4rem);--breath-3:clamp(4rem, 3rem + 5vw, 8rem);--breath-4:clamp(6rem, 4rem + 9vw, 12rem);--measure:36rem;--column:46rem;--wide:64rem;--side:7.5rem;--gutter:clamp(1.25rem, 5vw, 3rem);--hair:1px;--radius:2px;--transition:.3s ease;--paper:light-dark(#f4f0e8,#14120f);--paper-2:light-dark(#ece6da,#1c1915);--ink:light-dark(#1d1a16,#ece6da);--ink-text:light-dark(#1d1a16,#ddd6c9);--ink-2:light-dark(#5f574d,#a99f91);--ink-3:light-dark(#8b8276,#756d62);--line:light-dark(#d9d0c1,#2e2a24);--accent:light-dark(#ae269d,#d34dc0);--accent-ink:light-dark(#9c068c,#f26adc);--seal:light-dark(#ae269d,#a71d97);--seal-paper:#f6efe2;--selection:light-dark(#f5d4ee,#482441);--code-string:light-dark(#33681d,#7db469);--code-number:light-dark(#894e03,#de9754);--code-function:light-dark(#295ba4,#72a7f7);--code-type:light-dark(#056768,#46b6b7)}@layer reset{*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;text-size-adjust:100%}body,h1,h2,h3,h4,p,figure,blockquote,dl,dd,ol,ul{margin:0}ol,ul{padding:0;list-style:none}img,svg{max-width:100%;display:block}img{block-size:auto}}@layer base{:root{color-scheme:light dark}html{background:var(--paper);scroll-padding-top:1.5rem}body{background:var(--paper);color:var(--ink);font:400 var(--step-0) / 1.7 var(--font-text);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-kerning:normal}@view-transition{navigation:auto}::selection{background:var(--selection)}p,li,dd{text-wrap:pretty}h1,h2,h3{text-wrap:balance;font-family:var(--font-display);font-weight:400;line-height:1.1}em,cite{font-style:italic}code{font-family:var(--font-mono);font-size:.86em}a{color:inherit;text-decoration-line:underline;text-decoration-thickness:var(--hair);text-underline-offset:.28em;text-decoration-color:color-mix(in oklab, var(--accent) 55%, transparent);transition:text-decoration-color .3s,color .3s}a:hover{color:var(--accent-ink);text-decoration-color:var(--accent)}a:focus-visible{outline:var(--hair) solid var(--accent);outline-offset:4px;text-decoration:none}[aria-current=page]{color:var(--accent-ink)}.label{font-family:var(--font-mono);font-size:var(--step--2);letter-spacing:var(--track-caps);text-transform:uppercase;color:var(--ink-2);font-weight:400}.skip{left:var(--gutter);background:var(--ink);color:var(--paper);z-index:2;padding:.5em .8em;position:absolute;top:-10rem}.skip:focus{top:1rem}.nowrap{white-space:nowrap}svg.cap{display:none}.visually-hidden{clip-path:inset(50%);white-space:nowrap;block-size:1px;inline-size:1px;position:absolute;overflow:hidden}}@layer layout{.top,.flow,.foot{width:min(100% - 2 * var(--gutter), var(--column));margin-inline:auto}.top{--column:72rem}.row{grid-template-columns:var(--side) minmax(0, 1fr);padding-block:var(--breath-1);column-gap:clamp(1.5rem,4vw,3rem);display:grid}.row+.row:not(.head,.t,.line){border-top:var(--hair) solid var(--line)}.row>.side{text-align:right;min-width:0}.row>.side:empty{display:none}.row>.side:empty+.body{grid-column:2}.row>.body{min-width:0}.row.head{text-align:center;padding-block:var(--breath-4) var(--breath-2);display:block}.row.head.sub{padding-block:var(--breath-3) var(--breath-1)}.row.head .side{text-align:center;margin-bottom:.9rem}.row.head h1{font-size:var(--step-5);letter-spacing:-.022em;font-weight:400;line-height:1}.row.head h2{font-size:var(--step-3);letter-spacing:-.012em;font-weight:400}.row.head .intro{max-width:var(--measure);color:var(--ink-2);margin:1.25rem auto 0}.row.head .intro>*+*{margin-top:1rem}.row.head .intro .lede{color:var(--ink)}.row.t{padding-block:.45rem}@media (width<40rem){.row{grid-template-columns:minmax(0,1fr);row-gap:.35rem}.row>.side{text-align:left}.row>.side:empty+.body{grid-column:1}}}@layer components{.top{padding-block:var(--breath-1);flex-wrap:wrap;align-items:center;gap:.75rem 1.5rem;display:flex}.top .home{align-items:center;gap:.75em;margin-right:auto;text-decoration:none;display:inline-flex}.top .name{font-family:var(--font-mono);font-size:var(--step--2);letter-spacing:var(--track-caps);text-transform:uppercase;font-weight:400}.top nav ul{flex-wrap:wrap;gap:.25rem clamp(1rem,3vw,2rem);display:flex}.top nav a{font-family:var(--font-mono);font-size:var(--step--2);letter-spacing:var(--track-caps);text-transform:uppercase;color:var(--ink-2);font-weight:400;text-decoration:none}.top nav a:hover,.top nav [aria-current=page]{color:var(--accent-ink)}@media (width<40rem){.top nav{flex-basis:100%}}.machine{inline-size:min(100%,34rem);margin:0 auto var(--breath-1);background:var(--code-type);padding:clamp(.75rem,3.5vw,1.75rem)}.machine svg{background:var(--paper);block-size:auto;inline-size:100%;fill:var(--code-function);shape-rendering:crispedges;display:block}.machine .cursor{animation:1.2s step-end infinite blink}@keyframes blink{50%{opacity:0}}@media (prefers-reduced-motion:reduce){.machine .cursor{animation:none}}.seals{flex-wrap:wrap;align-items:center;gap:2rem;margin-bottom:1rem;display:flex}.lede{font-family:var(--font-display);font-weight:400;font-size:var(--step-1);line-height:1.5}.links{font-size:var(--step--1);flex-wrap:wrap;gap:.4rem 1.25rem;display:flex}.row .links{margin-top:1rem}.entries{gap:.7rem;display:grid}.entry{position:relative}.entry .t{overflow-wrap:anywhere;line-height:1.45;display:block}.entry .meta{font-family:var(--font-mono);color:var(--ink-2);overflow-wrap:anywhere;font-size:.8125rem;display:block}.entry time:before{content:"· "}.events{gap:.7rem;display:grid}.event{position:relative}.event p{line-height:1.55}.src{font-family:var(--font-mono);font-size:var(--step--2);letter-spacing:var(--track-caps);text-transform:uppercase;color:var(--ink-2);margin-right:.4em;font-weight:400}.sources{font-size:var(--step--1);gap:.2rem;margin-top:1.25rem;display:grid}.more{font-size:var(--step--1);margin-top:1.1rem}.y,.d{font-family:var(--font-display);font-variant-numeric:oldstyle-nums;font-weight:400;line-height:1.05}.row.year .y{font-size:var(--step-3);color:var(--accent)}.row.day .d{font-family:var(--font-mono);color:var(--ink-2);font-size:.8125rem;line-height:1.9}.row.t .y{font-size:var(--step-1);color:var(--ink-2)}.row.t .body{justify-content:space-between;align-items:baseline;gap:.6rem;display:flex}.row.line{text-align:center;padding-block:var(--breath-1);flex-direction:column;gap:.75rem;display:flex}.row.line .body{order:1}.row.line .side{text-align:center;order:2}.row.line .side .y{font-size:var(--step-1);color:var(--ink-2)}.row.line .side .src{margin:.2rem 0 0;display:block}.row.line blockquote p{font-family:var(--font-display);font-style:italic;font-weight:400;font-size:var(--step-3);text-wrap:balance;line-height:1.12}.row.line+.row.line:before{content:"";aspect-ratio:1;background:var(--accent);inline-size:.4rem;margin:0 auto var(--breath-1);border-radius:50%;order:0}.row.line.said blockquote p{font-size:var(--step-2)}.row.onward{padding-block:var(--breath-2) var(--breath-1);border-top:0;display:block}.row.onward .links{font-family:var(--font-display);font-size:var(--step-2);justify-content:center;gap:.5rem clamp(1.5rem,5vw,3rem);margin:0;padding:0;list-style:none}.row.sealed{padding-block:var(--breath-1) var(--breath-2);border-top:0;justify-content:center;display:flex}.stamp{inline-size:clamp(6.5rem,16vw,10rem);display:block;rotate:-4deg}.stamp .ink{fill:var(--seal)}.stamp .paper{fill:var(--seal-paper)}.seal-mark{background:var(--seal);shape-rendering:crispedges;flex:none;inline-size:2.625rem;display:block}.seal-mark path{fill:none;stroke:var(--seal-paper)}.filter ul,.years ul{flex-wrap:wrap;justify-content:center;gap:.35rem 1.1rem;display:flex}.filter{margin-top:var(--breath-1);font-size:var(--step--1)}.years{font-family:var(--font-display);font-size:var(--step-1);font-variant-numeric:oldstyle-nums;margin-top:.75rem}.years a{color:var(--ink-2);text-decoration:none}.years a:hover{color:var(--accent-ink)}.prose{max-width:var(--measure);margin-inline:auto}.prose>*+*{margin-top:1.1em}.prose>p:first-child:first-letter{float:left;font-family:var(--font-display);color:var(--accent);padding:.06em .1em 0 0;font-size:4.1em;font-weight:400;line-height:.82}.prose blockquote{font-family:var(--font-display);font-style:italic;font-size:var(--step-1);color:var(--ink-2);padding-inline:1.5em;line-height:1.4}.plain{gap:.3rem;display:grid}.doi{font-size:var(--step--1);color:var(--ink-2);overflow-wrap:anywhere}.foot{text-align:center;padding-block:var(--breath-4) var(--breath-2)}.foot .mail{font-family:var(--font-display);font-size:var(--step-3);overflow-wrap:anywhere;font-weight:400;line-height:1.1}.foot .elsewhere{margin-top:var(--breath-1);font-family:var(--font-mono);font-size:var(--step--2);letter-spacing:var(--track-caps);text-transform:uppercase;flex-wrap:wrap;justify-content:center;gap:.5rem 1.75rem;font-weight:400;display:flex}.colophon{margin-top:var(--breath-2);color:var(--ink-2);font-size:var(--step--2)}.rules{gap:var(--breath-1);counter-reset:r;display:grid}.rules li{counter-increment:r;grid-template-columns:2.5rem 1fr;gap:1rem;display:grid}.rules li:before{content:counter(r, lower-roman);font-family:var(--font-display);color:var(--accent-ink);font-style:italic;font-size:var(--step-1);text-align:right;line-height:1.2}.swatches{grid-template-columns:repeat(auto-fill,minmax(9rem,1fr));gap:1.5rem;display:grid}.swatch{font-size:var(--step--1);line-height:1.45}.swatch .chip{border:var(--hair) solid var(--line);border-radius:2px;block-size:4rem;margin-bottom:.6rem}.palette-table{gap:.5rem;margin-top:1.2rem;display:grid}.palette-row{background:var(--paper);color:var(--ink);border:var(--hair) solid var(--line);border-radius:var(--radius);grid-template-columns:auto minmax(0,1fr);align-items:center;gap:1rem;padding:.7rem .9rem;display:grid}.palette-row p{color:var(--ink-2);margin:0}.palette-row strong{color:var(--ink);font-weight:700}.palette-swatch{border:var(--hair) solid var(--line);border-radius:var(--radius);display:flex;overflow:hidden}.palette-swatch i{block-size:2.4rem;inline-size:1.1rem}.row.spec{border-top:var(--hair) solid var(--line);align-items:baseline;padding-block:1rem}.row.spec .body{overflow-wrap:anywhere}.pixel-word{block-size:2.1875rem;fill:var(--ink);shape-rendering:crispedges;margin-bottom:.9rem;display:block}.is-style .row.t .side code{overflow-wrap:anywhere}.pages{font-size:var(--step--1);flex-wrap:wrap;justify-content:center;gap:.4rem 1.25rem;margin-top:1.25rem;display:flex}}@layer writing{.types ul{font-size:var(--step--1);flex-wrap:wrap;justify-content:center;gap:.35rem 1.1rem;margin-top:.75rem;display:flex}.types a{color:var(--ink-2);text-decoration:none}.types a:hover,.types [aria-current=page]{color:var(--accent-ink)}.types .count{font-variant-numeric:oldstyle-nums;color:var(--ink-2);margin-left:.25em}.entry .kind{font-family:var(--font-mono);font-size:var(--step--2);letter-spacing:var(--track-caps);text-transform:uppercase;color:var(--ink-2);margin-right:.5em;font-weight:400}.entry.note .t,.entry.quote .t{font-family:var(--font-display);font-size:var(--step-1);font-weight:400;line-height:1.3}.entry.quote .t{font-style:italic}.entry.quote .t a:before{content:"“";color:var(--accent)}.entry.quote .t a:after{content:"”";color:var(--accent)}.entry .t a{text-decoration-color:color-mix(in oklab, var(--accent) 35%, transparent)}.entry.photo{grid-template-columns:4.5rem minmax(0,1fr);align-items:start;column-gap:1rem;display:grid}.entry.photo .thumb{aspect-ratio:1;object-fit:cover;border-radius:var(--radius);inline-size:4.5rem;filter:var(--image-filter);grid-row:span 2}.entry.link .t a:after{content:" ↗";color:var(--ink-3)}.prose{max-width:var(--measure);margin-inline:auto}.prose>*+*{margin-top:1.1em}.prose h2{font-size:var(--step-2);margin-top:2em;font-weight:400;line-height:1.15}.prose h3{font-size:var(--step-1);margin-top:1.8em;font-weight:500;line-height:1.2}.prose h4{font-family:var(--font-mono);font-size:var(--step--1);letter-spacing:var(--track-caps);text-transform:uppercase;margin-top:1.8em;font-weight:400}.prose ul,.prose ol{padding-left:1.25em}.prose ul{list-style:outside}.prose ol{list-style:decimal}.prose li+li{margin-top:.35em}.prose li::marker{color:var(--accent)}.prose hr{text-align:center;border:0;margin-block:2.5em}.prose hr:after{content:"· · ·";letter-spacing:.6em;color:var(--accent)}.prose blockquote{font-family:var(--font-display);font-style:italic;font-size:var(--step-1);color:var(--ink-2);padding-inline:1.5em;line-height:1.4}.prose blockquote p+p{margin-top:.8em}.prose code{font-family:var(--font-mono);background:var(--paper-2);border-radius:var(--radius);padding:.08em .3em;font-size:.86em}.prose pre{font-size:var(--step--1);background:var(--paper-2);border-radius:var(--radius);padding:1em 1.25em;line-height:1.55;overflow-x:auto}.prose pre code{background:0 0;padding:0}.prose a{overflow-wrap:anywhere}.prose img{filter:var(--image-filter)}.prose figure,.figure{margin-block:2em}.prose figure img,.figure img{border-radius:var(--radius);block-size:auto;inline-size:100%;display:block}.prose figcaption,.figure figcaption{font-size:var(--step--1);color:var(--ink-2);text-align:center;text-wrap:balance;margin-top:.6rem;line-height:1.45}.blog-table-scroll{overflow-x:auto}.prose table,.blog-figure-table{border-collapse:collapse;inline-size:100%;font-size:var(--step--1);font-variant-numeric:tabular-nums}.prose th,.prose td{text-align:left;border-bottom:var(--hair) solid var(--line);vertical-align:top;padding:.5em .75em .5em 0}.prose thead th{font-family:var(--font-mono);font-size:var(--step--2);letter-spacing:var(--track-caps);text-transform:uppercase;color:var(--ink-2);border-bottom-color:var(--ink-3);font-weight:400}.blog-diagram{border-block:var(--hair) solid var(--line);padding-block:1.25rem}.blog-chart-title{font-family:var(--font-display);font-size:var(--step-1);margin-bottom:1rem;line-height:1.2}.blog-bars{gap:.7rem;display:grid}.blog-bar-row,.blog-bars>div{font-size:var(--step--1);grid-template-columns:minmax(0,1fr) auto;align-items:baseline;column-gap:1rem;display:grid}.blog-bar-row dd,.blog-bars dd{font-variant-numeric:tabular-nums;color:var(--accent-ink)}.blog-bar-track{background:var(--line);border-radius:1px;grid-column:1/-1;block-size:.4rem;margin-top:.2rem}.blog-bar{block-size:100%;inline-size:var(--bar-value);background:var(--accent);border-radius:1px;display:block}.blog-stack{border-radius:1px;block-size:.6rem;display:flex;overflow:hidden}.blog-stack>span{inline-size:var(--bar-value);background:var(--series-colour)}.blog-legend{font-size:var(--step--2);flex-wrap:wrap;gap:.3rem 1rem;margin-bottom:.9rem;display:flex}.blog-legend i{aspect-ratio:1;background:var(--series-colour);inline-size:.7em;margin-right:.35em;display:inline-block}.blog-figure-note{font-size:var(--step--1);color:var(--ink-2);margin-top:.75rem}.blog-diagram details{font-size:var(--step--1);margin-top:1rem}.blog-diagram summary{cursor:pointer;color:var(--ink-2)}.video-card{aspect-ratio:16/9;background:var(--paper-2);border:var(--hair) solid var(--line);border-radius:var(--radius);text-align:center;place-items:center;gap:.75rem;padding:1.5rem;text-decoration:none;display:grid}.video-card .play{aspect-ratio:1;background:var(--accent);border-radius:50%;place-items:center;inline-size:3.25rem;display:grid}.video-card .play:after{content:"";border-style:solid;border-width:.55rem 0 .55rem .9rem;border-color:transparent transparent transparent var(--paper);margin-left:.2rem}.video-card .where{font-size:var(--step--1);color:var(--ink-2)}.link-card{max-width:var(--measure);border:var(--hair) solid var(--line);border-radius:var(--radius);margin:0 auto;padding:1.25rem 1.5rem;text-decoration:none;display:block}.link-card .title{font-family:var(--font-display);font-size:var(--step-2);line-height:1.15}.link-card .host{font-size:var(--step--1);color:var(--ink-2);margin-top:.4rem;display:block}.link-card:hover .title{color:var(--accent-ink)}.prose figure.quote{border-left:2px solid var(--accent);margin-block:2em;padding-left:1.25rem}.prose figure.quote blockquote{font-family:var(--font-display);font-style:normal;font-size:var(--step-1);color:var(--ink);padding:0;line-height:1.4}.prose figure.quote blockquote p+p{margin-top:.6em}.prose figure.quote figcaption{text-align:left;font-size:var(--step--1);color:var(--ink-2);margin-top:.6rem}.prose mark{background:color-mix(in oklab, var(--accent) 16%, transparent);color:inherit;border-radius:1px;padding:.05em .1em}.prose .entity{border-block:var(--hair) solid var(--line);justify-items:center;gap:.2rem;margin-block:2em;padding-block:1.25rem;display:grid}.entity-name{font-family:var(--font-display);font-size:var(--step-3);letter-spacing:.01em;font-weight:400;line-height:1}.entity-note{font-size:var(--step--1);color:var(--ink-2)}.prose .document{border:var(--hair) solid var(--line);border-left:3px solid var(--accent);border-radius:var(--radius);gap:.35rem;margin-block:2em;padding:1.25rem 1.5rem;display:grid}.document-kind{font-family:var(--font-mono);font-size:var(--step--2);letter-spacing:var(--track-caps);text-transform:uppercase;color:var(--ink-2);font-weight:400}.document-title{font-family:var(--font-display);font-size:var(--step-2);line-height:1.15}.document-by{font-size:var(--step--1);color:var(--ink-2)}.blog-bar-track.blog-stack{display:flex;overflow:hidden}.blog-bar-track.blog-stack>span{block-size:100%;inline-size:var(--bar-value);background:var(--series-colour);display:block}.prose .blog-legend{padding:0;list-style:none}.prose .blog-legend li+li{margin-top:0}.row.head h1{font-size:min(var(--step-5), 13vw);hyphens:auto}.steps{counter-reset:step;grid-template-columns:repeat(auto-fit,minmax(min(100%,8.5rem),1fr));gap:.75rem;padding:0;list-style:none;display:grid}.prose .steps li+li{margin-top:0}.steps li{border:var(--hair) solid var(--line);border-top:2px solid var(--accent);border-radius:var(--radius);counter-increment:step;align-content:start;gap:.3rem;padding:.9rem 1rem;display:grid;position:relative}.steps .step-group{font-family:var(--font-mono);font-size:var(--step--2);letter-spacing:var(--track-caps);text-transform:uppercase;color:var(--ink-2);font-weight:400}.steps .step-name{font-family:var(--font-display);font-size:var(--step-1);line-height:1.1}.steps .step-name:before{content:counter(step, lower-roman) ". ";color:var(--accent-ink);font-style:italic}.steps .step-text{font-size:var(--step--1);color:var(--ink-2);line-height:1.45}.cycle{inline-size:100%;max-inline-size:34rem;margin-inline:auto;display:block;overflow:visible}.cycle .ring{fill:none;stroke:var(--ink-3);stroke-width:1px}.cycle .hub{fill:none;stroke:var(--line);stroke-width:1px;stroke-dasharray:1 5;stroke-linecap:round}.cycle .spoke{stroke:var(--line);stroke-width:1px}.cycle .node{fill:var(--accent)}.cycle text{fill:var(--ink);font-family:var(--font-display);font-size:17px}.blog-bars>div:has(.blog-stack){grid-template-columns:4.5rem minmax(0,1fr);align-items:center}.blog-bars>div>dd:has(>.blog-stack){inline-size:100%}.blog-stack>span{block-size:100%;display:block}.prose .link-card.in-text{max-width:none;margin-block:1.5em}.link-card .desc{font-size:var(--step--1);color:var(--ink-2);margin-top:.45rem;line-height:1.5;display:block}}@layer reader,type;@layer motion{@media (prefers-reduced-motion:no-preference){@supports (animation-timeline:view()){.flow>.row:not(.head){animation:cubic-bezier(.2,.7,.2,1) both rise view();animation-range:entry cover 22%}@keyframes rise{0%{opacity:0;translate:0 1rem}to{opacity:1;translate:0}}}}}@layer print{@media print{:root{color-scheme:light}.top nav,.skip{display:none}.row.head{padding-block:2rem 1rem}a[href^=http]:after{content:" (" attr(href) ")";color:#555;overflow-wrap:anywhere;font-size:.8em}}}:root.js:not(.ready) *,:root.js:not(.ready) :before,:root.js:not(.ready) :after{transition:none!important}:root[data-theme=paper]{color-scheme:light}:root[data-theme=night]{color-scheme:dark}@media (prefers-color-scheme:dark){:root:not([data-theme=paper],[data-theme=sepia]){--image-filter:brightness(.84) contrast(1.06)}}:root[data-theme=night]{--image-filter:brightness(.84) contrast(1.06)}:root[data-theme=sepia]{color-scheme:light;--paper:#efe5d2;--paper-2:#e5d8c0;--ink:#33291d;--ink-text:#33291d;--ink-2:#5f513c;--ink-3:#887a62;--line:#d6c8ad;--selection:#e9cdb3}
