:root{--bg:#f2efe9;--paper:#f2efe9;--surface:#e5ded2;--panel:#e5ded2;--panel-2:#d6cdbe;--raised:#f3f0ea;--ink:#252525;--ink-2:#5e5e5e;--ink-3:#8b8b8b;--line:#5a5d5d;--line-2:#a89a86;--grid-line:#c4b7a4;--signal:#ee1935;--signal-ink:#000;--signal-text:#be1228;--ok:#12953a;--bad:#b32412;--warn:#c56a00;--info:#127fd2;--shadow-hard:3px 3px 0 #252525;--shadow-hard-active:1px 1px 0 #252525;--shadow-inset:inset 0 2px 4px rgba(0,0,0,.18);--mono:Geist Mono,monospace;--sans:Geist,sans-serif}@font-face{font-display:swap;font-family:Geist;font-style:normal;font-weight:400;src:url(fonts/geist-v5-latin-regular.woff2) format("woff2")}@font-face{font-display:swap;font-family:Geist;font-style:normal;font-weight:700;src:url(fonts/geist-v5-latin-700.woff2) format("woff2")}@font-face{font-display:swap;font-family:Geist Mono;font-style:normal;font-weight:400;src:url(fonts/geist-mono-v6-latin-regular.woff2) format("woff2")}@font-face{font-display:swap;font-family:Geist Mono;font-style:normal;font-weight:700;src:url(fonts/geist-mono-v6-latin-700.woff2) format("woff2")}*{box-sizing:border-box}body,html{margin:0}body{background:var(--paper);background-blend-mode:normal;background-image:linear-gradient(var(--grid-line) 1px,transparent 1px),linear-gradient(90deg,var(--grid-line) 1px,transparent 1px);background-position:-1px -1px;background-size:64px 64px,64px 64px;color:var(--ink);font-family:var(--sans);font-size:13px;line-height:1.45}body:before{background:var(--paper);content:"";inset:0;opacity:.94;position:fixed;z-index:-1}a[target=_blank]:after{content:"↗";font-size:.9em;vertical-align:super}.wrap{margin:0 auto;max-width:960px;padding:0 16px 64px}label{color:var(--ink-2);font-size:10px;font-weight:700;letter-spacing:.18em;text-transform:uppercase}input[type=number],input[type=text],select,textarea{--mat-fill:#d7d7d3;--mat-band:#b8b9b6;--mat-edge:#777a79;--mat-divider:#989a98;--mat-ink:#252525;--mat-ink-2:#4c4946;--mat-accent:#ee1935;--mat-focus:#ee1935;background:var(--mat-fill);border:1px solid var(--mat-edge);border-radius:3px;box-shadow:var(--shadow-inset);caret-color:var(--mat-accent);color:var(--mat-ink);font-family:var(--sans);font-size:13px;outline:none;padding:8px 12px;width:100%}input::placeholder,textarea::placeholder{color:var(--mat-ink-2);opacity:.9}input:disabled,select:disabled,textarea:disabled{color:var(--mat-ink-2);opacity:.4}textarea{line-height:1.5;min-height:96px;resize:vertical}input[type=number]:focus,input[type=text]:focus,select:focus,textarea:focus{border-color:var(--mat-focus);outline:2px solid var(--mat-focus);outline-offset:-1px}.num{text-align:center;width:64px}.row{align-items:flex-end;flex-wrap:wrap;gap:16px}.field,.row{display:flex}.field{flex-direction:column;gap:8px}.field.grow{flex:1 1 240px;min-width:0}.hint{color:var(--ink-2);font-size:10px;letter-spacing:.06em;margin-top:4px}a{color:var(--ink)}.sr-only{height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;clip:rect(0,0,0,0);border:0;white-space:nowrap}.tog{align-items:center;cursor:pointer;display:inline-flex;gap:8px;user-select:none}.tog input{opacity:0;pointer-events:none;position:absolute}.box{background:#353433;border:1px solid var(--line);border-radius:4px;box-shadow:inset 0 2px 3px rgba(0,0,0,.45);display:inline-block;flex:none;height:24px;position:relative;transition:background .15s ease-out;width:44px}.box:after{background:linear-gradient(180deg,hsla(0,0%,100%,.45),hsla(0,0%,100%,0) 55%),#d7d7d3;border:1px solid #5a5d5d;border-radius:3px;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.6),0 2px 0 #5a5d5d,0 3px 3px rgba(0,0,0,.3);content:"";height:20px;left:1px;position:absolute;top:1px;transition:transform .15s ease-out;width:20px}.tog input:checked+.box{background:#ee1935}.tog input:checked+.box:after{transform:translateX(20px)}.tog:active .box:after{box-shadow:inset 0 1px 0 hsla(0,0%,100%,.6),0 1px 0 #5a5d5d,0 1px 2px rgba(0,0,0,.3)}.tog input:focus-visible+.box{outline:2px solid var(--signal);outline-offset:3px}.mode{border:1px solid var(--line);color:var(--ink-2);font-size:10px;letter-spacing:.16em;padding:4px 8px;text-transform:uppercase}.mode.on{background:var(--signal);border-color:var(--signal);color:var(--signal-ink)}.schema-block{margin-top:6px}@media(prefers-reduced-motion:reduce){*,:after,:before{animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:.01ms!important}}@media(max-width:560px){.mod-sub{display:none}}header{align-items:flex-end;display:flex;flex-wrap:wrap;gap:16px;justify-content:space-between;margin-bottom:0;padding:24px 0 16px;width:100%}.brand{align-items:flex-start;display:flex;flex-direction:column;gap:8px;min-width:0}.brand-logo{display:block;fill:var(--ink);height:auto;width:clamp(200px,44vw,360px)}.brand small{display:block;font-weight:400;letter-spacing:.32em}.brand small,.meta{color:var(--ink-2);font-family:var(--mono);font-size:11px;text-transform:uppercase}.meta{letter-spacing:.08em;line-height:1.6;text-align:right}.meta b{color:var(--ink);font-weight:500}.intro{display:flex;flex-direction:column;gap:8px}.intro .pipe{color:var(--ink-2);font-family:var(--mono);font-size:10.5px;letter-spacing:.08em;margin-top:8px;text-transform:uppercase}.intro .pipe span{color:var(--signal-text)}.steps{display:grid;gap:8px;grid-template-columns:repeat(3,1fr);list-style:none;margin:16px 0;padding:0}.steps li{align-items:flex-start;background:var(--surface);border:1px solid var(--line-2);display:flex;font-size:12px;gap:8px;line-height:1.4;padding:12px}.steps .s-no{background:var(--signal);color:var(--signal-ink);display:grid;flex:none;font-family:var(--mono);font-size:12px;height:20px;place-items:center;width:20px}.steps .s-no,.steps b{font-weight:700}.examples{margin-top:16px}.ex-lead{color:var(--ink-2);font-size:10px;letter-spacing:.12em;margin-bottom:8px;text-transform:uppercase}.ex-grid{display:grid;gap:8px;grid-template-columns:repeat(3,1fr)}button.act.ex-card{display:flex;flex-direction:column;font-weight:500;gap:4px;text-align:left}button.act.ex-card span{color:var(--ink-2);font-size:11px;line-height:1.4}.ex-card .ex-card:hover{background:var(--panel-2);border-color:var(--signal)}.ex-card:hover b{color:var(--signal-text)}.ex-card:focus-visible{outline:2px solid var(--signal);outline-offset:2px}@media(max-width:560px){.ex-grid,.steps{grid-template-columns:1fr}}.mod{--mat-fill:#e7e1d6;--mat-band:#d6cdbe;--mat-edge:#a89a86;--mat-divider:#c4b7a4;--mat-ink:#252525;--mat-ink-2:#5e5e5e;--mat-accent:#ee1935;--mat-focus:#ee1935;background:var(--mat-fill);border:0 solid var(--mat-edge);color:var(--mat-ink);margin-top:16px}.mod-head{align-items:baseline;background:var(--mat-band);display:flex;gap:16px;padding:12px 16px}.mod-no{color:var(--ink);font-family:var(--mono);font-size:16px;font-weight:700;letter-spacing:0}.mod-title{color:var(--mat-ink);font-family:var(--sans);font-size:15px;font-weight:700;letter-spacing:.04em}.mod-sub,.mod-title{text-transform:uppercase}.mod-sub{color:var(--mat-ink-2);font-family:var(--mono);font-size:11px;letter-spacing:.06em;margin-left:auto}.mod-body{padding:16px}.step-lead{--mat-fill:#232425;--mat-edge:#5a5d5d;--mat-divider:#127fd2;--mat-ink:#9fdeff;--mat-ink-2:#5ec4ff;--mat-accent:#d8f2ff;--mat-focus:#5ec4ff;background:var(--mat-fill);border:1px solid var(--mat-edge);border-radius:5px;color:var(--mat-ink);font-family:var(--mono);font-optical-sizing:auto;font-size:12.5px;font-style:normal;font-variation-settings:"ELSH" 0;font-weight:400;line-height:1.5;margin:0 0 16px;max-width:74ch;padding:12px 16px}.step-lead b{color:var(--mat-accent);font-weight:700}.chips{display:flex;flex-wrap:wrap;gap:4px}button.act.chip{font-size:10px;font-weight:500;padding:7px 16px 8px}#schemaAuto[aria-pressed=true]{background:var(--signal);border-color:var(--signal);color:var(--signal-ink)}.tip{align-items:center;border:1px solid var(--ink);border-radius:50%;color:var(--ink);cursor:help;display:inline-flex;font-size:9px;font-weight:700;height:14px;justify-content:center;line-height:1;margin-left:6px;position:relative;user-select:none;vertical-align:middle;width:14px}.tip:focus-visible,.tip:hover{background:var(--ink);color:var(--paper);outline:none}.tip:after{background:var(--ink);bottom:calc(100% + 9px);color:var(--paper);content:attr(data-tip);font-size:11px;font-weight:400;letter-spacing:.01em;line-height:1.45;max-width:62vw;padding:9px 11px;pointer-events:none;text-align:left;text-transform:none;width:240px}.tip:after,.tip:before{left:50%;opacity:0;position:absolute;transform:translateX(-50%);transition:opacity .12s;visibility:hidden;z-index:30}.tip:before{border:5px solid transparent;border-top:5px solid var(--ink);bottom:calc(100% + 3px);content:""}.tip:focus-visible:after,.tip:focus-visible:before,.tip:hover:after,.tip:hover:before{opacity:1;visibility:visible}.btns{display:flex;flex-wrap:wrap;gap:10px;margin-top:16px}button.act{--key-face:#d7d7d3;--key-wall:#5a5d5d;--key-text:#252525;background:linear-gradient(180deg,hsla(0,0%,100%,.38),hsla(0,0%,100%,0) 46%),var(--key-face);border:1px solid var(--key-wall);border-radius:7px;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.55),inset 0 -4px 6px rgba(0,0,0,.16),0 4px 0 var(--key-wall),0 6px 6px rgba(0,0,0,.22);color:var(--key-text);cursor:pointer;font-family:var(--sans);font-size:13px;font-weight:700;letter-spacing:.06em;padding:9px 18px 10px;position:relative;transition:transform .06s ease-out,box-shadow .06s ease-out,filter .12s}button.act:hover{filter:brightness(1.06)}button.act:active,button.act[aria-pressed=true]{box-shadow:inset 0 1px 0 hsla(0,0%,100%,.5),inset 0 -2px 4px rgba(0,0,0,.16),0 1px 0 var(--key-wall),0 2px 3px rgba(0,0,0,.25);filter:brightness(1.04);transform:translateY(3px)}button.act.ghost{--key-face:#e7e1d6;--key-wall:#a89a86;--key-text:#252525}button.act.sig{--key-face:#ee1935;--key-wall:#232425;--key-text:#000}button.act.danger{--key-face:#b32412;--key-wall:#232425;--key-text:#fff}button.act:disabled{--key-face:#e5ded2;--key-wall:#a89a86;--key-text:#8b8b8b;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.35),0 2px 0 var(--key-wall);cursor:not-allowed;filter:none}button.act:disabled:active{transform:none}button.act:focus-visible{outline:2px solid var(--signal);outline-offset:3px;z-index:1}.out{margin-top:16px;position:relative}.out .val{--mat-fill:#232425;--mat-edge:#5a5d5d;--mat-divider:#0b6629;--mat-ink:#97ffac;--mat-ink-2:#57f57a;--mat-accent:#c8ffd0;--mat-focus:#2fdd5a;background:var(--mat-fill);border:1px solid var(--mat-edge);border-radius:5px;color:var(--mat-ink);font-family:var(--mono);font-optical-sizing:auto;font-size:23px;font-style:normal;font-variation-settings:"ELSH" 0;font-weight:400;min-height:44px;padding:12px 48px 12px 12px;white-space:pre-wrap;word-break:break-all}.out .val .mark{background:var(--signal);color:var(--signal-ink);padding:0 2px}button.act.copy{bottom:-18px;cursor:pointer;font-family:var(--sans);font-size:10px;font-weight:500;letter-spacing:.1em;padding:4px 8px;position:absolute!important;right:0}.copy:hover{background:var(--ink);color:var(--bg)}.copy[aria-pressed=true]{background:var(--signal);border-color:var(--signal);color:var(--signal-ink)}.copy.done{background:#0b6629;border-color:#0b6629;color:#fff}.reads{--mat-fill:#232425;--mat-edge:#5a5d5d;--mat-divider:#127fd2;--mat-ink:#9fdeff;--mat-ink-2:#5ec4ff;--mat-accent:#d8f2ff;--mat-focus:#5ec4ff;background:var(--mat-fill);border:1px solid var(--mat-edge);border-radius:5px;color:var(--mat-ink);display:flex;flex-wrap:wrap;font-family:var(--mono);font-optical-sizing:auto;font-style:normal;font-variation-settings:"ELSH" 0;font-weight:400;gap:0;margin-top:16px}.read{border-right:1px solid var(--mat-divider);flex:1 1 90px;padding:8px 12px}.read:last-child{border-right:0}.read .k{color:var(--mat-ink-2);font-size:9px;letter-spacing:.18em;text-transform:uppercase}.read .v{color:var(--mat-ink);font-family:var(--mono);font-size:16px;font-variant-numeric:tabular-nums;font-weight:700;letter-spacing:0;margin-top:4px}@media(max-width:560px){.read{border-right:1px solid var(--mat-divider);flex-basis:50%}}.lenctl{background:var(--surface);border:1px solid var(--line);margin-top:16px;padding:16px}input[type=range]{-webkit-appearance:none;appearance:none;background:transparent;cursor:pointer;height:22px;margin:4px 0 0;width:100%}input[type=range]:focus-visible{outline:2px solid var(--signal);outline-offset:3px}input[type=range]::-webkit-slider-runnable-track{background:repeating-linear-gradient(90deg,var(--paper) 0,var(--paper) 5px,var(--ink) 5px,var(--ink) 6px);border:1px solid var(--ink);height:8px}input[type=range]::-moz-range-track{background:var(--paper);border:1px solid var(--ink);height:8px}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;background:var(--signal);border:1px solid var(--ink);height:22px;margin-top:-7px;width:14px}input[type=range]::-moz-range-thumb{background:var(--signal);border:1px solid var(--ink);border-radius:0;height:22px;width:14px}input[type=range]:disabled{cursor:not-allowed;opacity:.4}.tape{margin-top:28px}.tape-top{align-items:baseline;display:flex;justify-content:space-between;margin-bottom:4px}.tape-top .lab{color:var(--ink-2);font-size:10px;letter-spacing:.18em;text-transform:uppercase}.tape-top .qty{font-family:var(--mono);font-size:13px;font-variant-numeric:tabular-nums;font-weight:700}.tape-top .qty .now{color:var(--signal-text)}.ticks{--mat-fill:#232425;--mat-edge:#5a5d5d;--mat-divider:#127fd2;--mat-ink:#9fdeff;--mat-ink-2:#5ec4ff;--mat-accent:#d8f2ff;--mat-focus:#5ec4ff;background:var(--mat-fill);background:repeating-linear-gradient(90deg,var(--mat-fill) 0,var(--mat-fill) 7px,var(--mat-divider) 7px,var(--mat-divider) 8px);border:1px solid var(--mat-edge);border-radius:3px;color:var(--mat-ink);font-family:var(--mono);font-optical-sizing:auto;font-style:normal;font-variation-settings:"ELSH" 0;font-weight:400;height:24px;overflow:hidden;position:relative}.fill{background:#2da7f7;bottom:0;left:0;mix-blend-mode:screen;top:0;transition:width .18s steps(12)}.ceil,.fill{position:absolute}.ceil{background:var(--signal);bottom:-3px;top:-3px;width:2px}.ceil:after{color:var(--ink-2);content:"MAX";font-size:8px;left:-7px;letter-spacing:.14em;position:absolute;top:-14px}@media(prefers-reduced-motion:reduce){.fill{transition:none}}.status{align-items:center;background:transparent;border:0;color:var(--ink);display:flex;font-family:var(--mono);font-size:12px;gap:8px;justify-content:flex-start;letter-spacing:.02em;margin-top:16px;--led:#777a79}.status:empty{display:none}.status:after{background:var(--led);border:1px solid rgba(0,0,0,.2);border-radius:50%;box-shadow:0 0 4px var(--led);content:"";flex:none;height:8px;width:8px}.status.ok{--led:#4dff66}.status.bad{--led:#ff3b30}.status.warn{--led:#ffd94a}.status.info{--led:#2da7f7}.mod-head .status{align-self:center;margin:0 0 0 auto}.mod-head .status:empty{display:flex}.usage-ex+.usage-ex{margin-top:28px}.usage-ex .out{margin-top:0}.usage-ex .hint{margin:6px 0}.ex-label{color:var(--ink-2);font-family:var(--sans);font-size:10px;font-weight:700;letter-spacing:.14em;margin-bottom:10px;text-transform:uppercase}.code{--mat-fill:#232425;--mat-edge:#5a5d5d;--mat-divider:#0b6629;--mat-ink:#97ffac;--mat-ink-2:#57f57a;--mat-accent:#c8ffd0;--mat-focus:#2fdd5a;background:var(--mat-fill);border:1px solid var(--mat-edge);border-radius:5px;color:var(--mat-ink);font-family:var(--mono);font-optical-sizing:auto;font-size:12px;font-style:normal;font-variation-settings:"ELSH" 0;font-weight:400;line-height:1.6;margin:0;overflow-x:auto;padding:14px 16px;tab-size:2;white-space:pre}.code code{background:none;color:inherit;font:inherit;padding:0}.code .t-com{color:#989a98;font-style:italic}.code .t-key{color:#ffc95c}.code .t-str{color:#5ec4ff}.code .t-num{color:#ffd992}.hint code{background:var(--surface);border:1px solid var(--line-2);border-radius:2px;color:var(--ink);font-family:var(--mono);font-size:.95em;padding:0 4px}.info-grid{align-items:start;display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));margin-top:16px}.info-grid .mod{margin:0}.info{font-size:12.5px;line-height:1.55}.info p{margin:0;max-width:60ch}.kv{align-items:baseline;display:grid;gap:6px 16px;grid-template-columns:max-content 1fr;margin:0}.kv dt{color:var(--ink-2);font-family:var(--sans);font-size:10px;font-weight:700;letter-spacing:.12em;text-transform:uppercase}.kv dd{color:var(--ink);font-family:var(--mono);margin:0}.info address{font-style:normal;line-height:1.7}.linkrow{display:flex;flex-wrap:wrap;margin-top:16px}.linkrow--stack{flex-direction:column;gap:1px}.info a{border-bottom:1px solid transparent;color:var(--signal-text);text-decoration:none;transition:border-color .12s}.info a:hover{border-bottom-color:var(--signal-text)}