.uplot,.uplot *,.uplot *:before,.uplot *:after{box-sizing:border-box}.uplot{font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";line-height:1.5;width:min-content}.u-title{text-align:center;font-size:18px;font-weight:700}.u-wrap{position:relative;-webkit-user-select:none;user-select:none}.u-over,.u-under{position:absolute}.u-under{overflow:hidden}.uplot canvas{display:block;position:relative;width:100%;height:100%}.u-axis{position:absolute}.u-legend{font-size:14px;margin:auto;text-align:center}.u-inline{display:block}.u-inline *{display:inline-block}.u-inline tr{margin-right:16px}.u-legend th{font-weight:600}.u-legend th>*{vertical-align:middle;display:inline-block}.u-legend .u-marker{width:1em;height:1em;margin-right:4px;background-clip:padding-box!important}.u-inline.u-live th:after{content:":";vertical-align:middle}.u-inline:not(.u-live) .u-value{display:none}.u-series>*{padding:4px}.u-series th{cursor:pointer}.u-legend .u-off>*{opacity:.3}.u-select{background:#00000012;position:absolute;pointer-events:none}.u-cursor-x,.u-cursor-y{position:absolute;left:0;top:0;pointer-events:none;will-change:transform}.u-hz .u-cursor-x,.u-vt .u-cursor-y{height:100%;border-right:1px dashed #607D8B}.u-hz .u-cursor-y,.u-vt .u-cursor-x{width:100%;border-bottom:1px dashed #607D8B}.u-cursor-pt{position:absolute;top:0;left:0;border-radius:50%;border:0 solid;pointer-events:none;will-change:transform;background-clip:padding-box!important}.u-axis.u-off,.u-select.u-off,.u-cursor-x.u-off,.u-cursor-y.u-off,.u-cursor-pt.u-off{display:none}:root{color-scheme:dark;--page: #0a0d12;--surface: #10141b;--surface-raised: #151a23;--border: rgba(255, 255, 255, .07);--border-strong: rgba(255, 255, 255, .12);--text-primary: #e8ebf1;--text-secondary: #9aa3b2;--text-muted: #5f6878;--font-sans: system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono: ui-monospace, "SF Mono", Menlo, monospace}*{box-sizing:border-box}body{margin:0;min-height:100vh;background:radial-gradient(ellipse 80% 50% at 50% -10%,rgba(57,135,229,.08),transparent 70%),var(--page);color:var(--text-primary);font-family:var(--font-sans);-webkit-font-smoothing:antialiased}.app{width:min(1200px,100%);margin:0 auto;padding:40px 24px 64px}.app__header{display:flex;align-items:baseline;gap:14px;margin-bottom:28px}.app__wordmark{font-size:15px;font-weight:600;letter-spacing:.32em;text-transform:uppercase}.app__tabs{display:flex;gap:4px}.app__tab{padding:4px 10px;border:none;border-radius:8px;background:none;color:var(--text-muted);font:inherit;font-size:13px;cursor:pointer}.app__tab:hover{color:var(--text-secondary)}.app__tab[aria-selected=true]{background:var(--surface-raised);color:var(--text-primary)}.protocols{display:grid;grid-template-columns:220px minmax(0,1fr);gap:24px;align-items:start}.protocols__items{display:flex;flex-direction:column;gap:2px;margin:0 0 12px;padding:0;list-style:none}.protocols__row{display:flex;flex-wrap:wrap;align-items:center;padding-right:4px;border-radius:8px}.protocols__row:has(.protocols__item[aria-current=true]){background:var(--surface-raised)}.protocols__unsaved,.session-protocol__unsaved{flex:none;width:6px;height:6px;margin-right:4px;border-radius:50%;background:#e0a458}.protocols__download,.protocols__remove{padding:4px 10px;border:none;border-radius:8px;background:none;color:var(--text-muted);font:inherit;font-size:15px;line-height:1;cursor:pointer}.protocols__download:hover:not(:disabled),.protocols__remove:hover:not(:disabled){color:var(--text-primary)}.protocols__download:disabled,.protocols__remove:disabled{opacity:.35;cursor:default}.protocols__confirm-remove{width:calc(100% - 8px);margin:4px 0 8px 4px;padding:10px 12px;border:1px solid var(--border-strong);border-radius:8px;color:var(--text-secondary);font-size:12px}.protocols__confirm-remove p{margin:0 0 8px;color:var(--text-primary)}.protocols__delete-file{display:flex;align-items:center;gap:6px;font-family:var(--font-mono);font-size:11px}.protocols__confirm-actions{display:flex;gap:8px;margin-top:10px}.protocols__confirm-actions button{padding:5px 12px;border:1px solid var(--border-strong);border-radius:6px;background:none;color:var(--text-secondary);font:inherit;font-size:12px;cursor:pointer}.protocols__confirm-actions button:first-child{border-color:#e5484d80;color:#e5484d}.protocols__item{display:block;flex:1;min-width:0;padding:8px 12px;border:none;background:none;color:var(--text-secondary);font:inherit;font-size:13px;text-align:left;cursor:pointer}.protocols__item:hover,.protocols__item[aria-current=true]{color:var(--text-primary)}.protocols__new{width:100%;padding:10px 12px;border:1px dashed var(--border-strong);border-radius:8px;background:none;color:var(--text-muted);font:inherit;font-size:12px;text-align:left;cursor:pointer}.protocols__new+.protocols__new{margin-top:8px}.protocols__new:hover{border-color:#ffffff3d;color:var(--text-secondary)}.protocols__empty{margin:10px 0 0;color:var(--text-muted);font-size:13px}.biosensors__heading,.event-markers__heading{margin:0 0 10px;color:var(--text-muted);font-size:12px;font-weight:400}.biosensors__empty,.event-markers__empty{display:flex;align-items:center;min-height:58px;margin:0;padding:14px 20px;border:1px solid var(--border-strong);border-radius:20px;background:#ffffff04;color:var(--text-muted);font-size:14px}.protocols__record+.biosensors{margin-top:20px}.protocols__device-list{display:flex;flex-direction:column;gap:10px;margin:0;padding:0;list-style:none}.card .add-biosensor{margin-top:10px}.biosensors+.event-markers{margin-top:20px}.event-markers__box{padding:14px 8px 0 20px;border:1px solid var(--border-strong);border-radius:20px}.event-markers__list{display:flex;flex-direction:column;margin:0;padding:0;list-style:none}.event-markers__row{display:flex;align-items:center;gap:14px;min-height:36px;font-size:14px}.event-markers__time{min-width:44px;color:var(--text-muted);font-variant-numeric:tabular-nums}.event-markers__name{flex:1;min-width:0;color:var(--text-primary)}input.event-markers__name,.event-markers__wait input{padding:6px 10px;border:1px solid var(--border-strong);border-radius:8px;background:none;font:inherit;font-size:14px}.event-markers__wait{display:flex;align-items:center;gap:6px;color:var(--text-muted);font-size:12px}.event-markers__wait input{width:72px;color:var(--text-primary)}.event-markers__footer{display:flex;align-items:center;justify-content:flex-end;gap:14px;margin-top:16px;padding:10px 12px 12px 0;border-top:1px solid var(--border-strong);color:var(--text-muted);font-size:12px}.event-markers__advanced{display:flex;align-items:center;gap:6px;cursor:pointer}.event-markers__emitted{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 6px;padding:0 0 0 58px;list-style:none;color:var(--text-muted);font-size:12px}.event-markers__emitted li+li:before{content:"→";margin-right:8px}.event-markers__list>li:last-child .event-markers__emitted{margin-bottom:0}.event-markers__add{display:flex;gap:10px;margin-top:10px}.event-markers__add .add-biosensor__button{text-align:center;white-space:nowrap}.event-markers__unit{text-transform:none}.event-markers__add .add-biosensor__button[aria-pressed=true]{border-style:solid;border-color:#ffffff3d;background:#ffffff0a;color:var(--text-primary)}.event-markers--locked .event-markers__name,.event-markers--locked .event-markers__wait input{color:var(--text-muted)}.event-markers--locked .add-biosensor__button,.event-markers--locked .add-biosensor__button:hover,.event-markers--locked .add-biosensor__button[aria-pressed=true]{border-color:var(--border-strong);background:none;color:#5f687880;cursor:default}.protocols__error{margin:10px 0 0;color:#e5484d;font-size:12px}.protocols__actions{display:flex;align-items:center;gap:14px;margin-top:20px}.protocols__save{padding:10px 24px;border:1px solid var(--border-strong);border-radius:20px;background:var(--surface-raised);color:var(--text-primary);font:inherit;font-size:12px;font-weight:600;letter-spacing:.18em;text-transform:uppercase;cursor:pointer}.protocols__cancel{background:none;color:var(--text-secondary)}.protocols__save:disabled{background:none;color:var(--text-muted);cursor:default}.protocols__saved{color:var(--text-muted);font-family:var(--font-mono);font-size:11px}.card{padding:20px;border:1px solid var(--border);border-radius:16px;background:var(--surface)}.protocols__field{display:flex;flex-direction:column;gap:6px;color:var(--text-muted);font-size:12px}.protocols__record{display:flex;flex-wrap:wrap;align-items:center;gap:14px;margin-top:20px}.protocols__name{display:flex;flex-wrap:wrap;align-items:flex-end;gap:6px 12px}.protocols__name .protocols__field{flex:0 1 420px}.protocols__name-taken{padding-bottom:10px;color:#e5484d;font-size:12px}.protocols__field input{max-width:420px;padding:8px 10px;border:1px solid var(--border-strong);border-radius:6px;background:none;color:var(--text-primary);font:inherit;font-size:15px}.protocols__field input::placeholder{color:var(--text-muted)}.protocols__field input:focus-visible{border-color:#ffffff4d;outline:none}@media(max-width:600px){.protocols{grid-template-columns:1fr}}.add-biosensor{position:relative;margin-top:20px}.add-biosensor__button{display:block;width:100%;padding:16px 18px;border:1px dashed var(--border-strong);border-radius:20px;background:none;color:var(--text-muted);font:inherit;font-size:12px;font-weight:600;letter-spacing:.18em;text-align:left;text-transform:uppercase;cursor:pointer}.add-biosensor__button:hover,.add-biosensor__button[aria-expanded=true]{border-color:#ffffff3d;background:#ffffff04;color:var(--text-secondary)}.session-mode{display:inline-flex;padding:2px;border:1px solid var(--border-strong);border-radius:8px}.session-mode__option{padding:5px 12px;border:none;border-radius:6px;background:none;color:var(--text-muted);font:inherit;font-size:12px;cursor:pointer}.session-mode__option:hover:not(:disabled){color:var(--text-secondary)}.session-mode__option[aria-checked=true]{background:var(--surface-raised);color:var(--text-primary)}.session-mode__option:disabled{cursor:default}.session-mode__option:disabled:not([aria-checked=true]){color:#5f687880}.session-mode__option:focus-visible{outline:1px solid rgba(255,255,255,.3)}.session-protocol__select{appearance:none;max-width:220px;padding:7px 32px 7px 14px;border:1px solid var(--border-strong);border-radius:8px;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='5' viewBox='0 0 8 5'%3E%3Cpath d='M1 1l3 3 3-3' fill='none' stroke='%235f6878' stroke-width='1.2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") no-repeat right 14px center;color:var(--text-primary);font:inherit;font-size:12px;cursor:pointer}.session-protocol__select:disabled{color:#5f687880;cursor:default}.session-protocol__heading{display:inline-flex;align-items:center;gap:8px;color:var(--text-muted);font-size:12px}.card .stream-monitor{gap:10px}.session-protocol__button{padding:6px 12px;border:1px solid var(--border-strong);border-radius:6px;background:none;color:var(--text-secondary);font:inherit;font-size:12px;cursor:pointer}.session-protocol__button:hover:not(:disabled){color:var(--text-primary)}.session-protocol__button:disabled{color:var(--text-muted);cursor:default}.session-protocol__select:focus-visible,.session-protocol__button:focus-visible{border-color:#ffffff4d;outline:none}.session-protocol__saved{color:var(--text-muted);font-family:var(--font-mono);font-size:11px}.connect-devices{display:flex;flex-wrap:wrap;align-items:center;gap:14px;margin-bottom:20px}.connect-devices__button{padding:12px 28px;border:1px solid var(--border-strong);border-radius:20px;background:var(--surface-raised);color:var(--text-primary);font:inherit;font-size:12px;font-weight:600;letter-spacing:.18em;text-transform:uppercase;cursor:pointer}.connect-devices__button:hover:not(:disabled),.connect-devices__button:focus-visible{border-color:#ffffff4d;outline:none}.connect-devices__button:disabled{color:var(--text-muted);cursor:default}.connect-devices__group{display:flex;flex-wrap:wrap;align-items:center;gap:14px}.connect-devices__group--own-line{flex:0 0 100%;order:1}.connect-devices__record-toggle{display:flex;align-items:center;gap:6px;color:var(--text-secondary);font-size:12px;cursor:pointer}.connect-devices__record-directory{width:320px;padding:6px 10px;border:1px solid var(--border-strong);border-radius:6px;background:none;color:var(--text-primary);font-family:var(--font-mono);font-size:11px}.connect-devices__record-directory::placeholder{color:var(--text-muted)}.connect-devices__record-directory:read-only{border-style:dashed;color:var(--text-secondary);cursor:default}.connect-devices__record-directory:focus-visible{border-color:#ffffff4d;outline:none}.connect-devices__record-file{display:flex;align-items:center;gap:2px}.connect-devices__record-name{width:160px;padding:6px 10px;border:1px solid var(--border-strong);border-radius:6px;background:none;color:var(--text-primary);font-family:var(--font-mono);font-size:11px}.connect-devices__record-name::placeholder{color:var(--text-muted)}.connect-devices__record-name:read-only{border-style:dashed;color:var(--text-secondary);cursor:default}.connect-devices__record-name:focus-visible{border-color:#ffffff4d;outline:none}.connect-devices__record-timestamp{color:var(--text-muted);font-family:var(--font-mono);font-size:11px;-webkit-user-select:none;user-select:none}.connect-devices__browse,.connect-devices__play{padding:6px 12px;border:1px solid var(--border-strong);border-radius:6px;background:none;color:var(--text-secondary);font:inherit;font-size:11px;cursor:pointer}.connect-devices__browse:disabled{color:var(--text-muted);cursor:default}.connect-devices__browse:hover:not(:disabled),.connect-devices__browse:focus-visible,.connect-devices__play[aria-pressed=true]{background:var(--surface-raised);color:var(--text-primary)}.connect-devices__play:hover,.connect-devices__play:focus-visible{border-color:#ffffff4d;outline:none}.connect-devices__recording,.connect-devices__playing{color:var(--text-secondary);font-family:var(--font-mono);font-size:11px}.connect-devices__seek{flex:1 1 200px;min-width:160px;margin:0;accent-color:var(--text-secondary);cursor:pointer}.connect-devices__position{color:var(--text-secondary);font-family:var(--font-mono);font-size:11px;font-variant-numeric:tabular-nums}.connect-devices__speeds{display:flex}.connect-devices__speed{padding:6px 8px;border:1px solid var(--border-strong);background:none;color:var(--text-muted);font-family:var(--font-mono);font-size:11px;cursor:pointer}.connect-devices__speed+.connect-devices__speed{border-left:none}.connect-devices__speed:first-child{border-radius:6px 0 0 6px}.connect-devices__speed:last-child{border-radius:0 6px 6px 0}.connect-devices__speed[aria-pressed=true]{background:var(--surface-raised);color:var(--text-primary)}.connect-devices__speed:hover,.connect-devices__speed:focus-visible{color:var(--text-primary);outline:none}.connect-devices__recording-path{padding:0;border:none;background:none;color:var(--text-primary);font:inherit;text-decoration:underline dotted;text-underline-offset:3px;cursor:pointer}.connect-devices__recording-path:hover,.connect-devices__recording-path:focus-visible{text-decoration-style:solid;outline:none}.saved-path{padding:0;border:none;background:none;color:var(--text-secondary);font:inherit;text-decoration:underline dotted;text-underline-offset:3px;cursor:pointer}.saved-path:hover,.saved-path:focus-visible{color:var(--text-primary);text-decoration-style:solid;outline:none}.connect-devices__error{color:#e5484d;font-size:12px}.add-biosensor__menu{position:absolute;top:calc(100% + 6px);left:0;z-index:10;min-width:240px;margin:0;padding:6px;border:1px solid var(--border-strong);border-radius:10px;background:var(--surface-raised);box-shadow:0 16px 40px -12px #000000b3;list-style:none}.add-biosensor__separator{height:1px;margin:6px 4px;background:var(--border-strong)}.add-biosensor__option{display:block;width:100%;padding:8px 10px;border:0;border-radius:6px;background:none;color:var(--text-primary);font:inherit;font-size:13px;text-align:left;cursor:pointer}.add-biosensor__option:hover,.add-biosensor__option:focus-visible{background:#ffffff0f;outline:none}.stream-monitor{display:flex;flex-direction:column;gap:20px}.stream-monitor__device{display:flex;flex-direction:column;gap:20px;padding:14px 16px;border:1px solid var(--border-strong);border-radius:20px;background:#ffffff04;cursor:pointer}.stream-monitor__device-streams{display:flex;flex-direction:column;gap:20px;margin:-6px 0 2px;cursor:default}.stream-monitor__device-header{display:flex;align-items:center;gap:12px;padding:0 4px}.stream-monitor__device-name{flex:1;min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;margin-right:auto;color:var(--text-secondary);font-size:11px;font-weight:600;letter-spacing:.18em;text-transform:uppercase}.stream-monitor__device-meta{color:var(--text-muted);font-family:var(--font-mono);font-size:11px;letter-spacing:.04em}.stream-monitor__device-settings-button,.stream-monitor__device-remove{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;padding:0;border:0;background:none;color:var(--text-muted);cursor:pointer}.stream-monitor__device-settings-button:hover,.stream-monitor__device-settings-button:focus-visible,.stream-monitor__device-settings-button[aria-expanded=true],.stream-monitor__device-remove:hover,.stream-monitor__device-remove:focus-visible{color:var(--text-primary);outline:none}.stream-monitor__device-settings{display:flex;flex-wrap:wrap;align-items:center;gap:8px 18px;margin:-6px 0 0;padding:10px 12px;border:1px solid var(--border);border-radius:10px;cursor:default}.stream-monitor__device-settings legend{float:left;margin-right:6px;padding:0;color:var(--text-muted);font-size:11px;font-weight:600;letter-spacing:.18em;text-transform:uppercase}.stream-monitor__device-stream-toggle{display:inline-flex;align-items:center;gap:6px;color:var(--text-secondary);font-family:var(--font-mono);font-size:12px;cursor:pointer}.stream-monitor__device-stream-toggle:has(input:disabled){cursor:default;opacity:.6}.stream-plot{position:relative;padding:16px 18px 12px;border:1px solid var(--border);border-radius:14px;background:linear-gradient(180deg,var(--surface-raised),var(--surface) 120px);box-shadow:inset 0 1px #ffffff0a,0 12px 32px -16px #0009;cursor:pointer}.stream-plot:before{content:"";position:absolute;inset:0 14px auto;height:1px;background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--stream-color) 60%,transparent),transparent)}.stream-plot__header{display:flex;align-items:center;gap:10px;margin-bottom:10px}.stream-plot__indicator{width:7px;height:7px;border-radius:50%;background:var(--stream-color);box-shadow:0 0 10px var(--stream-color)}.stream-monitor__device:not(.stream-monitor__device--connected) .stream-plot__indicator{background:var(--text-muted);box-shadow:none}.stream-monitor__device:not(.stream-monitor__device--connected) .stream-plot:before{background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--text-muted) 60%,transparent),transparent)}.stream-plot__name{font-size:13px;font-weight:600;letter-spacing:.14em;text-transform:uppercase}.stream-monitor__device-status{flex:none;align-self:center;width:8px;height:8px;border-radius:50%;background:var(--status-color);box-shadow:0 0 8px var(--status-color)}.stream-monitor__device-identifier,.stream-monitor__device-nickname{flex:none;align-self:center;width:260px;padding:5px 8px;border:1px solid var(--border-strong);border-radius:6px;background:none;color:var(--text-primary);font-family:var(--font-mono);font-size:11px}.stream-monitor__device-nickname{width:184px}.stream-monitor__device-identifier-spacer{flex:none;width:284px}.stream-monitor__device-identifier::placeholder,.stream-monitor__device-nickname::placeholder{color:var(--text-muted)}.stream-monitor__device-identifier:read-only,.stream-monitor__device-nickname:read-only{border-style:dashed;color:var(--text-secondary);cursor:default}.stream-monitor__device-identifier:focus-visible,.stream-monitor__device-nickname:focus-visible{border-color:#ffffff4d;outline:none}.stream-monitor__device-identifier-field{flex:none;position:relative;display:flex;align-self:center}.stream-monitor__device-identifier-field .stream-monitor__device-identifier{width:284px;padding-right:28px}.stream-monitor__device-identifier-copy{position:absolute;top:50%;right:4px;transform:translateY(-50%);padding:2px 5px;border:none;border-radius:4px;background:none;color:var(--text-muted);font:inherit;font-size:12px;line-height:1;cursor:pointer}.stream-monitor__device-identifier-copy:hover,.stream-monitor__device-identifier-copy:focus-visible{background:var(--surface-raised);color:var(--text-primary);outline:none}.stream-monitor__device-identifier-menu{display:grid;grid-template-columns:auto auto 24px;column-gap:2px;position:absolute;top:calc(100% + 4px);left:0;z-index:10;width:max-content;min-width:100%;max-height:200px;margin:0;padding:4px;overflow-y:auto;border:1px solid var(--border-strong);border-radius:8px;background:var(--surface-raised);box-shadow:0 16px 40px -12px #000000b3;list-style:none}.stream-monitor__device-identifier-row{display:grid;grid-template-columns:subgrid;grid-column:1 / -1;align-items:center}.stream-monitor__device-identifier-option{grid-column:1;padding:5px 6px;border:0;border-radius:5px;background:none;color:var(--text-primary);font-family:var(--font-mono);font-size:11px;text-align:left;white-space:nowrap;cursor:pointer}.stream-monitor__device-identifier-source{grid-column:2;padding:0 6px;color:var(--text-muted);font-family:var(--font-sans);font-size:11px;line-height:1;white-space:nowrap}.stream-monitor__device-identifier-scanning{grid-column:1 / -1;padding:5px 6px;color:var(--text-muted);font-family:var(--font-sans);font-size:11px;animation:identifier-scanning-pulse 1.6s ease-in-out infinite}@keyframes identifier-scanning-pulse{50%{opacity:.45}}.stream-monitor__device-identifier-forget{grid-column:3;padding:2px 6px;border:0;border-radius:5px;background:none;color:var(--text-muted);font:inherit;font-size:14px;line-height:1;cursor:pointer}.stream-monitor__device-identifier-option:hover,.stream-monitor__device-identifier-option:focus-visible,.stream-monitor__device-identifier-forget:hover,.stream-monitor__device-identifier-forget:focus-visible{background:#ffffff0f;outline:none}.stream-monitor__device-identifier-forget:hover,.stream-monitor__device-identifier-forget:focus-visible{color:var(--text-primary)}.stream-monitor__device-status--connected{--status-color: #30a46c}.stream-monitor__device-status--connecting,.stream-monitor__device-status--reconnecting,.stream-monitor__device-status--resuming{--status-color: #f5c542;animation:device-status-pulse 1.2s ease-in-out infinite}.stream-monitor__device-alert{flex:none;align-self:center;color:#f5c542;font-family:var(--font-mono);font-size:11px}.stream-monitor__device-status--disconnected{--status-color: #e5484d}@keyframes device-status-pulse{50%{opacity:.35}}@media(prefers-reduced-motion:reduce){.stream-monitor__device-status--connecting,.stream-monitor__device-status--reconnecting,.stream-monitor__device-status--resuming{animation:none}}.stream-plot__readout{display:flex;align-items:baseline;gap:8px;margin-left:14px;font-family:var(--font-mono);font-size:12px;letter-spacing:.04em}.stream-plot__readout-label{color:var(--text-muted)}.stream-plot__readout-value{color:var(--text-secondary)}.stream-plot__readout-note{color:var(--text-muted)}.stream-plot__meta{margin-left:auto;color:var(--text-muted);font-family:var(--font-mono);font-size:11px;letter-spacing:.04em}.stream-plot__window{position:relative}.stream-plot__window-button{padding:0;border:0;background:none;color:inherit;font:inherit;letter-spacing:inherit;text-decoration:underline dotted;text-underline-offset:3px;cursor:pointer}.stream-plot__window-button:hover,.stream-plot__window-button:focus-visible,.stream-plot__window-button[aria-expanded=true]{color:var(--text-secondary);outline:none}.stream-plot__window-menu{position:absolute;top:calc(100% + 6px);right:0;z-index:10;width:96px;margin:0;padding:4px;border:1px solid var(--border-strong);border-radius:8px;background:var(--surface-raised);box-shadow:0 16px 40px -12px #000000b3;list-style:none;cursor:default}.stream-plot__window-option{display:block;width:100%;padding:5px 6px;border:0;border-radius:5px;background:none;color:var(--text-secondary);font:inherit;text-align:left;cursor:pointer}.stream-plot__window-option[aria-checked=true]{color:var(--text-primary);font-weight:600}.stream-plot__window-option:hover,.stream-plot__window-option:focus-visible{background:#ffffff0f;outline:none}.stream-plot__window-custom{width:100%;margin-top:4px;padding:4px 6px;border:1px solid var(--border-strong);border-radius:5px;background:none;color:var(--text-primary);font:inherit}.stream-plot__window-custom::placeholder{color:var(--text-muted)}.stream-plot__window-custom:focus-visible{border-color:#ffffff4d;outline:none}.stream-plot__channels{--channels-overhang: 12px;margin-left:calc(-1 * var(--channels-overhang))}.stream-plot__channel{position:relative}.stream-plot__channel-header,.stream-plot__average-band-powers{display:flex;flex-wrap:wrap;align-items:baseline;gap:2px 14px;font-family:var(--font-mono);font-size:11px;letter-spacing:.04em}.stream-plot__channel-header{margin-bottom:4px;padding-left:var(--y-axis-width)}.stream-plot__average-band-powers{margin-left:14px}.stream-plot__header:has(.stream-plot__average-band-powers)+.stream-plot__channels .stream-plot__channel:first-child{padding-top:8px}.stream-plot__channel-name{width:calc(var(--channel-name-length) * (1ch + .04em));white-space:nowrap;color:var(--text-secondary)}.stream-plot__band-power-bars{display:flex;align-items:flex-end;gap:2px;height:11px}.stream-plot__band-power-bar{width:4px;min-height:1px;transition:height .3s ease-out}.stream-plot__band-power{display:flex;align-items:baseline;gap:6px}.stream-plot__band-power-swatch{width:6px;height:6px;border-radius:1px}.stream-plot__band-power-name{color:var(--text-muted)}.stream-plot__band-power-value{min-width:4ch;color:var(--text-secondary);font-variant-numeric:tabular-nums}.stream-plot__channel+.stream-plot__channel{margin-top:12px}.stream-plot__channel+.stream-plot__channel:after{content:"";position:absolute;top:-6px;left:var(--channels-overhang);right:0;border-top:1px dashed var(--border-strong)}@media(max-width:600px){.app{padding:24px 16px 48px}.stream-monitor__device{padding:12px 8px 8px;border-radius:16px}.stream-plot{padding:14px 12px 10px}.stream-plot__channels{--channels-overhang: 8px}}.stream-plot--marks-time .stream-plot__channel .u-over{cursor:crosshair}.stream-plot--scrubs-time .stream-plot__channel .u-over:active{cursor:grabbing}.xdf-description{display:flex;flex-direction:column;gap:14px;padding:0 4px}.xdf-description__toggle{align-self:flex-start;padding:0;border:0;background:none;color:var(--text-muted);font:inherit;font-size:11px;font-weight:600;letter-spacing:.18em;text-transform:uppercase;cursor:pointer}.xdf-description__toggle:before{display:inline-block;margin-right:8px;content:"▸";transition:transform .15s ease}.xdf-description__toggle[aria-expanded=true]:before{transform:rotate(90deg)}.xdf-description__toggle:hover,.xdf-description__toggle:focus-visible,.xdf-description__toggle[aria-expanded=true]{color:var(--text-secondary);outline:none}.xdf-description__stream{padding:12px 14px;border:1px solid var(--border);border-radius:14px}.xdf-description__stream-name{margin:0 0 8px;color:var(--text-secondary);font-size:11px;font-weight:600;letter-spacing:.18em;text-transform:uppercase}.xdf-description__entries{display:grid;grid-template-columns:max-content 1fr;gap:1px 16px;margin:0;font-family:var(--font-mono);font-size:11px}.xdf-description__entries:has(>.xdf-description__value>.xdf-description__entries){row-gap:10px}.xdf-description__field{color:var(--text-muted)}.xdf-description__value{margin:0;color:var(--text-primary);overflow-wrap:anywhere}.xdf-description__scope{opacity:.6}.app__demo{display:block;width:100%;height:max(600px,calc(100vh - 140px));border:1px solid var(--border);border-radius:16px;background:var(--page)}.tour{position:sticky;top:12px;z-index:20;width:min(1152px,calc(100% - 32px));margin:16px auto 0;padding:14px 18px;border:1px solid rgba(57,135,229,.35);border-radius:16px;background:#10141beb;box-shadow:0 8px 32px #0006;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.tour__choices,.tour__controls{display:flex;flex-wrap:wrap;align-items:center;gap:10px}.tour__intro{flex-basis:100%;color:var(--text-secondary);font-size:13px}.tour__choice,.tour__button{padding:7px 14px;border:1px solid var(--border-strong);border-radius:20px;background:var(--surface-raised);color:var(--text-primary);font:inherit;font-size:13px;cursor:pointer}.tour__choice:hover,.tour__button:hover:not(:disabled){border-color:#3987e5}.tour__button:disabled{background:none;color:var(--text-muted);cursor:default}.tour__button--primary:not(:disabled){border-color:#3987e5;background:#3987e5;color:#fff}.tour__button[aria-busy=true]{cursor:progress}.tour__heading{display:flex;justify-content:space-between;gap:12px;color:var(--text-muted);font-size:12px}.tour__title{color:var(--text-secondary);font-weight:600}.tour__caption{margin:6px 0 12px;color:var(--text-primary);font-size:15px;line-height:1.45}.tour__steps{display:flex;gap:6px}.tour__step{width:10px;height:10px;padding:0;border:none;border-radius:50%;background:var(--border-strong);cursor:pointer}.tour__step[data-done=true]{background:#3987e580}.tour__step[aria-current=step]{background:#3987e5;box-shadow:0 0 0 3px #3987e540}.tour__exit{margin-left:auto}[data-tour-target]{outline:2px solid #3987e5;outline-offset:3px;animation:tour-target-pulse 1.6s ease-in-out infinite}@keyframes tour-target-pulse{0%,to{box-shadow:0 0 #3987e573}50%{box-shadow:0 0 0 8px #3987e500}}
