:root{color-scheme:light;--ink:#15271f;--muted:#617167;--paper:#f3f2e9;--line:#ced5c9;--lime:#d5f76b;--mono:'SFMono-Regular',Consolas,'Liberation Mono',monospace}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font-family:'Avenir Next',Avenir,'Segoe UI',sans-serif}button,input,select{font:inherit}button,a,input,select,summary{touch-action:manipulation}button{cursor:pointer;border:1px solid var(--line);border-radius:6px;background:transparent;padding:11px 15px;font-size:13px;font-weight:600;color:inherit}button:hover:enabled{background:#e5e8da}button:disabled{opacity:.4;cursor:not-allowed}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{outline:3px solid #5f8d20;outline-offset:3px}header{max-width:1344px;margin:auto;height:95px;display:flex;align-items:center;gap:28px;padding:0 42px;border-bottom:1px solid var(--line)}.wordmark{font-size:26px;letter-spacing:-1px;font-weight:850;text-decoration:none;color:var(--ink)}.wordmark span{color:#788a43;padding:0 3px}.edition,.local,.eyebrow,.step,.metric>span,.bus-state>span{font-family:var(--mono);font-size:11px;letter-spacing:1.3px}.edition{color:var(--muted)}.local{margin-left:auto;color:#46753e;letter-spacing:.5px}main{max-width:1344px;margin:auto;padding:0 42px}.intro{display:flex;align-items:center;justify-content:space-between;gap:35px;padding:48px 0 36px}.eyebrow{color:var(--muted);margin:0 0 18px}h1{font-size:clamp(42px,5vw,68px);line-height:1.04;letter-spacing:-3px;margin:0;font-weight:650}h1 em{font-family:Georgia,'Times New Roman',serif;font-weight:400;color:#597237}.lede{font-size:15px;line-height:1.8;color:var(--muted);margin:20px 0 0}.setup{border-left:1px solid var(--line);padding:16px 0 16px 28px;max-width:480px}.step{color:#607338}.setup ol{padding-left:21px;font-size:14px;line-height:2.25}.setup p{font-family:var(--mono);font-size:11px;color:var(--muted)}.devices{display:grid;grid-template-columns:1fr 1fr;gap:18px}.device{background:#fffef8;border:1px solid var(--line);padding:23px 25px;border-radius:10px}.device-heading{display:flex;align-items:center;gap:15px}.number{font-family:var(--mono);font-size:13px;border:1px solid var(--line);border-radius:50%;width:38px;height:38px;display:grid;place-items:center;color:var(--muted)}h2{font-size:20px;letter-spacing:-.5px;margin:0 0 3px}.device-state{font-size:12px;color:var(--muted)}.status-dot{width:9px;height:9px;background:#bcc4b8;border-radius:50%;margin-left:auto}.device.connected .status-dot{background:#489349;box-shadow:0 0 0 5px #48934915}.device>p{font-size:13px;color:var(--muted);line-height:1.5}code{font-family:var(--mono);font-size:12px}.actions{display:flex;gap:10px;margin-top:18px}.primary{background:var(--ink);color:#fff;border-color:var(--ink)}.primary:hover:enabled{background:#34543d}.primary span{padding-left:22px;color:var(--lime)}.device .device-info{font-size:11px;font-family:var(--mono);margin:14px 0 0;overflow-wrap:anywhere}.telemetry{display:grid;grid-template-columns:1fr 1fr 1fr 1.4fr;border:1px solid var(--line);border-radius:10px;margin:20px 0 28px;overflow:hidden}.metric{padding:20px 24px;border-right:1px solid var(--line)}.metric>span{font-size:10px;color:var(--muted);letter-spacing:.8px}.metric strong{display:block;font-family:var(--mono);font-size:33px;font-weight:500;margin:9px 0 5px;letter-spacing:-1px}.metric small{font-size:11px;color:var(--muted)}.bus-state{padding:24px;background:#e4e8d9;display:flex;flex-direction:column;justify-content:center}.bus-state p{font-size:13px;line-height:1.6;margin:10px 0 0}.bus-state.active{background:var(--lime)}.terminal{background:#14231d;border:1px solid #243b2e;border-radius:10px;overflow:hidden;color:#d9e5d9}.terminal-heading{display:flex;align-items:center;justify-content:space-between;padding:17px 22px;border-bottom:1px solid #ffffff16}.terminal-heading h2{font-size:15px;margin:0;font-weight:500;letter-spacing:0}.terminal-light{display:inline-block;width:7px;height:7px;background:var(--lime);border-radius:50%;margin-right:8px}.terminal-heading>span{font:11px var(--mono);color:#a1b5a5}.toolbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:12px 20px;border-bottom:1px solid #ffffff16;font-size:12px}.toolbar label{display:flex;align-items:center;gap:7px;white-space:nowrap}.toolbar select,.toolbar input[type=search]{color:#d9e5d9;background:#1d3026;border:1px solid #395342;border-radius:5px;padding:8px;min-width:0}.search-label{flex:1;min-width:130px}.search-label input{width:100%}.toolbar input::placeholder{color:#96a99b}.toolbar button{color:#d9e5d9;border-color:#395342;padding:8px 10px;font-size:11px}.toolbar button:hover:enabled{background:#2b4333}.toolbar input[type=checkbox]{accent-color:var(--lime)}#console{height:330px;overflow:auto;padding:14px 20px;font:12px/1.85 var(--mono);scrollbar-color:#49624e #14231d}.log-line{display:grid;grid-template-columns:100px 76px 1fr;gap:12px}.log-time{color:#789181}.log-source{color:#b7cbac}.log-line.rx .log-message{color:#d5f76b}.log-line.error .log-message{color:#ffb49a}.log-line.system .log-message{color:#91b5cb}.log-message{white-space:pre-wrap;overflow-wrap:anywhere;min-width:0}.empty{display:flex;min-height:270px;justify-content:center;align-items:center;flex-direction:column;color:#d9e5d9;font-size:15px;gap:8px;text-align:center}.empty span{color:#91a797;font-size:12px}.terminal-footer{display:flex;justify-content:space-between;gap:12px;padding:11px 20px;border-top:1px solid #ffffff16;color:#8da493;font:10px var(--mono);flex-wrap:wrap}.help{padding:25px 0;border-bottom:1px solid var(--line)}summary{cursor:pointer;font-size:14px;font-weight:600}.help-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px 38px;padding-top:14px}.help h3{font-size:13px}.help p{font-size:13px;color:var(--muted);line-height:1.7}footer{display:flex;gap:20px;justify-content:space-between;padding:25px 0 35px;font-size:11px;color:var(--muted)}footer a{color:var(--ink)}.notice{background:#fff0d0;border:1px solid #d7b671;border-radius:8px;padding:16px 20px;font-size:14px;line-height:1.7;margin:0 0 20px}.notice[hidden]{display:none}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0)}@media(max-width:800px){header{height:75px;padding:0 20px}.local{display:none}main{padding:0 20px}.intro{display:block;padding-top:32px}.setup{margin-top:28px;padding-top:0;padding-bottom:0}.devices{grid-template-columns:1fr}.telemetry{grid-template-columns:1fr 1fr}.metric:nth-child(2){border-right:0}.metric:nth-child(-n+2){border-bottom:1px solid var(--line)}.metric{padding:18px}.bus-state{padding:18px}.help-grid{grid-template-columns:1fr}.log-line{grid-template-columns:82px 60px 1fr;gap:7px;font-size:11px}#console{padding:12px}footer{flex-direction:column}.edition{font-size:9px;letter-spacing:0}.toolbar{gap:10px;padding:12px}.toolbar .search-label{min-width:150px}}

/* The live signal drawing uses the same palette as the breadboard document. */
.communication{margin:0 0 24px;border:1px solid var(--line);border-radius:10px;background:#fffef8;overflow:hidden}
.communication-heading{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:23px 25px 8px}
.communication-heading .eyebrow{font-size:10px;margin:0 0 9px}
.communication-heading h2{font-size:23px;margin:0}
.communication-heading a{color:var(--muted);font-size:12px;white-space:nowrap}
.communication-links{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:12px 18px}
.communication-links a:first-child{color:var(--ink);font-weight:600}
.wiring-note{font-size:11px;line-height:1.7;color:var(--muted);margin:8px 25px 12px}
.communication-diagram{overflow-x:auto;scrollbar-color:#a7b49e #f3f4ef;padding:0 8px;min-height:120px}
.communication-diagram>svg{display:block;width:100%;min-width:1000px;height:auto}
.diagram-unavailable{padding:28px 25px;font-size:14px;line-height:1.7;color:var(--muted);min-height:0}
.signal-legend{display:flex;flex-wrap:wrap;gap:12px 24px;padding:14px 25px 0;border-top:1px solid #e7e9df;font-size:11px;color:var(--muted)}
.signal-legend>span{display:flex;align-items:center;gap:7px}
.key{display:inline-block;width:17px;height:4px;border-radius:2px;background:#627183;flex-shrink:0}
.key.tx{background:#2474d2}.key.rx{background:linear-gradient(90deg,#d68a00 0 33%,#149b83 33% 66%,#8950be 66%)}.key.error{background:#c44836}
.signal-note{font-size:11px;line-height:1.7;color:var(--muted);margin:13px 25px 20px}
.communication-diagram:focus-visible{outline:3px solid #5f8d20;outline-offset:-3px}
@media(max-width:800px){.communication-heading{padding:20px 18px 8px}.communication-heading h2{font-size:20px}.communication-diagram{padding:0}.signal-legend{padding-left:18px;padding-right:18px;gap:10px 18px}.signal-note{margin-left:18px;margin-right:18px}}
@media(max-width:800px){.communication-heading{align-items:flex-start;flex-direction:column;gap:14px}.communication-links{justify-content:flex-start}.wiring-note{margin-left:18px;margin-right:18px}}

/* Bench controls continue the console's instrument-panel typography. */
.load-test{margin-top:24px;border:1px solid var(--line);border-radius:10px;background:#fffef8;overflow:hidden}
.load-heading{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:25px;border-bottom:1px solid var(--line)}
.load-heading .eyebrow{margin-bottom:9px;font-size:10px}.load-heading h2{font-size:27px;font-weight:600;letter-spacing:-1px}.load-heading>span{font:12px var(--mono);color:var(--muted);white-space:nowrap}
.load-layout{display:grid;grid-template-columns:minmax(260px,.85fr) minmax(0,1.6fr)}
.load-controls{padding:25px;border-right:1px solid var(--line)}.load-controls>label:not(.sr-only){display:flex;justify-content:space-between;gap:10px;align-items:baseline;font-size:13px;font-weight:600}.load-controls label span{font-size:10px;color:var(--muted);font-weight:400}
.load-controls input[type=number]{width:100%;min-width:0;padding:12px;border:1px solid var(--line);background:var(--paper);color:var(--ink);border-radius:6px;font:27px var(--mono);margin:10px 0 8px}
.load-controls input[type=range]{width:100%;accent-color:#5f7d30;margin:12px 0}.load-presets{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 25px}.load-presets button{font:10px var(--mono);padding:7px 9px}.load-duration{display:flex;align-items:center;gap:12px;font:12px var(--mono);color:var(--muted)}.load-duration input[type=number]{max-width:110px;font-size:20px}.load-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:18px}.load-actions button{font-size:12px;padding:11px 12px}.load-stop{color:#9a3928;border-color:#d9b5a8}.load-stop:hover:enabled{background:#f7e0d6}
.load-results{padding:25px;min-width:0}.load-rates{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.load-rates span{font:9px var(--mono);color:var(--muted);letter-spacing:.5px}.load-rates strong{display:block;font:clamp(22px,3vw,38px) var(--mono);letter-spacing:-1.5px;margin:9px 0}.load-rates .measured strong{color:#547421}.load-chart{display:block;width:100%;height:auto;min-height:150px;margin-top:10px}.load-axis{stroke:var(--line);fill:none}.load-rx-line{stroke:#547421;stroke-width:2.5;fill:none;stroke-linecap:round;stroke-linejoin:round}.load-freshness{font-size:10px;color:var(--muted);line-height:1.6;margin:0 0 20px}.load-counters{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 20px;margin:0}.load-counters>div{display:flex;align-items:baseline;justify-content:space-between;gap:10px;border-top:1px solid var(--line);padding-top:9px}.load-counters dt{font-size:10px;line-height:1.5;color:var(--muted)}.load-counters dd{margin:0;font:12px var(--mono);white-space:nowrap}.load-status{padding:14px 25px;margin:0;border-top:1px solid var(--line);background:#e4e8d9;font-size:12px;line-height:1.6}.load-test.is-running .load-status{background:var(--lime)}.load-note{font-size:11px;line-height:1.7;color:var(--muted);padding:0 25px;margin:15px 0 20px}
@media(max-width:800px){.load-heading{padding:20px 18px;align-items:flex-start}.load-heading h2{font-size:23px}.load-layout{grid-template-columns:1fr}.load-controls{border-right:0;border-bottom:1px solid var(--line);padding:20px 18px}.load-results{padding:20px 18px}.load-rates strong{font-size:26px}.load-status{padding:14px 18px}.load-note{padding:0 18px}.load-counters{gap:12px}.load-heading>span{font-size:10px}}

.load-tx-line{stroke:#28739b;stroke-width:2.5;stroke-dasharray:5 3;fill:none;stroke-linecap:round;stroke-linejoin:round}.load-tx-dot{fill:#28739b}.load-rx-dot{fill:#547421}.load-chart-label{font:10px var(--mono);fill:var(--muted)}.load-chart-legend{display:flex;flex-wrap:wrap;gap:10px 18px;margin-top:15px;font:10px var(--mono);color:var(--muted)}.load-chart-legend .tx-key{color:#28739b}.load-chart-legend .rx-key{color:#547421}.tx-key:before,.rx-key:before{content:"";display:inline-block;width:15px;border-top:2px dashed currentColor;margin-right:5px;vertical-align:middle}.rx-key:before{border-top-style:solid}


.load-chart-legend{border:0;padding:0;margin:16px 0 8px;display:flex;flex-wrap:wrap;gap:8px 14px;min-width:0}.load-chart-legend legend{font:10px var(--mono);color:var(--muted);margin-bottom:10px}.load-chart-legend label{display:flex;align-items:center;gap:5px;font:10px var(--mono);color:var(--series-color);cursor:pointer}.load-chart-legend input{margin:0;accent-color:var(--series-color);width:14px;height:14px}.load-series-line{fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.load-chart-help{font-size:10px;line-height:1.6;color:var(--muted);margin:6px 0}.load-chart{min-height:230px}

.load-chart-scroll{overflow-x:auto;max-width:100%}.load-chart-scroll .load-chart{min-width:640px}

.load-chart{cursor:crosshair}
.load-chart-tooltip{position:fixed;z-index:20;max-width:calc(100vw - 16px);padding:11px 14px;border:1px solid #ffffff26;border-radius:8px;background:#15271f;color:#f3f2e9;box-shadow:0 5px 18px #15271f26;pointer-events:none;font:11px/1.6 var(--mono);font-variant-numeric:tabular-nums}
.load-chart-tooltip[hidden]{display:none}
.chart-tooltip-time{color:#b7c4b8;font-size:10px;margin-bottom:5px}
.chart-tooltip-row{display:flex;align-items:baseline;justify-content:space-between;gap:20px}
.chart-tooltip-row span:before{content:"";display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--series-color);margin-right:7px}
.chart-tooltip-row strong{font-weight:600;text-align:right}

.can-recovery-notice{margin:12px 0;padding:12px 14px;border:1px solid #d7b671;border-left:3px solid #b57716;border-radius:6px;background:#fff0d0;color:#574215;font-size:12px;line-height:1.6}
.can-recovery-notice[hidden]{display:none}
.can-recovery-notice[data-state="recovered"]{background:#e4e8d9;border-color:#a8b795;border-left-color:#547421;color:#263e25}

.language-menu{display:flex;align-items:center;gap:8px;margin-left:auto;font:11px var(--mono);white-space:nowrap}
.language-menu>span{color:var(--muted)}
.language-menu button{min-height:36px;padding:6px 2px;border:0;border-radius:0;background:transparent;color:var(--muted);font:inherit;cursor:pointer;text-underline-offset:5px}
.language-menu button:hover,.language-menu button[aria-pressed="true"]{color:var(--ink);text-decoration:underline}
.language-menu button[aria-pressed="true"]{font-weight:700}
.language-menu button:focus-visible{outline:2px solid var(--ink);outline-offset:3px;border-radius:2px}
@media(max-width:800px){header{height:auto;min-height:75px;flex-wrap:wrap;gap:12px;padding-top:12px;padding-bottom:12px}.language-menu{gap:7px}.log-line{grid-template-columns:82px 72px 1fr}}
