:root{--ink:#102d24;--muted:#7c8379;--paper:#f3f1e9;--line:#dedfd4;--lime:#d1ed86;--white:#fbfaf5}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font-family:Arial,"PingFang SC",sans-serif;font-size:14px}button,input,select{font:inherit}button,a,select{touch-action:manipulation}button{cursor:pointer;border:0;transition:background .15s,transform .15s}button:hover:enabled{filter:brightness(.94)}button:disabled{opacity:.4;cursor:not-allowed}button:focus-visible,a:focus-visible,select:focus-visible,input:focus-visible{outline:2px solid #789c3e;outline-offset:3px}a{color:inherit;text-decoration:none}aside{position:fixed;inset:0 auto 0 0;width:228px;background:#eeeee4;border-right:1px solid var(--line);padding:31px 22px;display:flex;flex-direction:column}.brand{display:flex;align-items:center;gap:8px;font-size:25px;font-weight:800;letter-spacing:-1.4px}.brand img{width:35px}.edition{font-size:11px;letter-spacing:2px;margin:15px 0 53px;display:flex;align-items:center;gap:12px}.edition span{border:1px solid #c6cdb9;padding:3px 5px;letter-spacing:0}.rail-label{font-size:11px;letter-spacing:2px;color:var(--muted);margin:0 12px 16px}nav{display:grid;gap:7px}.nav{display:flex;align-items:center;gap:12px;text-align:left;background:none;border-radius:6px;color:#697467;padding:15px 12px}.nav>span{font-size:20px;width:20px}.nav i{margin-left:auto;font-size:11px;font-style:normal;opacity:.5}.nav.active{color:var(--ink);background:#e0e7d0;font-weight:600}.rail-bottom{margin-top:auto;padding:40px 12px 25px}.loop-art{width:64px;height:64px;margin-bottom:21px;opacity:.28}.loop-art img{width:100%}.rail-bottom p{font-size:14px;line-height:1.7}.rail-bottom small{font-size:11px;letter-spacing:2px;line-height:1.8;color:var(--muted)}.local{border-top:1px solid var(--line);padding-top:20px;font-size:11px;display:flex;gap:8px;align-items:center}.local b,.dot{width:7px;height:7px;border-radius:50%;background:#a6ad9b;display:inline-block}.local b.online,.dot.online{background:#789f35;box-shadow:0 0 0 4px #dce8c8}main{margin-left:228px;padding:0 38px;max-width:1800px}header{height:77px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);font-size:11px}.breadcrumb{color:var(--muted)}.breadcrumb span{margin:0 15px;color:#b8bcaf}.header-right{display:flex;align-items:center;gap:21px;font-family:monospace}.tag{display:inline-block;padding:6px 9px;background:#e8ebdf;font-size:11px;letter-spacing:1px;border-radius:4px;white-space:nowrap}.heading{display:flex;justify-content:space-between;align-items:center;padding:39px 0 29px}.eyebrow{font-size:11px;letter-spacing:2px;color:#738069}h1{font-size:30px;letter-spacing:-1px;margin:13px 0 12px;font-weight:600}.heading p{font-size:12px;color:var(--muted);margin:0;line-height:1.8}.session-mark{display:flex;flex-direction:column;text-align:right;gap:5px}.session-mark span{font:11px monospace;letter-spacing:2px;color:var(--muted)}.session-mark strong{font:32px monospace;font-weight:400;letter-spacing:-2px}.session-mark small{font:11px monospace;color:var(--muted)}.card{background:var(--white);border:1px solid var(--line);border-radius:9px}.connection{display:flex;align-items:center;padding:20px 23px;gap:27px;margin-bottom:22px}.device-type{width:190px;border-right:1px solid var(--line);padding-right:22px}.device-type label{font-size:11px;display:block;margin-bottom:7px}.device-type label span{font-size:11px;letter-spacing:1px;color:var(--muted);margin-left:9px}select{border:1px solid var(--line);padding:9px 12px;background:#f7f7ef;color:var(--ink);border-radius:5px}.device-type select{width:100%;padding:7px 0;border:0;background:none;font-weight:600}.connection-detail{flex:1;min-width:0}.connection-detail>div{display:flex;align-items:center;gap:10px;margin-bottom:8px}.connection-detail small{color:var(--muted);font:11px monospace;overflow-wrap:anywhere}.connection-actions{display:flex;gap:9px}.dark,.secondary,.lime,.stop{padding:11px 16px;border-radius:5px;font-size:11px;white-space:nowrap}.dark{background:var(--ink);color:var(--white)}.secondary{background:transparent;border:1px solid #ced4c6;color:var(--ink)}.lime{background:var(--lime);color:var(--ink)}.stop{background:#f0e6db;color:#80563d}.devices{display:flex;gap:10px;flex-wrap:wrap}.device-result{padding:15px 20px;background:#e4ebd9;border:1px solid #c6d8ae;border-radius:7px;margin-bottom:20px;display:flex;gap:24px;align-items:center}.device-result small{display:block;margin-top:6px;color:var(--muted)}#notice{padding:13px 18px;background:#f0e5d4;color:#704c2c;border-radius:6px;margin-bottom:20px;font-size:12px}.page{display:none}.page.active{display:block}.metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:20px}.metric{padding:22px}.metric>div{font-size:11px;color:#6b7566;display:flex;justify-content:space-between}.metric>div span{font-size:19px}.metric strong{display:block;font-size:38px;font-weight:400;letter-spacing:-1px;margin:18px 0}.metric strong small{font-size:12px;margin-left:8px;color:var(--muted);letter-spacing:0}.metric footer{font-size:11px;color:var(--muted);min-height:12px}.overview-grid{display:grid;grid-template-columns:1.12fr 1fr;gap:20px;margin-bottom:24px}.section-title{display:flex;justify-content:space-between;align-items:center;gap:15px;padding:23px 24px}.section-title h2{font-size:15px;margin:0;font-weight:600}.section-title>span{font:11px monospace;color:var(--muted);letter-spacing:1px}.section-title p{margin:8px 0 0;font-size:11px;color:var(--muted);line-height:1.7}.identity dl{margin:0 24px}.identity dl>div{display:flex;justify-content:space-between;gap:20px;border-bottom:1px solid #e9eade;padding:12px 0;font-size:11px}.identity dt{color:var(--muted)}.identity dd{margin:0;text-align:right;font-family:monospace;overflow-wrap:anywhere}.text-button{padding:0;background:none;font-size:11px;color:#5e7155}.identity>button{margin:20px 24px}.signal-intro{background:#16372c;border-radius:9px;padding:27px 30px;color:#faf9eb;position:relative;overflow:hidden}.signal-intro .eyebrow{color:#acbd99;font-size:11px}.signal-intro h2{font-size:26px;font-weight:400;line-height:1.4;letter-spacing:-1px;margin:18px 0 13px}.signal-intro p{font-size:11px;line-height:1.9;color:#bbc8b6}.signal-intro button{position:relative;z-index:1;margin-top:9px;min-width:160px;text-align:left}.signal-intro button span{float:right}.signal-intro>img{position:absolute;width:250px;right:-55px;top:45px;filter:brightness(0) invert(86%) sepia(24%) saturate(780%) hue-rotate(28deg);opacity:.16;transform:rotate(-18deg)}.console{margin-top:24px;overflow:hidden}.terminal-icon{font:20px monospace;margin-right:8px}.live-pill{font:11px monospace;letter-spacing:1px;color:#6e8a3e;background:#e7efdb;border-radius:3px;padding:4px 6px;margin-left:10px}.log-tools{display:flex;align-items:center;gap:16px}.log-tools select{font-size:11px;background:none}.log-head{display:grid;grid-template-columns:105px 65px 1fr;gap:10px;font-size:11px;color:#87917d;padding:11px 24px;background:#f1f3e9;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.logs{height:236px;overflow:auto;background:#fafbf6;padding:9px 0}.log-empty,.empty{text-align:center;padding:42px 20px;color:#909985;font-size:12px}.log-row{display:grid;grid-template-columns:105px 65px minmax(0,1fr);gap:10px;padding:8px 24px;font:11px monospace;border-bottom:1px solid #eef0e5;line-height:1.6}.log-row time{color:#9ba48f}.dir{font-size:11px;border-radius:3px;padding:2px 6px;background:#e5e9dc;color:#607748;align-self:start;justify-self:start}.dir.TX{color:#536f2c;background:#e6efcd}.dir.RX{color:#2e7066;background:#dfeee7}.dir.ERR{color:#9e5036;background:#f3e1d5}.log-row pre{white-space:pre-wrap;overflow-wrap:anywhere;margin:3px 0 0;color:#76816c;font:11px/1.7 monospace}.log-row details summary{cursor:pointer;color:#637755}.log-row details pre{color:#344b3c}#raw-form{padding:15px 23px;border-top:1px solid var(--line);display:flex;align-items:center;gap:14px}#raw{flex:1;min-width:0;border:0;background:transparent;font:11px monospace;color:var(--ink);padding:8px}.tx-label{font:11px monospace;color:#728c48}.console-footer{display:flex;justify-content:space-between;background:#f1f3e9;padding:10px 24px;color:#7f8c70;font:11px monospace;letter-spacing:.5px}.page-footer{display:flex;justify-content:space-between;padding:23px 0;color:#89907e;font-size:11px;letter-spacing:.5px}.toolbar{display:flex;align-items:center;gap:10px;padding:0 24px 20px;flex-wrap:wrap}.hint{font-size:11px;color:#8a937f;line-height:1.8}.live-card>.hint{padding:0 24px 12px;margin-top:0}.chart-wrap{height:220px;position:relative;margin:0 24px 24px;background:repeating-linear-gradient(0deg,transparent,transparent 43px,#e7ebdf 44px),repeating-linear-gradient(90deg,transparent,transparent 79px,#e7ebdf 80px);border-bottom:1px solid var(--line)}canvas{width:100%;height:100%;display:block}#wave-empty{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:12px;color:#8d9781;pointer-events:none}#wave-empty small{margin-top:10px;font-size:11px}.table-scroll{overflow:auto;max-height:390px}table{border-collapse:collapse;width:100%;font-size:11px}th{text-align:left;padding:14px 22px;background:#f0f3e8;font-size:11px;white-space:nowrap}th span{font-weight:400;font-size:11px;color:var(--muted)}td{padding:13px 22px;border-top:1px solid var(--line);vertical-align:top;line-height:1.7}td pre{font:11px/1.7 monospace;white-space:pre-wrap;min-width:180px;max-width:370px;overflow-wrap:anywhere;margin:0}.footnote{padding:12px 24px}.settings-data{padding:0 24px 22px;display:grid;gap:10px}.setting{background:#f1f3e9;padding:15px;border-radius:6px}.setting pre{white-space:pre-wrap;overflow-wrap:anywhere;font:11px/1.8 monospace}.setting small{color:var(--muted)}@media(min-width:1600px){main{padding:0 60px}.heading{padding:45px 0}.metrics{gap:20px}.logs{height:285px}}@media(max-width:1100px){aside{width:190px;padding:28px 16px}main{margin-left:190px;padding:0 24px}.brand{font-size:22px}.metric{padding:16px}.connection{gap:18px;padding:18px}.device-type{width:160px}.connection-actions{flex-direction:column}.heading h1{font-size:26px}.log-tools{gap:10px}}@media(max-width:760px){aside{position:static;width:auto;padding:15px 20px;border-right:0}.brand{font-size:24px}.edition,.rail-label,.rail-bottom,.local{display:none}nav{display:flex;margin-top:15px;gap:4px}.nav{flex:1;padding:9px 5px;font-size:11px;justify-content:center;gap:5px}.nav i{display:none}.nav>span{font-size:15px;width:auto}main{margin:0;padding:0 16px}header{height:52px}.heading{padding:24px 0}.heading h1{font-size:23px}.session-mark{display:none}.connection{flex-wrap:wrap;gap:16px}.device-type{width:140px}.connection-detail{min-width:120px}.connection-actions{width:100%;flex-direction:row}.metrics{grid-template-columns:repeat(2,1fr);gap:10px}.metric strong{font-size:32px;margin:13px 0}.overview-grid{grid-template-columns:1fr;gap:14px}.signal-intro{min-height:265px}.section-title{padding:19px 17px;flex-wrap:wrap}.log-tools{width:100%;justify-content:space-between}.log-head,.log-row{grid-template-columns:77px 35px minmax(0,1fr);gap:7px;padding-left:13px;padding-right:13px}.log-row{font-size:11px}.toolbar{padding:0 17px 17px}.device-result{width:100%;justify-content:space-between}#raw-form{padding:12px;gap:7px}.page-footer{gap:10px;font-size:11px}.breadcrumb{font-size:11px}.header-right{gap:8px}.header-right .tag{font-size:11px}}
.edition{letter-spacing:1.25px;white-space:nowrap;gap:8px}.edition span{white-space:nowrap}.rail-bottom p{font-size:12px}
.history-pager{display:flex;justify-content:flex-end;align-items:center;gap:15px;border-top:1px solid var(--line);padding:14px 24px}.history-pager span{font:11px monospace;color:var(--muted)}

small{font-size:11px}.local b,.dot{width:11px;height:11px;flex-shrink:0}.edition{white-space:normal;flex-wrap:wrap;letter-spacing:.5px;gap:6px}.rail-bottom small{letter-spacing:1px}.console .section-title{flex-wrap:wrap}.page-footer{flex-wrap:wrap;line-height:1.6}
dialog{color:var(--ink);font:inherit;background:var(--white);border:1px solid var(--line);border-radius:16px;padding:0;width:560px;max-width:calc(100% - 32px);max-height:calc(100dvh - 40px);box-shadow:0 24px 100px #102d2440}dialog::backdrop{background:#102d2466;backdrop-filter:blur(4px)}.scan-header{padding:26px 28px 22px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line)}.scan-header h2{font-size:24px;font-weight:500;margin:10px 0 0}.icon-button{width:36px;height:36px;border-radius:50%;background:#e9ecdf;color:var(--ink);font-size:24px;line-height:1}.scan-content{padding:24px 28px;max-height:60dvh;overflow:auto}.scan-progress{display:flex;align-items:center;gap:18px;min-height:78px}.scan-progress strong{font-size:16px;font-weight:500}.scan-progress p{font-size:12px;color:var(--muted);line-height:1.8;margin:8px 0}.spinner{width:28px;height:28px;flex-shrink:0;border:2px solid #dde5cd;border-top-color:#648335;border-radius:50%;animation:scan-spin 1s linear infinite}.spinner[hidden]{display:none}.scan-footer{padding:18px 28px;display:flex;justify-content:space-between;align-items:center;gap:12px;border-top:1px solid var(--line);background:#f0f2e8}.scan-footer>span{font:11px monospace;color:var(--muted)}#scan-error{font-size:12px;line-height:1.7;background:#f0e5d4;color:#704c2c;padding:12px;border-radius:6px}dialog .devices{display:grid;gap:10px;margin-top:16px}dialog .devices:empty{margin:0}dialog .device-result{margin:0;padding:16px;gap:12px;width:100%}dialog .device-result>div{flex:1;min-width:0}.device-id{overflow-wrap:anywhere;font-family:monospace;line-height:1.6}.device-icon{font-size:24px;flex-shrink:0}dialog .device-result button{padding:10px 12px}.scan-content>.hint{margin-bottom:0}@keyframes scan-spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.spinner{animation:none}}@media(max-width:760px){.log-head,.log-row{grid-template-columns:90px 36px minmax(0,1fr)}.scan-header,.scan-content{padding:22px 20px}.scan-footer{padding:16px 20px}dialog .device-result{padding:12px;gap:8px}.device-icon{font-size:20px}}

/* Shared SVG controls and device connection layout. */
.icon-defs{position:absolute;width:0;height:0;overflow:hidden}.icon{width:18px;height:18px;display:inline-block;vertical-align:middle;flex-shrink:0;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
button.dark,button.secondary,button.lime,button.stop,.text-button{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:38px}.nav>.icon{width:20px;height:20px}.metric>div>.icon{width:20px;height:20px}.section-title h2>.icon{margin-right:6px}.heading{padding-top:38px}.connection{gap:18px;padding:24px;margin-bottom:24px}.device-emblem{height:64px;width:64px;border-radius:16px;display:grid;place-items:center;background:#e9eedc}.device-emblem>.icon{width:30px;height:30px}.connection-detail>.device-context{font-size:11px;color:var(--muted);gap:12px;margin-bottom:10px}.device-status{display:inline-flex;align-items:center;gap:7px;padding:5px 9px;border-radius:5px;background:#eceee5;color:#70796a}.device-status.connected{color:#4a682e;background:#e5edd7}.device-status .dot{box-shadow:none}.connection-detail>strong{display:block;font-size:20px;font-weight:500;margin-bottom:8px;overflow-wrap:anywhere}.connection-detail>small{display:block;font:12px/1.6 Arial,"PingFang SC",sans-serif}.connection-actions{flex-direction:row;align-items:center;gap:10px}.connection-actions #disconnect{font-size:12px}.connection-actions #disconnect[hidden]{display:none}.connection-actions #scan{font-size:13px;padding:12px 18px}.add-device-type{display:flex;align-items:center;justify-content:space-between;gap:20px;padding-bottom:20px;margin-bottom:16px;border-bottom:1px solid var(--line)}.add-device-type label{font-size:12px;color:var(--muted)}.add-device-type select{min-width:190px}.icon-button{display:grid;place-items:center}.icon-button>.icon{width:20px;height:20px}
select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18' viewBox='0 0 24 24' fill='none' stroke='%23102d24' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;padding-right:38px;min-height:38px}.log-tools{gap:8px;flex-wrap:wrap}.log-tools select{background-color:var(--white);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18' viewBox='0 0 24 24' fill='none' stroke='%23102d24' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;padding:9px 38px 9px 12px;font-size:12px}.log-tools .text-button{padding:9px 12px;border:1px solid var(--line);border-radius:5px;font-size:12px;color:var(--ink);background:var(--white)}.log-tools .icon{width:16px;height:16px}summary{list-style:none;display:flex;align-items:center;gap:6px}summary::-webkit-details-marker{display:none}summary>.icon{width:14px;height:14px}details[open]>summary>.icon{transform:rotate(180deg)}
@media(max-width:1100px){.connection-actions{flex-direction:column;align-items:stretch}.connection-detail>strong{font-size:18px}}
@media(max-width:760px){.connection{padding:18px;gap:14px}.device-emblem{width:48px;height:48px;border-radius:12px}.device-emblem>.icon{width:25px;height:25px}.connection-detail{min-width:0}.connection-detail>.device-context{gap:8px;flex-wrap:wrap}.connection-detail>small{font-size:11px}.connection-actions{flex-direction:row;border-top:1px solid var(--line);padding-top:16px}.connection-actions #scan{flex:1}.log-tools{justify-content:flex-start;gap:8px}.log-tools .text-button{padding:8px 10px}.log-tools select{flex:1}.heading{padding-top:24px}.add-device-type select{min-width:160px}}

/* One persistent, collapsible BLE terminal across all pages. */
:root{--terminal-height:min(460px,65dvh)}main{padding-bottom:76px}.terminal-dock{position:fixed;z-index:20;bottom:0;left:228px;right:0;margin:0;border-radius:12px 12px 0 0;box-shadow:0 -8px 32px #102d2412;border-bottom:0}.terminal-toggle{display:flex;align-items:center;justify-content:space-between;width:100%;min-height:56px;gap:14px;padding:14px 26px;color:var(--ink);background:#edf0e4;text-align:left}.terminal-title,.terminal-summary{display:flex;align-items:center;gap:12px}.terminal-title{font-size:14px;font-weight:600}.terminal-summary{font-size:11px}.terminal-summary>span:first-child{font-family:monospace;color:#65755b}.terminal-state{font-size:11px;font-weight:400;padding:4px 8px;background:#e1e5d9;border-radius:4px;color:#74806b}.terminal-state.connected{background:#dbe9c5;color:#48632c}.terminal-chevron{transform:rotate(180deg)}[aria-expanded="true"] .terminal-chevron{transform:none}#terminal-panel{height:var(--terminal-height);display:flex;flex-direction:column;min-height:0}#terminal-panel[hidden]{display:none}#terminal-panel>.section-title{padding:14px 24px;flex-shrink:0}#terminal-panel>.section-title p{display:none}#terminal-panel>.section-title h2{font-size:12px;color:var(--muted)}#terminal-panel .logs{height:auto;flex:1;min-height:60px}#terminal-panel .log-head,#terminal-panel #raw-form,#terminal-panel .console-footer{flex-shrink:0}#terminal-panel .log-tools{gap:8px}body.terminal-open main{padding-bottom:calc(var(--terminal-height) + 76px)}
@media(max-width:1100px){.terminal-dock{left:190px}}@media(max-width:760px){:root{--terminal-height:min(460px,68dvh)}.terminal-dock{left:0}.terminal-toggle{padding:12px 16px;gap:8px}.terminal-title,.terminal-summary{gap:8px}.terminal-title{font-size:13px}.terminal-state{padding:4px 6px}.terminal-summary>span:first-child{font-size:11px}#terminal-panel>.section-title{padding:12px 14px}#terminal-panel .log-tools{width:100%}#terminal-panel .console-footer{padding:10px 14px}}

/* Device management lives beside the workspace navigation. */
.edition{margin-bottom:26px}.sidebar-devices{margin:0 0 28px;padding-bottom:22px;border-bottom:1px solid var(--line)}.sidebar-device-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;font-size:11px;color:var(--muted)}.add-device-button{display:grid;place-items:center;width:30px;height:30px;border:1px solid #ccd5bf;border-radius:7px;background:#e1e8d3;color:var(--ink)}.add-device-button>.icon{width:18px;height:18px}.device-switch{display:flex;align-items:center;gap:8px;width:100%;padding:9px 9px;border:1px solid #d4dcc8;border-radius:8px;background:var(--white);text-align:left;color:var(--ink)}.sidebar-device-icon{flex-shrink:0}.sidebar-device-icon>.icon{width:21px;height:21px}.sidebar-device-copy{flex:1;min-width:0}.sidebar-device-copy>strong{display:block;font-size:12px;line-height:1.5;overflow-wrap:anywhere;font-weight:600}.sidebar-device-copy .device-status{padding:0;background:none;gap:6px;margin-top:2px;font-size:11px}.device-switch-chevron{width:14px;height:14px}.sidebar-devices>#device-detail{display:block;font-size:11px;line-height:1.7;color:var(--muted);margin:9px 2px 0;overflow-wrap:anywhere}.sidebar-devices>#disconnect{font-size:11px;min-height:28px;margin-top:5px;color:#758068}.sidebar-devices>#disconnect[hidden]{display:none}#switch-disconnect{margin-top:12px;display:flex}#switch-disconnect[hidden]{display:none}.rail-bottom{padding-top:24px}aside{overflow-y:auto}.rail-label{margin-left:10px}.heading{padding-bottom:32px}
@media(max-width:760px){.sidebar-devices{margin:16px 0 0;padding:0 0 14px;display:grid;grid-template-columns:minmax(0,1fr) 36px;gap:6px 12px}.sidebar-device-heading{grid-column:2;grid-row:1;margin:0;align-self:center}.sidebar-device-heading>span{display:none}.add-device-button{width:36px;height:36px}.device-switch{grid-column:1;grid-row:1;padding:10px 12px}.sidebar-device-copy{display:flex;align-items:center;justify-content:space-between;gap:8px}.sidebar-device-copy .device-status{margin:0}.sidebar-devices>#device-detail{grid-column:1;margin:0}.sidebar-devices>#disconnect{grid-column:2;grid-row:2;white-space:nowrap;justify-self:end;margin:0}aside{overflow:visible}.sidebar-device-copy>strong{font-size:13px}}

/* Viewport-centered terminal overlays the whole workspace, including the rail. */
.terminal-dock{left:50%;right:auto;transform:translateX(-50%);width:calc(100% - 32px);max-width:1200px;z-index:40}#terminal-panel>.section-title{justify-content:flex-end}#terminal-panel>.section-title>.log-tools{display:flex}
@media(max-width:760px){.terminal-dock{left:50%;width:calc(100% - 16px)}#terminal-panel>.section-title>.log-tools{display:flex}}

/* Device selector opens management actions, never a scan. */
aside{overflow:visible}.sidebar-devices{position:relative}.device-menu{position:absolute;top:100%;left:0;width:100%;min-width:0;margin-top:-16px;background:var(--white);border:1px solid #d4dcc8;border-radius:10px;box-shadow:0 12px 32px #102d2426;padding:8px;z-index:30}.device-menu[hidden]{display:none}.device-menu-label{font-size:11px;color:var(--muted);padding:7px 8px}.device-menu-empty{font-size:12px;color:var(--muted);line-height:1.7;margin:4px 8px 12px}.device-menu-action,.device-menu-option{display:flex;align-items:center;gap:9px;width:100%;min-height:40px;padding:10px 8px;text-align:left;font-size:12px;color:var(--ink);background:none;border-radius:5px}.device-menu-action:hover:enabled,.device-menu-option:hover:enabled{background:#eaf0dd}.device-menu-action[hidden]{display:none}.disconnect-action{position:relative;border:0;margin-top:11px;color:#85644a}.disconnect-action::before{content:"";position:absolute;left:0;right:0;top:-6px;height:1px;background:var(--line);pointer-events:none}.device-menu-option>span{min-width:0;overflow-wrap:anywhere}.device-menu-option small{display:block;font-size:11px;color:var(--muted);margin-top:5px;overflow-wrap:anywhere}#device-options{max-height:240px;overflow:auto}.device-switch[aria-expanded="true"] .device-switch-chevron{transform:rotate(180deg)}
@media(max-width:760px){.device-menu{grid-column:1;top:100%;width:calc(100% - 48px);margin-top:-4px}}

/* Compact forest-green terminal, with tools in the title bar. */
.terminal-dock{background:#102d24;color:#edf3e6;border-color:#355044;box-shadow:0 -10px 40px #102d2430}.terminal-bar{display:flex;align-items:center;background:#193a2e;border-bottom:1px solid #355044;padding-right:18px;gap:12px}.terminal-toggle{flex:1;min-width:0;background:transparent;color:#edf3e6;padding:14px 20px}.terminal-summary>span:first-child{color:#b4c6a8}.terminal-state,.terminal-state.connected{background:#304f38;color:#d1ed86}.terminal-bar>.log-tools{flex-shrink:0;gap:6px}.terminal-bar>.log-tools .text-button,.terminal-bar>.log-tools select{background-color:#204235;border-color:#42604c;color:#e4eedb;min-height:32px;font-size:11px;padding-top:7px;padding-bottom:7px}.terminal-bar>.log-tools select{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23d9e6ce' stroke-width='1.6'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-size:16px}.terminal-dock:not(:has(#terminal-toggle[aria-expanded="true"])) .log-tools{display:none}.terminal-dock .logs{background:#102d24}.terminal-dock .log-head,.terminal-dock .console-footer{background:#17362b;color:#a7bea0;border-color:#355044}.terminal-dock .log-row{border-color:#244437;color:#e0ebd8}.terminal-dock .log-row time{color:#8eac96}.terminal-dock .log-row pre{color:#b7cbaa}.terminal-dock .log-row details summary{color:#bbd5a2}.terminal-dock .log-row details pre{color:#d5e6c5}.terminal-dock .dir{background:#2c4838;color:#c3d4b2}.terminal-dock .dir.TX{background:#354e2e;color:#d1ed86}.terminal-dock .dir.RX{background:#204e43;color:#a4d9c1}.terminal-dock .dir.ERR{background:#603f31;color:#f0c2a3}.terminal-dock #raw-form{border-color:#355044;background:#143327}.terminal-dock #raw{color:#edf3e6}.terminal-dock #raw::placeholder{color:#94aa8e}.terminal-dock .tx-label{color:#d1ed86}.terminal-dock #raw-form .dark{background:#d1ed86;color:#102d24}.terminal-dock .log-empty{color:#a7bea0}
@media(max-width:900px){.terminal-bar{gap:4px;padding-right:12px}.terminal-toggle{padding:14px 12px}.terminal-bar .log-tools .text-button{font-size:11px;padding:8px}.terminal-bar .log-tools .export-label{display:none}.terminal-bar .log-tools #pause-label{display:none}.terminal-bar .log-tools .icon{width:18px;height:18px}.terminal-summary>span:first-child{display:none}}
@media(max-width:520px){.terminal-bar{gap:0;padding-right:8px}.terminal-toggle{padding:12px 10px;gap:4px}.terminal-title{gap:6px}.terminal-title>.icon{display:none}.terminal-summary{gap:3px}#terminal-toggle-label{display:none}.terminal-state{padding:4px;font-size:11px}.terminal-bar>.log-tools{width:auto;gap:4px}.terminal-bar>.log-tools select{width:83px;padding-left:7px;padding-right:23px;background-position:right 5px center}.terminal-bar .log-tools .text-button{padding:7px}.terminal-chevron{width:15px;height:15px}}

/* Charcoal terminal interior; collapse stays at the far right. */
.terminal-dock{background:#222625;border-color:#414845}.terminal-bar{padding:0 18px 0 22px;gap:14px;min-height:56px}.terminal-bar>.terminal-title{margin-right:auto}.terminal-counter{font:11px monospace;color:#b4c6a8;white-space:nowrap}.terminal-bar>.terminal-toggle{flex:0 0 auto;width:auto;gap:7px;padding:12px 0 12px 6px;min-height:56px}.terminal-dock .logs{background:#222625}.terminal-dock .log-head,.terminal-dock .console-footer{background:#2b302e;border-color:#414845;color:#adb6ae}.terminal-dock .log-row{border-color:#363e39;color:#e1e5df}.terminal-dock .log-row time{color:#929f97}.terminal-dock .log-row pre{color:#bfc8be}.terminal-dock .log-row details summary{color:#bcccaf}.terminal-dock #raw-form{background:#272c29;border-color:#414845}.terminal-dock #raw{color:#e5e9e2}.terminal-dock #raw::placeholder{color:#94a096}
@media(max-width:900px){.terminal-bar{padding:0 12px;gap:9px}.terminal-counter{display:none}.terminal-bar>.terminal-toggle{padding-left:3px}}
@media(max-width:520px){.terminal-bar{padding:0 10px;gap:6px}.terminal-bar>.terminal-title{font-size:12px;gap:5px}.terminal-bar>.terminal-toggle{min-height:56px;padding:12px 0}.terminal-bar>.log-tools{flex-wrap:nowrap}.terminal-bar>.terminal-toggle #terminal-toggle-label{display:none}}

.vital-trends{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-bottom:24px}.vital-card{min-width:0}.vital-card .section-title{padding-bottom:12px}.vital-reading{padding:0 24px;display:flex;gap:8px;align-items:baseline}.vital-reading strong{font-size:36px;font-weight:400}.vital-reading>span{font-size:12px;color:var(--muted)}.vital-chart{height:180px;position:relative;margin:12px 20px 20px}.vital-chart>svg{width:100%;height:180px;display:block}.vital-chart text{font:11px Arial,sans-serif;fill:#7c8379}.vital-chart>p{position:absolute;top:52px;left:40px;right:12px;text-align:center;font-size:12px;color:var(--muted);background:#fbfaf5e8;padding:12px 0}.vital-chart>p[hidden]{display:none}.vital-note{margin:0;padding:0 24px 20px}.vital-card .toolbar{padding-bottom:14px}@media(max-width:1000px){.vital-trends{grid-template-columns:1fr}}

/* Decoded fields are readable beside the raw packet bytes. */
.log-table{display:flex;flex-direction:column;flex:1;min-height:0;overflow-x:auto}.terminal-dock .log-head,.terminal-dock .log-row{grid-template-columns:100px 45px minmax(240px,1.1fr) minmax(220px,1fr);gap:14px;padding-left:20px;padding-right:20px}.log-table>.log-head,.log-table>.logs{min-width:700px}.log-table>.log-head{flex-shrink:0}#terminal-panel .log-table>.logs{flex:1;min-height:0;overflow-y:auto;padding-top:0}.log-readable,.log-payload{min-width:0;overflow-wrap:anywhere}.log-message{font-family:Arial,"PingFang SC",sans-serif;font-size:12px;line-height:1.6}.log-fields{margin:7px 0 0;display:grid;gap:4px;font:12px/1.6 Arial,"PingFang SC",sans-serif}.log-fields>div{display:grid;grid-template-columns:minmax(70px,auto) 1fr;gap:12px}.log-fields dt{color:#9eada4}.log-fields dd{margin:0;color:#e4ebdf;overflow-wrap:anywhere}.log-unparsed,.payload-size{font-size:11px;color:#84968c}.payload-size{display:block;margin-bottom:4px}.terminal-dock .log-payload pre{margin:0;color:#9fac9e;font-size:11px;line-height:1.8}.terminal-dock .log-row{padding-top:12px;padding-bottom:12px}

.terminal-dock:not(:has(#terminal-toggle[aria-expanded="true"])) .terminal-bar{cursor:pointer}
/* Give decoded data priority and use the whole column for field groups. */
.terminal-dock .log-head,.terminal-dock .log-row{grid-template-columns:100px 45px minmax(350px,1.8fr) minmax(200px,1fr)}
.log-table>.log-head,.log-table>.logs{min-width:780px}
.log-fields{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px 20px;width:100%;margin-top:10px}
.log-fields>div{display:flex;align-items:baseline;gap:10px;min-width:0}
.log-fields dt{flex-shrink:0}.log-fields dd{min-width:0;flex:1}

.config-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.config-card{min-width:0;border:1px solid var(--line);border-radius:8px;padding:20px;background:#f5f6ee}.config-heading{display:flex;justify-content:space-between;gap:12px;align-items:center}.config-heading h3{font-size:15px;font-weight:500;margin:0}.config-read{font-size:12px}.config-description{font-size:12px;color:var(--muted);line-height:1.8;margin:12px 0 18px;min-height:42px}.config-empty{font-size:12px;color:var(--muted);padding:16px 0}.config-fields{margin:0;font-size:12px}.config-fields>div{display:flex;justify-content:space-between;gap:18px;padding:9px 0;border-bottom:1px solid #e3e7da}.config-fields dt{color:#7c8379;flex-shrink:0}.config-fields dd{margin:0;text-align:right;overflow-wrap:anywhere;min-width:0}.config-status{font-size:11px;color:var(--muted);margin-top:15px;line-height:1.7}.config-error{color:#a65338}.config-raw{margin-top:14px;font-size:11px;color:#708266}.config-raw summary{cursor:pointer}.config-raw pre{font-size:11px;line-height:1.8;white-space:pre-wrap;overflow-wrap:anywhere}@media(max-width:900px){.config-grid{grid-template-columns:1fr}}@media(max-width:760px){.config-grid{padding-left:16px;padding-right:16px}.config-card{padding:16px}}
.advanced-controls{display:flex;align-items:center;flex-wrap:wrap;gap:16px;padding:22px;margin-bottom:20px}.advanced-controls>div{flex:1;min-width:230px}.advanced-controls h2{font-size:16px;margin:0 0 8px}.advanced-controls p,.advanced-note{font-size:12px;line-height:1.8;color:var(--muted);margin:0}.advanced-note{padding:0 24px 20px}.toolbar label,.advanced-controls>label{display:flex;align-items:center;gap:8px;font-size:12px}.check-label{font-size:12px;line-height:1.6;display:flex;align-items:center;gap:7px}.check-label input{accent-color:#6b873d;width:16px;height:16px}.toolbar input[type=number]{width:85px;border:1px solid var(--line);border-radius:5px;background:var(--white);padding:9px;color:var(--ink)}.advanced-summary{padding:16px 24px;font-size:12px;line-height:1.8;overflow-wrap:anywhere;border-top:1px solid var(--line)}.stream-preview{margin:0;padding:18px 24px;white-space:pre-wrap;overflow-wrap:anywhere;font:11px/1.8 monospace;max-height:280px;overflow:auto;background:#eef1e5;color:#52674e}.session-library,.haptic-card{margin-top:20px}.sessions-list{padding:0 24px 24px}.session-row{display:flex;justify-content:space-between;gap:16px;padding:18px 0;border-top:1px solid var(--line);align-items:center}.session-row>div{min-width:0}.session-row p,.session-row small{font-size:11px;line-height:1.7;color:var(--muted);overflow-wrap:anywhere}.session-actions{display:flex;flex-wrap:wrap;gap:8px}.research-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}.capability-list{padding:0 24px 24px}.capability-list article{display:flex;gap:18px;justify-content:space-between;align-items:center;padding:18px 0;border-top:1px solid var(--line)}.capability-list h3{font-size:14px;font-weight:500;margin:0 0 8px}.capability-list p{font-size:12px;color:var(--muted);line-height:1.7;margin:0}.haptic-timeline{height:36px;position:relative;border-radius:5px;background:#e1e8d4}.haptic-timeline span{position:absolute;top:6px;bottom:6px;background:#75933e;border-radius:3px}aside{overflow-y:auto}.rail-bottom{flex-shrink:0}.sidebar-devices{flex-shrink:0}.device-menu{position:relative;top:auto;margin-top:8px}#scan-cancel[hidden]{display:none}@media(max-width:1100px){.research-grid{grid-template-columns:1fr}}@media(max-width:760px){nav{flex-wrap:wrap}.nav{flex:1 0 23%}.session-row,.capability-list article{align-items:flex-start;flex-direction:column}.advanced-controls{padding:18px}.haptic-form label{flex-wrap:wrap}.haptic-steps{width:100%}.haptic-steps select{max-width:100%}.device-menu{grid-column:1/-1;width:100%;margin-top:2px}.capability-list .tag{white-space:normal}}

[hidden]{display:none!important}

.raw-plots{display:grid;grid-template-columns:1fr 1fr;gap:20px;padding:0 24px 20px}.raw-plots h3{font-size:12px;font-weight:500}.raw-plots svg,.research-plot svg{display:block;width:100%;height:150px;background:#f5f6ee;border-radius:6px}.raw-plots svg text,.research-plot svg text{font:11px Arial;fill:#7c8379}.research-plot{padding:0 24px 16px}@media(max-width:760px){.raw-plots{grid-template-columns:1fr}}

/* Floating device actions stay anchored without taking up sidebar space. */
.device-menu{position:fixed;inset:auto;margin:0;overflow-y:auto;overscroll-behavior:contain;max-height:calc(100vh - 24px)}

/* Compact developer workspace: functional headings, no campaign panels. */
.heading{padding-bottom:20px;margin-bottom:0}.heading h1{font-size:24px;line-height:1.3;margin:0}.overview-grid{grid-template-columns:1fr}.identity dl{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:32px}.config-result{margin-top:12px}@media(max-width:760px){.heading h1{font-size:22px}.identity dl{grid-template-columns:1fr}}

.health-toolbar{display:flex;gap:16px;align-items:center;flex-wrap:wrap;margin-bottom:22px;font-size:12px}.health-toolbar label{display:flex;align-items:center;gap:10px}.health-toolbar>span{color:var(--muted)}.health-metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:20px}.health-metric{padding:20px}.health-metric>span{font-size:12px}.health-metric strong{display:block;font-size:28px;font-weight:500;margin-top:15px}.health-metric small{font-size:12px}.health-metric p,.health-trend p,.sleep-card>p,.health-coverage>p{font-size:11px;color:var(--muted);line-height:1.7}.sleep-card,.health-trend,.health-coverage{padding:22px;margin-bottom:20px}.health-card-title{display:flex;justify-content:space-between;align-items:center;gap:16px}.health-card-title h2,.health-coverage h2{font-size:16px;margin:0}.health-card-title>span{font-size:11px;color:var(--muted)}.sleep-summary{display:flex;flex-wrap:wrap;gap:30px;padding:20px 0}.sleep-summary>span{font-size:12px}.sleep-summary strong{font-size:24px;margin:0 7px}.sleep-summary small{font-size:11px;color:var(--muted)}.sleep-record{display:grid;grid-template-columns:145px 1fr 85px;align-items:center;gap:14px;margin:12px 0;font-size:11px}.sleep-band{display:flex;height:24px;overflow:hidden;border-radius:4px}.sleep-band span{flex:1;min-width:0}.sleep-record small{font-size:11px;color:var(--muted)}.health-details{font-size:12px;line-height:1.8;color:var(--muted)}.health-details summary{cursor:pointer}.health-trends{display:grid;grid-template-columns:1fr 1fr;gap:20px}.health-trend{min-width:0;margin:0}.health-trend svg{width:100%;display:block;margin-top:16px}.health-trend svg text{font:11px Arial;fill:#7c8379}.health-stats{display:flex;gap:18px;font-size:12px;padding-top:16px;color:var(--muted)}.health-stats b{color:var(--ink)}.health-empty{padding:30px 0;font-size:12px;color:var(--muted)}.health-coverage{margin-top:20px}.health-coverage>div{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:20px}.health-coverage>div>div{display:flex;flex-wrap:wrap;gap:10px;font-size:12px;border-bottom:1px solid var(--line);padding:10px 0}.health-coverage small{font-size:11px;color:var(--muted)}@media(max-width:900px){.health-metrics{grid-template-columns:1fr 1fr}.health-trends{grid-template-columns:1fr}.health-coverage>div{grid-template-columns:1fr 1fr}}@media(max-width:520px){.sleep-record{grid-template-columns:1fr auto}.sleep-band{grid-column:1/-1;grid-row:2}.health-coverage>div{grid-template-columns:1fr}.sleep-summary{gap:16px}.health-stats{gap:12px}}

.sleep-summary i{display:inline-block;width:11px;height:11px;border-radius:3px;margin-right:6px}.chart-range{display:flex;justify-content:space-between;font-size:11px;color:var(--muted);margin-top:16px}.chart-axis{font-size:11px;color:var(--muted)}

/* Keep column labels in view while records scroll. */
.table-scroll{position:relative;isolation:isolate}
.table-scroll table{border-collapse:separate;border-spacing:0}
.table-scroll thead th{position:sticky;top:0;z-index:2;background:#f1f3e9;box-shadow:0 1px 0 var(--line)}
.log-table>.log-head{position:sticky;top:0;z-index:2}
/* Shared dropdowns and record calendar. Native selects retain application state. */
.enhanced-select{display:none!important}.select-trigger{display:inline-flex;align-items:center;justify-content:space-between;gap:12px;min-height:38px;padding:9px 12px;background:var(--white);color:var(--ink);border:1px solid var(--line);border-radius:8px;font:12px/1.4 Arial,"PingFang SC",sans-serif;white-space:nowrap}.select-trigger>span{flex:1;text-align:left}.select-trigger .icon{width:16px;height:16px;flex-shrink:0}.select-trigger:hover:enabled{border-color:#9dac8f;background:#f2f5ea}.select-trigger:focus-visible,.control-popup button:focus-visible{outline:2px solid #75933e;outline-offset:2px}.select-trigger[aria-expanded=true]{border-color:#75933e;box-shadow:0 0 0 2px #75933e20}.control-popup{position:fixed;inset:auto;margin:0;padding:6px;background:#fbfaf7;color:#102d24;border:1px solid #d6ddcd;border-radius:12px;box-shadow:0 12px 36px #102d2426;overflow-y:auto;box-sizing:border-box}.control-popup button{font:12px/1.5 Arial,"PingFang SC",sans-serif;color:#102d24;border:0;background:transparent;border-radius:6px;cursor:pointer}.control-popup button:hover:enabled{background:#edf1e5}.control-popup .select-option{display:flex;width:100%;align-items:center;justify-content:space-between;gap:18px;text-align:left;padding:10px 12px;min-height:38px}.control-popup .selected{background:#e5ecd7;font-weight:600}.control-popup .icon{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.7}.calendar-popup{padding:14px}.calendar-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px}.calendar-heading strong{font-size:14px}.calendar-heading button{display:grid;place-items:center;width:32px;height:32px}.calendar-week,.calendar-days{display:grid;grid-template-columns:repeat(7,1fr);gap:3px;text-align:center}.calendar-week{font-size:11px;color:#849078;margin-bottom:7px}.calendar-days button{height:34px;padding:4px;position:relative}.calendar-days button:disabled{color:#b9bdb4;cursor:default;opacity:.65}.calendar-days button.selected{background:#193a2e;color:#f4f7ef}.calendar-days i{position:absolute;bottom:3px;left:calc(50% - 2px);width:4px;height:4px;border-radius:50%;background:#88a34f}.calendar-note{display:flex;align-items:center;gap:7px;border-top:1px solid #e2e7db;margin-top:14px;padding-top:12px;font-size:11px;color:#7b8573}.calendar-note i{width:5px;height:5px;background:#88a34f;border-radius:50%}.terminal-bar .select-trigger{background:#204235;color:#e4eedb;border-color:#42604c;min-height:32px;padding:7px 9px;font-size:11px}@media(max-width:520px){.terminal-bar .select-trigger{gap:4px;padding:7px;font-size:11px}.select-trigger{max-width:100%}}
.sleep-summary{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:24px 0 30px}.sleep-total{flex-shrink:0}.sleep-total>span{display:block;font-size:12px;color:var(--muted)}.sleep-total>span small{font-size:11px;margin-left:8px}.sleep-total>strong{display:block;font-size:30px;margin:12px 0 0;font-weight:500}.sleep-stage-totals{display:flex;gap:28px;flex-wrap:wrap}.sleep-stage-totals>div>span{display:block;font-size:12px}.sleep-stage-totals strong{display:block;font-size:16px;margin:10px 0 0;font-weight:500}.sleep-timeline-scroll{overflow-x:auto;padding:4px 0 26px}.sleep-timeline{display:flex;min-width:460px;gap:12px}.sleep-lanes{display:flex;flex-direction:column;flex:0 0 48px;font-size:11px;color:var(--muted)}.sleep-lanes span{height:44px;display:flex;align-items:center}.sleep-plot{position:relative;flex:1;height:176px;margin-right:20px;background:repeating-linear-gradient(to bottom,transparent 0,transparent 43px,#e5e8df 43px,#e5e8df 44px)}.sleep-stage-block{position:absolute;height:26px;min-width:1px;border-radius:2px;z-index:1}.sleep-data-gap{position:absolute;top:0;bottom:0;background:repeating-linear-gradient(135deg,#f4f4ee,#f4f4ee 4px,#e4e7dc 4px,#e4e7dc 5px);opacity:.8}.sleep-axis{position:absolute;top:184px;left:0;right:0;height:20px;font-size:11px;color:var(--muted)}.sleep-axis span{position:absolute;transform:translateX(-50%);white-space:nowrap}.sleep-axis span:first-child{transform:none}.sleep-axis span:last-child{transform:translateX(-100%)}.sleep-range{display:flex;justify-content:space-between;gap:12px;font-size:11px;color:var(--muted);margin:8px 0 18px}.sleep-packets{font-size:11px;color:var(--muted);margin:18px 0;border-top:1px solid var(--line);padding-top:14px}.sleep-packets summary{cursor:pointer}.sleep-packets>div{display:flex;justify-content:space-between;padding:9px 0;border-bottom:1px solid var(--line)}@media(max-width:900px){.sleep-summary{align-items:flex-start;flex-direction:column}.sleep-stage-totals{gap:20px}.sleep-range{flex-wrap:wrap}}@media(max-width:520px){.sleep-total>strong{font-size:26px}.sleep-stage-totals{display:grid;grid-template-columns:1fr 1fr;width:100%;gap:18px}}

.chart-wrap:has(#wave){background:none;border-bottom:0}

.config-batch-tools{display:flex;align-items:center;gap:14px;flex-wrap:wrap;justify-content:flex-end}.config-batch-tools>span{font-size:11px;color:var(--muted)}

.raw-plots.ppg-only{grid-template-columns:1fr}.raw-plots.ppg-only svg{height:220px}

.capture-sources{display:flex;align-items:center;gap:12px;border:0;padding:0;margin:0 10px 0 0;min-width:0}.capture-sources legend{float:left;font-size:12px;margin:0;padding:0;line-height:20px}.capture-sources label{min-height:36px}.capture-sources input{width:16px;height:16px}

/* Small status light: solid center, fine rim, restrained halo. */
#connection-dot{--signal:#8b958b;--halo:#8b958b26;display:inline-block;width:7px;height:7px;min-width:7px;flex:0 0 7px;border-radius:50%;background:var(--signal);border:1px solid #ffffffa6;box-shadow:0 0 0 1px var(--signal),0 0 5px 1px var(--halo);position:relative;margin:2px;transition:background .2s,box-shadow .2s}
#connection-dot[data-signal="connected"],#connection-dot[data-signal="optical"]{--signal:#7d9d3b;--halo:#89b54455}
#connection-dot[data-signal="oxygen"]{--signal:#bf6755;--halo:#bf67554d}
#connection-dot[data-signal="motion"]{--signal:#538f9a;--halo:#538f9a4d}
#connection-dot[data-signal="connecting"]{--signal:#b58c43;--halo:#b58c434d}
#connection-dot.acquiring{animation:signal-breathe 1.5s ease-in-out infinite}
@keyframes signal-breathe{0%,100%{opacity:.65;box-shadow:0 0 0 1px var(--signal),0 0 3px var(--halo)}50%{opacity:1;box-shadow:0 0 0 1px var(--signal),0 0 8px 2px var(--halo)}}
@media(prefers-reduced-motion:reduce){#connection-dot.acquiring{animation:none}}

#view-capabilities > .card + .card{margin-top:20px}
.acquisition-tabs{display:flex;gap:6px;align-items:center;border-bottom:1px solid var(--line);margin:0 0 24px;padding-bottom:10px}.acquisition-tabs button{padding:10px 16px;border-radius:7px;font-size:12px;color:var(--muted);background:transparent}.acquisition-tabs button[aria-selected="true"]{background:#e0e7d0;color:var(--ink);font-weight:600}.acquisition-tabs button:hover{background:#e9eddf}#acquisition-sessions .session-library{margin-top:0}

.chart-tooltip{position:fixed;z-index:1000;pointer-events:none;white-space:pre-line;padding:10px 14px;border:1px solid #476052;border-radius:9px;background:#15382d;color:#f5f6ef;font-size:12px;line-height:1.8;box-shadow:0 6px 20px #102d2426;font-variant-numeric:tabular-nums}.chart-tooltip[hidden]{display:none}.trend-point{cursor:crosshair;stroke:transparent;stroke-width:10;paint-order:stroke fill}.trend-point.is-hovered,.trend-point:focus{stroke:#91a86955;stroke-width:8;outline:none}

#view-research .research-grid{grid-template-columns:1fr;align-items:start}#view-research #research-preview{max-height:200px;overflow:auto}#view-research .research-plot[hidden]{display:none}

#ecg-report{border-top:1px solid var(--line);padding:20px 24px}#ecg-report[hidden]{display:none}#ecg-report .toolbar{padding:0;margin:0 0 16px}#ecg-report h3{margin:0 auto 0 0;font-size:14px}#ecg-report-content{overflow:auto;max-height:620px;border:1px solid var(--line);border-radius:8px}#ecg-report-content svg{display:block;width:100%;height:auto;min-width:720px}

#acquisition-measure > #ecg-card{margin-top:20px}

.brand img{display:block;width:100%;max-width:184px;height:auto}
