:root{color-scheme:light dark;--bg: #f6f7f9;--panel: #ffffff;--panel-2: #f0f2f5;--line: #e2e5ea;--ink: #101418;--muted: #67707d;--faint: #9aa3af;--accent: #1f7a4d;--accent-ink: #ffffff;--accent-dim: #8cc4aa;--good: #1f7a4d;--warn: #a86b00;--bad: #b3261e;--idle: #67707d;--seq-empty: #eef1f4;--seq-1: #80c49d;--seq-2: #53af7e;--seq-3: #239863;--seq-4: #00814b;--seq-5: #00663a;--seq-track: #eceff3;--ambient-bg: #101418;--ambient-ink: #f6f7f9;--ambient-muted: #9aa3af;--font: ui-sans-serif, -apple-system, "Segoe UI", Roboto, sans-serif;--mono: ui-monospace, SFMono-Regular, Menlo, monospace;--t-hero: 4.5rem;--t-xl: 2.75rem;--t-lg: 1.75rem;--t-md: 1.375rem;--t-body: 1rem;--t-sm: .875rem;--t-label: .75rem;--radius: 16px;--radius-sm: 10px;--radius-pill: 999px;--tap: 48px;--gap: .75rem;--pad: 1rem;--maxw: 30rem;--shadow: 0 1px 2px rgb(16 20 24 / 6%), 0 8px 24px rgb(16 20 24 / 4%);--ease: cubic-bezier(.2, 0, 0, 1)}@media (prefers-color-scheme: dark){:root{--bg: #0b0e11;--panel: #14181d;--panel-2: #1b2027;--line: #232a33;--ink: #e8ecf1;--muted: #8e99a8;--faint: #626d7c;--accent: #3ddc91;--accent-ink: #04150c;--accent-dim: #1e6b48;--good: #3ddc91;--warn: #e0a33a;--bad: #ff6b5e;--idle: #8e99a8;--seq-empty: #191e24;--seq-1: #23593d;--seq-2: #237950;--seq-3: #269a64;--seq-4: #30bb7b;--seq-5: #44dd94;--seq-track: #1b2027;--ambient-bg: #000000;--ambient-ink: #e8ecf1;--ambient-muted: #8e99a8;--shadow: none}}*{box-sizing:border-box}html,body{margin:0;padding:0;background:var(--bg);color:var(--ink);font:var(--t-body) / 1.5 var(--font);-webkit-text-size-adjust:100%}body{overscroll-behavior-y:none}button,input,select{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}:focus:not(:focus-visible){outline:none}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}.tnum{font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1;letter-spacing:-.02em}#app{min-height:100dvh;display:flex;flex-direction:column}.shell{flex:1;width:100%;max-width:var(--maxw);margin-inline:auto;padding:max(.75rem,env(safe-area-inset-top)) var(--pad) 0;padding-bottom:calc(5.5rem + env(safe-area-inset-bottom))}.shell.has-stopbar{padding-bottom:calc(9.5rem + env(safe-area-inset-bottom))}.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:var(--pad);margin-bottom:var(--gap);box-shadow:var(--shadow)}.card.flush{padding:.75rem}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;min-height:var(--tap);padding:.6rem 1rem;border-radius:var(--radius-sm);border:1px solid var(--line);background:var(--panel);color:var(--ink);font-weight:550;cursor:pointer;transition:border-color .15s var(--ease),background .15s var(--ease)}.btn:hover:not(:disabled){border-color:var(--muted)}.btn:disabled{opacity:.4;cursor:not-allowed}.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.btn.danger{background:var(--bad);border-color:var(--bad);color:#fff}.btn.ghost{background:transparent;border-color:transparent;color:var(--muted)}.btn.ghost:hover:not(:disabled){color:var(--ink);border-color:var(--line)}.btn.block{width:100%}.btn.lg{min-height:60px;font-size:1.05rem}.banner{display:flex;align-items:flex-start;gap:.5rem;padding:.75rem;margin-bottom:var(--gap);border:1px solid var(--warn);border-radius:var(--radius-sm);background:color-mix(in srgb,var(--warn) 10%,var(--panel))}.banner-body{flex:1;min-width:0}.banner strong{display:block;font-size:var(--t-sm)}.banner p{margin:.2rem 0 0;font-size:var(--t-sm);color:var(--muted)}.banner-close{flex:none;min-height:32px;padding:0 .4rem;margin:-.15rem -.25rem 0 0;color:var(--muted)}.topbar{display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:.25rem 0 .75rem}.chip{display:inline-flex;align-items:center;gap:.5rem;min-height:40px;padding:.35rem .75rem .35rem .6rem;border:1px solid var(--line);border-radius:var(--radius-pill);background:var(--panel);cursor:pointer;font-size:var(--t-sm);max-width:68vw}.chip .name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted)}.dot{width:9px;height:9px;border-radius:50%;flex:none;background:var(--idle)}.dot.good{background:var(--good)}.dot.warn{background:var(--warn)}.dot.bad{background:var(--bad)}.dot.idle{background:var(--idle)}@keyframes pulse{0%,to{opacity:1}50%{opacity:.35}}.dot.pulsing{animation:pulse 1.6s ease-in-out infinite}.hero{display:block;width:100%;border:0;background:transparent;color:inherit;text-align:center;padding:.5rem 0 .25rem;cursor:pointer;border-radius:var(--radius)}.hero .value{font-size:var(--t-hero);font-weight:650;line-height:1;display:block}.hero .unit{display:block;margin-top:.6rem;font-size:var(--t-label);text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.hero .sub{display:block;margin-top:.35rem;font-size:var(--t-sm);color:var(--muted)}.hero-hint{text-align:center;font-size:.7rem;color:var(--faint);margin-top:.15rem}@media (max-width: 22rem){.hero .value{font-size:3.5rem}}.meter{margin-top:.9rem}.meter-head{display:flex;justify-content:space-between;align-items:baseline;font-size:var(--t-label);text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin-bottom:.4rem}.meter-track{height:8px;border-radius:var(--radius-pill);background:var(--seq-track);overflow:hidden}.meter-fill{height:100%;border-radius:var(--radius-pill);background:var(--accent);transition:width .4s var(--ease)}.meter-goal-btn{background:none;border:0;padding:0;color:var(--muted);font:inherit;font-size:var(--t-label);text-transform:uppercase;letter-spacing:.06em;cursor:pointer;text-decoration:underline dotted;text-underline-offset:3px}.tiles{display:grid;gap:.5rem;margin-top:1rem}.tiles[data-n="1"]{grid-template-columns:1fr}.tiles[data-n="2"]{grid-template-columns:repeat(2,1fr)}.tiles[data-n="3"]{grid-template-columns:repeat(3,1fr)}.tile{background:var(--panel-2);border-radius:var(--radius-sm);padding:.6rem .5rem;text-align:center;min-width:0}.tile .v{font-size:var(--t-md);font-weight:600;line-height:1.2;display:block;overflow:hidden;text-overflow:ellipsis}.tile .k{font-size:var(--t-label);text-transform:uppercase;letter-spacing:.06em;color:var(--muted);display:block;margin-top:.15rem}.unverified{color:var(--warn);font-size:.7em;vertical-align:super;margin-left:1px}.speed-row{display:flex;align-items:center;justify-content:space-between;gap:.75rem}.speed-btn{width:72px;height:72px;flex:none;border-radius:50%;border:1px solid var(--line);background:var(--panel-2);color:var(--ink);font-size:1.75rem;line-height:1;cursor:pointer;display:grid;place-items:center}.speed-btn:hover:not(:disabled){border-color:var(--muted)}.speed-btn:active:not(:disabled){transform:scale(.96)}.speed-btn:disabled{opacity:.35;cursor:not-allowed}.speed-readout{text-align:center;flex:1;min-width:0}.speed-readout .v{font-size:var(--t-xl);font-weight:650;line-height:1;display:block}.speed-readout .k{display:block;margin-top:.3rem;font-size:var(--t-label);text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.speed-readout .actual{display:block;margin-top:.2rem;font-size:var(--t-sm);color:var(--accent)}.presets{display:grid;grid-template-columns:repeat(3,1fr);gap:.5rem;margin-top:.9rem}.preset{min-height:var(--tap);border-radius:var(--radius-pill);border:1px solid var(--line);background:var(--panel-2);color:var(--ink);cursor:pointer;padding:.4rem .5rem;line-height:1.15}.preset[aria-pressed=true]{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 14%,transparent)}.preset:disabled{opacity:.4;cursor:not-allowed}.preset .p-v{display:block;font-weight:600;font-size:1.05rem}.preset .p-k{display:block;font-size:.65rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.mode-row{display:flex;gap:.5rem;align-items:center;margin-top:.9rem;flex-wrap:wrap}.mode-row .btn{flex:1;min-height:44px;padding:.4rem .6rem}.hint{font-size:var(--t-sm);color:var(--muted);margin:.75rem 0 0}.hint:empty{margin:0}.hint.err{color:var(--bad)}.hint.ok{color:var(--accent)}.stopbar{position:fixed;left:0;right:0;bottom:calc(4rem + env(safe-area-inset-bottom));z-index:40;padding:0 var(--pad);pointer-events:none}.stopbar-inner{max-width:var(--maxw);margin-inline:auto;pointer-events:auto}.stopbar .btn{width:100%;min-height:64px;font-size:1.1rem;box-shadow:0 6px 24px #00000047}.tabbar{position:fixed;left:0;right:0;bottom:0;z-index:50;display:flex;background:color-mix(in srgb,var(--panel) 92%,transparent);backdrop-filter:blur(12px);border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom)}.tabbar a{flex:1;min-height:4rem;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.2rem;text-decoration:none;color:var(--muted);font-size:.7rem;text-transform:uppercase;letter-spacing:.06em}.tabbar a[aria-current=page]{color:var(--accent)}.tabbar svg{width:22px;height:22px}.sheet-backdrop{position:fixed;inset:0;background:#00000073;z-index:60;display:flex;align-items:flex-end;justify-content:center}.sheet{background:var(--panel);border:1px solid var(--line);border-bottom:0;border-radius:var(--radius) var(--radius) 0 0;width:100%;max-width:var(--maxw);padding:var(--pad);padding-bottom:calc(var(--pad) + env(safe-area-inset-bottom));max-height:85dvh;overflow-y:auto;animation:sheet-in .22s var(--ease)}@keyframes sheet-in{0%{transform:translateY(16px);opacity:0}}.sheet h2{font-size:1.05rem;margin:0 0 .75rem}.sheet-stop{margin-bottom:1rem}.sheet-stop .btn{min-height:64px;font-size:1.1rem}dl.meta{margin:0 0 1rem;display:grid;grid-template-columns:auto 1fr;gap:.4rem 1rem;font-size:var(--t-sm)}dl.meta dt{color:var(--muted)}dl.meta dd{margin:0;word-break:break-word;text-align:right}details.logbox{margin-bottom:var(--gap)}details.logbox summary{cursor:pointer;color:var(--muted);font-size:var(--t-sm);padding:.5rem 0;list-style:none}details.logbox summary::-webkit-details-marker{display:none}details.logbox summary:before{content:"▸ "}details.logbox[open] summary:before{content:"▾ "}.log{font:12px / 1.45 var(--mono);background:var(--panel);border:1px solid var(--line);border-radius:var(--radius-sm);padding:.6rem;height:13rem;overflow-y:auto;white-space:pre-wrap;word-break:break-all}.log .err{color:var(--bad)}.log .ok{color:var(--accent)}h1.page{font-size:1.25rem;margin:0 0 .15rem;letter-spacing:-.01em}.page-sub{color:var(--muted);font-size:var(--t-sm);margin:0 0 1rem}.section-title{font-size:var(--t-label);text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:1.25rem 0 .5rem}.empty{text-align:center;color:var(--muted);padding:2rem 1rem;font-size:var(--t-sm)}.note{font-size:var(--t-sm);color:var(--muted)}a{color:var(--accent)}.disclaimer{margin-top:2rem;padding-top:.9rem;border-top:1px solid var(--line);font-size:var(--t-label);line-height:1.45;color:var(--muted);text-wrap:pretty}.disclaimer p{margin:0}.disclaimer sup{font-size:.7em;vertical-align:super;line-height:0}.stat-row{display:grid;grid-template-columns:repeat(3,1fr);gap:.5rem}.stat{text-align:center}.stat .v{font-size:var(--t-lg);font-weight:650;display:block;line-height:1.15}.stat .k{font-size:var(--t-label);text-transform:uppercase;letter-spacing:.06em;color:var(--muted);display:block;margin-top:.15rem}.session-item{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.7rem 0;border-bottom:1px solid var(--line)}.session-item:last-child{border-bottom:0}.session-item .when{font-size:var(--t-sm);color:var(--muted)}.session-item .dur{font-weight:600}.data-actions{display:flex;flex-wrap:wrap;gap:.5rem}.data-actions .btn{flex:1 1 8.5rem}.ambient{position:fixed;inset:0;z-index:100;background:var(--ambient-bg);color:var(--ambient-ink);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1rem;padding:env(safe-area-inset-top) 1rem calc(1rem + env(safe-area-inset-bottom))}.ambient .a-value{font-size:clamp(4.5rem,26vw,12rem);font-weight:650;line-height:.95}.ambient .a-unit{font-size:var(--t-label);text-transform:uppercase;letter-spacing:.14em;color:var(--ambient-muted)}.ambient .a-secondary{display:flex;gap:2rem;color:var(--ambient-muted);font-size:1.1rem}.ambient .a-actions{position:absolute;left:1rem;right:1rem;bottom:calc(1.25rem + env(safe-area-inset-bottom));display:flex;gap:.75rem}.ambient .a-actions .btn{flex:1}.ambient .a-actions .btn.ghost{color:var(--ambient-muted)}.ambient .a-actions .btn.ghost:hover:not(:disabled){color:var(--ambient-ink);border-color:var(--ambient-muted)}.chart{width:100%;display:block;overflow:visible;touch-action:pan-y}.chart .axis{stroke:var(--line);stroke-width:1}.chart .axis-text{fill:var(--muted);font-size:10px;font-family:var(--font)}.chart .goal-line{stroke:var(--muted);stroke-width:1;stroke-dasharray:3 4;opacity:.7}.chart .bar{fill:var(--accent-dim);transition:fill .15s var(--ease)}.chart .bar.met,.chart .bar.hovered{fill:var(--accent)}.chart .crosshair{stroke:var(--muted);stroke-width:1;stroke-dasharray:3 3}.chart-wrap{position:relative}.chart-tip{position:absolute;transform:translate(-50%,-100%);background:var(--ink);color:var(--bg);font-size:.75rem;padding:.3rem .5rem;border-radius:6px;pointer-events:none;white-space:nowrap;z-index:5}.heat{display:grid;grid-auto-flow:column;grid-template-rows:repeat(7,1fr);gap:3px}.heat i{display:block;aspect-ratio:1;border-radius:3px;background:var(--seq-empty)}.heat-legend{display:flex;align-items:center;gap:4px;justify-content:flex-end;margin-top:.5rem;font-size:.7rem;color:var(--muted)}.heat-legend i{width:11px;height:11px;border-radius:3px;display:block}.table-toggle{background:none;border:0;color:var(--muted);font-size:var(--t-sm);cursor:pointer;padding:.4rem 0;text-decoration:underline dotted;text-underline-offset:3px}table.data{width:100%;border-collapse:collapse;font-size:var(--t-sm)}table.data th,table.data td{text-align:right;padding:.35rem .5rem;border-bottom:1px solid var(--line)}table.data th:first-child,table.data td:first-child{text-align:left}table.data th{color:var(--muted);font-weight:500}.scroll-x{overflow-x:auto}
