@font-face{font-family:ibm plex mono;src:url(../fonts/plex-mono-400.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:ibm plex mono;src:url(../fonts/plex-mono-400-italic.woff2)format("woff2");font-weight:400;font-style:italic;font-display:swap}@font-face{font-family:ibm plex mono;src:url(../fonts/plex-mono-600.woff2)format("woff2");font-weight:600;font-style:normal;font-display:swap}@font-face{font-family:ibm plex mono;src:url(../fonts/plex-mono-700.woff2)format("woff2");font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:ibm plex sans;src:url(../fonts/plex-sans.woff2)format("woff2-variations");font-weight:100 700;font-stretch:75% 100%;font-style:normal;font-display:swap}:root{--navy:#07376f;--paper:#f6f9f8;--panel-bg:var(--navy);--panel-fg:var(--paper);--sheet-bg:var(--paper);--sheet-fg:var(--navy);--mono:"IBM Plex Mono", ui-monospace, Menlo, Consolas, monospace;--sans:"IBM Plex Sans", "Helvetica Neue", Arial, sans-serif;--panel-w:clamp(17rem, 31.4vw, 30rem);--edge:2.25rem;--measure:38.5rem;color-scheme:light}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--panel-bg:var(--paper);--panel-fg:var(--navy);--sheet-bg:var(--navy);--sheet-fg:var(--paper);color-scheme:dark}}:root[data-theme=dark]{--panel-bg:var(--paper);--panel-fg:var(--navy);--sheet-bg:var(--navy);--sheet-fg:var(--paper);color-scheme:dark}.panel,.sheet,.theme-toggle,.edge-copy--page{--soft:color-mix(in srgb, var(--fg) 58%, var(--bg));--faint:color-mix(in srgb, var(--fg) 24%, var(--bg));--tint:color-mix(in srgb, var(--fg) 5%, var(--bg));--field-line:var(--fg)}.panel{--bg:var(--panel-bg);--fg:var(--panel-fg)}.sheet,.theme-toggle,.edge-copy--page{--bg:var(--sheet-bg);--fg:var(--sheet-fg)}*,*::before,*::after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;text-size-adjust:100%}body{margin:0;background:var(--sheet-bg);color:var(--sheet-fg);font-family:var(--mono);-webkit-font-smoothing:antialiased}a{color:inherit}:focus-visible{outline:2px solid currentColor;outline-offset:3px}::selection{background:var(--sheet-fg);color:var(--sheet-bg)}.vh{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.skip{position:absolute;left:1rem;top:-4rem;z-index:20;background:var(--sheet-bg);color:var(--sheet-fg);font:600 .75rem/1 var(--mono);letter-spacing:.15em;text-transform:uppercase;padding:.75rem;border:1px solid}.skip:focus{top:1rem}.panel{position:fixed;inset:0 auto 0 0;width:var(--panel-w);background:var(--bg);color:var(--fg);overflow:hidden;z-index:1}.field{position:absolute;inset:0}.field canvas{display:block;width:100%;height:100%;cursor:pointer}.field[data-failed]{display:none}.cross{position:absolute;width:17px;height:17px;transform:translate(-50%,-50%);pointer-events:none}.cross::before,.cross::after{content:"";position:absolute;background:var(--fg)}.cross::before{left:8px;top:0;width:1px;height:17px}.cross::after{top:8px;left:0;height:1px;width:17px}.cross--tl{left:var(--edge);top:var(--edge)}.cross--tr{right:var(--edge);top:var(--edge);transform:translate(50%,-50%)}.cross--bl{left:var(--edge);bottom:var(--edge);transform:translate(-50%,50%)}.cross--br{right:var(--edge);bottom:var(--edge);transform:translate(50%,50%)}.brand{position:absolute;left:var(--edge);top:4.4rem;display:flex;gap:1rem;align-items:flex-start}.wordmark{writing-mode:vertical-rl;display:flex;gap:.32em;font:700 clamp(3.4rem,7.3vw,6.9rem)/.78 var(--sans);letter-spacing:-.01em;text-decoration:none;color:var(--fg)}.wordmark span+span{font-weight:200;color:var(--soft)}.tagline{writing-mode:vertical-rl;margin:0;padding:.55rem .3rem;border:1px solid var(--fg);background:var(--bg);font:600 .66rem/1 var(--mono);letter-spacing:.22em;text-transform:uppercase}.nav{display:grid;gap:.2rem}.nav a{display:grid;grid-template-columns:auto 2.2em;align-items:baseline;justify-items:end;column-gap:.9rem;padding:.5rem .75rem;text-decoration:none;color:var(--fg)}.nav-label{font:600 1.7rem/1 var(--sans);font-stretch:88%;text-transform:uppercase;letter-spacing:.005em}.nav-num{font:.72rem/1 var(--mono);letter-spacing:.12em;color:var(--soft);justify-self:start}.nav a:hover .nav-label{text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:.18em}.nav a[aria-current]{background:var(--fg);color:var(--bg)}.nav a[aria-current] .nav-num{color:color-mix(in srgb,var(--bg) 55%,var(--fg))}.nav a[aria-current] .nav-label{text-decoration:none}.panel .nav{position:absolute;right:3rem;top:50%;transform:translateY(-50%);justify-items:end}.edge-label{position:absolute;right:var(--edge);top:25%;bottom:25%;margin:0;transform:translateX(50%);display:flex;flex-direction:column;align-items:center;gap:.9rem;color:var(--soft);pointer-events:none}.edge-label::before,.edge-label::after{content:"";flex:1;width:1px;background:var(--fg);opacity:.7}.edge-label>span{writing-mode:vertical-rl;font:.66rem/1 var(--mono);letter-spacing:.3em;text-transform:uppercase;background:var(--bg);padding-block:.2rem}.coords{position:absolute;left:calc(var(--edge) + 1.6rem);right:calc(var(--edge) + 1.6rem);bottom:var(--edge);transform:translateY(50%);margin:0;display:flex;align-items:center;gap:.9rem;font:.68rem/1 var(--mono);letter-spacing:.14em;color:var(--soft);white-space:nowrap;pointer-events:none}.coords::before,.coords::after{content:"";flex:1;height:1px;min-width:1rem;background:var(--fg);opacity:.7}.coords:empty{display:none}.edge-copy{position:absolute;right:var(--edge);bottom:var(--edge);transform:translateX(50%);margin:0;writing-mode:vertical-rl;font:600 .78rem/1 var(--mono);letter-spacing:.22em;text-transform:uppercase;color:var(--fg)}.edge-copy--page{position:fixed;right:var(--edge);z-index:2}.theme-toggle{position:fixed;top:var(--edge);right:var(--edge);z-index:3;width:2.15rem;height:2.15rem;display:grid;place-items:center;padding:0;border:1px solid var(--fg);background:var(--bg);color:var(--fg);cursor:pointer}.theme-toggle svg{width:1rem;height:1rem}.sheet{margin-left:var(--panel-w);min-height:100vh;padding:5.6rem clamp(2rem,13vw,11.6rem)7rem;background:var(--bg);color:var(--fg)}.sheet>*{max-width:var(--measure)}.meta{display:flex;flex-wrap:wrap;align-items:center;gap:.6rem 1.15rem;margin:0;font:.72rem/1.4 var(--mono);letter-spacing:.22em;text-transform:uppercase;color:var(--soft)}.meta-items{display:flex;flex-wrap:wrap;gap:.6rem 1.15rem}.meta a{text-decoration:none}.meta a:hover{color:var(--fg)}.box{display:inline-block;padding:.6rem .45rem;border:1px solid var(--fg);color:var(--fg);font:600 .68rem/1 var(--mono);letter-spacing:.08em;text-transform:uppercase;text-decoration:none}a.box:hover{background:var(--fg);color:var(--bg)}.box .count{color:var(--soft);font-weight:400;margin-left:.5em}a.box:hover .count{color:inherit}.title{margin:2.6rem 0 1.8rem;font:700 clamp(2rem,1.1rem + 2.4vw,3rem)/1.22 var(--mono);letter-spacing:-.015em;text-wrap:balance}.share{display:flex;flex-wrap:wrap;gap:.7rem;margin:0 0 4.4rem}.share .box{background:0 0;cursor:pointer;padding-inline:.6rem}.prose{font:.95rem/1.95 var(--mono)}.prose>*{margin-block:0 1.6em}.prose h2,.prose h3{font-family:var(--mono);font-weight:700;line-height:1.4;margin-block:3.2rem 1.3rem;text-wrap:balance}.prose h2{font-size:1.3rem}.prose h3{font-size:1.05rem}.prose .anchor{color:var(--faint);text-decoration:none;font-weight:400;font-size:.8em;margin-left:.5em}.prose .anchor:hover{color:var(--fg)}.prose a{text-decoration-thickness:1px;text-underline-offset:.22em;text-decoration-color:var(--soft)}.prose a:hover{text-decoration-color:initial}.prose strong{font-weight:700}.prose ul,.prose ol{padding-left:1.4em}.prose ul{list-style:none}.prose ul>li{position:relative}.prose ul>li::before{content:"";position:absolute;left:-1.2em;top:.85em;width:.38em;height:.38em;background:var(--fg)}.prose li+li{margin-top:.4em}.prose blockquote{margin-inline:0;padding:.2rem 0 .2rem 1.3rem;border-left:2px solid var(--fg);font-style:italic;color:var(--soft)}.prose hr{border:0;border-top:1px dashed var(--faint);margin:3rem 0}.prose code{font-family:var(--mono);font-size:.92em;border:1px solid var(--faint);padding:.05em .35em}.code{position:relative;border:1px solid var(--faint);background:var(--tint)}.code pre{margin:0;padding:2.4rem 1.3rem 1.3rem;overflow-x:auto;font-size:.85rem;line-height:1.7;background:0 0!important}.code pre code{border:0;padding:0;font-size:inherit}.code-copy{position:absolute;top:-1px;right:-1px;padding:.45rem .55rem;border:1px solid var(--faint);background:var(--bg);color:var(--fg);font:600 .62rem/1 var(--mono);letter-spacing:.12em;text-transform:uppercase;cursor:pointer}.code-copy:hover{border-color:var(--fg)}.prose figure{margin-inline:0;padding:.9rem;background:linear-gradient(var(--fg),var(--fg))0 0/1rem 1px no-repeat,linear-gradient(var(--fg),var(--fg))0 0/1px 1rem no-repeat,linear-gradient(var(--fg),var(--fg))100% 0/1rem 1px no-repeat,linear-gradient(var(--fg),var(--fg))100% 0/1px 1rem no-repeat,linear-gradient(var(--fg),var(--fg))0 100%/1rem 1px no-repeat,linear-gradient(var(--fg),var(--fg))0 100%/1px 1rem no-repeat,linear-gradient(var(--fg),var(--fg))100% 100%/1rem 1px no-repeat,linear-gradient(var(--fg),var(--fg))100% 100%/1px 1rem no-repeat}.prose figure img{display:block;width:100%;height:auto}.prose figcaption{display:flex;align-items:center;gap:1rem;margin:1.2rem 1rem .2rem;font:.68rem/1.5 var(--mono);letter-spacing:.18em;text-transform:uppercase;color:var(--soft);text-align:center}.prose figcaption::before,.prose figcaption::after{content:"";flex:1;min-width:1.5rem;height:1px;background:var(--soft)}.prose img{max-width:100%;height:auto}.prose table{border-collapse:collapse;width:100%;font-size:.88rem}.prose th,.prose td{text-align:left;padding:.5rem 1rem .5rem 0;border-bottom:1px solid var(--faint)}.prose th{font-weight:600;letter-spacing:.08em;text-transform:uppercase;font-size:.72rem}.prose .footnotes{font-size:.82rem;color:var(--soft)}.prose .footnotes hr{margin:3rem 0 1.5rem}.chroma .k,.chroma .kd,.chroma .kn,.chroma .kr,.chroma .kc,.chroma .kt{font-weight:700}.chroma .c,.chroma .c1,.chroma .cm,.chroma .cs{color:var(--soft);font-style:italic}.chroma .s,.chroma .s1,.chroma .s2,.chroma .sb,.chroma .sc,.chroma .m,.chroma .mi,.chroma .mf{color:var(--soft)}.post-tags{display:flex;flex-wrap:wrap;gap:.7rem;margin-top:4rem}.neighbours{display:flex;justify-content:space-between;gap:1.5rem;margin-top:3rem;padding-top:1.4rem;border-top:1px solid var(--faint);font:.72rem/1.6 var(--mono);letter-spacing:.12em;text-transform:uppercase}.neighbours a{text-decoration:none}.neighbours a:hover{text-decoration:underline}.neighbours [rel=next]{text-align:right;margin-left:auto}.entries{list-style:none;margin:4rem 0 0;padding:0}.entries li{border-bottom:1px solid var(--faint)}.entries a{display:flex;justify-content:space-between;align-items:baseline;gap:1.5rem;padding:1.5rem 0 1.4rem 1.3rem;text-decoration:none}.entries a:hover .entry-title{text-decoration:underline;text-underline-offset:.22em}.entry-title{font:600 1.02rem/1.45 var(--mono)}.entry-date{flex:none;font:.7rem/1 var(--mono);letter-spacing:.14em;color:var(--soft)}.notes{margin-top:4rem}.note{padding:0 0 2rem 1.3rem;margin-bottom:2.2rem;border-bottom:1px solid var(--faint)}.note .entry-date{display:inline-block;margin-bottom:1rem;text-decoration:none}.note .entry-date:hover{color:var(--fg)}.note .prose>:last-child{margin-bottom:0}.tag-cloud{display:flex;flex-wrap:wrap;gap:.7rem;margin-top:4rem}.empty{margin-top:4rem;font:.95rem/1.9 var(--mono)}.pager{display:flex;justify-content:space-between;margin-top:3rem}.home{overflow:hidden}.home .panel .brand{top:4.4rem}.home .sheet{position:relative;height:100vh;height:100svh;min-height:34rem;padding:0;overflow:hidden}.home .sheet>*{max-width:none}.home .nav{position:absolute;left:clamp(2.5rem,4vw,3.6rem);top:50%;transform:translateY(-50%);gap:1.1rem}.home .nav a{grid-template-columns:2.4em auto;justify-items:start;column-gap:1.2rem;padding:.4rem .6rem}.home .nav-label{font-size:clamp(2.6rem,1.4rem + 3.2vw,4.2rem);order:2}.home .nav-num{order:1;justify-self:end;font-size:.85rem}.home .sheet .edge-label{right:var(--edge)}.home .sheet .coords{left:calc(var(--edge) + 18%);right:calc(var(--edge) + 18%)}.home .sheet .coords>span,.panel .coords>span{background:var(--bg)}@media(max-width:56rem){:root{--edge:2.25rem}.inner .panel{position:relative;width:auto;height:19rem}.inner .brand{top:3.3rem;left:2.6rem;gap:.7rem}.inner .wordmark{font-size:1.85rem}.inner .tagline{font-size:.5rem;padding:.4rem .2rem}.inner .panel .nav{right:4.2rem;top:49%;gap:0}.inner .panel .nav a{padding:.32rem .6rem;column-gap:.7rem}.inner .panel .nav-label{font-size:1.05rem}.inner .panel .nav-num{font-size:.62rem}.inner .panel .edge-label{top:auto;bottom:var(--edge);left:calc(var(--edge) + 1.2rem);right:calc(var(--edge) + 1.2rem);transform:translateY(50%);flex-direction:row}.inner .panel .edge-label::before,.inner .panel .edge-label::after{width:auto;height:1px;min-width:.5rem}.inner .panel .edge-label>span{writing-mode:horizontal-tb;font-size:.55rem;padding-inline:.2rem;white-space:nowrap}.inner .panel .coords{left:auto;right:var(--edge);top:4.6rem;bottom:4.6rem;transform:translateX(50%);flex-direction:column;font-size:.55rem}.inner .panel .coords::before,.inner .panel .coords::after{width:1px;height:auto;min-width:0;min-height:.6rem}.inner .panel .coords>span{writing-mode:vertical-rl}.inner .sheet{margin-left:0;padding:5.25rem 1.5rem 6rem;min-height:0}.inner .theme-toggle{position:absolute;top:calc(19rem + 5.25rem);right:1.5rem}.inner .edge-copy--page{position:static;display:block;margin:0 1.5rem 3rem auto;width:max-content;transform:none}.meta{gap:1.4rem 1.15rem}.meta-items{flex-basis:100%}.title{margin-top:2.2rem}.entries a{padding-left:0;flex-direction:column;gap:.6rem}.note{padding-left:0}.home .panel{width:31.5vw}.home .brand{left:50%;transform:translateX(-50%);top:auto;bottom:30%;flex-direction:row;gap:.8rem}.home .wordmark{font-size:clamp(2rem,9vw,3.4rem)}.home .tagline{font-size:.5rem;padding:.45rem .2rem}.home .panel .edge-copy{font-size:.68rem;bottom:var(--edge)}.home .sheet{margin-left:31.5vw}.home .nav{left:1.6rem;gap:.6rem}.home .nav a{column-gap:.8rem}.home .nav-label{font-size:clamp(1.6rem,7.2vw,2.6rem)}.home .nav-num{font-size:.62rem}.home .sheet .edge-label,.home .sheet .coords{display:none}}@media(prefers-reduced-motion:no-preference){.nav a,.box,.theme-toggle{transition:background-color .15s,color .15s}}@media print{.panel,.theme-toggle,.share,.edge-copy{display:none}.sheet{margin:0;padding:0}}.note-body{margin:2.6rem 0 3rem}.feed-link{margin-top:3rem}