:root{color-scheme:dark;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background:#0b1220;color:#e5eefc;--shell-padding-x: 24px;--shell-padding-y: 20px;--shell-radius: 18px;--shell-surface: rgba(15, 23, 42, .76);--shell-surface-strong: rgba(30, 41, 59, .92);--shell-border: rgba(148, 163, 184, .18);--font-title: clamp(22px, 2vw, 28px);--font-section: 15px;--font-body: 14px}*{box-sizing:border-box}html,body,#root{margin:0;min-height:100%;background:linear-gradient(180deg,#0b1220,#111827)}body{min-height:100vh;font-size:var(--font-body);line-height:1.45}button,select{font:inherit}.product-shell,.app-shell,.sensor-analysis-shell{max-width:none;margin:0 auto;padding:var(--shell-padding-y) var(--shell-padding-x) 28px}.product-shell__topbar,.app-shell__topbar,.sensor-analysis-shell__topbar{display:flex;justify-content:space-between;gap:16px;align-items:end;padding:20px;border:1px solid var(--shell-border);border-radius:var(--shell-radius);background:var(--shell-surface);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.product-shell__topbar h1,.app-shell__topbar h1,.sensor-analysis-shell__topbar h1,.sensor-analysis-main__header h2{margin:6px 0 4px;font-size:var(--font-title);line-height:1.08}.eyebrow,.subtle{margin:0;color:#94a3b8;font-size:13px}.product-shell__nav,.product-shell__actions,.topbar-actions,.sensor-analysis-shell__actions{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.product-shell__nav button,.product-shell__actions button,.topbar-actions button,.trend-panel__star,.trend-panel__drag,.trend-panel__plot-toggle,.sensor-analysis-shell__actions button,.sensor-analysis-sidebar__chips button,.sensor-analysis-main__mode-group button,.sensor-analysis-main__actions button,.sensor-analysis-chip button,.sensor-row button{border:1px solid rgba(148,163,184,.22);border-radius:12px;background:var(--shell-surface-strong);color:#e2e8f0;padding:10px 12px}.product-shell__nav button,.sensor-analysis-shell__actions button,.sensor-analysis-sidebar__chips button,.sensor-analysis-main__mode-group button,.sensor-analysis-main__actions button,.sensor-analysis-chip button,.sensor-row button{cursor:pointer}.product-shell__nav button,.product-shell__actions button,.topbar-actions button,.sensor-analysis-shell__actions button,.sensor-analysis-sidebar__chips button,.sensor-analysis-main__mode-group button,.sensor-analysis-main__actions button{padding:8px 10px;font-size:13px;line-height:1}.button-icon{margin-right:6px;opacity:.9}.product-shell__nav button.is-active,.product-shell__actions button.is-active,.topbar-actions button.is-active,.sensor-analysis-sidebar__chips button.is-active,.sensor-analysis-main__mode-group button.is-active{color:#67e8f9;border-color:#67e8f966}.product-shell__nav,.product-shell__actions{color:#cbd5e1}.time-scrubber{position:sticky;top:16px;z-index:30;margin:14px 0 18px;padding:16px 18px 14px;border:1px solid rgba(148,163,184,.18);border-radius:18px;background:#0f172ae0;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.time-scrubber__header{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-bottom:12px}.time-scrubber__actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}.time-scrubber__header button{border:1px solid rgba(148,163,184,.22);border-radius:12px;background:#1e293beb;color:#e2e8f0;padding:10px 12px;cursor:pointer}.time-scrubber__track-wrap{padding:2px 0 6px}.time-scrubber__overview{position:relative;height:44px;border-radius:999px;background:#0f172aeb;border:1px solid rgba(148,163,184,.18);overflow:hidden;cursor:pointer;touch-action:none}.time-scrubber__overview:focus-visible{outline:2px solid rgba(103,232,249,.85);outline-offset:2px}.time-scrubber__overview-track{position:absolute;top:17px;right:12px;bottom:17px;left:12px;border-radius:999px;background:linear-gradient(90deg,#94a3b82e,#94a3b814)}.time-scrubber__window{position:absolute;top:7px;bottom:7px;border-radius:999px;background:linear-gradient(180deg,#38bdf859,#38bdf82e);border:1px solid rgba(56,189,248,.7);box-shadow:0 0 0 1px #082f4959 inset;display:flex;align-items:stretch}.time-scrubber__window-labels{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;justify-content:space-between;align-items:center;padding:0 46px;pointer-events:none;color:#e0f2feeb;font-size:12px;font-weight:600;text-shadow:0 1px 1px rgba(15,23,42,.7)}.time-scrubber__body{flex:1;cursor:grab}.time-scrubber__handle{width:32px;flex:0 0 32px;position:relative;cursor:ew-resize}.time-scrubber__handle:before{content:"";position:absolute;top:50%;left:50%;width:14px;height:34px;transform:translate(-50%,-50%);border-radius:999px;background:#e2e8f0e6;box-shadow:0 0 0 1px #0f172a26}.time-scrubber__handle--start{margin-left:-4px}.time-scrubber__handle--end{margin-right:-4px}.time-scrubber__labels{display:flex;justify-content:space-between;gap:16px;color:#94a3b8;font-size:13px}.status-row{display:flex;justify-content:space-between;margin:14px 4px 18px;color:#94a3b8}.filter-bar{display:flex;gap:12px;flex-wrap:wrap;align-items:end;margin:0 0 18px;padding:14px 16px;border:1px solid rgba(148,163,184,.18);border-radius:18px;background:#0f172ab8}.filter-bar label{display:grid;gap:4px;color:#cbd5e1}.filter-bar input[type=text],.filter-bar input:not([type]),.filter-bar select,.filter-bar button{border:1px solid rgba(148,163,184,.22);border-radius:12px;background:#1e293beb;color:#e2e8f0;padding:10px 12px}.filter-bar input[type=text]{min-width:240px}.filter-bar__checkbox{display:flex!important;align-items:center;gap:8px;padding-bottom:10px}.trend-group{display:grid;gap:12px}.trend-group__header{display:flex;justify-content:space-between;align-items:baseline;padding:0 4px;color:#94a3b8}.trend-group__header h2{margin:0;font-size:16px;color:#dbeafe}.trend-group__items{display:grid;gap:16px}.trend-board{display:grid;gap:18px}.trend-row{display:flex;flex-direction:column;gap:8px;overflow-x:auto;padding-bottom:2px}.trend-row.is-over{outline:1px solid rgba(103,232,249,.28);outline-offset:4px;border-radius:18px}.trend-row.is-editing .trend-panel{transition:transform .18s ease,opacity .18s ease,box-shadow .18s ease,filter .18s ease}.trend-row__label{color:#94a3b8;font-size:12px;padding-left:4px}.trend-row__items{display:flex;gap:16px;align-items:stretch;min-width:100%}.trend-row__items>.trend-panel{flex:1 1 0;min-width:800px}.trend-panel{border:1px solid rgba(148,163,184,.18);border-radius:18px;background:#0f172ad1;overflow:hidden;content-visibility:auto;contain-intrinsic-size:340px 300px}.trend-panel.is-dragging{box-shadow:0 18px 48px #02061773;filter:saturate(1.05) brightness(1.02)}.trend-panel.is-drag-preview{outline:1px solid rgba(103,232,249,.35);outline-offset:-1px}.trend-panel__header{display:grid;grid-template-columns:28px minmax(0,1fr) 34px;gap:10px;align-items:center;padding:10px 12px 0}.trend-panel__drag{height:28px;width:28px;padding:0}.trend-panel__drag-spacer,.trend-panel__plot-spacer{width:28px;height:28px;display:block}.trend-panel__title-row{display:flex;gap:10px;align-items:center}.trend-panel__title-block h2{margin:0;font-size:15px;line-height:1.1}.trend-panel__meta{margin-left:4px;color:#94a3b8;font-size:12px}.trend-panel__star.is-favourite{color:#fbbf24}.trend-panel__star--danger{color:#fda4af}.trend-panel__star-spacer{width:34px;height:34px;display:block}.trend-panel__chart{position:relative;width:100%;height:280px;padding:8px 10px 12px;cursor:crosshair}.trend-panel__plot-toggle{width:34px;height:34px;padding:0;display:grid;place-items:center;font-size:18px;line-height:1}.trend-panel__analysis-link{width:28px;height:28px;padding:0;display:grid;place-items:center;font-size:14px;line-height:1;color:#94a3b8;background:transparent;border:1px solid rgba(148,163,184,.22)}.trend-panel__analysis-link:hover{color:#e2e8f0;border-color:#67e8f961}.trend-panel__chart-host{width:100%;height:100%}.trend-panel__selection{position:absolute;top:0;bottom:0;background:#67e8f92e;border:1px solid rgba(103,232,249,.8);border-radius:10px;pointer-events:none;z-index:2}.trend-panel__selection.is-dragging{background:#67e8f942;border-color:#67e8f9f2;box-shadow:0 0 0 1px #67e8f940}.trend-panel__placeholder{position:absolute;top:8px;right:10px;bottom:12px;left:10px;display:grid;place-items:center;border:1px dashed rgba(148,163,184,.28);border-radius:14px;color:#94a3b8;background:#0f172a73}.trend-drag-overlay{display:flex;align-items:center;gap:12px;padding:18px 20px;min-width:min(90vw,1100px);min-height:220px;border:1px solid rgba(103,232,249,.45);border-radius:16px;background:#0f172af5;box-shadow:0 24px 60px #02061780;color:#e2e8f0;align-items:start}.trend-drag-overlay__handle{display:inline-grid;place-items:center;width:28px;height:28px;border-radius:10px;background:#1e293beb;border:1px solid rgba(148,163,184,.22)}.trend-drag-overlay__title{font-weight:600}.trend-drag-overlay__subtle{color:#94a3b8;font-size:12px}.layout-modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;display:grid;place-items:center}.layout-modal__backdrop{position:absolute;top:0;right:0;bottom:0;left:0;background:#020617b8}.layout-modal__panel{position:relative;z-index:1;width:min(980px,calc(100vw - 32px));max-height:min(84vh,900px);display:grid;grid-template-rows:auto auto auto minmax(0,1fr);gap:14px;padding:18px;border-radius:20px;border:1px solid rgba(148,163,184,.22);background:#0f172afa;overflow:hidden;box-shadow:0 30px 90px #02061799}.layout-modal__header{display:flex;justify-content:space-between;gap:12px;align-items:center}.layout-modal__header h2{margin:0;font-size:18px}.layout-modal__actions{display:flex;gap:10px;flex-wrap:wrap}.layout-modal__filters{display:grid;grid-template-columns:1.5fr 1fr;gap:12px}.layout-modal__filters label{display:grid;gap:4px;color:#cbd5e1}.layout-modal__filters input,.layout-modal__filters select,.layout-modal__actions button,.layout-modal__header button,.layout-modal__item{border:1px solid rgba(148,163,184,.22);border-radius:12px;background:#1e293beb;color:#e2e8f0;padding:10px 12px}.layout-modal__list{display:grid;gap:10px;overflow:auto;min-height:0;padding-right:4px}.layout-modal__section-label{margin:6px 0 2px;color:#94a3b8;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.08em}.layout-modal__item{display:grid;grid-template-columns:18px minmax(0,1fr);align-items:center;gap:12px}.layout-modal__item.is-excluded{opacity:.9}.layout-modal__item input{margin:0}.layout-modal__item-meta{color:#94a3b8;font-size:12px}.sensor-analysis-shell{max-width:none;margin:0 auto;padding:20px 24px 28px}.sensor-analysis-shell__topbar{display:flex;justify-content:space-between;gap:16px;align-items:end;padding:20px;border:1px solid rgba(148,163,184,.18);border-radius:18px;background:#0f172ac2;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.sensor-analysis-shell__topbar h1,.sensor-analysis-main__header h2{margin:6px 0 4px;font-size:25px}.sensor-analysis-shell__actions{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.sensor-analysis-shell__actions button,.sensor-analysis-sidebar__chips button,.sensor-analysis-main__mode-group button,.sensor-analysis-main__actions button,.sensor-analysis-chip button,.sensor-row button,.sensor-analysis-section__header span{border:1px solid rgba(148,163,184,.22);border-radius:12px;background:#1e293beb;color:#e2e8f0}.sensor-analysis-main__summary{border:1px solid rgba(148,163,184,.22);border-radius:12px;background:#1e293beb;color:#94a3b8}.sensor-analysis-shell__actions button,.sensor-analysis-sidebar__chips button,.sensor-analysis-main__mode-group button,.sensor-analysis-main__actions button,.sensor-analysis-chip button,.sensor-row button{cursor:pointer}.sensor-analysis-shell__actions button,.sensor-analysis-sidebar__chips button,.sensor-analysis-main__mode-group button,.sensor-analysis-main__actions button{padding:8px 10px;font-size:13px;line-height:1}.sensor-analysis-shell__actions button.is-active,.sensor-analysis-sidebar__chips button.is-active,.sensor-analysis-main__mode-group button.is-active{color:#67e8f9;border-color:#67e8f966}.sensor-analysis-shell__workspace{display:grid;grid-template-columns:420px minmax(0,1fr);gap:18px;margin-top:14px;align-items:start}.sensor-analysis-shell__workspace.is-sidebar-collapsed{grid-template-columns:260px minmax(0,1fr)}.sensor-analysis-sidebar,.sensor-analysis-main{border:1px solid rgba(148,163,184,.18);border-radius:18px;background:#0f172ac2;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.sensor-analysis-sidebar{display:grid;gap:14px;padding:16px;height:calc(100vh - 140px);max-height:calc(100vh - 140px);position:sticky;top:16px;align-self:start;overflow:hidden}.sensor-analysis-sidebar.is-collapsed{gap:10px;padding:12px}.sensor-analysis-sidebar__header{display:flex;justify-content:space-between;gap:10px;align-items:start}.sensor-analysis-sidebar__header-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}.sensor-analysis-sidebar__collapse-button{border:1px solid rgba(148,163,184,.22);border-radius:12px;background:var(--shell-surface-strong);color:#e2e8f0;padding:8px 10px;font-size:13px;line-height:1;cursor:pointer}.sensor-analysis-sidebar__meta,.sensor-analysis-section__header span,.sensor-analysis-main__summary{color:#94a3b8;font-size:12px}.sensor-analysis-sidebar-toggle{display:flex;align-items:start;justify-content:flex-start;padding-top:4px}.sensor-analysis-sidebar-toggle button{border:1px solid rgba(148,163,184,.22);border-radius:12px;background:var(--shell-surface-strong);color:#e2e8f0;padding:8px 10px;font-size:13px;line-height:1;cursor:pointer}.sensor-analysis-sidebar__search input{width:100%;border:1px solid rgba(148,163,184,.22);border-radius:12px;background:#1e293beb;color:#e2e8f0;padding:10px 12px}.sensor-analysis-sidebar__chips{display:flex;flex-wrap:wrap;gap:8px}.sensor-analysis-sidebar__chips button{border-radius:999px}.sensor-analysis-sidebar__sections{display:grid;gap:14px;overflow:auto;padding-right:4px;min-height:0}.sensor-analysis-sidebar.is-collapsed .sensor-analysis-sidebar__sections{gap:6px}.sensor-analysis-sidebar__flat-list{display:grid;gap:6px}.sensor-analysis-section{display:grid;gap:10px}.sensor-analysis-section__header{display:flex;justify-content:space-between;gap:12px;align-items:center}.sensor-analysis-section__header h3{margin:0;font-size:14px;color:#dbeafe}.sensor-analysis-section__list{display:grid;gap:8px}.sensor-row{width:100%;display:grid;grid-template-columns:minmax(0,1fr) auto;justify-content:space-between;gap:12px;text-align:left;padding:8px 10px;border:1px solid rgba(148,163,184,.16);border-radius:14px;background:linear-gradient(180deg,#1e293bfa,#0f172af5);box-shadow:0 1px #ffffff08 inset;transition:transform .12s ease,border-color .12s ease,background .12s ease,box-shadow .12s ease}.sensor-row:hover{transform:translateY(-1px);border-color:#67e8f938;background:linear-gradient(180deg,#222f45,#0f172afa);box-shadow:0 10px 24px #0206173d}.sensor-row.is-primary{border-color:#67e8f97a;box-shadow:0 0 0 1px #67e8f924 inset,0 10px 24px #0206172e}.sensor-row.is-overlay{border-color:#a855f747}.sensor-row__main{display:grid;gap:4px;min-width:0}.sensor-row--compact{gap:8px;padding:6px 8px;border-radius:12px}.sensor-row--compact .sensor-row__title-row{flex-wrap:nowrap;gap:6px}.sensor-row--compact .sensor-row__title-row strong{font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sensor-row--compact .sensor-row__actions{gap:4px}.sensor-row--compact .sensor-row__actions button{padding:4px 6px;font-size:10px}.sensor-row__title-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.sensor-row__title-row strong{font-size:13px;line-height:1.2;color:#f8fafc}.sensor-row__swatch,.sensor-analysis-chip__swatch{width:10px;height:10px;border-radius:999px;display:inline-block}.sensor-row__meta{display:flex;gap:8px;flex-wrap:wrap;color:#cbd5e1;font-size:11px;line-height:1.1}.sensor-row__meta span{padding:2px 6px;border-radius:999px;background:#94a3b814;border:1px solid rgba(148,163,184,.12)}.sensor-row__actions{display:flex;gap:8px;flex-shrink:0;align-items:start}.sensor-row__actions button{padding:5px 7px;font-size:11px;background:#0f172aeb;color:#e2e8f0}.sensor-row__badge{display:inline-flex;align-items:center;gap:4px;padding:4px 8px;border-radius:999px;background:#67e8f91a;color:#dbeafe;font-size:11px}.sensor-row__badge--overlay{background:#a855f71a;color:#e9d5ff}.sensor-analysis-main{display:grid;gap:16px;padding:18px;min-width:0;align-self:start}.sensor-analysis-main__header{display:flex;justify-content:space-between;gap:16px;align-items:end}.sensor-analysis-main__summary{display:flex;gap:8px;flex-wrap:wrap;padding:10px 12px}.sensor-analysis-main__controls{display:flex;gap:12px;flex-wrap:wrap;align-items:center}.sensor-analysis-main__mode-group{display:flex;gap:8px;flex-wrap:wrap}.sensor-analysis-main__overlays{display:grid;gap:10px}.sensor-analysis-main__overlays-label{color:#94a3b8;font-size:12px;text-transform:uppercase;letter-spacing:.08em}.sensor-analysis-main__overlay-list{display:flex;gap:8px;flex-wrap:wrap}.sensor-analysis-chip{display:inline-flex;align-items:center;gap:8px;padding:6px 10px;border:1px solid rgba(148,163,184,.22);border-radius:999px;background:#1e293beb;color:#e2e8f0;max-width:100%}.sensor-analysis-chip.is-empty{color:#94a3b8}.sensor-analysis-chip__label{background:transparent;border:0;color:inherit;padding:0}.sensor-analysis-chip button{padding:3px 7px;font-size:12px}.sensor-analysis-chart{position:relative;min-height:580px;border:1px solid rgba(148,163,184,.18);border-radius:18px;overflow:hidden;background:#02061738}.sensor-analysis-chart__host{width:100%;height:580px}.sensor-analysis-chart__placeholder{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;color:#94a3b8;background:#0f172a47;pointer-events:none}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@media(max-width:900px){.app-shell__topbar,.sensor-analysis-shell__topbar,.trend-panel__header{grid-template-columns:1fr;display:grid}.topbar-actions{flex-wrap:wrap;justify-content:start}.sensor-analysis-shell__workspace,.sensor-analysis-shell__workspace.is-sidebar-hidden{grid-template-columns:1fr}.sensor-analysis-sidebar{position:static;min-height:auto}.sensor-analysis-main__header,.sensor-analysis-main__controls,.sensor-analysis-shell__actions{align-items:start}.filter-bar input[type=text]{min-width:0;width:100%}}
