@font-face{font-family:Chakra Petch;font-style:normal;font-display:swap;font-weight:500;src:url(./chakra-petch-latin-500-normal.BR1ody1F.woff2)format("woff2"),url(./chakra-petch-latin-500-normal.CnUQnZ4D.woff)format("woff")}@font-face{font-family:Chakra Petch;font-style:normal;font-display:swap;font-weight:700;src:url(./chakra-petch-latin-700-normal.CnDBPjkL.woff2)format("woff2"),url(./chakra-petch-latin-700-normal.D1s_c2du.woff)format("woff")}@font-face{font-family:Atkinson Hyperlegible;font-style:normal;font-display:swap;font-weight:400;src:url(./atkinson-hyperlegible-latin-400-normal.BrHNak5F.woff2)format("woff2"),url(./atkinson-hyperlegible-latin-400-normal.BbWidj28.woff)format("woff")}@font-face{font-family:Atkinson Hyperlegible;font-style:normal;font-display:swap;font-weight:700;src:url(./atkinson-hyperlegible-latin-700-normal.GZI4o3u0.woff2)format("woff2"),url(./atkinson-hyperlegible-latin-700-normal.BK6Glc0m.woff)format("woff")}:root{--bench:oklch(19% .012 95);--panel:oklch(23.5% .014 95);--panel-2:oklch(28% .016 95);--line:oklch(38% .02 95);--text:oklch(95% .01 95);--muted:oklch(78% .02 95);--yellow:oklch(87% .17 95);--yellow-ink:oklch(22% .04 95);--pass:oklch(80% .16 150);--fail:oklch(72% .17 28);--info:oklch(80% .1 230);--s1:4px;--s2:8px;--s3:12px;--s4:16px;--s5:24px;--s6:32px;--s7:48px;--s8:72px;--r:10px;--display:"Chakra Petch", system-ui, sans-serif;--body:"Atkinson Hyperlegible", system-ui, sans-serif;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*,:after,:before{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--bench);color:var(--text);font:400 1.0625rem/1.65 var(--body);letter-spacing:.01em;margin:0}canvas,img,svg,video{max-width:100%;display:block}a{color:var(--yellow);text-underline-offset:3px}a:hover{text-decoration-thickness:2px}h1,h2,h3{font-family:var(--display);text-wrap:balance;margin:0 0 var(--s4);line-height:1.12}h1{letter-spacing:-.01em;font-size:clamp(2rem,1.4rem + 3vw,3.5rem)}h1,h2{font-weight:700}h2{margin-top:var(--s7);font-size:clamp(1.45rem,1.2rem + 1.2vw,2.1rem)}h3{margin-top:var(--s5);font-size:1.2rem;font-weight:700}p{margin:0 0 var(--s4);text-wrap:pretty}.prose{max-width:68ch}.prose li{margin-bottom:var(--s2)}:focus-visible{outline:3px solid var(--yellow);outline-offset:3px;border-radius:4px}.num{font-variant-numeric:tabular-nums;font-family:var(--display)}.muted{color:var(--muted)}.wrap{width:min(1160px,100% - 2 * var(--s4));margin-inline:auto}.skip{background:var(--yellow);color:var(--yellow-ink);padding:var(--s3);z-index:99;position:absolute;top:0;left:-999px}.skip:focus{left:var(--s3)}.top{border-bottom:1px solid var(--line);background:var(--bench);z-index:20;position:sticky;top:0}.top .wrap{gap:var(--s4);min-height:60px}.brand,.top .wrap{align-items:center;display:flex}.brand{gap:var(--s2);font:700 1.15rem var(--display);color:var(--text);margin-right:auto;text-decoration:none}.brand svg{width:30px;height:30px}.nav{gap:var(--s1);flex-wrap:wrap;display:flex}.nav a{color:var(--muted);font:500 .95rem var(--display);padding:var(--s2) var(--s3);border-radius:6px;align-items:center;min-height:44px;text-decoration:none;display:inline-flex}.nav a.router-link-exact-active,.nav a:hover{color:var(--text);background:var(--panel)}.nav a.cta{color:var(--yellow-ink);background:var(--yellow)}@media (width<=860px){.nav{background:var(--panel);border-bottom:1px solid var(--line);padding:var(--s3);flex-direction:column;display:none;position:absolute;top:60px;left:0;right:0}.nav.open{display:flex}}.btn{font:700 1rem var(--display);letter-spacing:.02em;border:2px solid var(--line);background:var(--panel-2);color:var(--text);cursor:pointer;align-items:center;gap:var(--s2);border-radius:8px;min-height:44px;padding:10px 18px;text-decoration:none;display:inline-flex}.btn:hover{border-color:var(--muted)}.btn.primary{background:var(--yellow);border-color:var(--yellow);color:var(--yellow-ink)}.btn.primary:hover{background:oklch(92% .15 95)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.on{border-color:var(--yellow);color:var(--yellow)}.btns{gap:var(--s2);flex-wrap:wrap;align-items:center;display:flex}input[type=number],input[type=text],select,textarea{font:inherit;color:var(--text);background:var(--bench);border:2px solid var(--line);border-radius:8px;max-width:100%;min-height:44px;padding:10px 12px}textarea{resize:vertical;width:100%}label{font-weight:700}input[type=range]{width:100%;accent-color:var(--yellow);min-height:44px}.rig{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:var(--s4);margin:var(--s5) 0;min-width:0}@media (width>=700px){.rig{padding:var(--s5)}}.rig-head{gap:var(--s3);margin-bottom:var(--s4);flex-wrap:wrap;justify-content:space-between;align-items:center;display:flex}.tape{font:700 .9rem var(--display);letter-spacing:.08em;text-transform:uppercase;background:var(--yellow);color:var(--yellow-ink);border-radius:3px;padding:3px 10px 2px;display:inline-block}.leds{gap:var(--s3);font:500 .85rem var(--display);color:var(--muted);flex-wrap:wrap;display:flex}.led{align-items:center;gap:6px;display:inline-flex}.led:before{content:"";background:var(--panel-2);border:1px solid var(--line);border-radius:50%;width:10px;height:10px}.led.lit-idle:before{background:var(--muted)}.led.lit-test:before{background:var(--yellow);box-shadow:0 0 8px var(--yellow)}.led.lit-pass:before{background:var(--pass);box-shadow:0 0 8px var(--pass)}.led.lit-fail:before{background:var(--fail);box-shadow:0 0 8px var(--fail)}.readouts{gap:var(--s2);margin:var(--s4) 0;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));display:grid}.readout{background:var(--bench);border:1px solid var(--line);padding:var(--s3);border-radius:8px;min-width:0}.readout b{font:700 clamp(1.4rem,1.1rem + 1.2vw,2rem)/1.1 var(--display);font-variant-numeric:tabular-nums;color:var(--yellow);overflow-wrap:anywhere;display:block}.readout span{color:var(--muted);font-size:.9rem}.note{background:var(--panel-2);padding:var(--s3) var(--s4);margin:var(--s3) 0;border-radius:8px;font-size:.97rem}.note.warn{background:oklch(32% .07 60)}.note.bad{background:oklch(30% .08 28)}.note.good{background:oklch(30% .07 150)}.stage{background:var(--bench);border:1px dashed var(--line);touch-action:none;-webkit-user-select:none;user-select:none;border-radius:8px;min-height:180px;position:relative;overflow:hidden}.hero{padding:var(--s7) 0 var(--s4)}.hero p.lede{color:var(--muted);max-width:60ch;font-size:1.2rem}.crumbs{padding-top:var(--s4);font-size:.9rem}.crumbs,.crumbs a{color:var(--muted)}.grid2{gap:var(--s5);grid-template-columns:minmax(0,1fr);display:grid}.grid2>*{min-width:0}@media (width>=900px){.grid2{grid-template-columns:minmax(0,1.4fr) minmax(0,1fr)}}.faq details{border-top:1px solid var(--line);padding:var(--s3) 0}.faq summary{cursor:pointer;font:700 1.08rem var(--display);align-items:center;min-height:44px;display:flex}.faq details p{margin-top:var(--s2);max-width:68ch}table{border-collapse:collapse;width:100%;font-size:.97rem}td,th{text-align:left;padding:var(--s2) var(--s3);border-bottom:1px solid var(--line);vertical-align:top}th{font-family:var(--display);color:var(--muted);font-weight:500}.tablewrap{max-width:100%;overflow-x:auto}.explainer{border-radius:var(--r);padding:var(--s4);margin:var(--s5) 0;background:oklch(22.5% .03 230);border:1px solid oklch(38% .05 230);min-width:0}@media (width>=700px){.explainer{padding:var(--s5)}}.explainer .tape{background:var(--info);color:oklch(20% .04 230)}.foot{border-top:1px solid var(--line);margin-top:var(--s8);padding:var(--s6) 0;color:var(--muted);font-size:.95rem}.foot .cols{gap:var(--s5);grid-template-columns:repeat(auto-fit,minmax(min(200px,100%),1fr));display:grid}.foot a{color:var(--muted)}.foot ul{margin:0;padding:0;list-style:none}.foot li{padding:4px 0}.ai{margin-top:var(--s5)}.ai .out{white-space:pre-wrap;background:var(--bench);border:1px solid var(--line);padding:var(--s4);margin-top:var(--s3);border-radius:8px;min-height:3em}.sr{clip:rect(0 0 0 0);width:1px;height:1px;position:absolute;overflow:hidden}@media (prefers-reduced-motion:reduce){*,:after,:before{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important}}header .navbtn{display:none}@media (width<=860px){header .navbtn{display:inline-flex}}@media (width<=600px){.readouts{grid-template-columns:repeat(2,minmax(0,1fr))}}
