:root{--hl-bg:#282a36;--hl-bg-dark:#21222c;--hl-fg:#eff0eb;--hl-comment:#a39e9b;--hl-blue:#57c7ff;--hl-cyan:#9aedfe;--hl-green:#5af78e;--hl-magenta:#ff6ac1;--hl-purple:#bd93f9;--hl-red:#ff5c57;--hl-yellow:#f3f99d;--hl-carnation:#f99fc6;--hl-coral:#f97c7c;--hl-lilac:#c9c5fb;--hl-olive:#b6d37c;--hl-opal:#b1d7c7;--hl-sand:#ffab6f}.hl-keyword{color:var(--hl-magenta);font-weight:700}.hl-keyword-control{color:var(--hl-carnation);font-weight:700}.hl-keyword-control-exception{color:var(--hl-red);font-weight:700}.hl-keyword-control-conditional,.hl-keyword-control-repeat,.hl-keyword-control-import,.hl-keyword-control-return{color:var(--hl-carnation);font-weight:700}.hl-keyword-function{color:var(--hl-lilac);font-weight:700}.hl-keyword-operator,.hl-keyword-storage,.hl-keyword-storage-type,.hl-keyword-storage-modifier{color:var(--hl-coral);font-weight:700}.hl-function{color:var(--hl-green)}.hl-function-builtin{color:var(--hl-sand)}.hl-function-method{color:var(--hl-opal)}.hl-function-macro,.hl-function-special{color:var(--hl-blue)}.hl-type{color:var(--hl-opal)}.hl-type-builtin{color:var(--hl-yellow)}.hl-type-enum-variant{color:var(--hl-sand)}.hl-constant{color:var(--hl-purple)}.hl-constant-builtin,.hl-constant-builtin-boolean{color:var(--hl-olive)}.hl-constant-character{color:var(--hl-carnation)}.hl-constant-character-escape{color:var(--hl-magenta)}.hl-constant-numeric,.hl-constant-numeric-integer{color:var(--hl-cyan)}.hl-constant-numeric-float{color:var(--hl-red)}.hl-string{color:var(--hl-yellow)}.hl-string-regexp{color:var(--hl-red)}.hl-string-special,.hl-string-special-path,.hl-string-special-url,.hl-string-special-symbol{color:var(--hl-blue)}.hl-variable{color:var(--hl-cyan)}.hl-variable-builtin{color:var(--hl-olive)}.hl-variable-parameter{color:var(--hl-blue);font-style:italic}.hl-variable-other{color:var(--hl-cyan)}.hl-variable-other-member{color:var(--hl-lilac)}.hl-comment,.hl-comment-line,.hl-comment-block,.hl-comment-block-documentation,.hl-comment-line-documentation{color:var(--hl-comment)}.hl-punctuation{color:var(--hl-magenta)}.hl-punctuation-bracket{color:var(--hl-fg)}.hl-punctuation-delimiter{color:var(--hl-coral)}.hl-punctuation-special{color:var(--hl-magenta)}.hl-operator{color:var(--hl-coral)}.hl-attribute{color:var(--hl-opal)}.hl-label{color:var(--hl-magenta)}.hl-namespace{color:var(--hl-olive)}.hl-constructor{color:var(--hl-sand)}.hl-special{color:var(--hl-magenta)}.hl-tag{color:var(--hl-carnation)}.hl-markup-heading{color:var(--hl-purple);font-weight:700}.hl-markup-bold{color:var(--hl-blue);font-weight:700}.hl-markup-italic{color:var(--hl-yellow);font-style:italic}.hl-markup-strikethrough{text-decoration:line-through}.hl-markup-link-text{color:var(--hl-magenta)}.hl-markup-link-url{color:var(--hl-cyan)}.hl-markup-link-label{color:var(--hl-blue);font-style:italic}.hl-markup-list{color:var(--hl-cyan)}.hl-markup-quote{color:var(--hl-yellow);font-style:italic}.hl-markup-raw{color:var(--hl-fg)}.hl-diff-plus{color:var(--hl-green)}.hl-diff-minus{color:var(--hl-red)}.hl-diff-delta{color:var(--hl-blue)}*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--bg:#0a0a0a;--fg:#e8e6e3;--fg-muted:#7a7870;--accent:#b0a899;--rule:#1e1e1e;--rule-visible:#2a2a2a;--mono:"SF Mono", "Cascadia Mono", "Fira Code", "Consolas", "Liberation Mono", monospace;--sans:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif}html{-webkit-text-size-adjust:100%;font-size:16px}body{background:var(--bg);min-height:100vh;color:var(--fg);font-family:var(--sans);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;flex-direction:column;font-weight:400;line-height:1.7;display:flex}main{flex:1;width:100%;max-width:38em;margin:0 auto;padding:2rem 1.5rem 8rem}main.centered{text-align:center;flex-direction:column;justify-content:center;align-items:center;display:flex}.site-header{border-bottom:1px solid var(--rule);width:100%;max-width:38em;margin:0 auto;padding:4rem 1.5rem 2.5rem}.site-title{border-bottom:none;justify-content:center;align-items:center;gap:.6em;margin-bottom:.75rem;text-decoration:none;display:flex}.site-title:hover{border-bottom:none}.logo{flex-shrink:0;width:auto;height:2.8em}.site-title span{font-family:var(--sans);letter-spacing:.04em;text-transform:uppercase;color:var(--fg);font-size:clamp(1.6rem,4vw,2.2rem);font-weight:700}.tagline{letter-spacing:.01em;color:var(--fg-muted);text-align:center;max-width:32em;margin:0 auto;font-size:1.05rem;font-weight:500;line-height:1.6}hr{border:none;border-top:1px solid var(--rule);margin:3.5rem 0}h2{font-family:var(--sans);letter-spacing:.14em;text-transform:uppercase;color:var(--fg-muted);margin-bottom:2rem;font-size:.8rem;font-weight:700}h3{font-family:var(--sans);color:var(--fg);margin-top:2.5rem;margin-bottom:.75rem;font-size:1rem;font-weight:700}.heading-anchor{opacity:0;color:var(--fg-muted);border-bottom:none;margin-left:.3em;font-weight:400;text-decoration:none}h2:hover .heading-anchor,h3:hover .heading-anchor{opacity:.4}.content p{color:var(--fg);margin-bottom:1.1em}.content ul{margin-top:1rem;padding:0;list-style:none}.content ul li{color:var(--fg);margin-bottom:1em;padding-left:1.25em;line-height:1.6;position:relative}.content ul li:before{content:"—";color:var(--fg-muted);position:absolute;left:0}.content li strong{color:var(--fg);font-weight:700}pre{font-family:var(--mono);border:1px solid var(--rule-visible);background:#050505;border-radius:3px;margin:1.5em 0;padding:1.2em 1.4em;font-size:.85rem;line-height:1.5;overflow-x:auto}code{font-family:var(--mono);font-size:.85em}a{color:var(--accent);border-bottom:1px solid var(--rule);text-decoration:none}a:hover{color:var(--fg);border-bottom-color:var(--fg-muted)}.action{font-family:var(--mono);border:1px solid var(--rule-visible);background:#050505;border-radius:3px;flex-direction:column;gap:.5em;margin-top:4rem;padding:1.2em 1.4em;font-size:.85rem;line-height:1.5;display:flex;overflow-x:auto}.action .line{align-items:baseline;gap:.6em;min-width:max-content;display:flex}.action .prompt{color:var(--hl-magenta);user-select:none;flex-shrink:0}.action .line:last-child .prompt{opacity:0;animation:1ms 5s forwards prompt-appear}.action .command{white-space:nowrap;max-width:0;color:var(--hl-fg);border-right:.55em solid var(--fg-muted);animation:3.2s steps(53,end) 1.5s forwards typing-1,.8s step-end 4 forwards cursor-blink;overflow:hidden}.action .command-2{white-space:nowrap;max-width:0;color:var(--hl-fg);border-right:.55em solid #0000;animation:3.2s steps(54,end) 5.3s forwards typing-2,.8s step-end 5s infinite cursor-enter;overflow:hidden}.action .cmd-name-1,.action .cmd-name-2,.action .cmd-name-3,.action .cmd-name-4{color:var(--hl-red)}.action .cmd-name-1{animation:1ms 1.74s forwards cmd-resolve}.action .cmd-name-2{animation:1ms 4.16s forwards cmd-resolve}.action .cmd-name-3{animation:1ms 5.54s forwards cmd-resolve}.action .cmd-name-4{animation:1ms 7.43s forwards cmd-resolve}.action .cmd-flag{color:var(--hl-fg)}.action .cmd-url{color:var(--hl-blue)}.action .cmd-string{color:var(--hl-yellow)}.action .cmd-op{color:var(--hl-coral)}.action a{color:inherit;border-bottom:1px solid var(--fg-muted)}.action a:hover{color:var(--accent);border-bottom-color:var(--accent)}@keyframes typing-1{0%{max-width:0}to{max-width:54ch}}@keyframes typing-2{0%{max-width:0}to{max-width:55ch}}@keyframes cursor-blink{50%,to{border-color:#0000}}@keyframes cursor-enter{0%,to{border-color:var(--fg-muted)}50%{border-color:#0000}}@keyframes prompt-appear{to{opacity:1}}@keyframes cmd-resolve{to{color:var(--hl-green)}}.js .action .command{animation-iteration-count:1,3;animation-play-state:paused,paused;animation-delay:.5s,0s}.js .action .line:last-child .prompt{animation-play-state:paused;animation-delay:4s}.js .action .command-2{animation-play-state:paused,paused;animation-delay:4.3s,4s}.js .action .cmd-name-1{animation-play-state:paused;animation-delay:.74s}.js .action .cmd-name-2{animation-play-state:paused;animation-delay:3.16s}.js .action .cmd-name-3{animation-play-state:paused;animation-delay:4.54s}.js .action .cmd-name-4{animation-play-state:paused;animation-delay:6.43s}.js .action.in-view .command,.js .action.in-view .command-2,.js .action.in-view .line:last-child .prompt,.js .action.in-view .cmd-name-1,.js .action.in-view .cmd-name-2,.js .action.in-view .cmd-name-3,.js .action.in-view .cmd-name-4{animation-play-state:running,running}@media (width<=480px){.site-header{padding:2.5rem 1.25rem 0}main{padding:1.5rem 1.25rem 5rem}.action{padding:1em 1.2em;font-size:.65rem}}.site-footer{border-top:1px solid var(--rule);max-width:38em;color:var(--fg-muted);text-align:center;margin:0 auto;padding:3rem 1.5rem 2rem;font-size:.78rem}