@font-face{font-family:ibm plex serif;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/IBMPlexSerif-Regular.woff2)format("woff2")}@font-face{font-family:ibm plex serif;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/IBMPlexSerif-SemiBold.woff2)format("woff2")}@font-face{font-family:ibm plex sans var;font-style:normal;font-weight:100 700;font-display:swap;src:url(/fonts/IBMPlexSansVar-Latin1.woff2)format("woff2");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+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:ibm plex sans var;font-style:italic;font-weight:100 700;font-display:swap;src:url(/fonts/IBMPlexSansVar-Italic-Latin1.woff2)format("woff2");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+2074,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-weight:400;font-display:swap;src:url(/fonts/IBMPlexMono-Regular.woff2)format("woff2")}@font-face{font-family:departure mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/DepartureMono-Regular.woff2)format("woff2")}:root{--paper:#f1f2ef;--ink:#26251f;--ink-soft:#3c392e;--hush:#5a5544;--spot:#204e6e;--rule:color-mix(in srgb, var(--ink) 20%, transparent);--rule-strong:color-mix(in srgb, var(--ink) 45%, transparent);--panel:color-mix(in srgb, var(--ink)  7%, transparent);--spot-panel:color-mix(in srgb, var(--spot) 8%, var(--paper));--font-serif:"IBM Plex Serif", "Georgia", serif;--font-sans:"IBM Plex Sans Var", "Inter", ui-sans-serif, system-ui, sans-serif;--font-mono:"IBM Plex Mono", ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace;--font-mark:"Departure Mono", "IBM Plex Mono", ui-monospace, monospace;--maxw:58rem;--measure:88ch;--space-1:0.55rem;--space-2:0.7rem;--space-3:0.9rem;--space-4:1.1rem;--space-5:1.4rem;--space-6:1.75rem;--space-7:2.2rem;--space-8:2.75rem;--space-9:3.5rem}*{box-sizing:border-box}html{background:var(--paper);color:var(--ink);font-family:var(--font-serif);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;font-size:16px;line-height:1.5}body{margin:0;min-height:100vh;display:flex;flex-direction:column;font-feature-settings:"ss01","cv11","kern"}main{flex:1}a{color:inherit;text-decoration:none}::selection{background:var(--ink);color:var(--paper)}:not(pre)>code{padding:.06rem .35rem;border:0;background:var(--panel);font-family:var(--font-mono);font-size:.84em;color:var(--ink-soft)}:where(a,button,input,summary):focus-visible{outline:2px solid var(--spot);outline-offset:2px}@media(prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}.wrap{max-width:var(--maxw);margin:0 auto;padding:0 1.5rem}.rule{border:0;border-top:1px solid var(--rule);max-width:var(--maxw);margin:0 auto}.kicker{font-family:var(--font-mark);font-size:.78rem;text-transform:uppercase;letter-spacing:.16em;color:var(--hush)}.italic{font-style:italic}.text-accent{color:var(--ink)}.headline{font-family:var(--font-serif);font-weight:600;font-size:clamp(2.1rem,3.4vw + 1rem,2.9rem);line-height:1.16;letter-spacing:-.005em;margin:0;max-width:30ch;text-wrap:balance}.kicker+.headline{margin-top:var(--space-2)}.lead{margin:var(--space-5)0 0;max-width:66ch;font-family:var(--font-serif);font-size:1.06rem;line-height:1.68;color:color-mix(in srgb,var(--ink) 88%,var(--paper))}p{margin:0 0 var(--space-4)}.doc-section{padding:var(--space-7)0 0}.doc-section:last-of-type{padding-bottom:var(--space-9)}.section-title{margin:0 0 var(--space-5);font-family:var(--font-sans);font-weight:600;font-size:1rem;letter-spacing:.09em;text-transform:uppercase;color:var(--ink)}.section{padding:5rem 0}.site-header{border-bottom:1px solid var(--rule)}.site-header .wrap{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);flex-wrap:wrap;padding:var(--space-3)1.5rem}.brand{margin-left:-.2rem;display:inline-flex;align-items:center;gap:.5rem;font-family:var(--font-mark);font-size:.9rem;letter-spacing:.22em;text-transform:uppercase}.brand .mark{width:1rem;height:1rem;stroke:var(--spot);flex:none}.nav{display:flex;align-items:center;gap:var(--space-5);font-family:var(--font-sans);font-size:.875rem}.nav a{padding-bottom:.2rem;border-bottom:1px solid transparent}.nav a:hover{border-bottom-color:var(--rule-strong)}.nav a[aria-current=page]{border-bottom-color:var(--ink)}.nav .gh-cta{border:1px solid var(--rule);padding:.375rem .75rem;transition:background 90ms linear,color 90ms linear,border-color 90ms linear}.nav .gh-cta:hover{background:var(--ink);color:var(--paper);border-color:var(--ink)}.title-block{padding:var(--space-7)0 0}.front-row{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--space-5);margin-bottom:var(--space-8)}.crumb{margin:0;font-family:var(--font-sans);font-size:.82rem;color:var(--ink-soft)}.crumb a{padding-bottom:.1rem;border-bottom:1px solid var(--rule-strong)}.crumb a:hover{border-bottom-color:var(--ink);color:var(--ink)}.crumb .sep{margin:0 .45rem;color:var(--hush)}.crumb .here{color:var(--ink)}.intro{margin:var(--space-5)0 0;max-width:var(--measure);font-family:var(--font-serif);font-size:1rem;line-height:1.72;color:var(--ink)}.stamp{margin:0;flex:none;font-family:var(--font-mark);font-size:.68rem;letter-spacing:.06em;line-height:1.7;text-align:right;color:var(--ink-soft)}.stamp .rev{display:block;color:var(--hush)}.spec-strip{margin:var(--space-7)0 0;display:grid;grid-template-columns:1fr;border-top:1px solid var(--ink);border-bottom:1px solid var(--rule)}@media(min-width:700px){.spec-strip{grid-template-columns:var(--spec-columns);gap:0 var(--space-6)}}.spec-cell{padding:var(--space-3)0}.spec-cell dt,.spec-cell dd{margin:0}.spec-cell .label{display:block;font-family:var(--font-sans);font-weight:600;font-size:.66rem;letter-spacing:.09em;text-transform:uppercase;color:var(--ink-soft)}.spec-cell .value{display:block;margin-top:.3rem;font-family:var(--font-mono);font-size:.83rem;font-variant-numeric:tabular-nums;color:var(--ink);overflow-wrap:anywhere}.spec-cell a.value{display:inline-block;border-bottom:1px solid var(--rule-strong)}.spec-cell a.value:hover{border-bottom-color:var(--ink)}.spec-cell--spot code{background:var(--spot-panel);color:var(--spot)}@media(max-width:699px){.spec-cell{border-bottom:1px solid var(--rule)}.spec-cell:last-child{border-bottom:0}}.contents-table{max-width:var(--measure)}.contents-row{display:grid;grid-template-columns:2.1rem 1fr;gap:.75rem;align-items:baseline;padding:var(--space-3)0}.ch-main{min-width:0}.ch-line{display:flex;align-items:baseline;gap:.5rem}.ch-num{font-family:var(--font-mono);font-size:.85rem;font-variant-numeric:tabular-nums;color:var(--ink-soft)}.ch-title{font-family:var(--font-sans);font-weight:600;font-size:.96rem;border-bottom:1px solid transparent;transition:border-color 90ms linear}.contents-row:hover .ch-title{border-bottom-color:var(--ink)}.ch-lead{flex:auto;border-bottom:1px dotted var(--rule-strong);transform:translateY(-.3em)}.ch-len{font-family:var(--font-mono);font-size:.8rem;font-variant-numeric:tabular-nums;color:var(--ink-soft)}.ch-desc{display:block;margin-top:.3rem;max-width:70ch;font-family:var(--font-serif);font-size:.86rem;line-height:1.5;color:var(--ink-soft)}.summary-main{max-width:var(--measure)}.summary-main::after{content:"";display:table;clear:both}.summary-main>p,.summary-main>.claim{margin:0 0 var(--space-4);max-width:var(--measure);font-family:var(--font-serif);font-size:1rem;line-height:1.72;color:color-mix(in srgb,var(--ink) 92%,var(--paper))}.claim>p{margin:0 0 var(--space-4)}.summary-main>:last-child,.claim>p:last-child{margin-bottom:0}.summary-main strong{font-weight:600;color:var(--ink)}.summary-main a{color:var(--ink);border-bottom:1px solid var(--rule-strong)}.summary-main a:hover{border-bottom-color:var(--ink)}.claim{margin-left:calc(-1 * var(--space-3));padding-left:var(--space-3);border-left:2px solid var(--spot)}.claim strong code{background:var(--spot-panel);color:var(--spot)}.sidenote{float:right;width:13rem;margin:.3rem 0 var(--space-4)var(--space-6);padding:.15rem 0 0 var(--space-4);border-left:1px solid var(--rule-strong)}@media(max-width:44rem){.sidenote{float:none;width:auto;margin:0 0 var(--space-5)}}.sidenote-label{margin:0 0 var(--space-1);font-family:var(--font-sans);font-weight:600;font-size:.66rem;letter-spacing:.09em;text-transform:uppercase;color:var(--ink-soft)}.sidenote-body,.sidenote-body p{margin:0;font-family:var(--font-serif);font-size:.84rem;line-height:1.55;color:var(--ink-soft)}.diagram{display:grid;gap:var(--space-6)var(--space-5);margin:var(--space-7)0 0}@media(min-width:860px){.diagram{grid-template-columns:var(--figure-columns)}}.figure{margin:0}.figure img{display:block;width:100%;height:auto}.figure figcaption{margin-top:var(--space-1);font-family:var(--font-serif);font-size:.82rem;line-height:1.5;color:var(--ink-soft)}.fig-mark{margin-right:.45rem;font-family:var(--font-sans);font-weight:600;font-size:.68rem;letter-spacing:.09em;text-transform:uppercase;color:var(--ink-soft)}.figure--spot figcaption code{background:var(--spot-panel);color:var(--spot)}.btn{font-family:var(--font-sans);display:inline-flex;align-items:center;justify-content:center;padding:.625rem 1rem;font-weight:600;color:var(--ink);background:0 0;border:1px solid var(--ink);transition:background 90ms linear,color 90ms linear,border-color 90ms linear}.btn:focus-visible{outline:2px solid var(--spot);outline-offset:2px}.btn--primary:hover{background:var(--ink);color:var(--paper)}.btn--ghost{border-color:var(--rule);color:var(--ink-soft)}.btn--ghost:hover{border-color:var(--rule-strong);color:var(--ink)}.notify{max-width:34rem}.teaser .notify{margin:var(--space-7)0 0}.notify-label{display:block;font-family:var(--font-sans);font-weight:600;font-size:.7rem;text-transform:uppercase;letter-spacing:.09em;color:var(--hush);margin-bottom:var(--space-1)}.notify-row{display:flex;gap:var(--space-1);flex-wrap:wrap}.notify-input{flex:1 1 14rem;min-width:0;font-family:var(--font-mono);font-size:.9375rem;color:var(--ink);background:0 0;border:1px solid var(--rule-strong);padding:.7rem .85rem;transition:border-color 90ms linear}.notify-input::placeholder{color:var(--hush)}.notify-input:hover{border-color:var(--ink)}.notify-input:focus-visible{border-color:var(--ink);outline:2px solid var(--spot);outline-offset:2px}.notify .btn{flex:none}.notify-note{margin:var(--space-3)0 0;font-size:.8rem;color:var(--hush)}.notify-hp{position:absolute;left:-9999px}.notify-foot{padding:var(--space-9)0 var(--space-8)}.colophon{margin-top:auto;border-top:1px solid var(--rule)}.colophon .wrap{display:flex;justify-content:space-between;align-items:baseline;gap:var(--space-5);flex-wrap:wrap;padding-top:var(--space-4);padding-bottom:var(--space-5)}.colophon .entry{display:flex;align-items:baseline;gap:var(--space-2)}.colophon .label{font-family:var(--font-sans);font-weight:600;font-size:.64rem;letter-spacing:.09em;text-transform:uppercase;color:var(--ink-soft)}.colophon .value{font-family:var(--font-mono);font-size:.78rem;color:var(--ink-soft)}.colophon a.value{border-bottom:1px solid var(--rule-strong)}.colophon a.value:hover{border-bottom-color:var(--ink)}.colophon .site-mark{font-family:var(--font-mark);font-size:.68rem;letter-spacing:.06em;color:var(--hush)}.section--teaser{min-height:calc(100vh - 4.5rem);display:flex;align-items:center;padding:var(--space-9)0}.section--teaser-compact{min-height:0;align-items:flex-start;padding:var(--space-7)0 var(--space-8)}.teaser{max-width:44rem}.teaser-stamp{display:inline-block;padding:.3rem .6rem;border:1px solid var(--rule-strong);color:var(--hush)}.section--demo{padding:0 0 4rem}.demo-head{margin:0}.demo-grid{margin-top:var(--space-5);display:grid;gap:var(--space-3)}@media(min-width:1100px){.demo-grid{grid-template-columns:minmax(0,1.8fr)minmax(18rem,1fr);grid-template-rows:auto auto auto 1fr;grid-template-areas:"player      side" "cap         side" "transcript  side" "close       side";column-gap:var(--space-8);row-gap:var(--space-3);align-items:start}.demo-player{grid-area:player}.demo-cap{grid-area:cap}.demo-transcript--homepage{grid-area:transcript}.demo-close{grid-area:close;align-self:start;margin-top:var(--space-2)}.demo-side{grid-area:side}}.demo-player{border:1px solid var(--rule);overflow:hidden;background:var(--ink)}.demo-player .asciinema-player-theme-asciinema{border-radius:0}.demo-side{min-width:0}.cast-cap{display:flex;flex-wrap:wrap;justify-content:space-between;gap:.35rem var(--space-5);margin:var(--space-1)0 0;font-family:var(--font-mono);font-size:.7rem;color:var(--hush)}.cast-cap__group{display:flex;flex-wrap:wrap;align-items:baseline;gap:.35rem var(--space-4)}.demo-speed{font-family:var(--font-mono);font-size:.7rem;color:var(--hush);background:0 0;border:1px solid var(--rule);padding:.15rem .5rem;cursor:pointer;transition:color 90ms linear,border-color 90ms linear}.demo-speed:hover{color:var(--ink);border-color:var(--rule-strong)}.demo-speed:focus-visible{color:var(--ink);border-color:var(--rule-strong);outline:2px solid var(--spot);outline-offset:2px}.demo-speed-val{font-weight:600;color:var(--ink-soft)}.demo-speed:hover .demo-speed-val,.demo-speed:focus-visible .demo-speed-val{color:var(--ink)}.demo-close{margin:var(--space-5)0 0;max-width:66ch;color:var(--ink-soft)}.demo-close p{margin:0}.demo-more{display:inline-block;margin-top:var(--space-3);color:var(--ink);border-bottom:1px solid var(--rule-strong);transition:border-color 90ms linear}.demo-more:hover{border-bottom-color:var(--ink)}.demo-more:focus-visible{outline:2px solid var(--spot);outline-offset:2px}.register-section{padding:var(--space-8)0 var(--space-9)}.register{display:flex;flex-direction:column;gap:var(--space-5)}.register .entry{position:relative;padding:var(--space-6);border:1px solid var(--rule);transition:background-color 90ms linear,border-color 90ms linear}.register .entry:hover{background:var(--panel);border-color:var(--rule-strong)}.register .entry:hover .op{background:var(--paper)}.register .entry:hover .entry-title a{border-bottom-color:var(--ink)}.register .entry:has(a:focus-visible){outline:2px solid var(--spot);outline-offset:2px;background:var(--panel);border-color:var(--rule-strong)}.register .entry:has(a:focus-visible) .op{background:var(--paper)}.register .entry .entry-title a:focus-visible{outline:none}.register .entryhead{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-5);margin:0 0 var(--space-2)}.register .entry-title{margin:0;max-width:66ch;font-family:var(--font-serif);font-weight:600;font-size:1.3rem;line-height:1.35;letter-spacing:-.004em}.register .entry-title a{border-bottom:1px solid var(--rule-strong);transition:border-color 90ms linear}.register .entry-title a::after{content:"";position:absolute;inset:0}.register .entry-date{flex:none;font-family:var(--font-mono);font-size:.72rem;letter-spacing:.02em;font-variant-numeric:tabular-nums;color:var(--hush);white-space:nowrap}.register .entry-summary{margin:0 0 var(--space-5);max-width:66ch;color:var(--ink-soft)}.register .exercised{display:flex;flex-wrap:wrap;align-items:baseline;gap:.4rem .45rem;margin:0 0 var(--space-5);max-width:var(--measure)}.register .exercised dt,.register .meta dt{font-family:var(--font-sans);font-weight:600;font-size:.66rem;letter-spacing:.09em;text-transform:uppercase;color:var(--hush)}.register .exercised dt{margin-right:.6rem}.register .exercised dd{margin:0}.register .exercised .op{display:inline-block;padding:.1rem .42rem;font-family:var(--font-mono);font-size:.84rem;line-height:1.5;transition:background-color 90ms linear}.register .exercised .op--cmd{color:var(--ink-soft);background:var(--panel)}.register .exercised .op--type{color:var(--spot);background:var(--spot-panel)}.register .meta{display:flex;flex-wrap:wrap;gap:.3rem 2.4rem;margin:0;max-width:var(--measure)}.register .meta>div{display:flex;align-items:baseline;gap:.65rem}.register .meta dd{margin:0;font-family:var(--font-mono);font-size:.8rem;font-variant-numeric:tabular-nums;color:var(--hush)}@media(max-width:44rem){.register .entry{padding:var(--space-5)var(--space-4)}.register .entryhead{flex-direction:column;gap:var(--space-1)}.register .meta{gap:.3rem 1.6rem}}.demo-chapter{padding:var(--space-8)0}.demo-chapter+.demo-chapter{padding-top:var(--space-4)}.chapter-head{max-width:var(--measure)}.chapter-title{margin:0}.chapter-num{font-family:var(--font-mono);font-weight:400;font-size:.85rem;font-variant-numeric:tabular-nums;letter-spacing:.06em;color:var(--hush);margin-right:.9rem}.chapter-question{max-width:66ch;margin:var(--space-3)0 0;font-family:var(--font-serif);font-style:italic;font-size:1.06rem;line-height:1.68;color:var(--ink)}.chapter-question+.chapter-summary{margin-top:var(--space-2)}.chapter-summary{max-width:66ch;margin:var(--space-3)0 0;font-family:var(--font-serif);font-size:1.06rem;line-height:1.68;color:color-mix(in srgb,var(--ink) 92%,var(--paper))}.chapter-summary a{color:var(--ink);border-bottom:1px solid var(--rule-strong)}.chapter-summary a:hover{border-bottom-color:var(--ink)}.chapter-grid{display:grid;gap:var(--space-7);margin-top:var(--space-5);align-items:start}.chapter-media,.chapter-cast{min-width:0}.chapter-cast{margin:0}.chapter-steps{margin:0;padding:0;list-style:none}.chapter-steps li{position:relative;margin-bottom:var(--space-8)}.chapter-steps li:last-child{margin-bottom:0}.chapter-steps li::after{content:"";position:absolute;top:0;bottom:0;left:-.9rem;width:2px;background:0 0;transition:background 90ms linear}.chapter-steps li:hover::after{background:var(--rule-strong)}.chapter-steps li.is-active::after{background:var(--ink)}.chapter-step__seek{display:block;width:100%;margin:0;padding:0;border:0;background:0 0;color:inherit;text-align:left;cursor:pointer}.chapter-step__seek:focus-visible{outline:2px solid var(--spot);outline-offset:2px}.chapter-steps code{padding:0;background:0 0;font-family:var(--font-mono);font-size:.78rem;color:var(--ink-soft);overflow-wrap:anywhere;transition:color 90ms linear}.chapter-step__seek:hover code,.chapter-steps li.is-active code{color:var(--ink)}.chapter-steps p{margin:.4rem 0 0;font-size:.88rem;line-height:1.55;color:var(--ink-soft);transition:color 90ms linear}.chapter-steps li.is-active p{color:var(--ink)}@media(min-width:1100px){.chapter-grid{grid-template-columns:minmax(0,1.8fr)minmax(18rem,1fr);gap:var(--space-8)}}.demo-chapter--full .chapter-head{border-top:1px solid var(--rule);padding-top:var(--space-7)}.chapter-cast--full{margin-top:var(--space-7)}@media(max-width:640px){.chapter-num{margin-right:.6rem}}.demo-detail{overflow:hidden}.demo-transcript{margin-top:var(--space-1);color:var(--ink-soft)}.demo-transcript summary{width:fit-content;padding:var(--space-1)0 0;font-family:var(--font-mono);font-size:.78rem;font-weight:400;letter-spacing:0;color:var(--hush);cursor:pointer}.demo-transcript summary:hover,.demo-transcript[open] summary{color:var(--ink)}.demo-transcript__body{max-width:var(--measure);margin-top:var(--space-3);padding:var(--space-4)var(--space-5)var(--space-5);background:var(--panel);font-family:var(--font-serif);font-size:.88rem;line-height:1.62}.demo-transcript__body>:first-child{margin-top:0}.demo-transcript__body>:last-child{margin-bottom:0}.demo-transcript__body h3,.demo-transcript__body h4{font-family:var(--font-sans);font-weight:600;color:var(--ink)}.demo-transcript__body h3{margin:var(--space-3)0 var(--space-4);font-size:1rem}.demo-transcript__body h4{margin:var(--space-6)0 var(--space-3);font-size:.88rem}.demo-transcript__body pre{margin:var(--space-3)0 var(--space-5);padding:.85rem 1rem .85rem calc(1rem + 2ch);text-indent:-2ch;white-space:pre-wrap;overflow-wrap:break-word;overflow-x:auto;border:1px solid var(--ink);background:var(--ink);color:color-mix(in srgb,var(--paper) 88%,white);font-family:var(--font-mono);font-size:.78rem;line-height:1.55}.demo-transcript__body pre code{padding:0;background:0 0;color:inherit}.demo-transcript__body strong{color:var(--ink)}