:root{--font: -apple-system, "SF Pro Text", "SF Pro Display", system-ui, Segoe UI, Roboto, sans-serif;--font-mono: ui-monospace, SFMono-Regular, Menlo, monospace;--radius-sm: 5px;--radius-md: 11px;--radius-lg: 18px;--radius-pill: 9999px}:root,[data-theme=dark]{--app-bg: radial-gradient(1200px 600px at 50% -10%, #123251 0%, #0c2036 60%);--bg: #0c2036;--surface: #102842;--surface-2: #16314f;--border: rgba(255, 255, 255, .1);--overlay: rgba(255, 255, 255, .05);--overlay-2: rgba(255, 255, 255, .09);--ink: #f5fbf9;--text: #d7e2e0;--text-muted: #8aa0a8;--text-faint: #5f7682;--primary: #00c6a2;--primary-hover: #18d9b6;--on-primary: #052b24;--accent: #2dd4bf;--link: #34d3e0;--good: #34d399;--warn: #fcd34d;--bad: #fca5a5;--shadow: 3px 5px 30px rgba(0, 0, 0, .22);--chart-hr: #f43f5e;--chart-spo2: #0ea5e9;--chart-bp: #a78bfa;--chart-bp2: #818cf8;--chart-resp: #34d399;--chart-temp: #fb923c;--chart-hrv: #2dd4bf;--chart-cardiac: #f472b6;--chart-stress: #facc15;--chart-steps: #4ade80;--chart-met: #a3e635;--chart-glucose: #c084fc;--chart-uric_acid: #fbbf24;--chart-chol_total: #fb7185;--chart-chol_hdl: #22d3ee;--chart-chol_ldl: #f87171;--chart-triglyceride: #fcd34d;--chart-grid: rgba(255, 255, 255, .06);--chart-axis: #64748b}[data-theme=light]{--app-bg: #f4faf8;--bg: #f4faf8;--surface: #ffffff;--surface-2: #e6fbf7;--border: #eaeaea;--overlay: rgba(0, 0, 0, .04);--overlay-2: rgba(0, 0, 0, .07);--ink: #0c2036;--text: #3a464d;--text-muted: #65747c;--text-faint: #69787f;--primary: #009b7e;--primary-hover: #007e66;--on-primary: #ffffff;--accent: #00c6a2;--link: #008490;--good: #009b7e;--warn: #b45309;--bad: #dc2626;--shadow: 3px 5px 30px rgba(0, 0, 0, .1);--chart-hr: #e11d48;--chart-spo2: #0284c7;--chart-bp: #7c3aed;--chart-bp2: #6366f1;--chart-resp: #059669;--chart-temp: #ea580c;--chart-hrv: #0d9488;--chart-cardiac: #db2777;--chart-stress: #ca8a04;--chart-steps: #16a34a;--chart-met: #65a30d;--chart-glucose: #9333ea;--chart-uric_acid: #d97706;--chart-chol_total: #e11d48;--chart-chol_hdl: #0891b2;--chart-chol_ldl: #dc2626;--chart-triglyceride: #b45309;--chart-grid: rgba(0, 0, 0, .06);--chart-axis: #94a3b8}:root{--panel: var(--surface);--panel-border: var(--border);--dim: var(--text-muted);--dimmer: var(--text-faint);--dimmest: var(--text-faint);--muted: var(--text-muted);--indigo: var(--primary);--indigo-2: var(--accent);--green: var(--good);--amber: var(--warn);--red: var(--bad);--mono: var(--font-mono)}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--app-bg);color:var(--text);font-family:var(--font);font-size:17px;line-height:1.47;letter-spacing:-.374px;-webkit-font-smoothing:antialiased;transition:background-color .2s ease,color .2s ease}a{color:var(--link)}button{font-family:inherit;cursor:pointer}.mono{font-family:var(--mono)}.wrap{max-width:1040px;margin:0 auto;padding:24px 20px 80px}.navbar{position:sticky;top:0;z-index:50;background:color-mix(in srgb,var(--surface) 80%,transparent);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);border-bottom:1px solid var(--border)}.navbar-inner{max-width:1040px;margin:0 auto;min-height:44px;padding:0 20px;display:flex;align-items:center;justify-content:space-between;gap:12px}.navbar .nav-email{font-size:13px;color:var(--text-muted);max-width:38vw;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.topbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:28px}.brand{display:flex;align-items:baseline;gap:10px}.brand h1{font-size:22px;font-weight:900;letter-spacing:-.5px;margin:0;color:var(--ink)}.brand .tag{font-size:11px;font-weight:700;letter-spacing:1px;color:var(--text-faint);text-transform:uppercase}.panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:24px}.label{font-size:11px;font-weight:700;letter-spacing:.8px;color:var(--text-faint);text-transform:uppercase}.theme-toggle{display:inline-grid;place-items:center;width:36px;height:36px;background:var(--overlay);color:var(--text);border:1px solid var(--border);border-radius:var(--radius-pill);font-size:16px;line-height:1}.theme-toggle:hover{background:var(--overlay-2)}.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:16px;margin:20px 0}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:22px;box-shadow:var(--shadow)}.card .v{font-size:17px;font-weight:700;letter-spacing:-.2px;color:var(--ink);font-variant-numeric:tabular-nums}.card .u{font-size:13px;color:var(--text-muted);font-weight:600}.card .k{font-size:11px;font-weight:700;letter-spacing:.6px;color:var(--text-faint);text-transform:uppercase;margin-top:10px}.card .sub{font-size:12px;color:var(--text-muted);margin-top:4px}.section{margin-top:26px}.section h2{font-size:13px;font-weight:700;letter-spacing:.6px;color:var(--text-muted);text-transform:uppercase;margin:0 0 12px}.row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.spacer{flex:1}.metric-group{margin-bottom:12px}.metric-group-label{font-size:10.5px;font-weight:700;letter-spacing:.6px;color:var(--text-faint);text-transform:uppercase;margin:0 0 6px}.chip{border:1px solid var(--border);background:var(--overlay);color:var(--text-muted);border-radius:var(--radius-pill);padding:6px 14px;font-size:12px;font-weight:700;transition:background .15s ease,color .15s ease,border-color .15s ease}.chip:hover:not(:disabled){background:var(--overlay-2)}.chip.on{background:var(--primary);color:var(--on-primary);border-color:transparent}.chip.on:hover{background:var(--primary-hover)}.chip.ghost{background:transparent;color:var(--text)}.chip.danger{background:color-mix(in srgb,var(--bad) 12%,transparent);color:var(--bad);border-color:color-mix(in srgb,var(--bad) 30%,transparent)}.chip.danger:hover:not(:disabled){background:color-mix(in srgb,var(--bad) 20%,transparent)}.chip.past{background:transparent;border-style:dashed;color:var(--text-faint)}.chip.past.on{background:var(--surface-2);color:var(--text);border-style:solid;border-color:var(--border)}.chip:disabled{opacity:.5;cursor:default}.btn{background:var(--primary);color:var(--on-primary);border:none;border-radius:var(--radius-pill);padding:11px 22px;font-size:14px;font-weight:700}.btn:hover{background:var(--primary-hover)}[data-theme=light] .btn{background:#007e66}[data-theme=light] .btn:hover{background:#005c4b}.btn.ghost{background:var(--overlay);color:var(--ink)}.btn:disabled{opacity:.5;cursor:default}.login{min-height:100vh;display:grid;place-items:center;padding:20px}.login .box{width:100%;max-width:380px;text-align:center;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:24px;box-shadow:var(--shadow)}.login h1{font-size:34px;line-height:40px;font-weight:700;margin:0 0 6px;color:var(--ink);letter-spacing:-.5px}.login p{color:var(--text-muted);margin:0 0 22px;font-size:17px}.input{width:100%;background:var(--surface-2);border:1px solid var(--border);color:var(--ink);border-radius:var(--radius-md);padding:13px 14px;font-size:15px;margin-bottom:12px}.note{font-size:12px;color:var(--text-muted);margin-top:14px}.ok{color:var(--good)}.err{color:var(--bad)}.chart{height:264px;padding:18px 18px 12px}.chart .recharts-cartesian-axis-tick text{fill:var(--text-faint);font-size:11px}.chart .recharts-cartesian-grid line{stroke:var(--chart-grid)}.chart .recharts-tooltip-cursor{stroke:var(--text-faint);stroke-dasharray:3 3;stroke-opacity:.7}.chart-empty{display:grid;place-items:center;height:100%;color:var(--text-muted)}.sleep-list{display:flex;flex-direction:column}.night{display:grid;grid-template-columns:110px 1fr 64px;align-items:center;gap:14px;padding:11px 0}.night+.night{border-top:1px solid var(--border)}.night .date{font-size:13px;color:var(--text);font-weight:500}.bar{height:18px;border-radius:var(--radius-pill);background:var(--overlay);overflow:hidden;display:flex}.bar .deep{background:var(--primary);height:100%}.bar .rest{background:var(--accent);height:100%;opacity:.5}.bar .deep:first-child{border-top-left-radius:var(--radius-pill);border-bottom-left-radius:var(--radius-pill)}.night .tot{font-size:14px;text-align:right;font-family:var(--mono);color:var(--ink);font-weight:600}.legend{display:flex;align-items:center;gap:16px;margin-top:14px;font-size:12px;color:var(--text-muted)}.legend .swatch{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:6px;vertical-align:middle}.form-grid{display:flex;gap:16px;flex-wrap:wrap;align-items:flex-end;margin-top:16px}.field{display:flex;flex-direction:column;gap:6px}.field>.field-label{font-size:13px;font-weight:600;letter-spacing:-.08px;color:var(--text-muted)}.control{background:var(--surface-2);border:1px solid var(--border);color:var(--ink);border-radius:var(--radius-md);padding:10px 12px;font-size:17px;line-height:1.2;font-family:var(--font);height:42px;transition:border-color .15s ease,box-shadow .15s ease}.control:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary) 22%,transparent)}select.control{cursor:pointer}.btn.lg{padding:12px 26px;font-size:15px;height:42px}.qr-frame{background:#fff;padding:14px;border-radius:var(--radius-lg);width:fit-content;box-shadow:var(--shadow)}.qr-hint{font-size:13px;color:var(--text-muted);margin-top:12px}.qr-code{font-family:var(--mono);margin-left:6px;font-size:17px;letter-spacing:2px;color:var(--ink);font-weight:600;text-transform:uppercase}.qr-wait{font-size:12px;color:var(--text-faint);margin-top:6px;display:flex;align-items:center;gap:7px}.pulse{width:8px;height:8px;border-radius:50%;background:var(--primary);animation:pulse 1.4s ease-in-out infinite}@keyframes pulse{0%,to{opacity:.35}50%{opacity:1}}.pair-done{display:flex;align-items:center;gap:12px}.pair-badge{width:34px;height:34px;border-radius:var(--radius-pill);display:grid;place-items:center;background:color-mix(in srgb,var(--good) 18%,transparent);color:var(--good);font-size:18px;flex:none}.codeblock{font-family:var(--mono);word-break:break-all;font-size:12px;color:var(--text-muted);background:var(--surface-2);border:1px solid var(--border);padding:12px;border-radius:var(--radius-md);margin-top:6px}.device-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 0}.device-row+.device-row{border-top:1px solid var(--border)}.device-row .dev-icon{font-size:22px;flex:none;width:30px;text-align:center}.device-main{display:flex;align-items:flex-start;gap:12px;min-width:0}.device-name{font-weight:600;font-size:15px;color:var(--ink)}.device-sub{font-size:12px;color:var(--text-muted);margin-top:1px}.status-dot{display:inline-block;width:7px;height:7px;border-radius:50%;margin-right:6px;vertical-align:middle}.status-dot.good{background:var(--good)}.status-dot.idle{background:var(--text-faint)}.status-dot.bad{background:var(--bad)}.btn.danger{background:color-mix(in srgb,var(--bad) 14%,transparent);color:var(--bad)}.btn.danger:hover{background:color-mix(in srgb,var(--bad) 22%,transparent)}.suggest{display:flex;align-items:center;gap:12px;flex-wrap:wrap;background:color-mix(in srgb,var(--warn) 12%,var(--surface));border:1px solid color-mix(in srgb,var(--warn) 30%,transparent);border-radius:var(--radius-md);padding:12px 16px;margin-bottom:10px;font-size:14px;color:var(--text)}.suggest .banner-icon{font-size:18px;flex:none;color:var(--warn)}.suggest .banner-text{flex:1;min-width:200px}.suggest b{color:var(--ink);font-weight:600}.chip.accent{background:var(--accent);color:var(--on-primary);border-color:transparent}.muted{color:var(--text-muted);font-size:13px}.tooltip{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);padding:10px 13px;font-size:13px;color:var(--text);box-shadow:var(--shadow);min-width:120px}.tooltip .tip-time{font-family:var(--mono);font-size:11px;color:var(--text-faint);margin-bottom:3px}.tooltip .tip-val{font-size:15px;font-weight:600;color:var(--ink)}.ent-table{width:100%;border-collapse:collapse;font-size:13px}.ent-table th,.ent-table td{padding:10px 12px;border-bottom:1px solid var(--border)}.ent-table th{text-align:left;color:var(--text-muted);font-weight:600;text-transform:capitalize}.ent-table td:first-child{color:var(--text)}.ent-table input[type=checkbox]{width:16px;height:16px;cursor:pointer;accent-color:var(--primary)}.ent-table tr.ent-group td{font-weight:700;color:var(--ink);background:var(--overlay);text-transform:none;padding-top:12px}.switch{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;padding:0;margin:0;background:none;width:42px;height:26px;border-radius:var(--radius-pill);position:relative;cursor:pointer;flex:none;background:var(--overlay-2);border:1px solid var(--border);transition:background .18s ease,border-color .18s ease}.switch:after{content:"";position:absolute;top:2px;left:2px;width:20px;height:20px;border-radius:50%;background:#fff;box-shadow:0 1px 2px #0000004d;transition:transform .18s ease}.switch[data-on=true]{background:var(--primary);border-color:transparent}.switch[data-on=true]:after{transform:translate(16px)}.switch:disabled{opacity:.5;cursor:default}.switch-row{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 0;border-bottom:1px solid var(--border);font-size:14px;color:var(--text)}.switch-row:last-child{border-bottom:none}.mon-title{font-size:13px;font-weight:700;letter-spacing:.4px;text-transform:uppercase;color:var(--text-muted);margin:0 0 8px}.mon-section{margin-top:14px;padding:16px 18px;border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface-2)}.mon-all .switch-row{padding:10px 0}.mon-watch{margin-top:12px;padding-top:12px;border-top:1px solid var(--border)}.mon-metrics{display:flex;gap:10px;flex-wrap:wrap;margin-top:8px}.mon-metric{display:inline-flex;align-items:center;gap:4px}.lock{display:inline-flex;align-items:center;gap:5px;border:1px solid var(--border);background:var(--overlay);color:var(--text-muted);border-radius:var(--radius-pill);padding:6px 12px;font-size:12px;font-weight:700;font-family:inherit}.lock:hover:not(:disabled){background:var(--overlay-2)}.lock.on{background:color-mix(in srgb,var(--warn) 16%,var(--surface));border-color:color-mix(in srgb,var(--warn) 40%,transparent);color:var(--warn)}.lock.sm{padding:6px 8px;font-size:13px;line-height:1}.lock:disabled{opacity:.5;cursor:default}
