:root{color-scheme:light dark;--bg: #ffffff;--fg: #111318;--muted: #5b6270;--border: #d9dce2;--accent: #1f6feb;--primary-fg: #ffffff;--ok: #1a7f37;--failed: #cf222e;--pending: #8b93a1;--running: #9a6700;--banner-bg: #fff3cd;--banner-fg: #664d03;--tap-min: 44px;--bg-elevated: #f6f8fa;--fg-muted: var(--muted);--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-6: 24px;--space-8: 32px;--radius-sm: 6px;--radius-lg: 10px}@media (prefers-color-scheme: dark){:root{--bg: #0d1117;--fg: #e6edf3;--muted: #9aa4b2;--border: #30363d;--accent: #58a6ff;--primary-fg: #0d1117;--ok: #3fb950;--failed: #f85149;--pending: #6e7681;--running: #d29922;--banner-bg: #3b2f00;--banner-fg: #ffd966;--bg-elevated: #161b22;--fg-muted: #8b949e}}*{box-sizing:border-box}html,body{margin:0;background:var(--bg);color:var(--fg);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}.app-root{min-height:100vh;padding:max(16px,env(safe-area-inset-top)) max(16px,env(safe-area-inset-right)) max(16px,env(safe-area-inset-bottom)) max(16px,env(safe-area-inset-left));display:flex;flex-direction:column;gap:12px}.ltr{direction:ltr;unicode-bidi:isolate;display:inline-block}.demo-banner{background:var(--banner-bg);color:var(--banner-fg);border-radius:8px;padding:8px 12px;font-weight:600;text-align:center}.feature-gate{min-height:100vh;display:flex;flex-direction:column;justify-content:center;gap:12px;padding:max(16px,env(safe-area-inset-top)) max(16px,env(safe-area-inset-right)) max(16px,env(safe-area-inset-bottom)) max(16px,env(safe-area-inset-left))}.reminder{color:var(--muted);font-size:.95em;border-inline-start:3px solid var(--accent);padding-inline-start:10px}.connect-button,.share-button,.log-toggle button{min-height:48px;min-width:48px;font-size:1.05em;border-radius:10px;border:1px solid var(--border);background:var(--accent);color:var(--primary-fg);padding:10px 18px;cursor:pointer}.connect-button:disabled{opacity:.6;cursor:default}.step-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.card{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-3) var(--space-4)}.measurement-value,.live-value{font-size:28px;font-weight:700;font-variant-numeric:tabular-nums;line-height:1.1}.measurement-name,.live-name{font-size:13px;color:var(--fg-muted)}.measurement-ecu,.measurement-time,.live-age{font-size:12px;color:var(--fg-muted)}.step{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.step-badge{font-weight:600;border-radius:999px;padding:2px 10px}.step-pending .step-badge{color:var(--pending)}.step-running .step-badge{color:var(--running)}.step-ok .step-badge{color:var(--ok)}.step-failed .step-badge{color:var(--failed)}.step-skipped .step-badge{color:var(--pending)}.step-detail{color:var(--muted);font-size:.9em}.measurement-cards ul,.live-cards{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.measurement-card,.faults-mil-row{display:flex;flex-wrap:wrap;align-items:baseline;gap:8px}.live-card{display:flex;flex-direction:column;padding:var(--space-2) var(--space-3)}.live-card-top{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2);margin-bottom:var(--space-1)}.live-card-top .info-button{margin-block:-10px}.live-sparkline{display:block;width:100%;height:48px;margin-top:var(--space-2);color:var(--accent)}.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)}.live-monitor-header{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-2)}.live-monitor-header h2{margin:0;flex:1 1 auto}.wake-lock-unsupported{color:var(--fg-muted);font-size:.9em}.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:inherit;cursor:pointer}.info-button-glyph{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:999px;border:1px solid var(--border);font-size:13px;line-height:1}.info-modal-close,.info-list button{min-height:var(--tap-min);border-radius:10px;border:1px solid var(--border);background:none;color:inherit;padding:8px 16px;cursor:pointer}.info-link,.wake-lock-toggle{min-height:var(--tap-min);border-radius:var(--radius-lg);border:1px solid var(--border);background:var(--bg-elevated);color:inherit;font:inherit;padding:8px var(--space-4);cursor:pointer}.wake-lock-toggle[aria-pressed=true]{border-color:var(--accent);border-width:2px;color:var(--accent);font-weight:600}.live-stop-button{min-height:var(--tap-min);border-radius:var(--radius-lg);border:1px solid var(--accent);background:var(--accent);color:var(--primary-fg);font:inherit;padding:8px var(--space-4);cursor:pointer}.live-start-button,.faults-read-button{min-height:var(--tap-min);border-radius:10px;border:1px solid var(--border);background:var(--accent);color:var(--primary-fg);padding:8px 16px;cursor:pointer}.faults-read-button:disabled{opacity:.6;cursor:default}.check-failed{color:var(--failed);font-weight:600}.log-view{border-top:1px solid var(--border);padding-top:8px}.log-toggle{display:flex;gap:8px;margin-bottom:8px}.log-toggle button[aria-pressed=true]{background:var(--fg);color:var(--bg)}.log-entries{list-style:none;margin:0;padding:0;max-height:240px;overflow-y:auto;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.85em}.log-entries li{display:flex;gap:8px;padding:2px 0;border-bottom:1px solid var(--border)}.log-tx .log-dir{color:var(--accent)}.log-rx .log-dir{color:var(--ok)}.share-report textarea{width:100%;min-height:120px}.app-shell{min-height:100vh}.app-tabs{display:flex;flex-wrap:wrap;gap:4px;border-bottom:1px solid var(--border);padding:8px max(16px,env(safe-area-inset-right)) 0 max(16px,env(safe-area-inset-left))}.app-tabs button{min-height:var(--tap-min);padding:8px 16px;border:none;background:none;color:var(--muted);font-size:1em;cursor:pointer;border-bottom:3px solid transparent}.app-tabs button.active{color:var(--fg);font-weight:600;background:var(--bg-elevated);border-radius:var(--radius-sm) var(--radius-sm) 0 0;border-bottom-color:var(--accent)}.recording-controls{display:flex;flex-direction:column;gap:6px}.recording-start-button,.recording-stop-button{min-height:var(--tap-min);border-radius:10px;border:1px solid var(--border);background:var(--failed);color:var(--primary-fg);padding:8px 16px;cursor:pointer;align-self:flex-start}.recording-start-button{background:var(--ok)}.recording-capped-message{color:var(--failed);font-weight:600}.recordings-screen{padding:max(16px,env(safe-area-inset-top)) max(16px,env(safe-area-inset-right)) max(16px,env(safe-area-inset-bottom)) max(16px,env(safe-area-inset-left));display:flex;flex-direction:column;gap:12px}.session-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.session-list-item{width:100%;min-height:var(--tap-min);display:flex;flex-wrap:wrap;gap:10px;color:inherit;text-align:start;cursor:pointer}.session-list li.selected .session-list-item{border-color:var(--accent)}.demo-badge{color:var(--running);font-weight:600}.session-detail{border-top:1px solid var(--border);padding-top:12px;display:flex;flex-direction:column;gap:10px}.session-stats{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:16px}.pid-stats-table{width:100%;border-collapse:collapse}.pid-stats-table th,.pid-stats-table td{border-bottom:1px solid var(--border);padding:6px 8px;text-align:start}.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;gap:4px}.playback-values li{display:flex;justify-content:space-between;gap:8px}.export-buttons{display:flex;gap:8px}.export-buttons button{min-height:var(--tap-min);border-radius:10px;border:1px solid var(--border);background:none;color:inherit;padding:8px 16px;cursor:pointer}.export-buttons button:disabled{opacity:.6;cursor:default}.delete-session-confirm-yes,.delete-session-confirm-cancel{min-height:var(--tap-min);border-radius:10px;border:1px solid var(--border);background:none;color:inherit;padding:8px 16px;cursor:pointer;align-self:flex-start}.delete-session-button{align-self:flex-start;min-height:var(--tap-min);border-radius:10px;border:1px solid var(--failed);background:none;color:var(--failed);padding:8px 16px;cursor:pointer}.delete-session-confirm{border:1px solid var(--failed);border-radius:10px;padding:10px 12px;display:flex;flex-direction:column;gap:8px}.history-screen{padding:max(16px,env(safe-area-inset-top)) max(16px,env(safe-area-inset-right)) max(16px,env(safe-area-inset-bottom)) max(16px,env(safe-area-inset-left));display:flex;flex-direction:column;gap:12px}.history-status-open{color:var(--running);font-weight:600}.history-status-ended{color:var(--fg-muted)}.graphs-screen{padding:max(16px,env(safe-area-inset-top)) max(16px,env(safe-area-inset-right)) max(16px,env(safe-area-inset-bottom)) max(16px,env(safe-area-inset-left));display:flex;flex-direction:column;gap:12px}.graphs-session-picker{display:flex;flex-direction:column;gap:4px}.graphs-pid-picker,.graphs-range-picker{border:1px solid var(--border);border-radius:10px;padding:8px 12px;display:flex;flex-wrap:wrap;gap:8px 16px}.graphs-zoom-pan-controls{display:flex;align-items:center;gap:8px}.graphs-zoom-pan-controls button{min-height:var(--tap-min);min-width:var(--tap-min);border-radius:10px;border:1px solid var(--border);background:none;cursor:pointer}.graphs-zoom-pan-controls button:disabled{opacity:.5;cursor:default}.graphs-crosshair input[type=range]{width:100%;min-height:var(--tap-min)}.graphs-series-list{display:flex;flex-direction:column;gap:12px}.series-chart{border:1px solid var(--border);border-radius:10px;padding:8px 12px}.series-chart-header{display:flex;justify-content:space-between;gap:8px;margin-bottom:4px}.series-chart-svg{width:100%;height:90px;color:var(--accent)}.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-axis{display:flex;justify-content:space-between;color:var(--muted);font-size:.8em}.all-data-group ul{list-style:none;margin:0;padding:0}.all-data-group li{display:flex;flex-wrap:wrap;gap:4px 12px;align-items:baseline;padding:6px 0;border-bottom:1px solid var(--border)}.wake-lock-toggle{min-height:var(--tap-min);min-width:var(--tap-min)}@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)}}.recordings-empty-cta{min-height:var(--tap-min);min-width:var(--tap-min);border-radius:10px;border:1px solid var(--border);background:var(--accent);color:var(--primary-fg);padding:8px 16px;cursor:pointer}.app-footer{padding:8px 12px;text-align:center}.version-stamp{color:var(--muted);font-size:.8em;margin:0}.build-stamp{color:var(--muted);font-size:.85em;margin:calc(-1 * var(--space-2)) 0 var(--space-3)}.update-banner{position:fixed;left:12px;right:12px;bottom:12px;min-height:var(--tap-min);border-radius:10px;border:1px solid var(--border);background:var(--accent);color:var(--primary-fg);padding:8px 16px;cursor:pointer;z-index:10}.connection-bar{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;padding:8px max(16px,env(safe-area-inset-right)) 0 max(16px,env(safe-area-inset-left))}.login-form{display:flex;flex-wrap:wrap;align-items:flex-end;gap:8px 12px}.login-field{display:flex;flex-direction:column;gap:4px}.login-field input{min-height:var(--tap-min);padding:0 8px;background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--fg);font:inherit}.login-submit{min-height:var(--tap-min);padding:0 16px;border-radius:10px;border:1px solid var(--border);background:var(--accent);color:var(--primary-fg);font:inherit;cursor:pointer}.login-submit:disabled{opacity:.6;cursor:default}.logout-button{min-height:var(--tap-min);padding:0 16px}.login-error{flex-basis:100%;color:var(--failed)}
