:root{color-scheme:light dark;--bg: #f2f2f7;--surface: #ffffff;--fill: #e9e9ee;--segment-active: #ffffff;--segment-active-fg: var(--accent);--fg: #1c1c1e;--muted: #636366;--border: #d8d8de;--separator: #e5e5ea;--accent: #0a66d9;--accent-soft: #e8f1fd;--primary-fg: #ffffff;--ok: #1f7a3a;--ok-soft: #e4f4e8;--failed: #c7252d;--failed-soft: #fde9e9;--running: #8a5300;--running-soft: #fff1d6;--pending: #636366;--banner-bg: var(--running-soft);--banner-fg: var(--running);--tap-min: 44px;--bg-elevated: var(--surface);--fg-muted: var(--muted);--chart-1: #0a66d9;--chart-2: #0a8f8f;--chart-3: #1f7a3a;--chart-4: #b5590a;--chart-5: #c7252d;--chart-6: #7a3fc2;--chart-7: #8a6d00;--chart-8: #a3247a;--shadow-card: 0 1px 2px rgba(0, 0, 0, .04), 0 2px 12px rgba(0, 0, 0, .05);--shadow-raised: 0 1px 3px rgba(0, 0, 0, .12), 0 1px 1px rgba(0, 0, 0, .04);--shadow-sheet: 0 -8px 32px rgba(0, 0, 0, .18);--backdrop: rgba(0, 0, 0, .35);--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-8: 32px;--radius-sm: 10px;--radius-md: 12px;--radius-lg: 16px;--radius-pill: 999px;--text-title: 30px;--text-section: 20px;--text-body: 16px;--text-small: 14px;--text-caption: 13px;--gutter-top: max(var(--space-4), env(safe-area-inset-top));--gutter-right: max(var(--space-4), env(safe-area-inset-right));--gutter-bottom: max(var(--space-4), env(safe-area-inset-bottom));--gutter-left: max(var(--space-4), env(safe-area-inset-left));--segment-pad: 3px}@media (prefers-color-scheme: dark){:root{--bg: #0e0e11;--surface: #1c1c1e;--fill: #2c2c2e;--segment-active: #48484a;--segment-active-fg: var(--fg);--fg: #f5f5f7;--muted: #a1a1a6;--border: #3a3a3c;--separator: #38383a;--accent: #4da3ff;--accent-soft: #1a2a40;--primary-fg: #0e0e11;--ok: #34c759;--ok-soft: #12301c;--failed: #ff6961;--failed-soft: #3a1715;--running: #ffb340;--running-soft: #3a2a0a;--pending: #a1a1a6;--shadow-card: 0 0 0 1px rgba(255, 255, 255, .04);--shadow-raised: 0 1px 3px rgba(0, 0, 0, .5);--shadow-sheet: 0 -8px 32px rgba(0, 0, 0, .6);--backdrop: rgba(0, 0, 0, .6);--chart-1: #4da3ff;--chart-2: #3ecfcf;--chart-3: #34c759;--chart-4: #ff9f45;--chart-5: #ff6961;--chart-6: #b98cff;--chart-7: #e8c547;--chart-8: #ff7ac6}}*{box-sizing:border-box}html,body{margin:0;background:var(--bg);color:var(--fg);font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:var(--text-body);line-height:1.45;-webkit-font-smoothing:antialiased;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}button,input,select,textarea{font:inherit}input[type=checkbox],input[type=radio],input[type=range]{accent-color:var(--accent)}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid var(--accent);outline-offset:2px}h1{font-size:var(--text-title);font-weight:800;line-height:1.15;letter-spacing:-.01em;margin:var(--space-2) 0 0}h2{font-size:var(--text-section);font-weight:700;line-height:1.25;margin:var(--space-2) 0 0}h3{font-size:17px;font-weight:700;line-height:1.3;margin:var(--space-2) 0 0}h4{font-size:var(--text-caption);font-weight:600;color:var(--muted);margin:var(--space-3) 0 var(--space-2);padding-inline:var(--space-4)}p{margin:0}.recordings-screen>h2,.graphs-screen>h2,.history-screen>h2,.faults-screen>h2{font-size:var(--text-title);font-weight:800;line-height:1.15;letter-spacing:-.01em}.app-root{min-height:100vh;padding:var(--gutter-top) var(--gutter-right) var(--gutter-bottom) var(--gutter-left);display:flex;flex-direction:column;gap:var(--space-4)}.connect-view>h1,.connect-view>.build-stamp{order:-2}.connect-view>.live-start-button,.connect-view>.recording-controls,.connect-view>.live-monitor{order:-1}.connect-view,.faults-view{display:flex;flex-direction:column;gap:var(--space-4)}.ltr{direction:ltr;unicode-bidi:isolate;display:inline-block}.demo-banner{background:var(--banner-bg);color:var(--banner-fg);border-radius:var(--radius-md);padding:var(--space-2) var(--space-3);font-weight:600;font-size:var(--text-small);text-align:center}.feature-gate{min-height:100vh;display:flex;flex-direction:column;justify-content:center;gap:var(--space-3);padding:var(--gutter-top) var(--gutter-right) var(--gutter-bottom) var(--gutter-left)}.feature-gate-note{color:var(--muted)}.reminder{background:var(--accent-soft);color:var(--fg);font-size:var(--text-small);border-radius:var(--radius-md);padding:var(--space-3) var(--space-4)}.connect-button,.live-start-button,.faults-read-button,.live-stop-button,.recordings-empty-cta,.login-submit,.update-banner,.delete-session-confirm-yes{min-height:var(--tap-min);min-width:var(--tap-min);border-radius:var(--radius-md);border:1px solid transparent;background:var(--accent);color:var(--primary-fg);font-weight:600;padding:var(--space-2) var(--space-5);cursor:pointer}.connect-button{width:100%;min-height:52px;font-size:17px;border-radius:var(--radius-lg)}.live-start-button,.share-button{width:100%;min-height:48px}.connect-button.connect-button-secondary{min-height:var(--tap-min);font-size:var(--text-body);border-radius:var(--radius-md);background:var(--accent-soft);color:var(--accent)}.connect-button:disabled,.faults-read-button:disabled,.login-submit:disabled{opacity:.55;cursor:default}.info-link,.wake-lock-toggle,.share-button,.export-buttons button,.viewer-open-button,.viewer-back-button,.logout-button,.info-list button,.graphs-zoom-pan-controls button,.delete-session-confirm-cancel{min-height:var(--tap-min);min-width:var(--tap-min);border-radius:var(--radius-md);border:1px solid transparent;background:var(--accent-soft);color:var(--accent);font-weight:600;padding:var(--space-2) var(--space-4);cursor:pointer}.delete-session-button{min-height:var(--tap-min);border-radius:var(--radius-md);border:1px solid transparent;background:var(--failed-soft);color:var(--failed);font-weight:600;padding:var(--space-2) var(--space-4);cursor:pointer;align-self:flex-start}.delete-session-confirm-yes{background:var(--failed);align-self:flex-start}.delete-session-confirm-cancel{align-self:flex-start}.step-list{list-style:none;margin:0;padding:0}.card{background:var(--surface);border:1px solid transparent;border-radius:var(--radius-lg);box-shadow:var(--shadow-card);padding:var(--space-3) var(--space-4)}.step-list{background:var(--surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);overflow:hidden}.step-list .step.card{background:none;border:none;border-radius:0;box-shadow:none;border-bottom:1px solid var(--separator);min-height:var(--tap-min);padding:var(--space-3) var(--space-4)}.step-list .step.card:last-child{border-bottom:none}.measurement-value,.live-value{font-size:38px;font-weight:700;font-variant-numeric:tabular-nums;line-height:1.05;letter-spacing:-.01em}.measurement-value{font-size:28px}.value-unit{font-size:15px;font-weight:500;color:var(--muted);letter-spacing:0}.measurement-name,.live-name{font-size:var(--text-small);font-weight:600;color:var(--muted)}.measurement-ecu,.measurement-time,.live-age{font-size:12px;color:var(--muted)}.live-missing,.measurement-missing{font-size:17px;font-weight:600;color:var(--muted)}.step{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-1) var(--space-2)}.step-name{font-weight:500}.step-badge{order:1;margin-inline-start:auto}.step-time{order:2;font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums}.step-detail{order:3;flex-basis:100%;color:var(--muted);font-size:var(--text-caption)}.step-badge,.connection-status,.faults-mil-indicator,.faults-monitor>span[role=status],.history-status-open,.history-status-ended,.demo-badge{display:inline-flex;align-items:center;border-radius:var(--radius-pill);padding:2px 10px;font-size:var(--text-caption);font-weight:600;line-height:1.5;white-space:nowrap;background:var(--fill);color:var(--pending)}.step-running .step-badge,.history-status-open,.demo-badge{background:var(--running-soft);color:var(--running)}.step-ok .step-badge,.connection-connected,.faults-mil-off .faults-mil-indicator,.faults-monitor-complete>span[role=status]{background:var(--ok-soft);color:var(--ok)}.step-failed .step-badge,.faults-mil-on .faults-mil-indicator{background:var(--failed-soft);color:var(--failed)}.faults-monitor-incomplete>span[role=status]{background:var(--running-soft);color:var(--running)}.demo-badge{align-self:flex-start}.measurement-cards{display:flex;flex-direction:column;gap:var(--space-3)}.measurement-note,.vin-display{color:var(--muted);font-size:var(--text-small)}.measurement-cards ul,.live-cards{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-3)}.measurement-card{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--space-1) var(--space-2)}.measurement-card .measurement-name,.measurement-card .measurement-value,.measurement-card .measurement-missing{flex-basis:100%}.measurement-card .measurement-value.ltr{text-align:right}.measurement-time{margin-inline-start:auto}.faults-mil-row{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2)}.live-card{display:flex;flex-direction:column;padding:var(--space-2) var(--space-4) 10px}.live-value{line-height:1}.live-card-top{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-1);margin-bottom:var(--space-1)}.live-age{margin-inline-start:auto}.live-card-top .info-button{margin-block:-10px}.live-sparkline path,.series-chart-svg path{vector-effect:non-scaling-stroke;stroke-width:2;stroke-linejoin:round}.live-sparkline{display:block;width:100%;height:48px;margin-top:var(--space-1);color:var(--accent)}.faults-screen{display:flex;flex-direction:column;gap:var(--space-3)}.faults-readonly-note,.faults-can-limitation-note,.faults-connect-first{color:var(--muted);font-size:var(--text-small)}.faults-mode-section,.faults-readiness-section{display:flex;flex-direction:column;gap:var(--space-2)}.faults-ecu-list,.faults-readiness-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-2)}.faults-ecu,.faults-readiness-ecu{display:flex;flex-direction:column;gap:var(--space-2)}.faults-ecu-label{font-size:var(--text-caption);color:var(--muted)}.faults-dtc-count{font-size:var(--text-small);font-weight:600}.faults-readiness-ecu h4{padding-inline:0;margin:var(--space-2) 0 0}.faults-codes,.faults-monitors{list-style:none;margin:0;padding:0}.faults-code{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-1) var(--space-3);padding:var(--space-2) 0;border-bottom:1px solid var(--separator)}.faults-code:last-child{border-bottom:none}.faults-code-value{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-weight:700;font-size:15px;background:var(--failed-soft);color:var(--failed);border-radius:var(--radius-sm);padding:2px var(--space-2)}.faults-code-desc{font-size:var(--text-small)}.faults-status-text{font-weight:600}.faults-read_ok_none .faults-status-text{color:var(--ok)}.faults-read_failed .faults-status-text,.faults-readiness-failed{color:var(--failed)}.faults-readiness-unsupported{color:var(--muted)}.faults-monitor{display:flex;align-items:center;gap:var(--space-1);font-size:var(--text-small);border-bottom:1px solid var(--separator)}.faults-monitor:last-child{border-bottom:none}.faults-monitor>span[role=status]{margin-inline-start:auto}.faults-scan-in-progress,.faults-scan-error{color:var(--failed);font-weight:600}.live-monitor{display:flex;flex-direction:column;gap:var(--space-3)}.live-monitor-header{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-2)}.live-monitor-header h2{margin:0;flex:1 1 100%}.wake-lock-unsupported{color:var(--muted);font-size:var(--text-caption)}.info-button{min-height:var(--tap-min);min-width:var(--tap-min);display:inline-flex;align-items:center;justify-content:center;border:none;background:none;padding:0;color:var(--accent);cursor:pointer}.info-button-glyph{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:var(--radius-pill);background:var(--accent-soft);font-size:12px;font-weight:700;line-height:1}.wake-lock-toggle[aria-pressed=true]{border-color:var(--accent);border-width:2px}.live-stop-button{font-size:var(--text-body);background:var(--failed-soft);color:var(--failed)}.info-link,.wake-lock-toggle{font-size:var(--text-body)}.check-failed,.check-error{color:var(--failed);background:var(--failed-soft);border-radius:var(--radius-md);padding:var(--space-3) var(--space-4);font-weight:600}.log-view{display:flex;flex-direction:column;gap:var(--space-2)}.log-view h2{font-size:17px}.log-toggle{display:inline-flex;align-self:flex-start;gap:2px;padding:var(--segment-pad);background:var(--fill);border-radius:var(--radius-md)}.log-toggle button{min-height:var(--tap-min);min-width:64px;border:none;border-radius:9px;background:none;color:var(--muted);font-weight:600;padding:0 var(--space-4);cursor:pointer}.log-toggle button[aria-pressed=true]{background:var(--segment-active);color:var(--fg);box-shadow:var(--shadow-raised)}.log-entries{list-style:none;margin:0;padding:var(--space-2) var(--space-3);max-height:240px;overflow-y:auto;background:var(--surface);border-radius:var(--radius-md);box-shadow:var(--shadow-card);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px}.log-entries li{display:flex;gap:var(--space-2);padding:3px 0;border-bottom:1px solid var(--separator)}.log-entries li:last-child{border-bottom:none}.log-tx .log-dir{color:var(--accent)}.log-rx .log-dir{color:var(--ok)}.share-report{display:flex;flex-direction:column;gap:var(--space-2)}.share-report textarea{width:100%;min-height:120px;background:var(--surface);color:var(--fg);border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--space-2) var(--space-3)}.app-shell{min-height:100vh}.app-tabs{display:flex;gap:2px;margin:var(--space-3) var(--gutter-right) 0 var(--gutter-left);padding:var(--segment-pad);background:var(--fill);border-radius:var(--radius-md)}.app-tabs button{flex:1 1 0;min-width:0;min-height:var(--tap-min);padding:0 var(--space-1);border:none;border-radius:9px;background:none;color:var(--muted);font-size:var(--text-small);font-weight:600;white-space:nowrap;cursor:pointer}.app-tabs button.active{color:var(--segment-active-fg);font-weight:700;background:var(--segment-active);box-shadow:var(--shadow-raised)}.recording-controls{display:flex;flex-direction:column;gap:var(--space-2)}.recording-start-button,.recording-stop-button{min-height:48px;width:100%;border-radius:var(--radius-md);border:1px solid transparent;background:var(--failed);color:var(--primary-fg);font-weight:600;padding:var(--space-2) var(--space-4);cursor:pointer}.recording-start-button{background:var(--ok)}.recording-capped-message{color:var(--failed);font-weight:600}.recording-indicator{position:sticky;top:max(var(--space-2),env(safe-area-inset-top));z-index:15;width:fit-content;margin:var(--space-2) auto 0;padding:var(--space-1) var(--space-3);border-radius:var(--radius-pill);background:var(--failed-soft);color:var(--failed);font-size:var(--text-caption);font-weight:700;box-shadow:var(--shadow-raised);pointer-events:none}.recording-indicator-dot{display:inline-block;animation:recording-pulse 1.6s ease-in-out infinite}@keyframes recording-pulse{50%{opacity:.35}}@media (prefers-reduced-motion: reduce){.recording-indicator-dot{animation:none}}.recordings-screen,.history-screen,.viewer-screen,.graphs-screen{padding:var(--gutter-top) var(--gutter-right) var(--gutter-bottom) var(--gutter-left);display:flex;flex-direction:column;gap:var(--space-4)}.recordings-empty-state{display:flex;flex-direction:column;align-items:center;text-align:center;gap:var(--space-3);padding:var(--space-8) var(--space-4);background:var(--surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);color:var(--muted)}.recordings-empty-icon{display:inline-flex;align-items:center;justify-content:center;width:56px;height:56px;border-radius:var(--radius-pill);background:var(--failed-soft);color:var(--failed);font-size:26px}.session-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-3)}.history-screen .session-list li{display:flex;flex-direction:column;gap:var(--space-2)}.session-list-item{position:relative;padding-inline-end:40px;width:100%;min-height:var(--tap-min);display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-1) var(--space-3);color:var(--muted);font-size:var(--text-small);text-align:start;cursor:pointer}.session-start,.history-collector-label{color:var(--fg);font-size:var(--text-body);font-weight:600}.session-note{flex-basis:100%;color:var(--muted);font-size:var(--text-small)}.session-list-item:after{content:"";position:absolute;inset-inline-end:var(--space-4);top:50%;width:8px;height:14px;margin-top:-7px;background:var(--muted);-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 14'%3E%3Cpath d='M7 1 1 7l6 6' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 14'%3E%3Cpath d='M7 1 1 7l6 6' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / contain no-repeat}.session-list li.selected .session-list-item{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent),var(--shadow-card)}.session-sync-summary{font-size:12px}.session-sync-error,.export-failed-message{color:var(--failed)}.session-detail{background:var(--surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);padding:var(--space-4);display:flex;flex-direction:column;gap:var(--space-3)}.session-detail h3,.session-detail h4{margin:0}.session-detail h4{padding-inline:0}.session-stats{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:var(--space-2)}.session-stats li{background:var(--fill);border-radius:var(--radius-sm);padding:var(--space-1) var(--space-3);font-size:var(--text-small)}.session-note-editor{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2);font-size:var(--text-small);font-weight:600;color:var(--muted)}.session-note-editor input{flex:1 1 200px;min-height:var(--tap-min);padding:0 var(--space-3);background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--fg);font-size:var(--text-body);font-weight:400}.session-note-editor button{min-height:var(--tap-min);min-width:var(--tap-min);border-radius:var(--radius-md);border:1px solid transparent;background:var(--accent-soft);color:var(--accent);font-weight:600;padding:var(--space-2) var(--space-4);cursor:pointer}.session-note-editor p{flex-basis:100%;color:var(--ok);font-weight:600}.pid-stats-table{width:100%;border-collapse:collapse;font-size:var(--text-small);font-variant-numeric:tabular-nums}.pid-stats-table th{color:var(--muted);font-size:12px;font-weight:600}.pid-stats-table td{overflow-wrap:anywhere}.pid-stats-table th,.pid-stats-table td{border-bottom:1px solid var(--separator);padding:var(--space-2);text-align:start}.pid-stats-table tbody tr:last-child td{border-bottom:none}.playback{display:flex;flex-direction:column;gap:var(--space-2)}.playback input[type=range]{width:100%;min-height:var(--tap-min)}.playback-values{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;font-size:var(--text-small)}.playback-values li{display:flex;justify-content:space-between;gap:var(--space-2);padding:var(--space-1) 0;border-bottom:1px solid var(--separator)}.playback-values li:last-child{border-bottom:none}.export-buttons{display:flex;flex-wrap:wrap;gap:var(--space-2)}.export-buttons>button{flex:1 1 0}.export-buttons>button:first-child{background:var(--accent);color:var(--primary-fg)}.export-buttons button:disabled{opacity:.55;cursor:default}.export-copy-fallback{display:flex;flex-direction:column;gap:var(--space-2);flex-basis:100%}.export-copy-fallback textarea{width:100%;min-height:100px;background:var(--surface);color:var(--fg);border:1px solid var(--border);border-radius:var(--radius-md)}.delete-session-confirm{background:var(--failed-soft);border-radius:var(--radius-md);padding:var(--space-3) var(--space-4);display:flex;flex-direction:column;gap:var(--space-2)}.history-start,.session-duration,.session-coverage,.session-sample-count{font-variant-numeric:tabular-nums}.viewer-open-button{align-self:flex-start}.viewer-header{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-2)}.viewer-header h2{margin:0;flex:1 1 auto;font-size:var(--text-title);font-weight:800}.viewer-collector-state{font-weight:600}.viewer-connection-issue{color:var(--failed)}.graphs-chart-area{display:flex;flex-direction:column;gap:var(--space-3)}.graphs-chart-area>.graphs-pid-picker,.graphs-chart-area>.graphs-range-picker{order:1}.graphs-session-picker{display:flex;flex-direction:column;gap:var(--space-1);font-size:var(--text-small);font-weight:600;color:var(--muted)}.graphs-session-picker select,.graphs-range-picker select,.graphs-range-picker input:not([type=radio]){min-height:var(--tap-min);background:var(--surface);color:var(--fg);border:1px solid var(--border);border-radius:var(--radius-sm);padding:0 var(--space-3);font-weight:400}.graphs-pid-picker,.graphs-range-picker{min-width:0;margin:0;border:none;padding:0;display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2)}.graphs-pid-picker legend,.graphs-range-picker legend{float:right;width:100%;padding:0;font-size:var(--text-caption);font-weight:600;color:var(--muted)}.graphs-pid-option,.graphs-range-picker>label{flex:0 0 auto;display:inline-flex;align-items:center;gap:var(--space-2);min-height:36px;padding:0 var(--space-3);border-radius:var(--radius-pill);background:var(--fill);font-size:var(--text-small);font-weight:500}.graphs-pid-option:has(input:checked),.graphs-range-picker>label:has(input:checked){background:var(--accent-soft);color:var(--fg)}.graphs-range-picker>label select{min-height:32px}.graphs-zoom-pan-controls{display:flex;align-items:center;gap:var(--space-1)}.graphs-zoom-pan-controls button{flex:1 1 auto;min-width:0;white-space:nowrap;font-size:var(--text-small);padding:0 var(--space-2)}.graphs-zoom-pan-controls button:disabled{opacity:.4;cursor:default}.graphs-zoom-level{font-weight:600;font-variant-numeric:tabular-nums}.graphs-crosshair{display:flex;flex-direction:column;gap:var(--space-1);font-size:var(--text-small);color:var(--muted)}.graphs-crosshair input[type=range]{width:100%;min-height:var(--tap-min)}.graphs-series-list{display:flex;flex-direction:column;gap:var(--space-3)}.series-chart{background:var(--surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);padding:var(--space-3) var(--space-4)}.series-chart-header{display:flex;align-items:baseline;gap:var(--space-2);margin-bottom:var(--space-2)}.series-chart-name{font-weight:600}.series-chart-unit{color:var(--muted);font-size:var(--text-caption)}.series-chart-cursor-value{margin-inline-start:auto;font-weight:700;font-variant-numeric:tabular-nums}.series-chart-svg{display:block;width:100%;height:120px;color:var(--accent);background:repeating-linear-gradient(to bottom,var(--separator) 0 1px,transparent 1px 25%);border-bottom:1px solid var(--separator);overflow:visible}.series-chart-svg path.series-chart-point{stroke-width:7;stroke-linecap:round}.series-chart-empty-text{fill:var(--muted);font-size:10px}.series-chart-cursor-line{stroke:var(--failed);stroke-width:1;stroke-dasharray:3 2}.series-chart-trim-band{fill:var(--muted);opacity:.12}.series-chart-trim-zero-line{stroke:var(--muted);stroke-width:1;stroke-dasharray:4 3}.graphs-counter-series{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-2)}.graphs-state-series{display:flex;flex-direction:column;gap:var(--space-1)}.graphs-state-changes{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px;font-size:var(--text-small);color:var(--muted)}.series-chart-axis{display:flex;justify-content:space-between;color:var(--muted);font-size:12px;font-variant-numeric:tabular-nums}.all-data-list{display:flex;flex-direction:column}.all-data-list>h3{font-size:var(--text-section);margin-top:var(--space-3)}.all-data-group ul{list-style:none;margin:0;padding:0 var(--space-4);background:var(--surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-card)}.all-data-group li{display:flex;flex-wrap:wrap;gap:var(--space-1) var(--space-3);align-items:baseline;padding:var(--space-3) 0;border-bottom:1px solid var(--separator);font-size:15px}.all-data-group li:last-child{border-bottom:none}.all-data-value,.all-data-missing,.all-data-no-decoder{margin-inline-start:auto}.all-data-value{font-weight:600;font-variant-numeric:tabular-nums}.all-data-missing,.all-data-no-decoder{color:var(--muted);font-size:var(--text-caption)}.info-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:30;display:flex;align-items:flex-end;justify-content:center;background:var(--backdrop)}.info-modal,.info-list-sheet{position:relative;width:100%;max-width:640px;max-height:85vh;overflow-y:auto;background:var(--surface);color:var(--fg);border-radius:20px 20px 0 0;box-shadow:var(--shadow-sheet);padding:var(--space-5) var(--gutter-right) max(var(--space-6),env(safe-area-inset-bottom)) var(--gutter-left);display:flex;flex-direction:column;gap:var(--space-3);font-size:15px;overflow-wrap:anywhere}.info-modal h3,.info-list-sheet h3{margin:0;padding-inline-end:52px;font-size:var(--text-section)}.info-modal-close{position:absolute;top:var(--space-3);inset-inline-end:var(--space-3);min-height:var(--tap-min);min-width:var(--tap-min);border-radius:var(--radius-pill);border:none;background:var(--fill);color:var(--fg);font-size:20px;line-height:1;cursor:pointer}.info-unit,.info-source{color:var(--muted);font-size:var(--text-small)}.info-caveat{background:var(--running-soft);border-radius:var(--radius-md);padding:var(--space-3);font-size:var(--text-small)}.info-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-2)}.info-list button{width:100%;text-align:start}@media (min-width: 700px){.measurement-cards ul,.live-cards{display:grid;grid-template-columns:repeat(2,1fr);align-items:start}}@media (min-width: 1100px){.measurement-cards ul,.live-cards{grid-template-columns:repeat(3,1fr)}.graphs-series-list{display:grid;grid-template-columns:repeat(2,1fr)}}.app-footer{padding:var(--space-2) var(--space-3) var(--gutter-bottom);text-align:center}.version-stamp{color:var(--muted);font-size:12px;margin:0}.build-stamp{color:var(--muted);font-size:12px;margin:calc(-1 * var(--space-3)) 0 0}.update-banner{position:fixed;left:max(var(--space-3),env(safe-area-inset-left));right:max(var(--space-3),env(safe-area-inset-right));bottom:max(var(--space-3),env(safe-area-inset-bottom));border-radius:var(--radius-lg);box-shadow:var(--shadow-sheet);z-index:10}.connection-bar{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2) var(--space-3);padding:var(--space-2) calc(var(--gutter-right) + var(--segment-pad)) 0 calc(var(--gutter-left) + var(--segment-pad));padding-top:max(var(--space-2),env(safe-area-inset-top))}.connection-status{font-size:var(--text-caption)}.account-toggle{margin-inline-start:auto}.login-form{display:flex;flex-wrap:wrap;align-items:flex-end;gap:var(--space-2) var(--space-3);flex-basis:100%;background:var(--surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);padding:var(--space-3) var(--space-4)}.login-field{flex:1 1 200px;display:flex;flex-direction:column;gap:var(--space-1);font-size:var(--text-caption);font-weight:600;color:var(--muted)}.login-field input{min-height:var(--tap-min);padding:0 var(--space-3);background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--fg);font-size:var(--text-body);font-weight:400}.login-submit{padding:0 var(--space-5)}.logout-button{margin-inline-start:auto}.login-error{flex-basis:100%;color:var(--failed)}
