@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/jetbrains-mono-latin-400-normal.V6pRDFza.woff2)format("woff2"),url(/_astro/jetbrains-mono-latin-400-normal.6-qcROiO.woff)format("woff")}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:700;src:url(/_astro/jetbrains-mono-latin-700-normal.BYuf6tUa.woff2)format("woff2"),url(/_astro/jetbrains-mono-latin-700-normal.D3wTyLJW.woff)format("woff")}:root{--bg:#0e1110;--panel:#151a18;--border:#27302c;--rule:#1f2623;--box:#4a5650;--text:#d6ddd8;--strong:#f1f4f2;--muted:#8a958f;--accent:#c9db74;--accent-hover:#e4f0a8;--gap:72px}*,:before,:after{box-sizing:border-box}html{background:var(--bg);color-scheme:dark;-webkit-text-size-adjust:100%;scrollbar-gutter:stable}body{background:var(--bg);color:var(--text);margin:0;font-family:JetBrains Mono,ui-monospace,monospace;font-size:15px;line-height:1.7}a{color:var(--accent)}a:hover{color:var(--accent-hover)}:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.page{gap:var(--gap);flex-direction:column;max-width:880px;margin:0 auto;padding:40px 24px 96px;display:flex}main{gap:var(--gap);flex-direction:column;display:flex}section{flex-direction:column;gap:16px;display:flex}h1,h2,p,blockquote,figure,pre,dl,dd,ul{margin:0}h1{letter-spacing:-.02em;color:var(--strong);font-size:48px;font-weight:700;line-height:1.1}h2{color:var(--accent);font-size:15px;font-weight:500}.muted{color:var(--muted)}.accent{color:var(--accent)}.strong{color:var(--strong)}.small{font-size:14px}.print-only{display:none}.topbar{border-bottom:1px solid var(--border);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;padding-bottom:20px;display:flex}.prompt-line{color:var(--muted);align-items:center;gap:10px;display:flex}.pear{color:var(--accent);flex:none}.caret{vertical-align:-.12em;background:var(--accent);width:.6em;height:1em;margin-left:.6em;animation:1.1s step-end infinite blink;display:inline-block}@keyframes blink{50%{opacity:0}}@media (prefers-reduced-motion:reduce){.caret{animation:none}}a.caret{position:relative}a.caret:after{content:"";position:absolute;inset:-10px -8px}.caret-busy{animation:none}.caret-gone{visibility:hidden}.typed{white-space:pre;color:var(--strong)}.tty-open{overflow:hidden}.tty{z-index:100;pointer-events:none;position:fixed;inset:0}.tty-screen{background:var(--bg);pointer-events:auto;clip-path:inset(0 0 100%);position:absolute;bottom:0;left:0;right:0}.tty-frame{opacity:0;border:0;width:100%;height:100%;transition:opacity .3s;display:block;mask-image:linear-gradient(#0000,#000 12px)}.tty-frame-ready{opacity:1}.tty-beam{background:var(--accent);position:absolute}.tty-beam-glow{box-shadow:0 0 10px 1px var(--accent), 0 0 48px 6px #c9db744d}.tty-exit{font:inherit;color:var(--muted);cursor:pointer;pointer-events:auto;opacity:0;background:0 0;border:0;align-items:center;padding:0 2px;display:flex;position:absolute}.tty-exit:hover{color:var(--accent-hover)}.tty-exit-short{display:none}.tty-hidden{visibility:hidden}@media (prefers-reduced-motion:reduce){.tty-screen{clip-path:none;opacity:0}}@media (width<=560px){.tty-exit-long{display:none}.tty-exit-short{display:inline}}.nav{flex-wrap:wrap;gap:8px 24px;display:flex}.nav .lang{color:var(--muted)}.hero{gap:20px}.lead{max-width:680px;font-size:18px}.lead strong{color:var(--strong);font-weight:500}.narrow{max-width:680px}blockquote{border-left:2px solid var(--accent);max-width:680px;margin-top:8px;padding:4px 0 4px 20px;font-style:italic}.button{background:var(--accent);min-height:44px;color:var(--bg);border-radius:4px;align-items:center;margin-top:8px;padding:0 18px;font-weight:500;text-decoration:none;display:inline-flex}.button:hover{background:var(--accent-hover);color:var(--bg)}.buttons{flex-wrap:wrap;gap:12px;display:flex}.button.secondary{color:var(--accent);border:1px solid var(--accent);background:0 0}.button.secondary:hover{background:var(--accent);color:var(--bg)}.cards{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px;display:grid}.card{border:1px solid var(--border);color:var(--text);border-radius:4px;flex-direction:column;gap:8px;padding:20px;text-decoration:none;display:flex}a.card:hover{border-color:var(--accent);color:var(--text)}.card-title{color:var(--strong);font-weight:500}.card-text{color:var(--muted);font-size:14px}.card-tags{color:var(--muted);font-size:13px}.diagram{background:var(--panel);border:1px solid var(--border);border-radius:4px;grid-template-columns:repeat(4,minmax(0,1fr));column-gap:12px;padding:24px;font-size:13px;line-height:1.4;display:grid}.box{border:1px solid var(--box);color:var(--strong);text-align:center;overflow-wrap:anywhere;padding:12px 6px}.box.dashed{color:var(--muted);border-style:dashed}.box.own{border-color:var(--accent)}.span3{grid-column:1/4}.span4{grid-column:1/5}.link{justify-content:center;height:32px;display:flex}.link.pass{height:auto}.link i,.bindings i{background:var(--box);width:1px}.link i.on,.bindings i.on{background:var(--accent);width:3px}.bindings{height:48px;color:var(--accent);justify-content:center;align-items:center;gap:12px;display:flex}.bindings i{height:100%}.log{flex-direction:column;display:flex}.later{margin-top:16px}.row{flex-wrap:wrap;gap:4px 24px;padding:14px 0;display:flex}.log>.row,.entry{border-bottom:1px solid var(--rule)}.date{min-width:150px;color:var(--muted);align-items:center;gap:12px;display:inline-flex}.what{color:var(--strong);flex:360px}.chev{color:var(--accent);flex:none;transition:transform .12s}.chev-space{display:none}details>summary{cursor:pointer;min-height:44px;list-style:none}details>summary::-webkit-details-marker{display:none}details>summary:hover{background:var(--panel)}details[open] .chev{transform:rotate(90deg)}.details{color:var(--muted);flex-direction:column;gap:6px;padding:0 0 16px 42px;font-size:14px;display:flex}.links{flex-wrap:wrap;gap:8px 24px;font-size:14px;display:flex}.kv{grid-template-columns:minmax(110px,auto) 1fr;gap:6px 24px;font-size:14px;display:grid}.kv dt{color:var(--muted)}.panel{background:var(--panel);border:1px solid var(--border);border-radius:4px;padding:20px}pre.panel{font:inherit;white-space:pre-wrap;overflow-wrap:anywhere;font-size:14px}.footer{border-top:1px solid var(--border);flex-direction:column;gap:24px;padding-top:24px;display:flex}.contact{flex-direction:column;gap:6px;display:flex}.email{overflow-wrap:anywhere;font-size:22px;font-weight:500}.footer-row{flex-wrap:wrap;justify-content:space-between;gap:16px;display:flex}@media (width<=560px){h1{font-size:36px}.diagram{column-gap:6px;padding:14px;font-size:11px}.date{min-width:0}.details{padding-left:24px}.kv{grid-template-columns:minmax(0,1fr);gap:0}.kv dd{overflow-wrap:anywhere;margin:0 0 10px}}@page{size:A4;margin:16mm 17mm 18mm}@media print{:root{--bg:#fff;--panel:#fff;--border:#c8cec9;--rule:#e1e5e2;--text:#17191a;--strong:#17191a;--muted:#4f5652;--accent:#4f6b12;--gap:22px}html{color-scheme:light}body{font-size:9.5pt;line-height:1.5}a{color:inherit;text-decoration:none}.screen-only{display:none!important}.print-only{display:initial}.page{gap:var(--gap);max-width:none;padding:0}.topbar{padding-bottom:8px;font-size:8.5pt}.print-contact{color:var(--muted);flex-wrap:wrap;justify-content:flex-end;gap:2px 12px;font-size:8pt;display:flex}.caret{display:none}h1{font-size:26pt}h2{break-after:avoid;font-weight:700}.hero{gap:8px}.lead{max-width:none;font-size:10.5pt}.lead strong{font-weight:700}.narrow,blockquote{max-width:none}blockquote{margin-top:2px;padding:0 0 0 12px}section{gap:6px}.row{flex-wrap:nowrap;align-items:baseline;gap:16px;padding:5px 0}details>summary{min-height:0}.date{flex:none;gap:0;min-width:96px}.what{flex:auto}.strong{font-weight:500}.chev{display:none}.entry{break-inside:avoid}.later{margin-top:10px}details::details-content{content-visibility:visible;display:block}.details{color:#3a403c;gap:1px;padding:0 0 6px 130px;font-size:8.5pt;list-style:outside}.kv{grid-template-columns:96px 1fr;gap:1px 20px;font-size:9pt}.toolbox .kv dt{font-weight:400}.panel{padding:8px 12px}.cards.two{grid-template-columns:1fr;gap:0}.card{break-inside:avoid;border:0;flex-flow:wrap;gap:0 16px;padding:3px 0}.card-title{flex:none;width:210px}.card-text{color:#3a403c;flex:300px;font-size:9pt}.card-tags{display:none}.card-url{width:100%;color:var(--muted);padding-left:226px;font-size:8.5pt;display:block}}
