#adaline-machine{color:#e8dcb8;background:#14141a;border:1px solid #3a3a40;border-radius:6px;max-width:720px;margin:1.5rem auto;padding:0;font-family:monospace;overflow:hidden;box-shadow:0 6px 26px #0000008c}.ka-svg{user-select:none;touch-action:none;width:100%;height:auto;display:block}.ka-section-label{fill:#e0d4a4;letter-spacing:2px;font-family:monospace;font-size:10px;font-weight:700}.ka-small-label{fill:#c4b888;letter-spacing:1.5px;font-family:monospace;font-size:9px}.ka-meter-text{fill:#2a1a08;font-family:monospace;font-size:10px;font-weight:700}.ka-readout{fill:#1a1208;font-family:monospace;font-size:11px;font-weight:700}.ka-brand{fill:#f0e6c0;letter-spacing:5px;font-family:monospace;font-size:18px;font-weight:700}.ka-brand-sub{fill:#6a624c;letter-spacing:3px;font-family:monospace;font-size:8px}.ka-knob,.ka-knob *{cursor:grab}.ka-knob.ka-knob-dragging,.ka-knob.ka-knob-dragging *{cursor:grabbing}.ka-knob:hover .ka-knob-body-circle{filter:brightness(1.08)}.ka-knob-bezel{fill:#0a0806;stroke:#302618;stroke-width:1px}.ka-tick-major{stroke:#f0e4b0;stroke-width:2px;stroke-linecap:round}.ka-tick-minor{stroke:#9a8d60;stroke-width:1px;stroke-linecap:round}.ka-knob-rim{stroke:#2a2010;stroke-width:.5px}.ka-knob-body-circle{stroke:#2a2010;stroke-width:.5px;transition:filter .12s}.ka-knurl{stroke:#5a4a20;stroke-width:.9px;stroke-linecap:round;opacity:.85}.ka-knob-highlight{fill:#fff8d059;pointer-events:none}.ka-knob-indicator{stroke:#1a1004;stroke-width:3.5px;stroke-linecap:round}.ka-knob-cap{stroke:#4a3a18;stroke-width:.5px}.ka-knob-cap-hi{fill:#fffadc80;pointer-events:none}.ka-switch-body{fill:#24201a;stroke:#5a5340;stroke-width:1px;cursor:pointer}.ka-switch-inner{fill:#0a0806;pointer-events:none}.ka-switch-lever{stroke-linecap:round;pointer-events:none}.ka-switch-on .ka-switch-lever{stroke:#f5ecc8;stroke-width:3.5px}.ka-switch-off .ka-switch-lever{stroke:#5a5340;stroke-width:3px}.ka-switch-hit{fill:#0000;cursor:pointer}.ka-led{fill:#1a0806;stroke:#5a4838;stroke-width:1px}.ka-led.ka-led-on-pos{fill:#6af39e;stroke:#c2f8d8;filter:drop-shadow(0 0 6px #4ade80)}.ka-led.ka-led-on-neg{fill:#ff9a46;stroke:#ffd4a8;filter:drop-shadow(0 0 6px #f97316)}.ka-target-btn,.ka-target-btn *{cursor:pointer}.ka-target-led{fill:#1a1608;stroke:#5a5340;stroke-width:1px;transition:fill .12s,stroke .12s,filter .12s}.ka-target-btn:hover .ka-target-led{stroke:#b8ac78}.ka-target-led.ka-target-active{fill:#fff3c0;stroke:#fff9d8;filter:drop-shadow(0 0 5px #f5ecc8)}.ka-led-label{fill:#b0a478;font-family:monospace;font-size:9px}.ka-controls{background:#181820;border-top:1px solid #2a2a2e;flex-wrap:wrap;align-items:center;gap:.4rem;padding:.6rem .9rem;font-size:11px;display:flex}.ka-btn{letter-spacing:1px;color:#e0d6b0;cursor:pointer;background:#2a2a32;border:1px solid #504838;border-radius:3px;padding:.35rem .75rem;font-family:monospace;font-size:10px;font-weight:700;transition:background .1s,border-color .1s,color .1s}.ka-btn:hover{background:#3a3a42;border-color:#b8ac78}.ka-btn-primary{color:#e6f3a8;background:#3a4a20;border-color:#7a9840}.ka-btn-primary:hover{background:#4a5a30}.ka-btn-muted{color:#9a8e68}.ka-sep{flex:1;min-width:.5rem}.ka-step-info{color:#8a7f60;margin-left:auto;font-family:monospace}.ka-step-info span{color:#f0e6c0}#tk-machine{color:#e8dcb8;background:#14141a;border:1px solid #3a3a40;border-radius:6px;max-width:660px;margin:1.5rem auto;padding:0;font-family:monospace;overflow:hidden;box-shadow:0 6px 26px #0000008c}.tk-svg{user-select:none;touch-action:none;width:100%;height:auto;display:block}.tk-section-label{fill:#e0d4a4;letter-spacing:2px;font-family:monospace;font-size:10px;font-weight:700}.tk-small-label{fill:#c4b888;font-family:monospace;font-size:11px}.tk-chan-label{fill:#c4b888;font-family:monospace;font-size:13px}.tk-meter-text{fill:#2a1a08;font-family:monospace;font-size:10px;font-weight:700}.tk-readout{fill:#1a1208;font-family:monospace;font-size:11px;font-weight:700}.tk-val{fill:#f0e6c0;font-family:monospace;font-size:12px;font-weight:700}.tk-wire{stroke:#3a4030;stroke-width:1.5px}.tk-brand{fill:#f0e6c0;letter-spacing:4px;font-family:monospace;font-size:15px;font-weight:700}.tk-knob,.tk-knob *{cursor:grab}.tk-knob.tk-dragging,.tk-knob.tk-dragging *{cursor:grabbing}.tk-knob:hover .tk-knob-body-circle{filter:brightness(1.08)}.tk-knob-bezel{fill:#0a0806;stroke:#302618;stroke-width:1px}.tk-tick-major{stroke:#f0e4b0;stroke-width:2px;stroke-linecap:round}.tk-tick-minor{stroke:#9a8d60;stroke-width:1px;stroke-linecap:round}.tk-knob-rim{stroke:#2a2010;stroke-width:.5px}.tk-knob-body-circle{stroke:#2a2010;stroke-width:.5px;transition:filter .12s}.tk-knurl{stroke:#5a4a20;stroke-width:.9px;stroke-linecap:round;opacity:.85}.tk-knob-highlight{fill:#fff8d059;pointer-events:none}.tk-knob-indicator{stroke:#1a1004;stroke-width:3.5px;stroke-linecap:round}.tk-knob-cap{stroke:#4a3a18;stroke-width:.5px}.tk-knob-cap-hi{fill:#fffadc80;pointer-events:none}.tk-switch-body{fill:#24201a;stroke:#5a5340;stroke-width:1px;cursor:pointer}.tk-switch-inner{fill:#0a0806;pointer-events:none}.tk-switch-lever{stroke-linecap:round;pointer-events:none}.tk-switch-on .tk-switch-lever{stroke:#f5ecc8;stroke-width:4.5px}.tk-switch-off .tk-switch-lever{stroke:#5a5340;stroke-width:4px}.tk-switch-hit{fill:#0000;cursor:pointer}.tk-led{fill:#1a0806;stroke:#5a4838;stroke-width:1px}.tk-led.tk-led-on-pos{fill:#6af39e;stroke:#c2f8d8;filter:drop-shadow(0 0 6px #4ade80)}.tk-led.tk-led-on-neg{fill:#ff9a46;stroke:#ffd4a8;filter:drop-shadow(0 0 6px #f97316)}.tk-led-label{fill:#b0a478;font-family:monospace;font-size:11px}.tk-eqn{color:#d8e8b0;text-align:center;letter-spacing:.5px;background:#101015;border-top:1px solid #2a2a2e;padding:.55rem .9rem;font-family:monospace;font-size:13px}.tk-controls{background:#181820;border-top:1px solid #2a2a2e;flex-wrap:wrap;align-items:center;gap:.4rem;padding:.6rem .9rem;font-size:11px;display:flex}.tk-btn{letter-spacing:1px;color:#e0d6b0;cursor:pointer;background:#2a2a32;border:1px solid #504838;border-radius:3px;padding:.35rem .75rem;font-family:monospace;font-size:10px;font-weight:700;transition:background .1s,border-color .1s,color .1s}.tk-btn:hover{background:#3a3a42;border-color:#b8ac78}.tk-btn-primary{color:#e6f3a8;background:#3a4a20;border-color:#7a9840}.tk-btn-primary:hover{background:#4a5a30}.tk-tgt.tk-tgt-active{color:#cfe8ff;background:#24405a;border-color:#7ab8f5}.tk-small{color:#8a7f60}.tk-sep{flex:1;min-width:.5rem}.tk-step-info{color:#8a7f60;margin-left:auto;font-family:monospace}.tk-step-info span{color:#f0e6c0}#decision-boundary{color:#c8beaa;background:#1a1a2e;border:1px solid #333;border-radius:8px;max-width:540px;margin:1.5rem auto;font-family:monospace;overflow:hidden;box-shadow:0 4px 16px #0006}.db-title{letter-spacing:1.5px;color:#7f7560;background:#14141e;border-bottom:1px solid #2a2a3e;padding:.5rem .8rem;font-size:11px}.db-svg{user-select:none;width:100%;height:auto;display:block}.db-grid-line{stroke:#23233a;stroke-width:.5px}.db-axis-label{fill:#888;font-family:monospace;font-size:10px}.db-tick-label{fill:#555;font-family:monospace;font-size:8px}.db-halfplane-pos{fill:#4ade8012;pointer-events:none}.db-halfplane-neg{fill:#f9731612;pointer-events:none}.db-line{stroke:#c8beaa;stroke-width:2px;stroke-linecap:round}.db-warrow{stroke:#7c83db;stroke-width:1.5px;stroke-linecap:round}.db-warrow-label{fill:#7c83db;font-family:monospace;font-size:10px;font-weight:700}.db-point-pos{fill:#4ade80;stroke:#1a2a18;stroke-width:1.5px}.db-point-neg{fill:#f97316;stroke:#2a1a08;stroke-width:1.5px}.db-point-label,.db-readout{fill:#888;font-family:monospace;font-size:9px}.db-controls{background:#14141e;border-top:1px solid #2a2a3e;flex-wrap:wrap;align-items:center;gap:.35rem;padding:.6rem .8rem;font-size:11px;display:flex}.db-label{color:#888;letter-spacing:1px;font-size:10px}.db-btn{letter-spacing:1px;color:#c8beaa;cursor:pointer;background:#222240;border:1px solid #3a3a5a;border-radius:3px;padding:.3rem .7rem;font-family:monospace;font-size:10px;font-weight:700;transition:background .1s,border-color .1s}.db-btn:hover{background:#2a2a4a;border-color:#7c83db}.db-dataset.db-ds-active{color:#f0e6c0;border-color:#f0e6c0}.db-btn-primary{color:#d8f0a8;background:#2a4a2a;border-color:#4ade80}.db-btn-primary:hover{background:#3a5a2a}.db-btn-muted{color:#7f7560}.db-sep{flex:1;min-width:.5rem}#madaline-machine{color:#e8dcb8;background:#14141a;border:1px solid #3a3a40;border-radius:6px;max-width:720px;margin:1.5rem auto;padding:0;font-family:monospace;overflow:hidden;box-shadow:0 6px 26px #0000008c}.km-svg{user-select:none;touch-action:none;width:100%;height:auto;display:block}.km-section{fill:#e0d4a4;letter-spacing:1.8px;font-family:monospace;font-size:10px;font-weight:700}.km-small-label{fill:#c4b888;letter-spacing:1.2px;font-family:monospace;font-size:9px}.km-brand{fill:#f0e6c0;letter-spacing:5px;font-size:15px;font-weight:700}.km-pattern-info{fill:#b0a478;letter-spacing:1px;font-family:monospace;font-size:9px}.km-pattern-xy{fill:#f0e6c0;font-family:monospace;font-size:11px}.km-hidden-label{fill:#e0d4a4;font-family:monospace;font-size:12px;font-weight:700}.km-z-readout{fill:#c4b888;font-family:monospace;font-size:10px}.km-unit-sublabel{fill:#7f7560;font-family:monospace;font-size:8px}.km-wire{stroke:#2f2f3a;stroke-width:1px;fill:none}.km-wire-x1{stroke:#3a3040}.km-wire-x2{stroke:#303a40}.km-iswitch-body{fill:#24201a;stroke:#5a5340;stroke-width:1px;cursor:pointer}.km-iswitch-inner{fill:#0a0806;pointer-events:none}.km-iswitch-lever{stroke-linecap:round;pointer-events:none}.km-iswitch-on .km-iswitch-lever{stroke:#f5ecc8;stroke-width:4px}.km-iswitch-off .km-iswitch-lever{stroke:#5a5340;stroke-width:3.5px}.km-iswitch-hit{fill:#0000;cursor:pointer}.km-iswitch-label{fill:#e0d4a4;font-family:monospace;font-size:14px;font-weight:700}.km-knob,.km-knob *{cursor:grab}.km-knob.km-knob-dragging,.km-knob.km-knob-dragging *{cursor:grabbing}.km-knob-bezel{fill:#0a0806;stroke:#302618;stroke-width:1px}.km-tick-major{stroke:#f0e4b0;stroke-width:1.5px;stroke-linecap:round}.km-tick-minor{stroke:#9a8d60;stroke-width:.8px;stroke-linecap:round}.km-knob-body-circle{stroke:#2a2010;stroke-width:.5px;transition:filter .12s}.km-knob:hover .km-knob-body-circle{filter:brightness(1.1)}.km-knurl{stroke:#5a4a20;stroke-width:.7px;stroke-linecap:round;opacity:.8}.km-knob-highlight{fill:#fff8d059;pointer-events:none}.km-knob-indicator{stroke:#1a1004;stroke-width:2.5px;stroke-linecap:round}.km-knob-cap{fill:#c0b280;stroke:#4a3a18;stroke-width:.5px}.km-flash-ring{fill:none;stroke:#fff3c0;stroke-width:0;opacity:0;pointer-events:none;transition:stroke-width .12s,opacity .12s}.km-flash-ring.km-flash-active{stroke-width:3px;opacity:1}.km-h-led{fill:#1a0806;stroke:#5a4838;stroke-width:1px;transition:fill .18s,stroke .18s,filter .18s}.km-h-led.km-h-on-pos{fill:#6af39e;stroke:#c2f8d8;filter:drop-shadow(0 0 5px #4ade80)}.km-h-led.km-h-on-neg{fill:#ff9a46;stroke:#ffd4a8;filter:drop-shadow(0 0 5px #f97316)}.km-h-led-label{fill:#c8beaa;font-family:monospace;font-size:9px;font-weight:700}.km-maj-label{fill:#7c83db;font-family:monospace;font-size:14px;font-weight:700}.km-maj-sublabel{fill:#666c9a;font-family:monospace;font-size:9px}.km-output-led{fill:#1a0806;stroke:#5a4838;stroke-width:1.5px;transition:fill .18s,stroke .18s,filter .18s}.km-output-led.km-out-pos{fill:#6af39e;stroke:#c2f8d8;filter:drop-shadow(0 0 7px #4ade80)}.km-output-led.km-out-neg{fill:#ff9a46;stroke:#ffd4a8;filter:drop-shadow(0 0 7px #f97316)}.km-output-text{fill:#f0e6c0;font-family:monospace;font-size:11px;font-weight:700}.km-target-btn,.km-target-btn *{cursor:pointer}.km-target-led{fill:#1a1608;stroke:#5a5340;stroke-width:1px;transition:fill .12s,stroke .12s,filter .12s}.km-target-btn:hover .km-target-led{stroke:#b8ac78}.km-target-led.km-target-active{fill:#fff3c0;stroke:#fff9d8;filter:drop-shadow(0 0 5px #f5ecc8)}.km-led-label{fill:#b0a478;font-family:monospace;font-size:9px}.km-controls{background:#181820;border-top:1px solid #2a2a2e;flex-wrap:wrap;align-items:center;gap:.35rem;padding:.6rem .9rem;font-size:11px;display:flex}.km-btn{letter-spacing:1px;color:#e0d6b0;cursor:pointer;background:#2a2a32;border:1px solid #504838;border-radius:3px;padding:.35rem .7rem;font-family:monospace;font-size:10px;font-weight:700;transition:background .1s,border-color .1s}.km-btn:hover{background:#3a3a42;border-color:#b8ac78}.km-btn-primary{color:#e6f3a8;background:#3a4a20;border-color:#7a9840}.km-btn-primary:hover{background:#4a5a30}.km-btn-muted{color:#9a8e68}.km-preset{font-size:9px}.km-spacer{flex:1;min-width:.5rem}.km-info{color:#8a7f60;margin-left:auto;font-family:monospace;font-size:10px}.km-info span{color:#f0e6c0}#echo-canceller{color:#c8beaa;background:#1a1a2e;border:1px solid #333;border-radius:8px;max-width:540px;margin:1.5rem auto;font-family:monospace;overflow:hidden;box-shadow:0 4px 16px #0006}.ec-title{letter-spacing:1.5px;color:#7f7560;background:#14141e;border-bottom:1px solid #2a2a3e;padding:.5rem .8rem;font-size:11px}.ec-svg{user-select:none;width:100%;height:auto;display:block}.ec-plot-label{fill:#888;letter-spacing:1px;font-family:monospace;font-size:9px}.ec-line{fill:none;stroke-width:1.2px;stroke-linejoin:round}.ec-line-tx{stroke:#7c83db}.ec-line-rx{stroke:#f97316}.ec-line-res{stroke:#4ade80}.ec-tap-bar-pos{fill:#c8beaa}.ec-tap-bar-neg{fill:#f97316}.ec-tap-true{stroke:#7c83db;stroke-width:2px;stroke-linecap:round}.ec-tap-label{fill:#555;text-anchor:middle;font-family:monospace;font-size:7px}.ec-tap-axis{fill:#555;font-family:monospace;font-size:8px}.ec-readout{fill:#888;font-family:monospace;font-size:9px}.ec-legend-tap{fill:#c8beaa}.ec-legend-true{stroke:#7c83db;stroke-width:2px;stroke-linecap:round}.ec-legend-label{fill:#666;font-family:monospace;font-size:8px}.ec-scale-label{fill:#444;font-family:monospace;font-size:7px}.ec-controls{background:#14141e;border-top:1px solid #2a2a3e;flex-direction:column;gap:.4rem;padding:.7rem .9rem;font-size:11px;display:flex}.ec-row{align-items:center;gap:.6rem;display:flex}.ec-slider-label{color:#888;letter-spacing:.5px;flex:0 0 200px;font-size:10px}.ec-slider-label span{color:#c8beaa;margin-left:6px}.ec-slider{accent-color:#7c83db;background:#222240;flex:1}.ec-buttons{flex-wrap:wrap;gap:.35rem;margin-top:.3rem;display:flex}.ec-btn{letter-spacing:1px;color:#c8beaa;cursor:pointer;background:#222240;border:1px solid #3a3a5a;border-radius:3px;padding:.35rem .8rem;font-family:monospace;font-size:10px;font-weight:700;transition:background .1s,border-color .1s}.ec-btn:hover{background:#2a2a4a;border-color:#7c83db}.ec-btn-primary{color:#d8f0a8;background:#2a4a2a;border-color:#4ade80}.ec-btn-primary:hover{background:#3a5a2a}.ec-btn-primary.ec-running{color:#ffd0a0;background:#4a2a2a;border-color:#f97316}.ec-btn-toggle.ec-active{color:#b8c0e8;background:#2a3a4a;border-color:#7c83db}.ec-btn-muted{color:#7f7560}
