:root{--p-bg:#f9f9f9;--p-panel:#f2f2f2;--p-raised:#eeeeee;--p-text:#1b1b1b;--p-muted:#474747;--p-faint:#5e5e5e;--p-outline:#c6c6c6;--p-accent:#a82583;--p-on-accent:#ffffff;--p-secondary:#735667;--p-tertiary:#69577c;--p-error:#ba1a1a;--p-ok:#2f6b1f;--p-warn:#7a5900;--p-sans:"iA Writer Duo", ui-sans-serif, system-ui, sans-serif;--p-mono:"0xProto", ui-monospace, "DejaVu Sans Mono", "Noto Sans Mono", monospace;--primary-hue:317deg;--primary-saturation:64%;--primary-lightness:40%}.dark{--p-bg:#000000;--p-panel:#131313;--p-raised:#1f1f1f;--p-text:#e2e2e2;--p-muted:#c6c6c6;--p-faint:#919191;--p-outline:#474747;--p-accent:#ffade1;--p-on-accent:#600049;--p-secondary:#debdd1;--p-tertiary:#d4bee9;--p-error:#ffb4ab;--p-ok:#b9ca4a;--p-warn:#e7c547;--primary-hue:322deg;--primary-saturation:100%;--primary-lightness:84%}:root{--hx-font-sans:var(--p-sans);--hx-font-mono:var(--p-mono);--hx-radius-xs:0;--hx-radius-sm:1px;--hx-radius-md:2px;--hx-radius-lg:2px;--hx-radius-xl:2px;--hx-radius-2xl:2px;--hx-radius-3xl:2px;--hx-color-dark:#000;--hx-color-white:#fff;--hx-color-gray-50:var(--p-panel);--hx-color-gray-100:var(--p-raised);--hx-color-gray-200:var(--p-outline);--hx-color-gray-500:var(--p-faint);--hx-color-gray-600:var(--p-muted);--hx-color-gray-700:var(--p-muted);--hx-color-gray-800:var(--p-text);--hx-color-gray-900:var(--p-text);--hx-color-slate-900:var(--p-text);--hx-color-neutral-200:var(--p-outline)}.dark{--hx-color-gray-100:var(--p-text);--hx-color-gray-200:var(--p-text);--hx-color-gray-300:var(--p-muted);--hx-color-gray-400:var(--p-muted);--hx-color-gray-500:var(--p-faint);--hx-color-gray-600:var(--p-outline);--hx-color-gray-700:var(--p-outline);--hx-color-slate-100:var(--p-text);--hx-color-neutral-50:var(--p-text);--hx-color-neutral-200:var(--p-text);--hx-color-neutral-300:var(--p-muted);--hx-color-neutral-400:var(--p-muted);--hx-color-neutral-500:var(--p-faint);--hx-color-neutral-600:var(--p-outline);--hx-color-neutral-700:var(--p-outline);--hx-color-neutral-800:var(--p-raised);--hx-color-neutral-900:var(--p-panel);--hx-color-gray-800:var(--p-text);--hx-color-gray-900:var(--p-text)}html{color-scheme:light}html.dark{color-scheme:dark}body{background:var(--p-bg);color:var(--p-text);font-family:var(--p-sans)}::selection{background:var(--p-accent);color:var(--p-on-accent)}.hextra-nav-container nav,.hextra-sidebar-container,.hextra-toc,.hextra-footer,.hextra-search-wrapper,.hextra-search-input,.hextra-search-results,nav[aria-label=breadcrumb],.hextra-pager,.hextra-tabs-toggle,.hextra-code-filename{font-family:var(--p-mono)}.hextra-nav-container-blur{background:var(--p-bg)!important;box-shadow:inset 0 -1px 0 var(--p-outline)!important}.hextra-nav-container nav a{color:var(--p-muted)}.hextra-nav-container nav a:hover,.hextra-nav-container nav a[aria-current=true]{color:var(--p-accent)}@media(min-width:768px){.hextra-sidebar-container{background:var(--p-panel);border-inline-end:1px solid var(--p-outline)}}.hextra-sidebar-container>div:last-child{background:var(--p-panel)!important;box-shadow:none!important;border-color:var(--p-outline)!important}.hextra-sidebar-container a{color:var(--p-muted)}.hextra-sidebar-container a:hover{color:var(--p-text);background:var(--p-raised)}.hextra-sidebar-container a.hextra-sidebar-active-item{background:var(--p-accent)!important;color:var(--p-on-accent)!important;font-weight:700}.hextra-sidebar-container li>span.hx\:cursor-default,.hextra-sidebar-container li:not(:has(a))>span{color:var(--p-faint);text-transform:lowercase;letter-spacing:.02em}.hextra-sidebar-container li:not(:has(a))>span::before{content:"── ";color:var(--p-outline)}.hextra-toc a{color:var(--p-muted)}.hextra-toc a.hextra-toc-active{color:var(--p-accent)!important}.hextra-toc div.hx\:sticky.hx\:bottom-0{background:var(--p-bg)!important;box-shadow:none!important;border-color:var(--p-outline)!important}.hextra-toc a:hover,.hextra-toc a.hx\:text-primary-600{color:var(--p-accent)!important}.hextra-footer{border-top:1px solid var(--p-outline);background:var(--p-panel)!important}.hextra-footer,.hextra-footer a{color:var(--p-faint)}.content{color:var(--p-text);line-height:1.7}.content :where(p,li,td){color:var(--p-text)}.content :where(h1,h2,h3,h4){color:var(--p-text);letter-spacing:-.01em}.content h1{font-family:var(--p-mono);font-weight:700}.content h2:not(.not-prose){display:flex;align-items:baseline;gap:.6ch;border-bottom:0!important;font-size:1.6rem;font-weight:700}.content h2:not(.not-prose)::before{content:"";flex:none;align-self:center;width:.7em;height:.55em;margin-top:.45em;border-top:2px solid var(--p-outline);border-left:2px solid var(--p-outline)}.content h2:not(.not-prose)::after{content:"";flex:1 1 2rem;min-width:2rem;align-self:center;border-top:1px solid var(--p-outline)}.content h3{color:var(--p-secondary)}.content a:not(.not-prose a,.hextra-card,.subheading-anchor){color:var(--p-accent);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.2em}.content a:not(.not-prose a,.hextra-card,.subheading-anchor):hover{color:var(--p-tertiary)}.content :not(pre)>code{font-family:var(--p-mono);font-size:.86em;color:var(--p-text);background:var(--p-raised);border:1px solid var(--p-outline);border-radius:0;padding:.05em .35em}.hextra-code-block pre,.content pre{background:var(--p-raised)!important;border:1px solid var(--p-outline);border-radius:0!important;font-family:var(--p-mono);font-weight:400;line-height:1.45}.hextra-code-block .hextra-code-filename{background:var(--p-panel);border:1px solid var(--p-outline);border-bottom:0;border-radius:0;color:var(--p-muted)}.hextra-code-block .hextra-code-filename::before{content:"┌ ";color:var(--p-outline)}.hextra-code-copy-btn{border-radius:0!important;border-color:var(--p-outline)!important;background:var(--p-panel)!important}.chroma code[data-lang=sh] .line::before,.chroma code[data-lang=bash] .line::before{content:"$ ";color:var(--p-accent);user-select:none;-webkit-user-select:none}.chroma{color:var(--p-text);background:0 0!important}.chroma :is(.c,.c1,.cm,.ch,.cs,.cp){color:var(--p-faint);font-style:normal}.chroma :is(.k,.kd,.kn,.kr,.kt,.nb,.nt){color:var(--p-accent)}.chroma :is(.s,.s1,.s2,.sb,.sd,.se,.si,.sr,.ss,.dl){color:var(--p-secondary)}.chroma :is(.m,.mi,.mf,.mh,.il,.no,.nv,.nn){color:var(--p-tertiary)}.chroma :is(.o,.p,.nx,.nf,.n,.err,.w){color:inherit;background:0 0}.content table{font-size:.92rem}.content :is(th,td){border-color:var(--p-outline)!important}.content th{font-family:var(--p-mono);font-weight:700;background:var(--p-panel)}.content tr{border-color:var(--p-outline)!important;background:0 0!important}.content .hextra-alert,.content div.hx\:mt-6.hx\:flex.hx\:border.hx\:py-2{border-radius:0!important;background:var(--p-panel)!important;color:var(--p-text)!important;border:1px solid var(--p-outline)!important;border-left:3px solid var(--p-accent)!important}.content .hextra-alert :is(p,li,.hextra-alert-title){color:var(--p-text)}.content .hextra-alert .hextra-alert-title{font-family:var(--p-mono);color:var(--p-accent)}.content .hextra-alert:is([data-alert=caution],[data-alert=warning]){border-left-color:var(--p-error)!important}.content .hextra-alert:is([data-alert=caution],[data-alert=warning]) .hextra-alert-title{color:var(--p-error)}.content .hextra-alert[data-alert=tip]{border-left-color:var(--p-tertiary)!important}.content .hextra-alert[data-alert=tip] .hextra-alert-title{color:var(--p-tertiary)}.content blockquote{border-color:var(--p-outline);color:var(--p-muted)}.hextra-card,.hextra-feature-card{border-radius:0!important;border:1px solid var(--p-outline)!important;background:var(--p-panel)!important;box-shadow:none!important}.hextra-feature-card::before{display:none}.hextra-card:hover,.hextra-feature-card:hover{border-color:var(--p-accent)!important}.hextra-card .hextra-card-icon{font-family:var(--p-mono);color:var(--p-text)!important}.hextra-card .hextra-card-subtitle{color:var(--p-muted)!important}.hextra-feature-card h3{font-family:var(--p-mono);font-size:1.05rem!important;font-weight:700!important;color:var(--p-text)}.hextra-feature-card h3 svg{color:var(--p-accent)}.hextra-feature-card p{color:var(--p-muted)!important;font-size:.92rem!important}.hextra-feature-card p code{font-family:var(--p-mono);font-size:.88em;color:var(--p-text)}.hextra-tabs-toggle{border-radius:0!important}.hextra-tabs-toggle[aria-selected=true]{color:var(--p-accent)!important;border-color:var(--p-accent)!important}.content kbd{display:inline;padding:.1em .45em;font-family:var(--p-mono);font-size:.85em;line-height:1;color:var(--p-text);background:var(--p-raised);border:1px solid var(--p-outline);border-bottom-width:3px;border-radius:2px;white-space:nowrap}.content kbd+kbd{margin-inline-start:.15em}.content .alt{color:var(--p-faint);font-size:.85em;padding-inline:.35em}.hextra-search-wrapper input,.hextra-search-input{border-radius:0!important;background:var(--p-raised)!important;border:1px solid var(--p-outline)!important;color:var(--p-text)!important}.hextra-search-wrapper kbd{border-radius:0!important}.hextra-search-dialog{border-radius:0!important;background:var(--p-panel)!important;border-color:var(--p-outline)!important}.hextra-search-results>li>a{border-radius:0!important;color:var(--p-text)!important}.hextra-search-crumb,.hextra-search-excerpt{color:var(--p-muted)!important}.hextra-search-match{color:var(--p-accent)!important}.hextra-search-results>li>a[aria-selected=true]{background:var(--p-accent)!important}.hextra-search-results>li>a[aria-selected=true],.hextra-search-results>li>a[aria-selected=true] *{color:var(--p-on-accent)!important}.zs-hero h1{font-family:var(--p-mono);background:0 0!important;color:var(--p-text)!important;-webkit-text-fill-color:currentColor;letter-spacing:-.02em}.zs-typed{display:grid}.zs-typed>span{grid-area:1/1}.zs-typed>.sizer{visibility:hidden}.zs-typed>span::before{content:"> ";color:var(--p-accent)}.zs-typed>span::after{content:"";display:inline-block;width:.55em;height:.9em;margin-inline-start:.12em;vertical-align:-.08em;background:var(--p-accent);animation:zs-blink 1.1s steps(1,end)infinite}.zs-typed.busy>span::after{animation:none}@keyframes zs-blink{50%{opacity:0}}@media(prefers-reduced-motion:reduce){.zs-typed>span::after{animation:none}}.zs-typed-box{position:relative}.zs-typed-pause{position:absolute;top:100%;left:0;height:24px;padding:0 6px;font-family:var(--p-mono);font-size:.75rem;line-height:1;color:var(--p-faint);background:0 0;border:0;cursor:pointer}.zs-typed-pause span{display:inline-block;width:1ch;color:var(--p-accent)}.zs-typed-pause:hover,.zs-typed-pause:focus-visible{color:var(--p-accent)}.zs-typed-pause:focus-visible{outline:2px solid var(--p-accent);outline-offset:1px}.zs-hero p{color:var(--p-muted)!important}.zs-actions{display:flex;flex-wrap:wrap;gap:.75rem}.zs-actions a{font-family:var(--p-mono);border-radius:0!important;padding:.65rem 1.4rem!important}.zs-actions a:first-child{background:var(--p-accent)!important;color:var(--p-on-accent)!important;font-weight:700}.zs-actions a:first-child::before{content:"[ "}.zs-actions a:first-child::after{content:" ]"}.zs-actions a+a{background:0 0!important;color:var(--p-text)!important;box-shadow:inset 0 0 0 1px var(--p-outline)!important}.content .zs-actions{margin:1.25rem 0}.content .zs-actions a.not-prose{text-decoration:none}.zs-actions a+a:hover{box-shadow:inset 0 0 0 1px var(--p-accent)!important;color:var(--p-accent)!important}.hextra-home .content h2.not-prose,main h2.not-prose{font-family:var(--p-mono)}.content .zs-table{overflow-x:auto;margin-top:1.5rem}.content .zs-table table{margin-top:0}.content .zs-table td{vertical-align:top}.zs-keymap{margin:1.5rem 0;border:1px solid var(--p-outline);background:#f9f9f9}.zs-keymap .bar{display:flex;justify-content:space-between;gap:1rem;padding:.3rem .75rem;font-family:var(--p-mono);font-size:.8rem;color:var(--p-muted);background:var(--p-panel);border-bottom:1px solid var(--p-outline)}.zs-keymap .bar a{color:var(--p-accent)}.zs-keymap .scroll{overflow-x:auto}.zs-keymap img{display:block;width:100%;min-width:40rem;height:auto;margin:0 auto}.zs-whoami{font-family:var(--p-mono);font-size:.8125rem;line-height:1.7;padding:2rem 0 .5rem}.zs-whoami-prompt{color:var(--p-accent)}.zs-whoami-name{color:var(--p-text);font-weight:600}.zs-whoami-dim{color:var(--p-faint)}.zs-whoami a{color:inherit;text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px}.zs-whoami a:hover{color:var(--p-accent)}.zs-layer{margin:1.5rem 0;border:1px solid var(--p-outline);background:var(--p-panel)}.zs-layer .bar{display:flex;justify-content:space-between;gap:1rem;padding:.3rem .75rem;font-family:var(--p-mono);font-size:.8rem;color:var(--p-muted);border-bottom:1px solid var(--p-outline)}.zs-layer .bar span:first-child{color:var(--p-accent)}.zs-layer .scroll{overflow-x:auto}.zs-board{container-type:inline-size;min-width:44rem;padding:.75rem}.zs-keys{--u:calc(100cqi / var(--w));position:relative;width:100%;height:calc(var(--u) * var(--h));font-family:var(--p-mono);font-variant-ligatures:none}.zs-k{position:absolute;left:calc(var(--x) * var(--u));top:calc(var(--y) * var(--u));width:var(--u);height:var(--u);padding:calc(var(--u) * .04);transform-origin:calc(var(--ox) * var(--u))calc(var(--oy) * var(--u));transform:rotate(calc(var(--r) * 1deg))}.zs-k .cap{position:relative;display:flex;align-items:center;justify-content:center;height:100%;padding:0 calc(var(--u) * .05);border:1px solid var(--p-outline);border-bottom-width:3px;border-radius:2px;background:var(--p-raised);color:var(--p-text);font-size:calc(var(--u) * .26);line-height:1.05;text-align:center;word-break:normal;overflow-wrap:break-word}.zs-k.long .cap{font-size:calc(var(--u) * .2)}.zs-k.xlong .cap{font-size:calc(var(--u) * .15)}.zs-k .s,.zs-k .h{position:absolute;left:0;right:0;font-size:calc(var(--u) * .17);color:var(--p-faint)}.zs-k .s{top:calc(var(--u) * .04)}.zs-k .h{bottom:calc(var(--u) * .03);color:var(--p-secondary)}.zs-k.ht .t{margin-bottom:calc(var(--u) * .16)}.zs-k .g svg{display:inline-block;width:1.3em;height:1.3em;fill:currentColor;vertical-align:middle}.zs-k.trans .cap{background:0 0;border-style:dashed;border-bottom-width:1px;color:var(--p-outline)}.zs-k.none .cap{background:0 0;color:var(--p-faint)}.zs-k.module .cap{background:0 0;border:1px dotted var(--p-accent);color:var(--p-accent)}.zs-k.held .cap{background:var(--p-accent);border-color:var(--p-accent);color:var(--p-on-accent)}.zs-k:hover .cap,.zs-k:focus-visible .cap{border-color:var(--p-accent);outline:none}.zs-k:focus-visible{outline:none}.zs-layer figcaption{padding:.4rem .75rem;font-size:.8rem;color:var(--p-faint);border-top:1px solid var(--p-outline)}@page{size:A4 portrait;margin:9mm 10mm 11mm;@bottom-left{font-family: "0xProto", ui-monospace, monospace;
    font-size: 7pt;
    color: #444;
  }@bottom-right{font-family: "0xProto", ui-monospace, monospace;
    font-size: 7pt;
    color: #444;
  }}*,*::before,*::after{box-sizing:border-box}html{background:#fff;-webkit-print-color-adjust:exact;print-color-adjust:exact}body.zs-print{margin:0;background:#fff;color:#000;font-family:var(--p-sans);font-size:9pt;line-height:1.35;font-variant-ligatures:none}.zs-print code,.zs-print kbd{font-family:var(--p-mono);font-size:.92em}.zs-print kbd{padding:0 .25em;border:.6pt solid #555;border-bottom-width:1.2pt;border-radius:1.5pt}.sheet{box-sizing:border-box;width:190mm;margin:0 auto;break-after:page}.sheet:last-child{break-after:auto}@media screen{body.zs-print{padding:8mm 0;background:#ddd}.sheet{min-height:277mm;margin-bottom:8mm;padding:6mm;width:202mm;background:#fff;box-shadow:0 0 0 1px #bbb}}.manual .head{display:flex;justify-content:space-between;align-items:flex-start;gap:6mm;padding-bottom:2mm;border-bottom:1pt solid var(--p-accent)}.manual h1{margin:0;font-family:var(--p-mono);font-size:15pt;line-height:1.2}.manual .head p{margin:1mm 0 0;color:#333}.manual .qr{display:flex;align-items:center;gap:2mm;color:#000;font-family:var(--p-mono);font-size:7pt;text-decoration:none}.manual .qr img{width:18mm;height:18mm;image-rendering:pixelated}.manual .cols{column-count:2;column-gap:8mm;margin-top:3mm}.manual h2{break-after:avoid;margin:2.6mm 0 .8mm;font-family:var(--p-mono);font-size:9.5pt;color:var(--p-accent);border-bottom:.6pt solid var(--p-accent)}.manual .cols>h2:first-child{margin-top:0}.manual p,.manual ul{margin:0 0 1.2mm}.manual ul{padding-left:4mm}.manual li{margin:0}.manual table{width:100%;border-collapse:collapse;margin:0 0 1.2mm;break-inside:avoid}.manual th,.manual td{padding:.5mm 1.2mm;border:.5pt solid var(--p-accent);text-align:left;vertical-align:top}.manual th{background:0 0;color:var(--p-accent);border-bottom-width:1pt}.manual .combos{margin-top:2mm;break-inside:avoid}.manual .combos h2{margin-top:0}.manual .combos .zs-table{overflow:visible}.manual .combos p{margin-top:1mm}.grids{display:flex;flex-direction:column;align-items:center;gap:4mm}.zs-print .zs-layer{margin:0;border:1pt solid var(--lc);background:0 0;break-inside:avoid}.grids.n1 .zs-layer,.grids.n2 .zs-layer{width:190mm}.grids.n3 .zs-layer{width:182mm}.zs-print .zs-layer .bar{background:0 0;color:var(--lc);border-bottom:.8pt solid var(--lc);font-size:9pt}.zs-print .zs-layer .bar span:first-child{color:var(--lc);font-weight:700}.zs-print .zs-layer .scroll{overflow:visible}.zs-print .zs-board{min-width:0;padding:2.5mm}.zs-print .zs-layer figcaption{padding:1mm 3mm 1.5mm;background:0 0;border-top:.5pt solid var(--lc);color:#222;font-size:8pt}.zs-print .legend{width:182mm;margin:0;color:#222;font-size:7.6pt}.zs-print .zs-k{padding:calc(var(--u) * .06)}.zs-print .zs-k .cap{background:0 0;border:.8pt solid #000;border-bottom-width:1.6pt;color:#000}.zs-print .zs-k .s{color:#333}.zs-print .zs-k .h{color:#000;font-weight:700}.zs-print .zs-k.trans .cap{border:.8pt dashed #888;color:#aaa}.zs-print .zs-k.none .cap{border:.4pt solid #bbb;color:#aaa}.zs-print .zs-k.module .cap{border:1.4pt dotted var(--p-accent);color:var(--p-accent);font-weight:700}.zs-print .zs-k.held .cap{background:0 0;border:2pt solid var(--lc);color:var(--lc);font-weight:700}.zs-print .sw{padding:0 .35em;border:.8pt solid #000}.zs-print .sw.trans{border-style:dashed;border-color:#888;color:#666}.zs-print .sw.none{border-width:.4pt;border-color:#bbb;color:#666}.zs-print .sw.module{border:1.4pt dotted var(--p-accent);color:var(--p-accent);font-weight:700}.zs-print .sw.held{border:2pt solid var(--p-accent);color:var(--p-accent);font-weight:700}