body{color:#1e293b;background:#f1f5f9;margin:0;font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}.btn{color:#334155;cursor:pointer;background:#fff;border:1px solid #cbd5e1;border-radius:8px;padding:.4rem .85rem;font-family:inherit;font-size:.85rem;transition:background .15s,border-color .15s}.btn:hover:not(:disabled){background:#f1f5f9}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-primary{color:#fff;background:#2563eb;border-color:#2563eb}.btn-primary:hover:not(:disabled){background:#1d4ed8}.btn-small{color:#334155;cursor:pointer;white-space:nowrap;background:#fff;border:1px solid #cbd5e1;border-radius:7px;padding:.3rem .6rem;font-family:inherit;font-size:.78rem}.btn-small:hover:not(:disabled){background:#f1f5f9}.btn-small:disabled{opacity:.45;cursor:not-allowed}.btn-small.btn-primary{color:#fff;background:#2563eb;border-color:#2563eb}.btn-small.btn-primary:hover:not(:disabled){background:#1d4ed8}.status{color:#475569;white-space:nowrap;background:#e2e8f0;border-radius:999px;align-items:center;gap:.4rem;padding:.35rem .7rem;font-size:.85rem;display:inline-flex}.status .dot,.dot.status-dot{background:#94a3b8;border-radius:50%;flex:none;width:8px;height:8px}.status-connected .dot,.status-demo .dot,.status-simulated .dot{background:#22c55e;box-shadow:0 0 0 3px #22c55e33}.status-simulated .dot,.status-demo .dot{background:#a78bfa;box-shadow:0 0 0 3px #a78bfa40}.status-connecting .dot{background:#f59e0b}.status-error .dot{background:#ef4444}.banner{border-radius:10px;margin-bottom:.75rem;padding:.65rem .9rem;font-size:.85rem}.banner.warn{color:#92400e;background:#fffbeb;border:1px solid #fcd34d}.banner.error{color:#b91c1c;background:#fef2f2;border:1px solid #fecaca}.banner.ok{color:#166534;background:#f0fdf4;border:1px solid #bbf7d0}.banner code{background:#0f172a0f;border-radius:4px;padding:.05rem .3rem}.card{background:#fff;border:1px solid #e2e8f0;border-radius:14px;min-width:0;padding:1rem 1rem .75rem;transition:opacity .3s;box-shadow:0 1px 2px #0f172a0a,0 1px 3px #0f172a0f}.card.stale{opacity:.45}.card-head{align-items:baseline;gap:.5rem;margin-bottom:.5rem;display:flex}.card-head .label{color:#64748b;flex:1;font-size:.85rem}.readings{align-items:baseline;gap:.5rem;display:flex}.reading{font-variant-numeric:tabular-nums;font-size:1.6rem;font-weight:700}.reading small{opacity:.7;font-size:.8rem;font-weight:500}.avg{font-variant-numeric:tabular-nums;font-size:.85rem;font-weight:600}.rows{flex-direction:column;gap:.55rem;margin-bottom:.75rem;display:flex}.row{flex-wrap:wrap;align-items:center;gap:.6rem;min-width:0;display:flex}.lbl{color:#64748b;flex:none;width:84px;font-size:.82rem}.hint{color:#94a3b8;font-size:.8rem}.field{color:#64748b;white-space:nowrap;align-items:center;gap:.35rem;font-size:.8rem;display:inline-flex}.num{font-variant-numeric:tabular-nums;text-align:right;color:#1e293b;box-sizing:border-box;background:#fff;border:1px solid #cbd5e1;border-radius:6px;width:64px;padding:.3rem .4rem;font-family:inherit;font-size:.82rem}.num.readonly{color:#334155;border:none;width:auto;padding:.3rem 0;font-weight:600}.num.invalid{background:#fef2f2;border-color:#ef4444}select.num{text-align:left;width:auto}.unit{color:#94a3b8;font-size:.8rem}.slider{accent-color:#2563eb;flex:1;min-width:100px}.segmented{border:1px solid #cbd5e1;border-radius:8px;flex-wrap:wrap;display:inline-flex;overflow:hidden}.seg{color:#475569;cursor:pointer;background:#fff;border:none;border-right:1px solid #e2e8f0;padding:.35rem .7rem;font-family:inherit;font-size:.8rem}.seg:last-child{border-right:none}.seg:hover:not(:disabled):not(.active){background:#f1f5f9}.seg.active{color:#fff;background:#2563eb}.seg:disabled{opacity:.45;cursor:not-allowed}.warn-text{color:#b45309;margin:0;font-size:.78rem}.part-head{border-bottom:1px solid #e2e8f0;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem 1rem;margin:0 0 1rem;padding-bottom:.75rem;display:flex}.part-head h2{letter-spacing:.12em;text-transform:uppercase;color:#475569;margin:0;font-size:.8rem;font-weight:700}.device{flex-wrap:wrap;align-items:center;gap:.4rem;display:flex}
