:root{--paper: #ffffff;--ink: #16181c;--dim: #6b7280;--rule: #d8dbe1;--sunken: #f2f4f8;--lead: var(--ink);--accent: #1a4b9c;--accent-soft: #6b83b8;--hl-string: #2f6f4e;--warn: #b4443c;--title: var(--accent);--mono: ui-monospace, "SF Mono", "Cascadia Mono", Menlo, Consolas, "DejaVu Sans Mono", "Roboto Mono", monospace;--mono-size: .9rem;--text: "Avenir Next", Avenir, "Helvetica Neue", Helvetica, Arial, sans-serif;color-scheme:light}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--paper: #15181d;--ink: #ccd2da;--dim: #868e9a;--rule: #2a3038;--sunken: #1c2027;--lead: #e5eaf2;--accent: #7fa6ea;--accent-soft: #61748f;--hl-string: #93c9a2;--warn: #e0806f;color-scheme:dark}}:root[data-theme=dark]{--paper: #15181d;--ink: #ccd2da;--dim: #868e9a;--rule: #2a3038;--sunken: #1c2027;--lead: #e5eaf2;--accent: #7fa6ea;--accent-soft: #61748f;--hl-string: #93c9a2;--warn: #e0806f;color-scheme:dark}@property --sky-x{syntax: "<length>"; inherits: true; initial-value: 0px;}@property --sky-y{syntax: "<length>"; inherits: true; initial-value: 0px;}:root[data-sky=stars]{--paper: #06080f;--sunken: #0e1220;--rule: #232a3a}@keyframes sky-drift-near{0%{transform:translateZ(0)}to{transform:translate3d(1600px,0,0)}}@keyframes sky-drift-far{0%{transform:translateZ(0)}to{transform:translate3d(960px,0,0)}}:root[data-sky=stars].sky-driven body:before{animation:none}:root[data-sky=stars].sky-driven body:after{animation-name:twinkle}:root[data-sky=stars] body{background:transparent}:root[data-sky=stars] body:before,:root[data-sky=stars] body:after{content:"";position:fixed;z-index:-1;pointer-events:none;background-repeat:repeat;will-change:transform}:root[data-sky=stars] body:before{inset:-1000px 0 0 -1600px;transform:translate3d(var(--sky-x),var(--sky-y),0);animation:sky-drift-near 840s linear infinite;background-image:radial-gradient(2px 2px at 856px 415px,rgba(255,255,255,.67) 50%,transparent 100%),radial-gradient(1px 1px at 1237px 48px,rgba(255,255,255,.91) 50%,transparent 100%),radial-gradient(1px 1px at 1510px 614px,rgba(255,255,255,.65) 50%,transparent 100%),radial-gradient(1px 1px at 578px 817px,rgba(255,255,255,.8) 50%,transparent 100%),radial-gradient(1px 1px at 1559px 515px,rgba(255,255,255,.66) 50%,transparent 100%),radial-gradient(1px 1px at 1419px 482px,rgba(255,255,255,.85) 50%,transparent 100%),radial-gradient(1px 1px at 605px 53px,#fff 50%,transparent 100%),radial-gradient(1px 1px at 55px 708px,rgba(255,255,255,.92) 50%,transparent 100%),radial-gradient(1px 1px at 1047px 816px,rgba(255,255,255,.84) 50%,transparent 100%),radial-gradient(1px 1px at 1424px 907px,rgba(255,255,255,.81) 50%,transparent 100%),radial-gradient(1px 1px at 197px 919px,rgba(255,255,255,.85) 50%,transparent 100%),radial-gradient(1.5px 1.5px at 117px 202px,rgba(255,255,255,.85) 50%,transparent 100%),radial-gradient(1.5px 1.5px at 836px 320px,rgba(255,255,255,.86) 50%,transparent 100%),radial-gradient(2px 2px at 57px 284px,rgba(255,255,255,.91) 50%,transparent 100%),radial-gradient(1.5px 1.5px at 843px 811px,rgba(255,255,255,.65) 50%,transparent 100%),radial-gradient(1px 1px at 122px 834px,rgba(255,255,255,.89) 50%,transparent 100%),radial-gradient(1.5px 1.5px at 590px 417px,rgba(255,255,255,.92) 50%,transparent 100%),radial-gradient(1px 1px at 899px 194px,rgba(255,255,255,.94) 50%,transparent 100%),radial-gradient(1px 1px at 945px 462px,rgba(255,255,255,.72) 50%,transparent 100%),radial-gradient(1px 1px at 1184px 416px,rgba(255,255,255,.72) 50%,transparent 100%),radial-gradient(1.5px 1.5px at 411px 848px,rgba(255,255,255,.91) 50%,transparent 100%),radial-gradient(1px 1px at 701px 646px,rgba(255,255,255,.66) 50%,transparent 100%),radial-gradient(1.5px 1.5px at 1584px 155px,rgba(255,255,255,.92) 50%,transparent 100%),radial-gradient(1px 1px at 774px 822px,rgba(255,255,255,.74) 50%,transparent 100%),radial-gradient(1px 1px at 991px 960px,rgba(255,255,255,.87) 50%,transparent 100%),radial-gradient(2px 2px at 1304px 616px,#fff 50%,transparent 100%),radial-gradient(1px 1px at 79px 463px,rgba(255,255,255,.78) 50%,transparent 100%),radial-gradient(1px 1px at 456px 384px,rgba(255,255,255,.64) 50%,transparent 100%),radial-gradient(1px 1px at 1388px 211px,rgba(255,255,255,.82) 50%,transparent 100%),radial-gradient(1px 1px at 1559px 373px,rgba(255,255,255,.72) 50%,transparent 100%),radial-gradient(2px 2px at 317px 583px,rgba(255,255,255,.79) 50%,transparent 100%),radial-gradient(1px 1px at 505px 164px,rgba(255,255,255,.86) 50%,transparent 100%),radial-gradient(2px 2px at 1353px 821px,rgba(255,255,255,.71) 50%,transparent 100%),radial-gradient(2px 2px at 1116px 847px,rgba(255,255,255,.72) 50%,transparent 100%),radial-gradient(1.5px 1.5px at 334px 752px,rgba(255,255,255,.82) 50%,transparent 100%),radial-gradient(2px 2px at 368px 938px,rgba(255,255,255,.91) 50%,transparent 100%),radial-gradient(1px 1px at 642px 167px,rgba(255,255,255,.77) 50%,transparent 100%),radial-gradient(2px 2px at 1520px 766px,rgba(255,255,255,.6) 50%,transparent 100%),radial-gradient(1.5px 1.5px at 706px 944px,rgba(255,255,255,.72) 50%,transparent 100%),radial-gradient(1px 1px at 511px 265px,rgba(255,255,255,.9) 50%,transparent 100%),radial-gradient(1.5px 1.5px at 191px 417px,#fff 50%,transparent 100%),radial-gradient(1.5px 1.5px at 188px 285px,#fff 50%,transparent 100%),radial-gradient(1.5px 1.5px at 703px 186px,rgba(255,255,255,.76) 50%,transparent 100%),radial-gradient(1px 1px at 378px 864px,rgba(255,255,255,.78) 50%,transparent 100%),radial-gradient(1px 1px at 874px 614px,rgba(255,255,255,.85) 50%,transparent 100%),radial-gradient(1.5px 1.5px at 830px 57px,rgba(255,255,255,.65) 50%,transparent 100%),radial-gradient(1px 1px at 1173px 72px,rgba(255,255,255,.76) 50%,transparent 100%),radial-gradient(1px 1px at 310px 367px,rgba(255,255,255,.66) 50%,transparent 100%),radial-gradient(2px 2px at 517px 943px,#fff 50%,transparent 100%),radial-gradient(1px 1px at 432px 575px,rgba(255,255,255,.9) 50%,transparent 100%),radial-gradient(1px 1px at 1280px 920px,#fff 50%,transparent 100%),radial-gradient(1px 1px at 1551px 321px,rgba(255,255,255,.63) 50%,transparent 100%),radial-gradient(1px 1px at 1016px 129px,rgba(255,255,255,.71) 50%,transparent 100%),radial-gradient(1px 1px at 1572px 73px,rgba(255,255,255,.83) 50%,transparent 100%),radial-gradient(1.5px 1.5px at 649px 677px,rgba(255,255,255,.73) 50%,transparent 100%),radial-gradient(2px 2px at 1115px 616px,#fff 50%,transparent 100%),radial-gradient(1px 1px at 1287px 268px,rgba(255,255,255,.91) 50%,transparent 100%),radial-gradient(1px 1px at 1302px 752px,rgba(255,255,255,.85) 50%,transparent 100%),radial-gradient(1.5px 1.5px at 1124px 909px,rgba(255,255,255,.75) 50%,transparent 100%),radial-gradient(2px 2px at 1295px 816px,rgba(255,255,255,.94) 50%,transparent 100%),radial-gradient(1.5px 1.5px at 771px 711px,rgba(255,255,255,.81) 50%,transparent 100%),radial-gradient(2px 2px at 101px 628px,rgba(255,255,255,.73) 50%,transparent 100%),radial-gradient(1px 1px at 756px 535px,rgba(255,255,255,.86) 50%,transparent 100%),radial-gradient(1px 1px at 1374px 311px,rgba(255,255,255,.74) 50%,transparent 100%),radial-gradient(1.5px 1.5px at 238px 154px,rgba(255,255,255,.77) 50%,transparent 100%),radial-gradient(2px 2px at 1183px 153px,rgba(255,255,255,.89) 50%,transparent 100%),radial-gradient(1px 1px at 813px 532px,rgba(255,255,255,.82) 50%,transparent 100%),radial-gradient(1px 1px at 735px 49px,rgba(255,255,255,.78) 50%,transparent 100%),radial-gradient(1.5px 1.5px at 1236px 343px,rgba(255,255,255,.79) 50%,transparent 100%),radial-gradient(1.5px 1.5px at 1563px 970px,rgba(255,255,255,.67) 50%,transparent 100%),radial-gradient(1px 1px at 1175px 257px,rgba(255,255,255,.72) 50%,transparent 100%),radial-gradient(2px 2px at 1020px 79px,rgba(255,255,255,.92) 50%,transparent 100%),radial-gradient(2px 2px at 842px 745px,rgba(255,255,255,.69) 50%,transparent 100%),radial-gradient(1px 1px at 596px 955px,rgba(255,255,255,.66) 50%,transparent 100%),radial-gradient(2px 2px at 229px 751px,rgba(255,255,255,.81) 50%,transparent 100%),radial-gradient(1px 1px at 1437px 741px,rgba(255,255,255,.86) 50%,transparent 100%),radial-gradient(2px 2px at 517px 737px,rgba(255,255,255,.74) 50%,transparent 100%),radial-gradient(2px 2px at 781px 346px,rgba(255,255,255,.68) 50%,transparent 100%),radial-gradient(1.5px 1.5px at 242px 74px,rgba(255,255,255,.72) 50%,transparent 100%),radial-gradient(1px 1px at 1361px 647px,rgba(255,255,255,.93) 50%,transparent 100%),radial-gradient(1.5px 1.5px at 898px 906px,rgba(255,255,255,.67) 50%,transparent 100%),radial-gradient(1px 1px at 549px 596px,#fff 50%,transparent 100%),radial-gradient(1.5px 1.5px at 188px 502px,rgba(255,255,255,.83) 50%,transparent 100%),radial-gradient(1.5px 1.5px at 219px 853px,rgba(255,255,255,.79) 50%,transparent 100%),radial-gradient(1px 1px at 461px 504px,rgba(255,255,255,.84) 50%,transparent 100%),radial-gradient(1px 1px at 1095px 687px,rgba(255,255,255,.65) 50%,transparent 100%),radial-gradient(1px 1px at 1123px 507px,rgba(255,255,255,.82) 50%,transparent 100%),radial-gradient(1.5px 1.5px at 322px 213px,rgba(255,255,255,.92) 50%,transparent 100%),radial-gradient(1px 1px at 954px 616px,rgba(255,255,255,.73) 50%,transparent 100%),radial-gradient(1px 1px at 468px 51px,#fff 50%,transparent 100%),radial-gradient(1.5px 1.5px at 561px 243px,rgba(255,255,255,.72) 50%,transparent 100%),radial-gradient(1.5px 1.5px at 1415px 393px,#fff 50%,transparent 100%),radial-gradient(1px 1px at 20px 947px,rgba(255,255,255,.78) 50%,transparent 100%),radial-gradient(1px 1px at 699px 317px,rgba(255,255,255,.86) 50%,transparent 100%),radial-gradient(1.5px 1.5px at 24px 55px,rgba(255,255,255,.86) 50%,transparent 100%),radial-gradient(2px 2px at 1231px 122px,#fff 50%,transparent 100%),radial-gradient(2px 2px at 1420px 89px,#fff 50%,transparent 100%),radial-gradient(2px 2px at 1240px 482px,rgba(255,255,255,.84) 50%,transparent 100%),radial-gradient(1px 1px at 1037px 258px,rgba(255,255,255,.66) 50%,transparent 100%),radial-gradient(1px 1px at 254px 612px,rgba(255,255,255,.83) 50%,transparent 100%),radial-gradient(1.5px 1.5px at 1545px 831px,rgba(255,255,255,.74) 50%,transparent 100%),radial-gradient(1.5px 1.5px at 333px 275px,rgba(255,255,255,.77) 50%,transparent 100%),radial-gradient(1.5px 1.5px at 328px 52px,rgba(255,255,255,.7) 50%,transparent 100%),radial-gradient(2px 2px at 995px 733px,rgba(255,255,255,.85) 50%,transparent 100%),radial-gradient(1.5px 1.5px at 586px 542px,#fff 50%,transparent 100%),radial-gradient(1.5px 1.5px at 376px 542px,#fff 50%,transparent 100%),radial-gradient(1.5px 1.5px at 65px 414px,rgba(255,255,255,.7) 50%,transparent 100%),radial-gradient(1px 1px at 972px 343px,rgba(255,255,255,.77) 50%,transparent 100%);background-size:1600px 1000px}:root[data-sky=stars] body:after{inset:-600px 0 0 -960px;transform:translate3d(calc(var(--sky-x) * .6),calc(var(--sky-y) * .6),0);background-image:radial-gradient(1.5px 1.5px at 757px 355px,rgba(255,255,255,.47) 50%,transparent 100%),radial-gradient(1px 1px at 110px 379px,rgba(255,255,255,.39) 50%,transparent 100%),radial-gradient(1px 1px at 728px 306px,rgba(255,255,255,.61) 50%,transparent 100%),radial-gradient(1.5px 1.5px at 913px 454px,rgba(255,255,255,.65) 50%,transparent 100%),radial-gradient(1.5px 1.5px at 619px 246px,rgba(255,255,255,.38) 50%,transparent 100%),radial-gradient(1px 1px at 269px 487px,rgba(255,255,255,.69) 50%,transparent 100%),radial-gradient(1px 1px at 541px 556px,rgba(255,255,255,.41) 50%,transparent 100%),radial-gradient(1px 1px at 258px 371px,rgba(255,255,255,.64) 50%,transparent 100%),radial-gradient(1px 1px at 425px 565px,rgba(255,255,255,.46) 50%,transparent 100%),radial-gradient(1.5px 1.5px at 227px 31px,rgba(255,255,255,.44) 50%,transparent 100%),radial-gradient(1px 1px at 534px 314px,rgba(255,255,255,.47) 50%,transparent 100%),radial-gradient(1px 1px at 612px 398px,rgba(255,255,255,.39) 50%,transparent 100%),radial-gradient(1px 1px at 612px 107px,rgba(255,255,255,.57) 50%,transparent 100%),radial-gradient(1.5px 1.5px at 880px 212px,rgba(255,255,255,.52) 50%,transparent 100%),radial-gradient(1.5px 1.5px at 54px 393px,rgba(255,255,255,.65) 50%,transparent 100%),radial-gradient(1px 1px at 703px 526px,rgba(255,255,255,.37) 50%,transparent 100%),radial-gradient(1.5px 1.5px at 840px 161px,rgba(255,255,255,.54) 50%,transparent 100%),radial-gradient(1px 1px at 133px 132px,rgba(255,255,255,.54) 50%,transparent 100%),radial-gradient(1px 1px at 370px 334px,rgba(255,255,255,.51) 50%,transparent 100%),radial-gradient(1px 1px at 656px 317px,rgba(255,255,255,.61) 50%,transparent 100%),radial-gradient(1px 1px at 461px 284px,rgba(255,255,255,.68) 50%,transparent 100%),radial-gradient(1.5px 1.5px at 872px 332px,rgba(255,255,255,.61) 50%,transparent 100%),radial-gradient(1px 1px at 76px 161px,rgba(255,255,255,.5) 50%,transparent 100%),radial-gradient(1px 1px at 746px 473px,rgba(255,255,255,.63) 50%,transparent 100%),radial-gradient(1.5px 1.5px at 850px 47px,rgba(255,255,255,.63) 50%,transparent 100%),radial-gradient(1px 1px at 249px 582px,rgba(255,255,255,.52) 50%,transparent 100%),radial-gradient(1px 1px at 783px 302px,rgba(255,255,255,.36) 50%,transparent 100%),radial-gradient(1px 1px at 914px 406px,rgba(255,255,255,.43) 50%,transparent 100%),radial-gradient(1px 1px at 528px 212px,rgba(255,255,255,.38) 50%,transparent 100%),radial-gradient(1px 1px at 747px 127px,rgba(255,255,255,.39) 50%,transparent 100%),radial-gradient(1px 1px at 457px 225px,rgba(255,255,255,.63) 50%,transparent 100%),radial-gradient(1px 1px at 547px 103px,rgba(255,255,255,.4) 50%,transparent 100%),radial-gradient(1px 1px at 406px 368px,rgba(255,255,255,.39) 50%,transparent 100%),radial-gradient(1px 1px at 436px 163px,rgba(255,255,255,.4) 50%,transparent 100%),radial-gradient(1px 1px at 365px 105px,rgba(255,255,255,.69) 50%,transparent 100%),radial-gradient(1.5px 1.5px at 663px 37px,rgba(255,255,255,.51) 50%,transparent 100%),radial-gradient(1px 1px at 489px 385px,rgba(255,255,255,.5) 50%,transparent 100%),radial-gradient(1px 1px at 423px 51px,rgba(255,255,255,.4) 50%,transparent 100%),radial-gradient(1px 1px at 844px 459px,rgba(255,255,255,.46) 50%,transparent 100%),radial-gradient(1px 1px at 529px 70px,rgba(255,255,255,.51) 50%,transparent 100%),radial-gradient(1px 1px at 522px 495px,rgba(255,255,255,.43) 50%,transparent 100%),radial-gradient(1.5px 1.5px at 145px 537px,rgba(255,255,255,.58) 50%,transparent 100%),radial-gradient(1.5px 1.5px at 59px 182px,rgba(255,255,255,.6) 50%,transparent 100%),radial-gradient(1.5px 1.5px at 709px 7px,rgba(255,255,255,.66) 50%,transparent 100%),radial-gradient(1.5px 1.5px at 911px 135px,rgba(255,255,255,.42) 50%,transparent 100%),radial-gradient(1px 1px at 46px 436px,rgba(255,255,255,.57) 50%,transparent 100%),radial-gradient(1.5px 1.5px at 373px 216px,rgba(255,255,255,.57) 50%,transparent 100%),radial-gradient(1px 1px at 260px 278px,rgba(255,255,255,.53) 50%,transparent 100%),radial-gradient(1px 1px at 405px 485px,rgba(255,255,255,.59) 50%,transparent 100%),radial-gradient(1px 1px at 179px 278px,rgba(255,255,255,.6) 50%,transparent 100%),radial-gradient(1px 1px at 661px 567px,rgba(255,255,255,.45) 50%,transparent 100%),radial-gradient(1px 1px at 210px 212px,rgba(255,255,255,.44) 50%,transparent 100%),radial-gradient(1px 1px at 8px 304px,rgba(255,255,255,.4) 50%,transparent 100%),radial-gradient(1px 1px at 125px 465px,rgba(255,255,255,.54) 50%,transparent 100%),radial-gradient(1px 1px at 918px 546px,rgba(255,255,255,.68) 50%,transparent 100%),radial-gradient(1.5px 1.5px at 34px 55px,rgba(255,255,255,.67) 50%,transparent 100%),radial-gradient(1px 1px at 312px 386px,rgba(255,255,255,.53) 50%,transparent 100%),radial-gradient(1.5px 1.5px at 359px 454px,rgba(255,255,255,.4) 50%,transparent 100%),radial-gradient(1px 1px at 779px 419px,rgba(255,255,255,.61) 50%,transparent 100%),radial-gradient(1px 1px at 60px 588px,rgba(255,255,255,.36) 50%,transparent 100%),radial-gradient(1.5px 1.5px at 813px 544px,rgba(255,255,255,.59) 50%,transparent 100%),radial-gradient(1px 1px at 120px 39px,rgba(255,255,255,.57) 50%,transparent 100%),radial-gradient(1px 1px at 903px 43px,rgba(255,255,255,.5) 50%,transparent 100%),radial-gradient(1px 1px at 691px 194px,rgba(255,255,255,.51) 50%,transparent 100%),radial-gradient(1px 1px at 788px 201px,rgba(255,255,255,.39) 50%,transparent 100%),radial-gradient(1px 1px at 348px 32px,rgba(255,255,255,.7) 50%,transparent 100%),radial-gradient(1px 1px at 104px 185px,rgba(255,255,255,.69) 50%,transparent 100%),radial-gradient(1px 1px at 350px 582px,rgba(255,255,255,.7) 50%,transparent 100%),radial-gradient(1.5px 1.5px at 600px 466px,rgba(255,255,255,.36) 50%,transparent 100%),radial-gradient(1px 1px at 270px 152px,rgba(255,255,255,.58) 50%,transparent 100%);background-size:960px 600px;animation:twinkle 5s ease-in-out infinite alternate,sky-drift-far 840s linear infinite}@keyframes twinkle{0%{opacity:.25}to{opacity:1}}*{box-sizing:border-box}html,body{margin:0;font-size:1.1rem;font-family:var(--text);line-height:1.65;background:var(--paper);color:var(--ink);-webkit-font-smoothing:antialiased}body{min-height:100vh;display:flex;flex-direction:column}.container,.terminal{--track: -.025em;--col: calc(1ch + var(--track));letter-spacing:var(--track)}.container{flex:1;width:100%;max-width:72ch;margin:0 auto;padding:0 1rem;display:flex;flex-direction:column;font-family:var(--mono);font-size:var(--mono-size);line-height:1.6;font-feature-settings:"liga" 0,"calt" 0;font-variant-ligatures:none}main{flex:1}::selection{background:color-mix(in srgb,var(--accent) 20%,transparent)}a{color:var(--accent);text-decoration-thickness:1px;text-underline-offset:.15em}p{margin:0 0 1.6em}ul,ol,dl{margin:0 0 1.8em}li{margin:.5em 0}li a:has(+br){font-weight:600;text-decoration:none}li a:has(+br):hover{text-decoration:underline}h1,h2,h3{color:var(--title);font-family:var(--mono);font-feature-settings:"liga" 0,"calt" 0;font-variant-ligatures:none;line-height:1.2;margin:3.2rem 0 1.2rem;text-wrap:balance}h1{font-size:2.2rem;font-weight:800;letter-spacing:-.04em;margin-top:2.4rem}h2{font-size:1.25rem;font-weight:700;letter-spacing:-.02em;border-bottom:1px solid var(--rule);padding-bottom:.3rem}h3{font-size:1.02rem;font-weight:700;letter-spacing:-.01em}.lead{font-size:1.15em;color:var(--lead)}blockquote{margin:2.2em 1.5em;font-family:Times New Roman,Times,serif;font-size:1.5rem;color:var(--dim)}code{font-family:var(--mono);font-size:.82em;font-feature-settings:"liga" 0,"calt" 0;overflow-wrap:anywhere}pre code{overflow-wrap:normal}.hl-k,.hl-t{color:var(--accent)}.hl-s,.hl-a,.hl-n{color:var(--hl-string)}.hl-c{color:var(--dim);font-style:italic}figure.flow{margin:1.8em 0}figure.flow svg{display:block;margin:0 auto}.flow rect{fill:var(--sunken);stroke:var(--rule);stroke-width:1}.flow text{fill:var(--ink);font-family:var(--mono);font-size:13px}.flow path.edge{fill:none;stroke:var(--dim);stroke-width:1.3}.flow marker path{fill:var(--dim)}.flow .edge-label{fill:var(--dim);font-size:12px;paint-order:stroke;stroke:var(--paper);stroke-width:5px;stroke-linejoin:round}pre{background:var(--sunken);padding:.9em 1em;overflow-x:auto;border:1px solid var(--rule)}figure{margin:0 0 1.8em;text-align:center}figure img{max-width:min(11rem,100%);height:auto;border:1px solid var(--rule)}figure img.large{max-width:min(22rem,100%)}figure img.wide{max-width:100%}p>img.large{width:9rem}.space{height:calc(var(--n, 1) * 1.6em)}p>img{float:right;width:5.5rem;height:auto;margin:.2em 0 .6em 1.2em;border:1px solid var(--rule)}h2{clear:both}a[target=_blank]:after{content:"↗";font-size:.7em;margin-left:.15em;vertical-align:.15em;opacity:.7}hr{border:0;border-top:1px solid var(--rule);margin:3rem 0}dl dt{color:var(--dim);font-family:var(--mono);font-size:.78rem;margin-top:1.8em}dl dt:first-child{margin-top:0}dl dd{margin:.2em 0 0}.site-header{display:flex;align-items:flex-start;gap:1.1rem;padding:2rem 0 2.6rem}.mark{flex:none;line-height:0;margin-top:.15rem}.session{flex:1;min-width:0;display:flex;flex-direction:column;gap:.1rem}.theme-toggle{visibility:hidden;opacity:0;transition:opacity .6s ease;flex:none;align-self:flex-start;margin-top:.05rem;width:1.6rem;height:1.6rem;padding:0;border:0;background:none;color:var(--dim);font-size:1rem;line-height:1;cursor:pointer}.theme-toggle.ready{visibility:visible;opacity:1}:root[data-page-theme] .theme-toggle{display:none}.theme-toggle:hover{color:var(--accent)}.planet{display:block;margin:0;padding:0;border:0;background:none;color:var(--rule);font-family:var(--mono);font-size:.29rem;line-height:1;letter-spacing:0;white-space:pre;overflow:visible;transform:scaleY(1.2);transform-origin:top;margin-bottom:calc(12 * .2em);animation:breathe 1.6s ease-in-out infinite}.planet.grown{animation:none}.planet span{display:inline-block;width:1ch}@keyframes breathe{50%{opacity:.45}}.brand{font-size:1.2em;line-height:1;font-weight:800;color:var(--ink);text-decoration:none}.brand:hover{color:var(--accent)}nav{display:flex;flex-wrap:wrap;gap:0 2ch}.navlink{color:var(--ink);text-decoration:none}.navlink:hover{text-decoration:underline}.navlink[aria-current]{color:var(--accent);text-decoration:underline}.ran{font-family:var(--mono);font-size:var(--mono-size);line-height:1.6;color:var(--ink);margin:0 0 1.6rem}.site-header .ran{margin:0}.ran:has(+.listing){margin-bottom:.5rem}.ps1{color:var(--accent)}.ran+h1{margin-top:1.2rem}h1.typing{min-height:calc(3 * 1.2em);text-wrap:wrap}h1.typing a{color:inherit;text-decoration:none}h1.typing a:after{content:"→";margin-left:.6ch;color:var(--accent-soft);font-weight:400}h1.typing a:hover:after{color:var(--accent)}h1 .caret{display:inline-block;width:.5ch;height:.9em;margin-left:.1ch;vertical-align:-.08em;background:currentColor}h1 .caret.idle{animation:blink 1.1s step-end infinite}.listing{list-style:none;padding:0;margin:0 0 2rem;border-top:1px solid var(--rule)}.listing li{margin:0;border-bottom:1px solid var(--rule)}.listing .entry{display:grid;grid-template-columns:max-content 1fr;column-gap:2ch;padding:.75em 0;color:inherit;text-decoration:none;font-family:var(--mono);font-size:var(--mono-size);line-height:1.6}.listing code{font:inherit;color:var(--accent)}.listing .title{grid-column:2;font-family:var(--text);font-size:1rem;font-weight:600;color:var(--ink)}.listing .summary{grid-column:2;font-family:var(--text);font-size:.9rem;color:var(--dim)}.listing .entry:hover .title{text-decoration:underline}.screen:not(:empty){padding-top:.8rem}.screen>*{margin:0 0 .4em}.screen .echo{color:var(--ink)}.screen pre{background:none;border:0;padding:0;font-size:inherit;white-space:pre-wrap}.screen .listing-out a{text-decoration:none}.screen .listing-out a:hover{text-decoration:underline}.screen .error{color:var(--warn)}main,.screen .cat{font-family:var(--text);font-size:1.1rem;line-height:1.65;letter-spacing:0;font-variant-numeric:tabular-nums}.ran.end{display:none;margin:0;cursor:text}.js .ran.end{display:block}.end .line{position:relative;display:inline-block;min-width:var(--col);white-space:pre;vertical-align:baseline}.end .typed:empty:after{content:"​"}.end .ghost{position:absolute;top:.12em;left:calc(var(--caret, 0) * var(--col));width:var(--col);height:1.25em;background:var(--ink);opacity:.28;pointer-events:none}.terminal{display:none;position:sticky;bottom:0;margin-top:1rem;border-top:1px solid var(--rule);background:var(--sunken);font-family:var(--mono);font-size:var(--mono-size);line-height:1.6;font-feature-settings:"liga" 0,"calt" 0;font-variant-ligatures:none}.js .terminal{display:block}.terminal .column{max-width:72ch;margin:0 auto;padding:.6rem 1rem .9rem}.terminal .hint{color:var(--dim);margin:.3em 0 0}.terminal .prompt{display:flex;gap:var(--col);align-items:baseline;margin:0;cursor:text}.terminal .prompt .ps1{flex:none}.terminal .line{position:relative;flex:1;min-width:0}.terminal .prompt input{width:100%;border:0;outline:0;padding:0;margin:0;background:none;color:var(--ink);font:inherit;letter-spacing:inherit;caret-color:transparent}.terminal .cursor{position:absolute;top:.12em;left:calc(var(--caret, 0) * var(--col));width:var(--col);height:1.25em;border:1px solid #fff;mix-blend-mode:difference;pointer-events:none}.terminal .prompt:focus-within .cursor{background:#fff;animation:blink 1.2s step-end infinite}@keyframes blink{50%{opacity:0}}.terminal .suggest{position:absolute;top:0;left:calc(var(--typed, 0) * var(--col));color:var(--dim);white-space:pre;pointer-events:none}.app{--wide: min(60rem, 100vw - 2rem);width:var(--wide);margin:0 0 2em calc((100% - var(--wide)) / 2);font-size:.9rem}.app .charts{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(20rem,100%),1fr));gap:1em 1.5em}.app .dials{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(11rem,100%),1fr));gap:.6em 1.2em;margin-bottom:1.2em}.app .dials label{display:block;font-size:.8rem;color:var(--dim)}.app .dials label output{color:var(--ink);font-variant-numeric:tabular-nums}.app .dials input[type=range]{display:block;width:100%;margin:.2em 0 0;accent-color:var(--accent)}.app .figures{display:grid;grid-template-columns:repeat(auto-fit,minmax(7rem,1fr));gap:.6em;margin-bottom:1.2em}.app .figures div{border:1px solid var(--rule);border-left:4px solid var(--rule);border-radius:.25em;padding:.6em .8em;font-size:.78rem;color:var(--dim)}.app .figures strong{display:block;font-size:1.3rem;color:var(--ink);font-variant-numeric:tabular-nums}.app .figures .clean{border-left-color:var(--accent)}.app .figures .debt{border-left-color:var(--warn)}.app .chart{margin-bottom:1.2em;border:1px solid var(--rule);border-radius:.25em;padding:.8em}.app .charts>.week,.app .maps>div{border:1px solid var(--rule);border-radius:.25em;padding:.8em}.app .chart h4{margin:0 0 .3em;font-size:.85rem;color:var(--dim)}.app svg{display:block;width:100%;height:auto}.app svg text{font-size:10px;fill:var(--dim)}.app svg .grid{stroke:var(--rule)}.app svg .clean{stroke:var(--accent);fill:var(--accent)}.app svg .debt{stroke:var(--warn);fill:var(--warn)}.app svg .line{fill:none;stroke-width:2}.app .row{display:flex;flex-wrap:wrap;gap:.5em 1em;align-items:center;margin-bottom:.8em;font-size:.85rem}.app select,.app input[type=text],.app input[type=number]{font:inherit;font-size:.85rem;padding:.15em .4em;border:1px solid var(--rule);border-radius:.2em;background:var(--paper);color:var(--ink)}.app input[type=number]{width:4.5em}.app button{font:inherit;font-size:.8rem;padding:.25em .7em;border:1px solid var(--accent);border-radius:.2em;background:none;color:var(--accent);cursor:pointer}.app button:hover{background:var(--accent);color:var(--paper)}.app .week{display:grid;grid-template-columns:3.2em repeat(5,1fr);gap:2px;margin-bottom:1.2em;-webkit-user-select:none;user-select:none}.app .week .head,.app .week .hour{font-size:.72rem;color:var(--dim);text-align:center;align-self:center}.app .week .hour{text-align:right;padding-right:.4em}.app .week .slot{height:1.6em;border:1px solid var(--rule);border-radius:.15em;font-size:.72rem;line-height:1.6em;text-align:center;overflow:hidden;white-space:nowrap;cursor:pointer}.app .week .slot.meeting{background:var(--sunken);border-color:var(--accent-soft);color:var(--ink)}.app .week .cell{height:1.6em;font-size:.72rem;line-height:1.6em;text-align:center;border-radius:.15em;background:color-mix(in srgb,var(--accent) calc(var(--heat) * 100%),var(--sunken));color:var(--ink)}.app .maps{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(14rem,100%),1fr));gap:1em}.app .maps h4{margin:0 0 .3em;font-size:.8rem;color:var(--dim)}.app canvas.world{display:block;width:min(100%,22rem);margin:0 auto 1em;aspect-ratio:1;cursor:grab;touch-action:none}.app canvas.world:active{cursor:grabbing}.site-footer{display:flex;flex-wrap:wrap;justify-content:space-between;gap:.5rem 1rem;align-items:baseline;margin-top:2rem;padding-top:1rem;border-top:1px solid var(--rule);color:var(--dim)}.site-footer .social{display:flex;flex-wrap:wrap;gap:.5rem 1rem}.site-footer a{color:var(--dim);text-decoration:none}.site-footer a:hover{color:var(--accent)}@media(max-width:640px){.app{--wide: 100%;margin-left:0}.site-header{display:grid;grid-template-columns:auto 1fr auto;align-items:center;column-gap:.9rem;row-gap:.1rem;padding:1.4rem 0 2.2rem}.session{display:contents}.mark{margin:0;grid-area:1 / 1}.site-header .ran{grid-area:1 / 2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.theme-toggle{margin:0;grid-area:1 / 3}.site-header nav{grid-column:1 / -1;margin-top:.4rem}.planet{font-size:.19rem}h1{font-size:1.35rem}.listing .entry{grid-template-columns:1fr}.listing .title,.listing .summary{grid-column:1}blockquote{margin:1.8em .6em;font-size:1.3rem}p>img.large{float:none;display:block;width:min(14rem,100%);margin:.2em auto 1.2em}}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}@media print{.js .terminal,.theme-toggle{display:none}.container{max-width:none;padding:0}a{color:inherit}}
