:root{--bg:#0b0f14;--panel:#111821;--panel-2:#0e141b;--border:#1e2a36;--text:#e6edf3;--muted:#7d8998;--accent:#31c48d;--hr:#ff6b6b;--cadence:#5aa9ff;--speed:#2dd4bf;--warn:#f5a623;--bad:#f87171;--ok:#31c48d;--z1:#4aa3ff;--z2:#31c48d;--z3:#f2c94c;--z4:#f2994a;--z5:#f0616d;--cbc-white:#eef2f8;--cbc-blue:#4aa3ff;--cbc-green:#31c48d;--cbc-yellow:#f2c94c;--cbc-red:#f0616d;--radius:14px;--radius-sm:9px;--gap:12px;--font:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--mono:ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace}@media (prefers-color-scheme:light){:root{--bg:#eef2f6;--panel:#fff;--panel-2:#f4f7fa;--border:#d6dee7;--text:#0b0f14;--muted:#5b6672;--accent:#0f9d63;--hr:#e03131;--cadence:#1e6fd9;--speed:#0d9488;--warn:#b4770a;--bad:#d63b3b;--ok:#0f9d63;--z1:#1e6fd9;--z2:#0f9d63;--z3:#c88a04;--z4:#d97706;--z5:#dc2626;--cbc-white:#f4f7fa;--cbc-blue:#1e6fd9;--cbc-green:#0f9d63;--cbc-yellow:#c88a04;--cbc-red:#dc2626}}*,:before,:after{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--bg);color:var(--text);font-family:var(--font);-webkit-text-size-adjust:100%;overscroll-behavior-y:none;line-height:1.35;overflow-x:hidden}h1,h2,h3{margin:0;font-weight:650}.app{max-width:1280px;padding:max(10px, env(safe-area-inset-top)) 12px calc(24px + env(safe-area-inset-bottom));flex-direction:column;gap:16px;margin:0 auto;display:flex}.app-header{flex-direction:column;gap:10px;padding-top:4px;display:flex}.app-titlebar{justify-content:space-between;align-items:center;gap:10px;display:flex}.app-title{letter-spacing:.2px;text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:clamp(1.05rem,5vw,1.5rem);overflow:hidden}.app-main{grid-template-columns:1fr;gap:16px;display:grid}.col-main,.col-side{flex-direction:column;gap:16px;min-width:0;display:flex}@media (width>=960px){.app-main{grid-template-columns:minmax(0,1fr) minmax(320px,420px);align-items:start}}.panel{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);min-width:0;padding:12px}.btn{font:inherit;color:var(--text);background:var(--panel-2);border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;white-space:nowrap;padding:9px 14px;font-weight:600;transition:filter .12s,opacity .12s}.btn:hover:not(:disabled){filter:brightness(1.12)}.btn:disabled{opacity:.5;cursor:default}.btn-accent{background:var(--accent);color:#05130c;border-color:#0000}.btn-danger{border-color:var(--bad);color:var(--bad);background:0 0}.btn-ghost{background:var(--panel-2)}.connbar{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);flex-wrap:wrap;align-items:center;gap:10px 14px;padding:10px 12px;display:flex}.conn-btn{flex:none}.conn-disconnect{color:var(--muted)}.conn-disconnect:hover:not(:disabled){color:var(--bad);border-color:color-mix(in srgb, var(--bad) 55%, var(--border));filter:none}.conn-state{align-items:center;gap:7px;display:inline-flex}.status-dot{background:var(--muted);width:11px;height:11px;box-shadow:0 0 0 3px color-mix(in srgb, var(--muted) 22%, transparent);border-radius:50%;flex:none}.status-connected{background:var(--ok);box-shadow:0 0 0 3px color-mix(in srgb, var(--ok) 25%, transparent)}.status-error{background:var(--bad);box-shadow:0 0 0 3px color-mix(in srgb, var(--bad) 25%, transparent)}.status-requesting,.status-connecting,.status-reconnecting{background:var(--warn);box-shadow:0 0 0 3px color-mix(in srgb, var(--warn) 25%, transparent);animation:1.1s ease-in-out infinite pulse}@keyframes pulse{0%,to{opacity:1}50%{opacity:.35}}.status-label{color:var(--muted);font-size:.9rem}.conn-device{align-items:center;gap:8px;min-width:0;display:inline-flex}.device-name{text-overflow:ellipsis;white-space:nowrap;max-width:40vw;font-weight:600;overflow:hidden}.proto-badge{font-family:var(--mono);letter-spacing:.5px;color:var(--accent);background:color-mix(in srgb, var(--accent) 16%, transparent);border:1px solid color-mix(in srgb, var(--accent) 45%, transparent);border-radius:6px;padding:2px 6px;font-size:.7rem;font-weight:700}.battery{font-family:var(--mono);color:var(--muted);font-size:.8rem}.conn-error{color:var(--bad);background:color-mix(in srgb, var(--bad) 12%, transparent);border:1px solid color-mix(in srgb, var(--bad) 40%, transparent);border-radius:var(--radius-sm);overflow-wrap:anywhere;flex:100%;padding:6px 9px;font-size:.85rem}.tiles{gap:var(--gap);flex-direction:column;display:flex}.tile{--tile-accent:var(--text);background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;gap:4px;min-width:0;padding:12px 14px;display:flex}.tile-label{text-transform:uppercase;letter-spacing:.8px;color:var(--muted);font-size:.72rem;font-weight:600}.tile-value{align-items:baseline;gap:6px;min-width:0;display:flex}.tile-meta{align-items:center;gap:6px;min-width:0;display:inline-flex}.tile-number{font-variant-numeric:tabular-nums;color:var(--tile-accent);letter-spacing:-.02em;font-weight:700;line-height:1}.tile-unit{color:var(--muted);font-size:.85rem;font-weight:600}.tile-hero{background:linear-gradient(180deg, color-mix(in srgb, var(--accent) 12%, var(--panel)), var(--panel));border-color:color-mix(in srgb, var(--accent) 35%, var(--border));padding:16px 18px}.tile-hero .tile-number{font-size:clamp(3.5rem,20vw,7.5rem)}.tile-hero .tile-unit{font-size:clamp(1rem,4vw,1.5rem)}.tile-row{gap:var(--gap);display:grid}.tile-row-primary{grid-template-columns:repeat(auto-fit,minmax(140px,1fr))}.tile-row-small{grid-template-columns:repeat(auto-fit,minmax(96px,1fr))}.tile-primary .tile-number{font-size:clamp(2rem,9vw,3.25rem)}.tile-small .tile-number{font-size:clamp(1.25rem,5vw,1.85rem)}.tile-small .tile-label{font-size:.66rem}.tile-head{justify-content:space-between;align-items:center;gap:6px;min-width:0;display:flex}.tile-zone{letter-spacing:.3px;color:var(--zone-color);background:color-mix(in srgb, var(--zone-color) 18%, transparent);border:1px solid color-mix(in srgb, var(--zone-color) 45%, transparent);white-space:nowrap;border-radius:999px;flex:none;padding:1px 7px;font-size:.66rem;font-weight:700}.tile-zone--swatch{color:var(--text);background:color-mix(in srgb, var(--zone-color) 12%, var(--panel));border:1px solid var(--border);align-items:center;gap:5px;display:inline-flex}.tile-zone-swatch{background:var(--zone-color);border:1px solid color-mix(in srgb, var(--zone-color) 55%, var(--border));border-radius:50%;flex:none;width:9px;height:9px}@media (width<=560px){.tile-row-primary{grid-template-columns:repeat(3,minmax(0,1fr))}.tile-row-small{grid-template-columns:repeat(2,minmax(0,1fr))}.tile-primary .tile-value{flex-direction:column;align-items:flex-start;gap:2px}}.graphs{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;gap:10px;padding:12px;display:flex}.spark{flex-direction:column;gap:3px;min-width:0;display:flex}.spark-head{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.spark-label{text-transform:uppercase;letter-spacing:.6px;color:var(--muted);font-size:.72rem;font-weight:600}.spark-value{font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:1rem;font-weight:700}.spark-unit{color:var(--muted);font-size:.72rem;font-weight:500}.spark-svg{background:var(--panel-2);border-radius:6px;width:100%;height:auto;display:block}.modal{width:100%;max-width:100%;height:100%;max-height:100%;color:var(--text);background:0 0;border:none;margin:0;padding:16px;overflow:hidden}.modal[open]{justify-content:center;align-items:center;display:flex}.modal::backdrop{background:#03060a9e}.modal-card{-webkit-overflow-scrolling:touch;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);width:min(460px,100%);max-height:100%;padding:16px;overflow-y:auto;box-shadow:0 16px 48px #00000073}@media (width>=600px){.modal-card{max-height:min(88vh,640px)}}.modal-head{justify-content:space-between;align-items:center;gap:10px;display:flex}.modal-title{font-size:1rem}.modal-close{font:inherit;color:var(--muted);border-radius:var(--radius-sm);cursor:pointer;background:0 0;border:none;padding:0 8px;font-size:1.5rem;line-height:1}.modal-close:hover{color:var(--text)}.profile-form{flex-direction:column;gap:12px;margin-top:10px;display:flex}.profile-note{color:var(--muted);margin:0;font-size:.8rem}.profile-grid{grid-template-columns:repeat(auto-fit,minmax(128px,1fr));gap:10px;display:grid}.field-row{text-transform:uppercase;letter-spacing:.6px;min-width:0;color:var(--muted);flex-direction:column;gap:4px;font-size:.72rem;font-weight:600;display:flex}.field-row>span{align-items:baseline;gap:4px;display:flex}.field-unit{text-transform:none;letter-spacing:0;font-weight:500}.field-hint{text-transform:none;letter-spacing:0;color:var(--muted);font-size:.68rem;font-weight:500}.profile-name{grid-column:1/-1}.profile-form input:not([type=checkbox]){font:inherit;width:100%;min-width:0;color:var(--text);background:var(--panel-2);border:1px solid var(--border);border-radius:var(--radius-sm);padding:8px 10px}.profile-form input::placeholder{color:var(--muted)}.profile-check{color:var(--text);cursor:pointer;align-items:center;gap:8px;font-size:.82rem;display:flex}.profile-check input{flex:none;width:16px;height:16px}.profile-flash{color:var(--ok);background:color-mix(in srgb, var(--ok) 12%, transparent);border:1px solid color-mix(in srgb, var(--ok) 40%, transparent);border-radius:var(--radius-sm);overflow-wrap:anywhere;padding:6px 9px;font-size:.8rem}.profile-actions{gap:8px;display:flex}.profile-actions .btn{width:100%}.profile-delete-link{font:inherit;color:var(--muted);cursor:pointer;text-underline-offset:2px;background:0 0;border:none;align-self:center;padding:2px 6px;font-size:.8rem;text-decoration:underline}.profile-delete-link:hover{color:var(--bad)}.import-btn{justify-content:center;align-items:center;display:inline-flex}.sessions-error{color:var(--bad);overflow-wrap:anywhere;margin-bottom:8px;font-size:.85rem}.sessions-empty{color:var(--muted);padding:6px 2px;font-size:.85rem}.sessions-list{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.session-row{background:var(--panel-2);border:1px solid var(--border);border-radius:var(--radius-sm);justify-content:space-between;align-items:center;gap:10px;min-width:0;padding:8px 10px;display:flex}.session-time{text-overflow:ellipsis;white-space:nowrap;font-size:.85rem;font-weight:600;overflow:hidden}.session-sub{align-items:center;gap:7px;display:inline-flex}.session-actions{flex:none;gap:6px;display:inline-flex}.session-actions .btn{padding:6px 10px;font-size:.82rem}.lang-switch{flex:none;gap:4px;display:inline-flex}.lang-flag{border-radius:var(--radius-sm);cursor:pointer;opacity:.4;filter:grayscale(.7);background:0 0;border:1px solid #0000;align-items:center;padding:4px 6px;font-size:1.15rem;line-height:1;transition:opacity .12s,filter .12s;display:inline-flex}.lang-flag:hover{opacity:.85;filter:grayscale(.2)}.lang-flag--active{opacity:1;filter:none;background:var(--panel-2);border-color:var(--border);cursor:default}.lang-flag:focus-visible{border-color:color-mix(in srgb, var(--accent) 55%, var(--border));box-shadow:0 0 0 3px color-mix(in srgb, var(--accent) 20%, transparent);outline:none}.tile-sub{align-items:center;gap:8px;margin-top:6px;font-size:.9rem;display:flex}.tile-avg{color:var(--muted);font-variant-numeric:tabular-nums}.trend{font-weight:800;line-height:1}.trend--up{color:var(--accent)}.trend--down,.trend--flat{color:var(--muted)}.dash-list{flex-direction:column;gap:6px;margin:10px 0;padding:0;list-style:none;display:flex}.dash-row{background:var(--panel-2);border:1px solid var(--border);border-radius:var(--radius-sm);align-items:center;gap:10px;padding:8px 10px;display:flex}.dash-row--hidden{opacity:.55}.dash-toggle{cursor:pointer;flex:auto;align-items:center;gap:8px;min-width:0;display:flex}.dash-name{font-weight:550}.dash-hero-tag{text-transform:uppercase;letter-spacing:.03em;color:var(--accent);background:color-mix(in srgb, var(--accent) 16%, transparent);border-radius:999px;padding:2px 7px;font-size:.66rem;font-weight:700}.dash-move{gap:4px;display:flex}.dash-arrow{padding:2px 9px;font-size:.95rem;line-height:1.2}.session-open{text-align:left;border-radius:var(--radius-sm);cursor:pointer;min-width:0;color:inherit;flex-direction:column;flex:auto;gap:3px;margin:-2px;padding:2px;text-decoration:none;display:flex}.session-open:hover{background:color-mix(in srgb, var(--accent) 8%, transparent)}.session-summary{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:.78rem;overflow:hidden}.stats{grid-template-columns:repeat(auto-fit,minmax(96px,1fr));gap:8px;margin:12px 0;display:grid}.stat{background:var(--panel-2);border:1px solid var(--border);border-radius:var(--radius-sm);flex-direction:column;gap:2px;padding:8px 10px;display:flex}.stat-label{text-transform:uppercase;letter-spacing:.5px;color:var(--muted);font-size:.68rem}.stat-value{font-variant-numeric:tabular-nums;font-size:1rem;font-weight:650}.review-graphs{flex-direction:column;gap:12px;margin-top:8px;display:flex}.hrzones{margin:4px 0 12px}.hrzones-head{justify-content:space-between;align-items:baseline;gap:8px;margin-bottom:6px;display:flex}.hrzones-title{text-transform:uppercase;letter-spacing:.6px;color:var(--muted);font-size:.72rem;font-weight:600}.hrzones-max{color:var(--muted);font-variant-numeric:tabular-nums;font-size:.72rem}.hrzones-bar{background:var(--panel-2);border:1px solid var(--border);border-radius:999px;height:14px;display:flex;overflow:hidden}.hrzones-seg{background:var(--zone-color);min-width:2px;height:100%}.hrzones-legend{flex-direction:column;gap:3px;margin:8px 0 0;padding:0;list-style:none;display:flex}.hrzones-item{grid-template-columns:12px 26px 1fr auto auto;align-items:center;gap:8px;font-size:.8rem;display:grid}.hrzones-swatch{background:var(--zone-color);border-radius:3px;width:12px;height:12px}.hrzones-z{font-variant-numeric:tabular-nums;color:var(--text);font-weight:700}.hrzones-name{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.hrzones-pct{font-variant-numeric:tabular-nums;color:var(--text);font-weight:650}.hrzones-time{font-variant-numeric:tabular-nums;color:var(--muted);text-align:right;min-width:52px}.app-content{min-width:0}.app-nav{flex-wrap:wrap;gap:6px;display:flex}.nav-link{border-radius:var(--radius-sm);color:var(--muted);border:1px solid #0000;padding:7px 14px;font-weight:600;text-decoration:none}.nav-link:hover{color:var(--text)}.nav-link--active{color:var(--text);background:var(--panel);border-color:var(--border)}.page{flex-direction:column;gap:14px;display:flex}.page-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.page-head-main{min-width:0}.page-title{font-size:clamp(1.1rem,4vw,1.5rem)}.settings-section{padding:14px}.settings-heading{margin-bottom:12px;font-size:1rem;font-weight:700}.page-actions{flex-wrap:wrap;gap:8px;display:flex}.back-link{color:var(--muted);margin-bottom:4px;font-size:.85rem;text-decoration:none;display:inline-block}.back-link:hover{color:var(--text)}.link{color:var(--accent);font-size:.85rem;font-weight:600;text-decoration:none}.link:hover{text-decoration:underline}.panel-head{justify-content:space-between;align-items:center;gap:10px;margin-bottom:8px;display:flex}.panel-h{color:var(--muted);text-transform:uppercase;letter-spacing:.6px;font-size:.9rem}.btn-row{flex-wrap:wrap;gap:8px;display:flex}
