@font-face{font-family:Archivo Variable;font-style:normal;font-display:swap;font-weight:100 900;font-stretch:62% 125%;src:url(/_astro/archivo-vietnamese-wdth-normal.rJmnGBSt.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Archivo Variable;font-style:normal;font-display:swap;font-weight:100 900;font-stretch:62% 125%;src:url(/_astro/archivo-latin-ext-wdth-normal.7khWdh9v.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Archivo Variable;font-style:normal;font-display:swap;font-weight:100 900;font-stretch:62% 125%;src:url(/_astro/archivo-latin-wdth-normal.DY7AcnAa.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Newsreader Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/_astro/newsreader-vietnamese-opsz-normal.BjhtXyW2.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Newsreader Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/_astro/newsreader-latin-ext-opsz-normal.BQn1nviT.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Newsreader Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/_astro/newsreader-latin-opsz-normal.s-izfB6B.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Newsreader Variable;font-style:italic;font-display:swap;font-weight:200 800;src:url(/_astro/newsreader-vietnamese-opsz-italic.DTr-ymY4.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Newsreader Variable;font-style:italic;font-display:swap;font-weight:200 800;src:url(/_astro/newsreader-latin-ext-opsz-italic.CSPGnFdO.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Newsreader Variable;font-style:italic;font-display:swap;font-weight:200 800;src:url(/_astro/newsreader-latin-opsz-italic.kJKFiXvB.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-mono-latin-400-normal.DMJ8VG8y.woff2)format("woff2"),url(/_astro/ibm-plex-mono-latin-400-normal.CvHOgSBP.woff)format("woff")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/ibm-plex-mono-latin-500-normal.DSY6xOcd.woff2)format("woff2"),url(/_astro/ibm-plex-mono-latin-500-normal.CB9ihrfo.woff)format("woff")}:root{color-scheme:light dark;--paper:light-dark(#f2f3ef,#0f1311);--paper-2:light-dark(#e6e9e3,#171d1a);--ink:light-dark(#17201b,#d3d9d4);--ink-2:light-dark(#4b5750,#a5b0a8);--ink-3:light-dark(#616964,#88908a);--rule:light-dark(#ccd2cb,#29322d);--orange:light-dark(#bf3402,#fe6c33);--orange-led:light-dark(#e8331c,#ff4a2e);--amber:light-dark(#8f5c03,#dc9a2a);--amber-led:light-dark(#b47506,#ffb31f);--green:light-dark(#05773b,#3fbf6f);--green-led:light-dark(#15964f,#3fcf72);--teal:light-dark(#01727c,#2ab8c5);--teal-led:light-dark(#0c909c,#33d6e3);--violet:light-dark(#7d43dd,#a884ff);--violet-led:light-dark(#9762fd,#b392ff);--magenta:light-dark(#c60676,#ff6aae);--magenta-led:light-dark(#e93b92,#ff63ad);--accent:var(--orange);--accent-led:var(--orange-led);--led:light-dark(#e8331c,#ff4a2e);--led-off:#3b1e19;--bezel:#1a1110;--turbo-on:#3fcf72;--turbo-off:#34443a;--turbo-at:1.3s;--font-display:"Archivo Variable", "Arial Narrow", sans-serif;--font-body:"Newsreader Variable", Georgia, serif;--font-mono:"IBM Plex Mono", ui-monospace, "Cascadia Mono", monospace;--measure:36rem;--wide:48rem;--frame-wide:76rem;--gutter:1rem}:root[data-mode=light]{color-scheme:light}:root[data-mode=dark]{color-scheme:dark}:root[data-theme=contrast]{--paper:light-dark(#fff,#000);--paper-2:light-dark(#f1f1f1,#161616);--ink:light-dark(#000,#fff);--ink-2:light-dark(#1c1c1c,#ebebeb);--ink-3:light-dark(#383838,#c8c8c8);--rule:light-dark(#757575,#8c8c8c);--orange:light-dark(#8f2f02,#ff9f7d);--amber:light-dark(#6d4803,#f6a700);--green:light-dark(#035c2d,#46cf79);--teal:light-dark(#06585f,#07cada);--violet:light-dark(#6623c1,#c0abfe);--magenta:light-dark(#9c005b,#ff97c1);--orange-led:var(--orange);--amber-led:var(--amber);--green-led:var(--green);--teal-led:var(--teal);--violet-led:var(--violet);--magenta-led:var(--magenta)}:root[data-theme=phosphor]{color-scheme:dark;--paper:#0c0800;--paper-2:#1a1204;--ink:#ffb000;--ink-2:#e09a10;--ink-3:#b07a1a;--rule:#3a2a0c;--orange:#ffd166;--amber:#ffd166;--green:#ffd166;--teal:#ffd166;--violet:#ffd166;--magenta:#ffd166;--orange-led:#ffd166;--amber-led:#ffb000;--green-led:#c48a1e;--teal-led:#ffb000;--violet-led:#ffb000;--magenta-led:#ffb000;--font-display:var(--font-mono);--font-body:var(--font-mono)}[data-accent=orange]{--accent:var(--orange);--accent-led:var(--orange-led)}[data-accent=amber]{--accent:var(--amber);--accent-led:var(--amber-led)}[data-accent=green]{--accent:var(--green);--accent-led:var(--green-led)}[data-accent=teal]{--accent:var(--teal);--accent-led:var(--teal-led)}[data-accent=violet]{--accent:var(--violet);--accent-led:var(--violet-led)}[data-accent=magenta]{--accent:var(--magenta);--accent-led:var(--magenta-led)}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;text-size-adjust:100%}body{background:var(--paper);color:var(--ink);font-family:var(--font-body);font-optical-sizing:auto;font-kerning:normal;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;margin:0;font-size:1.1875rem;line-height:1.6}::selection{background:color-mix(in srgb, var(--accent-led) 28%, transparent)}a{color:var(--accent);text-underline-offset:.18em;text-decoration-thickness:1px}a:hover{color:color-mix(in oklab, var(--accent) 65%, var(--ink));text-decoration-thickness:2px}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:2px}img,svg{max-width:100%}.skip-link{left:var(--gutter);background:var(--ink);color:var(--paper);font-family:var(--font-mono);padding:.4rem .7rem;font-size:.85rem;position:absolute;top:-3rem}.skip-link:focus{top:.5rem}.visually-hidden{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}body:before{content:"";background:linear-gradient(90deg, var(--orange-led) 0 16.67%, var(--amber-led) 0 33.33%, var(--green-led) 0 50%, var(--teal-led) 0 66.67%, var(--violet-led) 0 83.33%, var(--magenta-led) 0);height:6px;display:block}body[data-accent]:before{background:var(--accent-led)}.frame{width:min(var(--wide), 100% - 2 * var(--gutter));margin-inline:auto}.site-header.frame,.site-footer>.frame,[data-design] main.frame{width:min(var(--frame-wide), 100% - 2 * var(--gutter))}.site-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem 1.5rem;padding-block:1.5rem 0;display:flex}.brand{color:var(--ink);align-items:center;gap:.7rem;text-decoration:none;display:inline-flex}.brand:hover{color:var(--ink)}.brand-name{font-family:var(--font-display);letter-spacing:.03em;font-size:1.35rem;font-weight:760;font-stretch:75%}.site-tools{align-items:center;gap:1.25rem;display:flex}.site-nav ul{font-family:var(--font-mono);gap:1.25rem;margin:0;padding:0;font-size:.85rem;list-style:none;display:flex}.site-nav a{color:var(--ink-2);text-decoration:none}.site-nav a:hover,.site-nav a[aria-current]{color:var(--ink);text-decoration:underline;text-decoration-color:var(--accent-led);text-underline-offset:.35em;text-decoration-thickness:2px}.site-prefs{align-items:center;gap:1.25rem;display:flex}.lang-switch ul{font-family:var(--font-mono);gap:.6rem;margin:0;padding:0;font-size:.85rem;list-style:none;display:flex}.lang-switch a{color:var(--ink-2);text-decoration:none}.lang-switch a:hover,.lang-switch [aria-current]{color:var(--ink);text-decoration:underline;text-decoration-color:var(--accent-led);text-underline-offset:.35em;text-decoration-thickness:2px}@media (width<=40rem){.site-tools{display:contents}.site-nav{order:1;width:100%}.site-nav ul{justify-content:space-between;gap:.75rem}}main{padding-block:3.5rem 4rem}.site-footer{border-top:1px solid var(--rule);color:var(--ink-3);font-family:var(--font-mono);padding-block:2rem 3rem;font-size:.82rem;line-height:1.7}.site-footer p{margin:0}.site-footer a{color:inherit}.bezel{background:var(--bezel);border-radius:4px;padding:.3rem .35rem;display:inline-flex;box-shadow:inset 0 0 0 1px #ffffff0f}.sevenseg{width:auto;height:1.6rem;display:block}.sevenseg .seg{fill:var(--led-off)}.sevenseg .seg.on{fill:var(--led);filter:drop-shadow(0 0 1.2px light-dark(transparent,color-mix(in srgb, var(--led) 70%, transparent)))}.hero-panel{justify-self:start;justify-items:start;gap:.6rem;display:grid}.turbo{font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3);align-items:center;gap:.45rem;font-size:.72rem;display:inline-flex}.turbo-led{background:var(--turbo-on);width:.55rem;height:.55rem;box-shadow:0 0 6px color-mix(in srgb, var(--turbo-on) 70%, transparent);border-radius:50%}@keyframes seg-unlit{0%,to{fill:var(--led-off);filter:none}}@keyframes seg-lit{0%,to{fill:var(--led)}}@keyframes turbo-unlit{0%,to{background:var(--turbo-off);box-shadow:none}}@media (prefers-reduced-motion:no-preference){.sevenseg .seg.turn-on{animation:seg-unlit var(--turbo-at) step-end}.sevenseg .seg.turn-off{animation:seg-lit var(--turbo-at) step-end}.turbo-led{animation:turbo-unlit var(--turbo-at) step-end}}.bezel-lg .sevenseg{height:clamp(4.5rem,14vw,7rem)}.bezel-lg{border-radius:6px;padding:.7rem .8rem}.label{font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3);margin:0 0 1.25rem;font-size:.8rem;font-weight:500}.meta{font-family:var(--font-mono);color:var(--ink-3);font-size:.84rem}.led{background:var(--accent-led);width:.6rem;height:.6rem;box-shadow:0 0 0 2px light-dark(color-mix(in srgb, var(--accent-led) 18%, transparent),transparent), 0 0 7px light-dark(transparent,color-mix(in srgb, var(--accent-led) 75%, transparent));vertical-align:.02em;border-radius:50%;margin-inline-end:.6rem;display:inline-block}.display{font-family:var(--font-display);letter-spacing:-.005em;text-wrap:balance;font-weight:760;font-stretch:75%;line-height:1.04}.badge-lang{color:var(--ink-3);font-family:var(--font-mono);letter-spacing:.08em;vertical-align:.2em;border:1px solid;border-radius:3px;margin-inline-end:.5rem;padding:0 .4rem;font-size:.72rem;display:inline-block}.badge-draft{border:1px solid var(--orange);color:var(--orange);font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;vertical-align:.2em;border-radius:3px;margin-inline-end:.5rem;padding:0 .4rem;font-size:.72rem;display:inline-block}.hero{grid-template-columns:auto 1fr;align-items:center;gap:1.5rem 2rem;margin-bottom:4.5rem;display:grid}.hero>.bezel{justify-self:start}.hero-thesis{text-wrap:pretty;max-width:28ch;margin:0;font-size:clamp(1.45rem,3.4vw,2rem);font-weight:380;line-height:1.3}.hero-byline{margin:.9rem 0 0}@media (width<=40rem){.hero{grid-template-columns:1fr}}.section+.section{margin-top:4rem}.section-more{font-family:var(--font-mono);margin:1.5rem 0 0;font-size:.85rem}.entries{margin:0;padding:0;list-style:none}.entry{grid-template-columns:9.5rem 1fr;gap:.25rem 1.5rem;padding-block:1.1rem;display:grid}.entry+.entry{border-top:1px solid var(--rule)}.entry-aside{color:var(--accent);padding-top:.45rem}.entry-title{margin:0;font-size:clamp(1.35rem,2.6vw,1.65rem)}.entry-title a{color:var(--accent);text-decoration:none}.entry-title a:hover{text-decoration:underline;text-decoration-color:var(--accent-led);text-decoration-thickness:2px}.entry-desc{color:var(--ink-2);margin:.35rem 0 0;font-size:1.05rem;line-height:1.5}.entry-source{margin:.35rem 0 0}@media (width<=40rem){.entry{grid-template-columns:1fr}.entry-aside{order:-1;padding-top:0}}.projects{grid-template-columns:repeat(auto-fill,minmax(min(100%,20rem),1fr));gap:2.5rem 2rem;margin:0;padding:0;list-style:none;display:grid}.project{flex-direction:column;display:flex}.project-shot{aspect-ratio:16/10;border:1px solid var(--rule);background:var(--paper-2);border-radius:4px;width:100%;height:auto;display:block}.project-meta{margin:.9rem 0 .35rem}.project-links{flex-wrap:wrap;gap:.3rem 1.25rem;margin:.75rem 0 0;display:flex}.quotes{max-width:var(--measure);gap:2.5rem;margin:0;padding:0;list-style:none;display:grid}.quote{margin:0}.quote blockquote{border-left:3px solid var(--accent-led);text-wrap:pretty;margin:0;padding:.2em 0 .2em 1.1em;font-size:clamp(1.4rem,3vw,1.75rem);font-style:italic;line-height:1.35}.quote blockquote p{margin:0}.quote figcaption{color:var(--accent);margin:.6rem 0 0 calc(1.1em + 3px)}.quote cite{font-style:italic}.page-header{max-width:var(--measure);margin-bottom:2.5rem}.page-header .post-title{margin-top:0}.post-header{width:min(var(--measure), 100%);margin:0 auto 3rem}.post-title{margin:.6rem 0 1rem;font-size:clamp(2.2rem,6.2vw,3.7rem)}.post-standfirst{color:var(--ink-2);text-wrap:pretty;margin:0;font-size:1.35rem;font-style:italic;line-height:1.45}.source-card{border-left:3px solid var(--accent-led);background:color-mix(in oklab, var(--accent-led) 7%, var(--paper));border-radius:0 4px 4px 0;margin-top:1.75rem;padding:.8rem 1rem .8rem 1.1rem}.source-card p{margin:0}.source-card .source-card-title{text-wrap:pretty;margin-block:.2rem;font-size:1.2rem;line-height:1.35}.source-card-title a{color:var(--accent)}.post-footer{width:min(var(--measure), 100%);border-top:1px solid var(--rule);margin:3.5rem auto 0;padding-top:1.25rem}.tags{flex-wrap:wrap;gap:.5rem;margin:0;padding:0;list-style:none;display:flex}.tags li{border:1px solid var(--accent-led);color:var(--accent);border-radius:999px;padding:.05rem .6rem}.prose{grid-template-columns:[wide-start] minmax(0, 1fr) [content-start] min(var(--measure), 100%) [content-end] minmax(0, 1fr) [wide-end];counter-reset:fig;hyphens:manual;display:grid}.prose>*{grid-column:content}.prose>.fig,.prose>table,.prose>pre{grid-column:wide}.prose p,.prose ul,.prose ol{margin:0 0 1.1em}.prose p{text-wrap:pretty}.prose li+li{margin-top:.35em}.prose ul,.prose ol{padding-left:1.3em}.prose li::marker{color:var(--accent-led)}.prose h2,.prose h3{color:var(--accent);font-family:var(--font-display);text-wrap:balance;font-weight:720;font-stretch:80%;line-height:1.15}.prose h2{margin:2.2em 0 .6em;font-size:1.6rem}.prose h3{margin:1.8em 0 .5em;font-size:1.25rem}.prose strong{font-weight:640}.prose blockquote{border-left:3px solid var(--accent-led);background:color-mix(in oklab, var(--accent-led) 7%, var(--paper));color:var(--ink-2);border-radius:0 4px 4px 0;margin:1.6em 0;padding:.7em 1em .7em 1.1em;font-style:italic}.prose .aside{background:var(--paper-2);border-radius:4px;margin:.4em 0 1.8em;padding:1rem 1.2rem 1.1rem;font-size:.95rem;line-height:1.55}.prose .aside-label{letter-spacing:.16em;text-transform:uppercase;color:var(--accent);margin:0 0 .45rem;font-size:.7rem}.aside-body>:last-child{margin-bottom:0}.prose hr{border:0;margin:2.5em 0}.prose hr:after{content:"";background:var(--accent-led);width:82px;height:5px;clip-path:path("M2.5 0H19.5L22 2.5L19.5 5H2.5L0 2.5Z M32.5 0H49.5L52 2.5L49.5 5H32.5L30 2.5Z M62.5 0H79.5L82 2.5L79.5 5H62.5L60 2.5Z");margin-inline:auto;display:block}.prose :not(pre)>code{background:color-mix(in oklab, var(--accent-led) 12%, var(--paper));font-family:var(--font-mono);border-radius:3px;padding:.08em .3em;font-size:.82em}.prose pre{background:var(--paper-2);font-family:var(--font-mono);border-radius:4px;margin:0 0 1.5em;padding:1rem 1.2rem;font-size:.85rem;line-height:1.55;overflow-x:auto}.prose table{border-collapse:collapse;margin:.5em 0 2em;font-size:.95rem;line-height:1.45;display:block;overflow-x:auto}.prose th{border-bottom:1px solid var(--ink-3);text-align:left;vertical-align:bottom;font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3);padding:0 1rem .5rem 0;font-size:.76rem;font-weight:500}.prose td{border-bottom:1px solid var(--rule);vertical-align:top;padding:.6rem 1rem .6rem 0}.prose td:first-child{white-space:nowrap;font-family:var(--font-mono);color:var(--ink-2);padding-top:.75rem;font-size:.82rem}.prose .footnotes{color:var(--ink-2);margin-top:3em;font-size:.95rem}.token.comment,.token.prolog,.token.doctype,.token.cdata{color:var(--ink-3);font-style:italic}.token.keyword,.token.selector,.token.important,.token.atrule{color:var(--violet)}.token.string,.token.char,.token.attr-value,.token.regex{color:var(--green)}.token.number,.token.boolean,.token.constant{color:var(--amber)}.token.function,.token.class-name{color:var(--teal)}.token.tag,.token.property,.token.attr-name{color:var(--magenta)}.token.punctuation,.token.operator{color:var(--ink-2)}.doc-id{display:none}[data-design=datasheet]{--rail:8rem;--rail-gap:2.5rem;background-image:radial-gradient(color-mix(in oklab, var(--ink) 9%, transparent) 1px, transparent 1.3px);background-size:22px 22px}:root[data-theme=contrast] [data-design=datasheet]{background-image:none}[data-design=datasheet] .post-header{grid-template-columns:var(--rail) minmax(0, 1fr);border:1.5px solid var(--ink);background:var(--paper);width:100%;margin:0 0 4rem;display:grid}[data-design=datasheet] .post-header>*{grid-column:2;margin:0}[data-design=datasheet] .doc-id{border-right:1.5px solid var(--ink);letter-spacing:.14em;text-transform:uppercase;flex-direction:column;grid-area:1/1/span 6;gap:.15rem;padding:.9rem 1rem;font-size:.68rem;line-height:1.7;display:flex}[data-design=datasheet] .doc-id+.meta,[data-design=datasheet] .post-standfirst+.meta{letter-spacing:.12em;text-transform:uppercase;color:var(--ink-2);padding:.65rem 1.25rem;font-size:.7rem}[data-design=datasheet] .doc-id+.meta{border-bottom:1px solid var(--ink)}[data-design=datasheet] .post-standfirst+.meta{border-top:1px solid var(--ink)}[data-design=datasheet] .post-title{letter-spacing:-.005em;text-transform:uppercase;padding:1.75rem 1.25rem 0;font-size:clamp(2.5rem,6.4vw,5.4rem);font-weight:830;font-stretch:62%;line-height:.9}[data-design=datasheet] .post-title:lang(fr){line-height:1.02}:root[data-theme=phosphor] [data-design=datasheet] .post-title{font-size:clamp(2rem,4.6vw,3.6rem);line-height:1.05}[data-design=datasheet] .post-standfirst{max-width:46rem;padding:1.25rem 1.25rem 1.75rem;font-size:clamp(1.2rem,1.9vw,1.55rem);line-height:1.4}[data-design=datasheet] .source-card{margin:0 1.25rem 1.5rem}[data-design=datasheet] .prose{grid-template-columns:[rail-start] var(--rail) [content-start] minmax(0, var(--measure)) [content-end] minmax(0, 1fr) [wide-end];column-gap:var(--rail-gap);counter-reset:fig sec}[data-design=datasheet] .prose>*{grid-column:content}[data-design=datasheet] .prose>.fig,[data-design=datasheet] .prose>table,[data-design=datasheet] .prose>pre{grid-column:content-start/wide-end}[data-design=datasheet] .prose>p:first-of-type{font-size:1.32rem;line-height:1.5}[data-design=datasheet] .prose>p:first-of-type:before{content:"Overview";float:left;width:var(--rail);margin-left:calc(-1 * (var(--rail) + var(--rail-gap)));font-family:var(--font-mono);letter-spacing:.16em;text-transform:uppercase;color:var(--ink-3);padding-top:.5rem;font-size:.66rem;line-height:1}[data-design=datasheet] .prose>p:first-of-type:lang(fr):before{content:"Aperçu"}[data-design=datasheet] .prose h2{grid-column:rail-start/wide-end;grid-template-columns:var(--rail) minmax(0, 1fr);column-gap:var(--rail-gap);border-top:1.5px solid var(--ink);counter-increment:sec;color:var(--ink);letter-spacing:.09em;text-transform:uppercase;align-items:end;margin:4rem 0 1.6rem;padding-top:.9rem;font-size:1.05rem;font-weight:760;font-stretch:75%;display:grid}[data-design=datasheet] .prose h2:before{content:counter(sec) ".0";font-family:var(--font-display);letter-spacing:-.02em;color:var(--accent-led);font-size:3.6rem;font-weight:220;font-stretch:62%;line-height:.78}[data-design=datasheet] .prose a{text-decoration-style:dotted;text-decoration-thickness:1.5px}[data-design=datasheet] .prose a:hover{text-decoration-style:solid}[data-design=datasheet] .fig-body{--mark:var(--ink);--mark-len:16px;--mark-w:1.5px;background:linear-gradient(var(--mark), var(--mark)) top left / var(--mark-len) var(--mark-w) no-repeat, linear-gradient(var(--mark), var(--mark)) top left / var(--mark-w) var(--mark-len) no-repeat, linear-gradient(var(--mark), var(--mark)) top right / var(--mark-len) var(--mark-w) no-repeat, linear-gradient(var(--mark), var(--mark)) top right / var(--mark-w) var(--mark-len) no-repeat, linear-gradient(var(--mark), var(--mark)) bottom left / var(--mark-len) var(--mark-w) no-repeat, linear-gradient(var(--mark), var(--mark)) bottom left / var(--mark-w) var(--mark-len) no-repeat, linear-gradient(var(--mark), var(--mark)) bottom right / var(--mark-len) var(--mark-w) no-repeat, linear-gradient(var(--mark), var(--mark)) bottom right / var(--mark-w) var(--mark-len) no-repeat, var(--paper-2);border-radius:0;padding:2.25rem 2rem}[data-design=datasheet] .fig figcaption{width:auto;margin:.8rem 0 0;font-size:.78rem}[data-design=datasheet] .fig figcaption:before{content:"Fig. " counter(fig, decimal-leading-zero) "   ";letter-spacing:.12em;text-transform:uppercase;color:var(--accent)}[data-design=datasheet] .prose table{border-top:1.5px solid var(--ink);border-bottom:1.5px solid var(--ink);font-size:.92rem}[data-design=datasheet] .prose th{background:var(--ink);color:var(--paper);letter-spacing:.14em;border:0;padding:.5rem .9rem;font-size:.68rem}[data-design=datasheet] .prose td{padding:.75rem .9rem}[data-design=datasheet] .prose tbody tr:nth-child(2n) td{background:color-mix(in oklab, var(--ink) 4%, transparent)}[data-design=datasheet] .prose:after{content:"— End of document —";text-align:center;font-family:var(--font-mono);letter-spacing:.24em;text-transform:uppercase;color:var(--ink-3);grid-column:content;margin-top:3rem;font-size:.7rem;line-height:1}[data-design=datasheet] .prose>.aside{grid-column:rail-start/content-end;grid-template-columns:var(--rail) minmax(0, 1fr);column-gap:var(--rail-gap);background:0 0;border-radius:0;align-items:start;padding:0;display:grid}[data-design=datasheet] .prose .aside-label{margin:1.2rem calc(-1 * var(--rail-gap)) 0 0;align-items:center;gap:.6rem;font-size:.66rem;line-height:1;display:flex}[data-design=datasheet] .aside-label:after{content:"";border-top:1px solid var(--ink);flex:1}[data-design=datasheet] .aside-body{border:1.5px solid var(--ink);background:var(--paper);padding:1rem 1.25rem 1.1rem}[data-design=datasheet] .post-footer{width:auto;max-width:var(--measure);margin-left:calc(var(--rail) + var(--rail-gap))}@media (width<=52rem){[data-design=datasheet] .post-header{grid-template-columns:minmax(0,1fr)}[data-design=datasheet] .post-header>*{grid-column:1}[data-design=datasheet] .doc-id{border-right:0;border-bottom:1px solid var(--ink);flex-flow:wrap;grid-row:auto;gap:0 1.1rem;padding:.6rem 1rem}[data-design=datasheet] .doc-id+.meta,[data-design=datasheet] .post-standfirst+.meta,[data-design=datasheet] .post-title,[data-design=datasheet] .post-standfirst{padding-inline:1rem}[data-design=datasheet] .source-card{margin-inline:1rem}[data-design=datasheet] .prose{grid-template-columns:[rail-start content-start]minmax(0,1fr)[content-end wide-end]}[data-design=datasheet] .prose>p:first-of-type:before{display:none}[data-design=datasheet] .prose h2{grid-template-columns:auto minmax(0,1fr);column-gap:1rem}[data-design=datasheet] .prose h2:before{font-size:2.6rem}[data-design=datasheet] .fig-body{padding:1.75rem 1.1rem}[data-design=datasheet] .post-footer{margin-left:0}[data-design=datasheet] .prose>.aside{grid-template-columns:minmax(0,1fr)}[data-design=datasheet] .prose .aside-label{background:var(--ink);color:var(--paper);justify-self:start;margin:0;padding:.45rem .65rem .4rem}[data-design=datasheet] .aside-label:after{display:none}}[data-design=frontpage] .post-header{border-bottom:1px solid var(--ink);grid-template-columns:minmax(0,1fr) auto;align-items:end;column-gap:3rem;width:100%;margin:0 0 4.5rem;padding-bottom:2.5rem;display:grid}[data-design=frontpage] .post-header>*{grid-column:1/-1}[data-design=frontpage] .post-title{letter-spacing:-.025em;margin:1.75rem 0 2.25rem;font-size:clamp(3rem,9.6vw,8.6rem);font-weight:880;font-stretch:62%;line-height:.86}[data-design=frontpage] .post-standfirst{max-width:46rem;color:var(--ink);font-variation-settings:"opsz" 72;grid-column:1;margin:0;font-size:clamp(1.35rem,2.7vw,2.15rem);font-weight:320;line-height:1.22}[data-design=frontpage] .post-standfirst+.meta{text-align:right;grid-column:2;margin:0}[data-design=frontpage] .prose{counter-reset:fig sec}[data-design=frontpage] .prose>p:first-of-type{font-size:1.3rem;line-height:1.55}[data-design=frontpage] .prose>p:first-of-type:first-letter{float:left;color:var(--accent-led);font-family:var(--font-display);margin:.04em .09em 0 -.03em;font-size:5.4em;font-weight:900;font-stretch:62%;line-height:.76}[data-design=frontpage] .prose>p:first-of-type:first-line{font-family:var(--font-display);letter-spacing:.05em;text-transform:uppercase;font-size:.86em;font-weight:640;font-stretch:100%}[data-design=frontpage] .prose h2{border-top:6px solid var(--accent-led);counter-increment:sec;color:var(--ink);font-family:var(--font-body);font-variation-settings:"opsz" 72;letter-spacing:-.015em;grid-column:wide;margin:5rem 0 2rem;padding-top:1.1rem;font-size:clamp(2.1rem,4.4vw,3.6rem);font-style:italic;font-weight:380;font-stretch:100%;line-height:1.02}[data-design=frontpage] .prose h2:before{content:counter(sec, decimal-leading-zero) " / ";font-family:var(--font-mono);letter-spacing:.2em;color:var(--accent);margin-bottom:.8rem;font-size:.85rem;font-style:normal;line-height:1;display:block}[data-design=frontpage] .fig-body{background:color-mix(in oklab, var(--accent-led) 9%, var(--paper-2));border-radius:0;padding:clamp(1.5rem,4vw,3rem)}[data-design=frontpage] .prose th{border-bottom:2px solid var(--ink);color:var(--ink)}[data-design=frontpage] .prose .aside{border-top:6px solid var(--accent-led);background:color-mix(in oklab, var(--accent-led) 9%, var(--paper-2));border-radius:0;padding:1.1rem 1.4rem 1.3rem;font-size:1.02rem}@media (width<=52rem){[data-design=frontpage] .post-header{grid-template-columns:minmax(0,1fr)}[data-design=frontpage] .post-standfirst+.meta{text-align:left;grid-column:1;margin-top:1.25rem}}[data-design=margins]{--margin-gap:3.5rem}[data-design=margins] main.frame{width:min(70rem, 100% - 2 * var(--gutter))}[data-design=margins] .post-header{width:100%;max-width:46rem;margin:0 0 3.5rem}[data-design=margins] .post-header>.meta{font-family:var(--font-body);font-variant:small-caps;letter-spacing:.07em;text-transform:lowercase;color:var(--ink-2);font-size:1.05rem}[data-design=margins] .badge-draft{font-variant:normal}[data-design=margins] .post-title{font-family:var(--font-body);font-variation-settings:"opsz" 72;letter-spacing:-.022em;margin:1rem 0 1.25rem;font-size:clamp(2.5rem,5.6vw,4.6rem);font-weight:420;font-stretch:100%;line-height:1.02}[data-design=margins] .post-standfirst{font-variation-settings:"opsz" 36;font-size:clamp(1.25rem,2.2vw,1.6rem);line-height:1.38}[data-design=margins] .prose{column-gap:var(--margin-gap);counter-reset:fig sec;font-variant-numeric:oldstyle-nums proportional-nums;grid-template-columns:[content-start wide-start]minmax(0,38rem)[content-end margin-start]minmax(0,1fr)[margin-end wide-end];font-size:1.03em}[data-design=margins] .prose>*{grid-column:content}[data-design=margins] .prose>.fig,[data-design=margins] .prose>table{grid-column:wide}[data-design=margins] .prose>p:first-of-type:first-letter{float:left;color:var(--accent);font-variation-settings:"opsz" 72;margin:.06em .1em 0 0;font-size:4.3em;font-weight:400;line-height:.8}[data-design=margins] .prose>p:first-of-type:first-line{font-variant:small-caps;letter-spacing:.04em}[data-design=margins] .prose h2{counter-increment:sec;color:var(--ink);font-family:var(--font-body);font-variation-settings:"opsz" 48;letter-spacing:-.01em;margin:2.8em 0 .8em;font-size:1.95rem;font-style:italic;font-weight:400;font-stretch:100%;line-height:1.15}[data-design=margins] .prose h2:before{content:counter(sec, upper-roman) ". ";letter-spacing:.06em;color:var(--accent);font-size:.78em;font-style:normal}[data-design=margins] .prose a{text-decoration-color:color-mix(in oklab, var(--accent) 45%, transparent);text-decoration-thickness:1px}[data-design=margins] .fig{column-gap:var(--margin-gap);grid-template-columns:minmax(0,38rem) minmax(0,1fr);align-items:end;display:grid}[data-design=margins] .fig-body{border-block:1px solid var(--ink-3);background:0 0;border-radius:0;grid-column:1;padding:1.5rem 0}[data-design=margins] .fig figcaption{width:auto;font-family:var(--font-body);grid-column:2;margin:0 0 .25rem;font-size:1rem;font-style:italic;line-height:1.45}[data-design=margins] .fig figcaption:before{content:"Figure " counter(fig) ". ";font-variant:small-caps;letter-spacing:.06em;text-transform:lowercase;color:var(--accent);font-style:normal}[data-design=margins] .prose table{border-top:2px solid var(--ink);border-bottom:2px solid var(--ink);font-size:1rem}[data-design=margins] .prose th{border-bottom:1px solid var(--ink);color:var(--ink);font-family:var(--font-body);font-variant:small-caps;letter-spacing:.06em;text-transform:lowercase;font-size:1rem}[data-design=margins] .prose td{border-bottom:0}[data-design=margins] .prose td:first-child{font-family:var(--font-body);font-size:1rem}[data-design=margins] .prose .aside{border-left:1px solid var(--accent);background:0 0;border-radius:0;padding:.15rem 0 .15rem 1.25rem;font-size:.97em}[data-design=margins] .prose .aside-label{font-family:var(--font-body);font-variant:small-caps;letter-spacing:.07em;text-transform:lowercase;font-size:1rem}[data-design=margins] .post-footer{width:auto;max-width:38rem;margin-left:0}@media (width<=52rem){[data-design=margins] .prose{grid-template-columns:[content-start wide-start]minmax(0,1fr)[content-end margin-start margin-end wide-end]}[data-design=margins] .fig{grid-template-columns:minmax(0,1fr)}[data-design=margins] .fig figcaption{grid-column:1;margin-top:.75rem}}.fig{counter-increment:fig;margin:1.2em 0 2.4em}.fig-body{background:var(--paper-2);border-radius:6px;padding:1.5rem 1.25rem;container-type:inline-size}.fig-body svg{width:100%;height:auto;display:block;overflow:visible}.fig figcaption{width:min(var(--measure), 100%);font-family:var(--font-mono);color:var(--ink-2);margin:.8rem auto 0;font-size:.82rem;line-height:1.55}.fig figcaption:before{content:"Fig. " counter(fig) "  ";white-space:pre;color:var(--ink);font-weight:500}.f-text{fill:var(--ink);font-family:var(--font-mono);font-size:12px}.f-title{fill:var(--ink);font-family:var(--font-display);font-size:15px;font-weight:700;font-stretch:80%}.f-note{fill:var(--ink-2);font-family:var(--font-body);font-size:13.5px;font-style:italic}.f-muted{fill:var(--ink-3)}.f-rule{stroke:var(--rule);stroke-width:1px;fill:none}.f-axis{stroke:var(--ink-3);stroke-width:1px;fill:none}.f-fill{fill:color-mix(in srgb, var(--ink) 10%, transparent)}.f-fill-strong{fill:color-mix(in srgb, var(--ink) 22%, transparent)}.f-accent{fill:var(--green-led)}.f-alert{fill:var(--orange-led)}.f-stroke-accent{stroke:var(--green-led);stroke-width:2.5px;fill:none}.f-stroke-alert{stroke:var(--orange-led);stroke-width:2.5px;fill:none}.f-dot{fill:var(--paper-2);stroke:var(--ink);stroke-width:2px}.f-dot.f-alert-dot{fill:var(--orange-led);stroke:var(--orange-led)}@media (prefers-reduced-motion:no-preference){a{transition:color .12s}}.f-stack ol{gap:4px;margin:0;padding:0;list-style:none;display:grid}.f-stack-end{letter-spacing:.1em;text-transform:uppercase;margin:0 0 .5rem;font-size:.76rem}.f-stack-end:last-child{margin:.5rem 0 0}.f-layer{display:grid}.f-layer>*{grid-area:1/1}.f-layer-band{display:block}.f-layer-text{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.1rem 1rem;padding:.5rem .9rem;line-height:1.3;display:flex}.f-layer-label{font-family:var(--font-display);font-size:1.05rem;font-weight:700;font-stretch:80%}.f-layer-note{color:var(--ink-2);font-size:.95rem;font-style:italic}.f-alert-soft{fill:color-mix(in srgb, var(--orange-led) 20%, transparent)}.f-shift-svg{display:block;overflow:visible}.f-shift-scale{letter-spacing:.1em;text-transform:uppercase;justify-content:space-between;margin-top:.2rem;padding-inline:2%;font-size:.76rem;display:flex}.f-legend{gap:.45rem;margin:1.1rem 0 0;font-size:1rem;line-height:1.4;display:grid}.f-legend>div{grid-template-columns:1.6rem 1fr;align-items:baseline;display:grid}.f-legend dd{margin:0}.f-key{vertical-align:.3em;background:var(--ink);width:1.1rem;height:3px;display:inline-block}.f-key-dot{vertical-align:-.05em;border:2px solid var(--ink);background:0 0;border-radius:50%;width:.75rem;height:.75rem}.f-key-alert{background:var(--orange-led)}.f-key-accent{background:var(--green-led)}.f-timeline{margin:0;padding:0;list-style:none}.f-event{gap:.1rem;padding:0 0 1.3rem 1.6rem;line-height:1.4;display:grid;position:relative}.f-event:before{content:"";background:var(--ink-3);width:1px;position:absolute;top:.45rem;bottom:-.45rem;left:.3rem}.f-event:last-child:before{display:none}.f-event:after{content:"";border:2px solid var(--ink);background:var(--paper-2);border-radius:50%;width:.65rem;height:.65rem;position:absolute;top:.3rem;left:0}.f-event.is-alert:after{border-color:var(--orange-led);background:var(--orange-led)}.f-event:last-child{padding-bottom:0}.f-event-title{font-weight:560}.f-event-note{color:var(--ink-2);font-size:.95rem;font-style:italic}.f-bars{gap:.55rem;margin:0;display:grid}.f-bar-row{grid-template-columns:minmax(6rem,30%) 1fr;align-items:center;gap:1rem;display:grid}.f-bar-label{font-size:.98rem;line-height:1.3}.f-bar-cell{grid-template-columns:1fr 4.5rem;align-items:center;gap:.6rem;margin:0;display:grid}.f-bar-track{display:block}.f-bar-value{text-align:right;font-variant-numeric:tabular-nums}.f-bar-row.is-highlight .f-bar-label{font-weight:600}@media (width<=40rem){.f-bar-row{grid-template-columns:1fr;gap:.2rem}}.f-tl-axis{width:100%;height:auto;margin:0 0 1.75rem;display:block;overflow:visible}.f-tl-axis.is-narrow{display:none}@container (width<=34rem){.f-tl-axis.is-wide{display:none}.f-tl-axis.is-narrow{display:block}}.f-tl-month,.f-tl-year{font-family:var(--font-mono);font-size:10.5px}.f-tl-month{fill:var(--ink-3);text-anchor:middle}.f-tl-year{fill:var(--ink-2);font-weight:500}.f-tl-stem{stroke:var(--ink-3);stroke-width:1px}.f-tl-marker{fill:var(--paper-2);stroke:var(--ink);stroke-width:2px}.f-tl-num{fill:var(--ink);font-family:var(--font-mono);text-anchor:middle;dominant-baseline:central;font-size:11px;font-weight:500}.f-tl-pin.is-alert .f-tl-marker{fill:var(--orange-led);stroke:var(--orange-led)}.f-tl-pin.is-alert .f-tl-num{fill:var(--paper)}.f-timeline.has-axis{counter-reset:f-event;gap:1.1rem 2.25rem;display:grid}@container (width>=40rem){.f-timeline.has-axis{grid-template-columns:1fr 1fr}}.f-timeline.has-axis .f-event{counter-increment:f-event;align-content:start;padding:0 0 0 2.4rem}.f-timeline.has-axis .f-event:before{display:none}.f-timeline.has-axis .f-event:after{content:counter(f-event);width:1.55rem;height:1.55rem;font-family:var(--font-mono);color:var(--ink);place-items:center;font-size:.72rem;font-weight:500;line-height:1;display:grid;top:0}.f-timeline.has-axis .f-event.is-alert:after{color:var(--paper)}.f-units-grid{width:100%;height:auto;display:block}.f-unit{fill:color-mix(in srgb, var(--ink) 13%, transparent)}.f-unit-lit{fill:var(--orange-led)}.f-units-legend{flex-wrap:wrap;gap:.4rem 1.5rem;margin:1rem 0 0;display:flex}.f-units-legend div{align-items:center;gap:.5rem;display:flex}.f-units-legend dd{margin:0}.f-units-key{background:color-mix(in srgb, var(--ink) 13%, transparent);border-radius:2px;width:.7rem;height:.7rem;display:inline-block}.f-units-key.is-lit{background:var(--orange-led);box-shadow:0 0 7px light-dark(transparent,color-mix(in srgb, var(--orange-led) 75%, transparent))}@keyframes f-pin-in{0%{opacity:0;transform:translateY(14px)scale(.5)}}@keyframes f-bar-grow{0%{transform:scaleX(0)}}@keyframes f-unit-light{0%{fill:color-mix(in srgb, var(--ink) 13%, transparent)}}@media (prefers-reduced-motion:no-preference){@supports (animation-timeline:view()){.f-tl-pin,.f-bar-track rect,.f-unit-lit{transform-box:fill-box;animation-timing-function:linear;animation-fill-mode:both;animation-timeline:view()}.f-tl-pin{transform-origin:50% 100%;animation-name:f-pin-in;animation-range:entry 10% cover 35%}.f-tl-pin:nth-child(2){animation-range:entry 14% cover 38%}.f-tl-pin:nth-child(3){animation-range:entry 18% cover 41%}.f-tl-pin:nth-child(4){animation-range:entry 22% cover 44%}.f-tl-pin:nth-child(5){animation-range:entry 26% cover 47%}.f-tl-pin:nth-child(6){animation-range:entry 30% cover 50%}.f-tl-pin:nth-child(n+7){animation-range:entry 34% cover 53%}.f-bar-track rect{transform-origin:0;animation-name:f-bar-grow;animation-range:entry 5% cover 35%}.f-unit-lit{animation-name:f-unit-light;animation-range:entry 40% cover 50%}.f-unit-lit:nth-of-type(3){animation-range:entry 45% cover 52%}.f-unit-lit:nth-of-type(4){animation-range:entry 50% cover 54%}.f-unit-lit:nth-of-type(5){animation-range:entry 55% cover 56%}.f-unit-lit:nth-of-type(6){animation-range:entry 60% cover 58%}.f-unit-lit:nth-of-type(7){animation-range:entry 65% cover 60%}.f-unit-lit:nth-of-type(8){animation-range:entry 70% cover 62%}.f-unit-lit:nth-of-type(9){animation-range:entry 75% cover 64%}.f-unit-lit:nth-of-type(n+10){animation-range:entry 80% cover 66%}}}:root{--px-yellow:light-dark(#f2c12e,#ffd23f);--px-yellow-shade:light-dark(#cf9a12,#e3a91c)}.px-k{fill:var(--ink)}.px-e{fill:#17201b}.px-y{fill:var(--px-yellow)}.px-w{fill:var(--px-yellow-shade)}.px-o{fill:var(--orange-led)}.px-p{fill:var(--paper)}.px-r{fill:var(--magenta-led)}.px-g{fill:var(--green-led)}.px-b{fill:var(--teal-led)}:root[data-theme=phosphor]{--px-yellow:#ffb000;--px-yellow-shade:#c48a1e}.sprite-art{display:block;overflow:visible}.sprite-frame:not(.is-still){visibility:hidden}.sprite{float:right;margin:1.4rem 0 .4rem 1rem;position:relative}.sprite-say{border:2px solid var(--ink);background:var(--paper);font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;white-space:nowrap;color:var(--ink);padding:.1rem .4rem;font-size:.66rem;font-weight:500;line-height:1.5;position:absolute;bottom:calc(100% + .35rem);right:30%}.sprite-say:after{content:"";background:var(--ink);clip-path:polygon(0 0,100% 0,100% 100%);width:6px;height:6px;position:absolute;top:100%;right:.5rem}@media (width>=52rem){[data-design=datasheet] .prose .sprite{float:left;margin:1.2rem 0 0 calc(-1 * (var(--rail) + var(--rail-gap)))}[data-design=datasheet] .prose .sprite-say{left:55%;right:auto}[data-design=datasheet] .prose .sprite-say:after{clip-path:polygon(0 0,100% 0,0 100%);left:.5rem;right:auto}[data-design=margins] .prose .sprite{margin:1.2rem calc(-1 * (5rem + var(--margin-gap))) 0 0}}.companion{display:none}@keyframes sprite-act-on{0%,12%{visibility:hidden}12.01%,22%{visibility:visible}22.01%,37%{visibility:hidden}37.01%,47%{visibility:visible}47.01%,62%{visibility:hidden}62.01%,72%{visibility:visible}72.01%,to{visibility:hidden}}@keyframes sprite-act-off{0%,12%{visibility:visible}12.01%,22%{visibility:hidden}22.01%,37%{visibility:visible}37.01%,47%{visibility:hidden}47.01%,62%{visibility:visible}62.01%,72%{visibility:hidden}72.01%,to{visibility:visible}}@keyframes sprite-say{0%,10%{opacity:0;transform:translateY(4px)}14%,76%{opacity:1;transform:none}84%,to{opacity:0}}@keyframes sprite-step{0%,49.99%{visibility:hidden}50%,to{visibility:visible}}@keyframes sprite-stand{0%,49.99%{visibility:visible}50%,to{visibility:hidden}}@keyframes companion-walk{0%{transform:translate(0)scaleX(1)}49.99%{transform:translateX(var(--companion-walk)) scaleX(1)}50%{transform:translateX(var(--companion-walk)) scaleX(-1)}99.99%{transform:translate(0)scaleX(-1)}to{transform:translate(0)scaleX(1)}}@keyframes companion-presence{0%{opacity:0}2%,98%{opacity:1}to{opacity:0}}@keyframes companion-hop{0%{opacity:1;transform:none}40%{opacity:1;transform:translateY(-1.5rem)}to{opacity:0;transform:translateY(-3.5rem)scale(.6)}}@media (prefers-reduced-motion:no-preference){@supports (animation-timeline:view()){.sprite.is-acting .sprite-frame,.sprite.is-acting .sprite-say{animation-timing-function:linear;animation-fill-mode:both;animation-timeline:view();animation-range:cover 25% cover 75%}.sprite.is-acting .is-act{animation-name:sprite-act-on}.sprite.is-acting .is-rest{animation-name:sprite-act-off}.sprite.is-acting .sprite-say{animation-name:sprite-say}}@supports (timeline-scope:--a) and (animation-timeline:view()){article:has(.companion){timeline-scope:--dx-article, --dx-cue}article:has(.companion) .prose{view-timeline:--dx-article block}.sprite.is-cue{view-timeline:--dx-cue block}.companion{--companion-walk:5rem;bottom:1.25rem;left:max(var(--gutter), (100vw - var(--frame-wide)) / 2);z-index:5;pointer-events:none;display:block;position:fixed}.companion,.companion-walk,.companion .is-step,.companion .is-rest{animation-timing-function:linear;animation-fill-mode:both;animation-timeline:--dx-article;animation-range:cover}.companion-hop{animation-timing-function:linear;animation-fill-mode:both;animation-timeline:--dx-cue;animation-range:cover 24% cover 34%}.companion-walk{transform-origin:50%}article .companion{animation-name:companion-presence}.companion .companion-hop{animation-name:companion-hop}.companion .companion-walk{animation-name:companion-walk;animation-iteration-count:14}.companion .is-step{animation-name:sprite-step;animation-iteration-count:160}.companion .is-rest{animation-name:sprite-stand;animation-iteration-count:160}@media (width<=52rem){.companion{--companion-walk:2.5rem;bottom:.75rem}.companion .sprite-art{width:2.25rem;height:auto}}}}@media (width<=40rem){.prose table,.prose tbody,.prose tr,.prose td{display:block}.prose thead{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.prose tr{border-bottom:1px solid var(--rule);padding:.85rem 0}.prose tr:first-child{border-top:1px solid var(--ink-3)}.prose td,.prose td:first-child{white-space:normal;border:0;padding:0}.prose td[data-label]:not(:first-child):before{content:attr(data-label);font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3);margin-top:.5rem;font-size:.68rem;display:block}}.f-stream-label{letter-spacing:.1em;text-transform:uppercase;margin:0 0 .5rem;font-size:.72rem}.f-stream-parts{border:1px solid var(--ink-3);background:var(--paper);font-family:var(--font-mono);border-radius:4px;margin:0;padding:0;font-size:.84rem;line-height:1.55;list-style:none}.f-part{grid-template-columns:9rem 1fr;gap:.15rem 1rem;padding:.7rem .9rem;display:grid}.f-part+.f-part{border-top:1px dashed var(--rule)}.f-part-source{letter-spacing:.06em;text-transform:uppercase;padding-top:.12rem;font-size:.7rem}.f-part-inject{border-left:3px solid var(--orange-led);background:color-mix(in srgb, var(--orange-led) 14%, transparent);color:var(--ink);margin-top:.4rem;padding:.3rem .6rem;display:block}@media (width<=40rem){.f-part{grid-template-columns:1fr}}.f-stages-legend{margin:0 0 1.2rem}.f-key-ink{background:var(--ink)}.f-stages-list{grid-auto-columns:minmax(0,1fr);grid-auto-flow:column;margin:0;padding:0;list-style:none;display:grid}.f-stage{grid-template-rows:subgrid;display:grid}.f-stages-t1 .f-stage{grid-row:span 2}.f-stages-t2 .f-stage{grid-row:span 3}.f-stages-t3 .f-stage{grid-row:span 4}.f-stage-name{letter-spacing:.06em;text-transform:uppercase;padding:0 .8rem .6rem 0;font-size:.72rem;line-height:1.35}.f-stage-cell{padding:1.25rem .8rem 1rem 0;font-size:.95rem;line-height:1.3;position:relative}.f-stage-cell:before{content:"";background:var(--ink-3);height:2px;position:absolute;top:.38rem;left:0;right:0}.f-stage:last-child .f-stage-cell:before{display:none}.f-stage-cell:after{content:"";border:2px solid var(--ink);background:var(--paper-2);border-radius:50%;width:.7rem;height:.7rem;position:absolute;top:.05rem;left:0}.f-stage-cell.is-alert{font-weight:560}.f-stage-cell.is-alert:before{background:var(--orange-led)}.f-stage-cell.is-alert:after{border-color:var(--orange-led);background:var(--orange-led)}@media (width<=40rem){.f-stages-list{grid-template-columns:6.5rem repeat(3,minmax(0,1fr));grid-auto-flow:row}.f-stages-t1 .f-stages-list{grid-template-columns:6.5rem minmax(0,1fr)}.f-stages-t2 .f-stages-list{grid-template-columns:6.5rem repeat(2,minmax(0,1fr))}.f-stage,.f-stages-t1 .f-stage,.f-stages-t2 .f-stage,.f-stages-t3 .f-stage{grid-area:auto/1/auto/-1;grid-template-rows:none;grid-template-columns:subgrid}.f-stage-name{padding:.05rem .6rem 1.2rem 0}.f-stage-cell{padding:0 .6rem 1.2rem 1.3rem;font-size:.9rem}.f-stage-cell:before{width:2px;height:auto;inset:.4rem auto -.05rem .3rem}}.f-compare-row{border-bottom:1px solid var(--rule);grid-template-columns:minmax(8rem,1.1fr) repeat(2,minmax(0,1fr));align-items:baseline;gap:0 1.2rem;padding:.7rem 0;display:grid}.f-compare-c3 .f-compare-row{grid-template-columns:minmax(8rem,1.1fr) repeat(3,minmax(0,1fr))}.f-compare-head{border-bottom-color:var(--ink-3);padding-top:0}.f-compare-row:last-child{border-bottom:0;padding-bottom:0}.f-compare-col{letter-spacing:.1em;text-transform:uppercase;font-size:.72rem}.f-compare-label{font-family:var(--font-display);font-size:1.02rem;font-weight:700;font-stretch:80%;line-height:1.25}.f-compare-cell{font-size:.95rem;line-height:1.4}.f-compare-inline{display:none}.f-mark{vertical-align:-.04em;border:2px solid var(--green-led);border-radius:50%;width:.72rem;height:.72rem;margin-right:.45rem;display:inline-block}.is-yes .f-mark{background:var(--green-led)}.is-partly .f-mark{background:linear-gradient(90deg, var(--green-led) 50%, transparent 50%)}.is-no .f-mark{border-color:var(--orange-led)}@media (width<=40rem){.f-compare-head{display:none}.f-compare-row{grid-template-columns:1fr;gap:.35rem}.f-compare-row:nth-child(2){padding-top:0}.f-compare-inline{letter-spacing:.1em;text-transform:uppercase;font-size:.66rem;display:block}}.theme-picker{font-family:var(--font-mono);font-size:.85rem;position:relative}.theme-picker[hidden]{display:none}.theme-picker>summary{color:var(--ink-2);cursor:pointer;align-items:center;gap:.45rem;list-style:none;display:inline-flex}.theme-picker>summary::-webkit-details-marker{display:none}.theme-picker>summary:before{content:"";background:linear-gradient(90deg, var(--orange-led) 0 33.3%, var(--teal-led) 0 66.6%, var(--violet-led) 0);border-radius:2px;width:1.4rem;height:.45rem}.theme-picker>summary:hover,.theme-picker[open]>summary{color:var(--ink)}.theme-panel{z-index:10;width:15rem;max-width:calc(100vw - 2 * var(--gutter));border:1px solid var(--rule);background:var(--paper);border-radius:6px;gap:1.1rem;padding:1rem;display:grid;position:absolute;top:calc(100% + .6rem);right:0;box-shadow:0 10px 30px #0000002e}.theme-panel fieldset{border:0;gap:.45rem;min-width:0;margin:0;padding:0;display:grid}.theme-panel legend{letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3);margin-bottom:.5rem;padding:0;font-size:.76rem}.theme-panel label{color:var(--ink);cursor:pointer;align-items:center;gap:.6rem;display:flex}.theme-panel input{accent-color:var(--accent);margin:0}.theme-panel fieldset:disabled label{color:var(--ink-3);cursor:default}.theme-note{color:var(--ink-3);margin:.15rem 0 0;font-size:.8rem;display:none}.theme-panel fieldset:disabled .theme-note{display:block}.swatch{border-radius:2px;width:2.4rem;height:.7rem;margin-left:auto;box-shadow:inset 0 0 0 1px #80808066}.swatch-colourful{background:linear-gradient(90deg,#e8331c 0 25%,#0c909c 0 50%,#9762fd 0 75%,#e93b92 0)}.swatch-calm{background:linear-gradient(90deg,#ccd2cb 0 75%,#e8331c 0)}.swatch-contrast{background:linear-gradient(90deg,#000 0 50%,#fff 0)}.swatch-phosphor{background:linear-gradient(90deg,#0c0800 0 50%,#ffb000 0)}:is([data-theme=calm],[data-theme=contrast]) body:before{display:none}:is([data-theme=calm],[data-theme=contrast]) :is(.entry-title a,.prose h2,.prose h3){color:var(--ink)}:is([data-theme=calm],[data-theme=contrast]) .entry-aside,:is([data-theme=calm],[data-theme=contrast]) .quote figcaption,:is([data-theme=calm],[data-theme=contrast]) .tags li,:is([data-theme=calm],[data-theme=contrast]) .prose li::marker{color:var(--ink-3)}:is([data-theme=calm],[data-theme=contrast]) :is(.prose blockquote,.source-card){background:0 0;padding-block:0}:is([data-theme=calm],[data-theme=contrast]) .prose :not(pre)>code{background:var(--paper-2)}:is([data-theme=calm],[data-theme=contrast]) .tags li{border:0;padding:0}[data-theme=contrast] body{font-weight:450}[data-theme=contrast] .prose strong{font-weight:720}[data-theme=contrast] a{text-decoration-thickness:2px}[data-theme=contrast] :focus-visible{outline-width:3px}[data-theme=contrast] :is(.prose blockquote,.source-card,.quote blockquote){border-left-color:var(--ink);color:var(--ink)}[data-theme=contrast] .prose hr:after{background:var(--ink)}[data-theme=phosphor] body{text-shadow:0 0 2px #ffb0004d;background-image:repeating-linear-gradient(#0000 0 2px,#0003 2px 3px);font-size:1.0625rem}[data-theme=phosphor] body:before{display:none}[data-theme=phosphor] :is(.display,.brand-name,.prose h2,.prose h3,.prose strong,.f-layer-label){letter-spacing:0;font-weight:500;font-stretch:100%}[data-theme=phosphor] .post-title{font-size:clamp(1.8rem,5vw,2.6rem)}[data-theme=phosphor] .hero-thesis{font-size:clamp(1.2rem,2.8vw,1.6rem)}
