:root{color-scheme:dark;font-family:Segoe UI,system-ui,-apple-system,sans-serif;line-height:1.5;font-weight:400;color:#e8edf7;background:#070b12}*{box-sizing:border-box}body{margin:0;min-height:100vh;background:radial-gradient(ellipse at 20% 0%,rgba(59,130,246,.12),transparent 50%),radial-gradient(ellipse at 80% 100%,rgba(236,72,153,.08),transparent 50%),#070b12}#root{min-height:100vh}.app-shell{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px}.app-shell.wide{align-items:flex-start}.panel{width:min(560px,100%);background:#0d1117eb;border:1px solid rgba(56,132,255,.2);border-radius:16px;padding:28px;box-shadow:0 24px 64px #00000073}.panel h1,.test-header h1{margin:0 0 4px;font-size:1.6rem;font-weight:700;letter-spacing:-.02em}.subtitle{margin:0;color:#8b9ab5;font-size:.92rem}.form{display:flex;flex-direction:column;gap:14px;margin-top:24px}.form label{display:flex;flex-direction:column;gap:6px;font-size:.85rem;color:#a8b4c8}input[type=email],input[type=password],input[type=number]{background:#0d1117;border:1px solid rgba(56,132,255,.25);border-radius:8px;color:#e8edf7;padding:10px 12px;font-size:1rem}input:focus{outline:2px solid rgba(59,130,246,.45);border-color:#3b82f6}.btn{border:1px solid rgba(56,132,255,.35);background:#1c2434e6;color:#e8edf7;border-radius:10px;padding:10px 16px;font-size:.95rem;cursor:pointer;transition:background .15s,border-color .15s}.btn:hover:not(:disabled){background:#28344cf2;border-color:#3b82f68c}.btn:disabled{opacity:.45;cursor:not-allowed}.btn.primary{background:linear-gradient(135deg,#2563eb,#3b82f6);border-color:#3b82f6}.btn.danger{background:#7f1d1d80;border-color:#ef444480}.btn.ghost{background:transparent}.error-banner{background:#7f1d1d59;border:1px solid rgba(239,68,68,.4);color:#fecaca;padding:10px 12px;border-radius:8px;font-size:.9rem}.footnote,.warning{margin-top:16px;font-size:.85rem;color:#8b9ab5}.warning{color:#fbbf24}.panel-header{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}.toolbar{margin:16px 0}.user-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.user-row{width:100%;text-align:left;background:#0d1117;border:1px solid rgba(56,132,255,.15);border-radius:10px;padding:12px 14px;color:inherit;cursor:pointer}.user-row:hover{border-color:#3b82f673}.user-name{display:block;font-weight:600}.user-meta{display:block;font-size:.85rem;color:#8b9ab5}.empty{color:#8b9ab5;padding:12px 0}.test-layout{width:min(960px,100%);display:flex;flex-direction:column;gap:20px}.test-header{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}.status-row{display:flex;align-items:center;gap:10px;font-size:.92rem;color:#a8b4c8}.status-dot{width:10px;height:10px;border-radius:50%;background:#4b5563}.status-dot.on{background:#22c55e;box-shadow:0 0 8px #22c55e99}.status-dot.connecting{background:#f59e0b;animation:pulse 1s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.35}}.status-device{color:#8b9ab5;font-size:.85rem}.controls-card,.chart-card{background:#0d1117eb;border:1px solid rgba(56,132,255,.2);border-radius:16px;padding:20px}.ble-controls{margin-bottom:16px;display:flex;flex-wrap:wrap;gap:10px}.timer-block{margin-bottom:16px}.timer-label{font-size:.8rem;color:#8b9ab5;text-transform:uppercase;letter-spacing:.06em}.timer-value{font-size:2.4rem;font-weight:700;font-variant-numeric:tabular-nums;color:#60a5fa;margin:4px 0 10px}.progress-track{height:6px;background:#3884ff26;border-radius:999px;overflow:hidden}.progress-fill{height:100%;background:linear-gradient(90deg,#2563eb,#22d3ee);border-radius:999px;transition:width .1s linear}.duration-row{display:flex;align-items:flex-end;gap:16px;margin-bottom:16px}.duration-row label{display:flex;flex-direction:column;gap:6px;font-size:.85rem;color:#a8b4c8}.sample-count{font-size:.85rem;color:#8b9ab5;font-variant-numeric:tabular-nums}.action-row{display:flex;flex-wrap:wrap;gap:10px}.metrics-primary,.metrics-secondary{display:grid;gap:12px}.metrics-primary{grid-template-columns:repeat(3,1fr)}.metrics-secondary{grid-template-columns:repeat(auto-fit,minmax(120px,1fr))}.metric-card{background:#0d1117;border:1px solid rgba(56,132,255,.2);border-radius:12px;padding:14px}.metric-label{font-size:.75rem;text-transform:uppercase;letter-spacing:.05em;margin-bottom:6px}.metric-value{font-size:1.5rem;font-weight:700;font-variant-numeric:tabular-nums}.metric-unit{font-size:.85rem;font-weight:500;color:#8b9ab5;margin-left:4px}.metric-hint{margin-top:6px;font-size:.75rem;color:#6b7a94}.chart-card h2{margin:0 0 12px;font-size:1rem;color:#a8b4c8}.tremor-chart{width:100%;height:220px;display:block;border-radius:8px}.upload-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.upload-ok{color:#4ade80;font-size:.9rem}.upload-err{color:#fca5a5;font-size:.9rem}@media(max-width:720px){.metrics-primary{grid-template-columns:1fr}}
