@oh-my-pi/omp-stats 18.6.1 → 18.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,13 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
+ ## [18.7.0] - 2026-10-06
6
+
7
+ ### Fixed
8
+
9
+ - Fixed Ultrafast turns not being counted toward the Premium Requests statistic.
10
+ - Fixed the desktop stats dashboard menu button so it no longer appears unnecessarily or dims the page without opening navigation.
11
+
5
12
  ## [18.6.0] - 2026-10-03
6
13
 
7
14
  ### Fixed
@@ -1 +1 @@
1
- :root,[data-theme=dark]{--buncss-light: ;--buncss-dark:initial;color-scheme:dark;--bg:#000;--panel:#09090a;--card:#0e0e10;--raised:#17171a;--overlay:#0e0e10c7;--hover:#ffffff09;--press:#ffffff0f;--selected:#ffffff13;--line-1:#ffffff0f;--line-2:#ffffff17;--line-3:#ffffff24;--line-4:#ffffff38;--ink-1:#ededef;--ink-2:#a0a0a8;--ink-3:#6c6c74;--ink-4:#46464c;--ink-inverse:#0a0a0b;--accent-a:#5ad8e6;--accent-b:#ed4abf;--accent:#f068c8;--accent-soft:#ed4abf24;--accent-line:#ed4abf59;--accent-gradient:linear-gradient(100deg,var(--accent-a),var(--accent-b));--focus:#5ad8e6;--ok:#3ecf8e;--ok-soft:#3ecf8e21;--warn:#f5a524;--warn-soft:#f5a52421;--bad:#ff6166;--bad-soft:#ff616621;--live:#3ecf8e;--chart-grid:#ffffff0e;--chart-axis:#5c5c64;--chart-cursor:#ffffff0d;--chart-primary:#5ad8e6;--chart-secondary:#ed4abf;--shadow-1:0 1px 0 #ffffff08 inset,0 1px 2px #00000080;--shadow-2:0 8px 24px #0000008c,0 1px 0 #ffffff0d inset;--shadow-3:0 24px 64px #000000b3,0 1px 0 #ffffff0f inset}[data-theme=light]{--buncss-light:initial;--buncss-dark: ;color-scheme:light;--bg:#f2f2f3;--panel:#fff;--card:#fff;--raised:#f6f6f7;--overlay:#fffc;--hover:#00000008;--press:#0000000d;--selected:#0000000f;--line-1:#0000000f;--line-2:#00000017;--line-3:#00000024;--line-4:#00000038;--ink-1:#151518;--ink-2:#5a5a63;--ink-3:#8b8b94;--ink-4:#b9b9c0;--ink-inverse:#fff;--accent-a:#1fa9bb;--accent-b:#d42ea3;--accent:#c42596;--accent-soft:#d42ea31a;--accent-line:#d42ea34d;--focus:#1fa9bb;--ok:#12a36b;--ok-soft:#12a36b1c;--warn:#c77c02;--warn-soft:#c77c021c;--bad:#dc3a40;--bad-soft:#dc3a401a;--live:#12a36b;--chart-grid:#0000000f;--chart-axis:#9a9aa2;--chart-cursor:#0000000a;--chart-primary:#1fa9bb;--chart-secondary:#d42ea3;--shadow-1:0 1px 2px #0000000a;--shadow-2:0 8px 24px #0000001a;--shadow-3:0 24px 64px #00000029}:root{--font-sans:"Inter var","Inter",ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;--font-mono:ui-monospace,"SF Mono","JetBrains Mono","Fira Code",Menlo,Consolas,monospace;--r-chip:6px;--r-control:8px;--r-card:12px;--r-panel:16px;--r-pill:999px;--topbar-h:52px;--sidebar-w:224px;--gutter:28px;--ease:cubic-bezier(.2,0,0,1);--ease-out:cubic-bezier(.16,1,.3,1);--dur-1:.12s;--dur-2:.2s;--dur-3:.36s;--stagger:40ms}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;padding:0}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;background:var(--bg)}body{font-family:var(--font-sans);color:var(--ink-1);background:var(--bg);font-feature-settings:"cv11","ss01";min-height:100dvh;font-size:13.5px;line-height:1.5}h1,h2,h3,h4,p,ul,ol,figure{margin:0;padding:0}ul,ol{list-style:none}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer;background:0 0;border:0;padding:0}button:disabled{cursor:default}a{color:inherit;text-decoration:none}svg{display:block;flex-shrink:0}table{border-collapse:collapse;border-spacing:0}code,pre,kbd{font-family:var(--font-mono)}::selection{background:var(--accent-soft);color:var(--ink-1)}:focus-visible{outline:2px solid var(--focus);outline-offset:2px;border-radius:4px}[hidden]{display:none!important}*{scrollbar-width:thin;scrollbar-color:var(--line-3)transparent}.mono{font-family:var(--font-mono);font-size:.93em}.num{font-family:var(--font-mono);font-variant-numeric:tabular-nums;letter-spacing:-.01em;font-size:.93em}.muted{color:var(--ink-2)}.dim{color:var(--ink-3)}.micro{color:var(--ink-3);font-size:12px;font-weight:500;line-height:1.4}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.tone-ok{color:var(--ok)}.tone-warn{color:var(--warn)}.tone-bad{color:var(--bad)}.tone-accent{color:var(--accent)}.gradient-text{background:var(--accent-gradient);color:#0000;-webkit-background-clip:text;background-clip:text}@keyframes rise{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}@keyframes fade{0%{opacity:0}to{opacity:1}}@keyframes ping{0%{transform:scale(1);opacity:.7}80%,to{transform:scale(2.6);opacity:0}}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@keyframes indeterminate{0%{transform:translate(-100%)}to{transform:translate(250%)}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes flash{0%{color:var(--accent-a)}to{color:inherit}}.rise{animation:rise var(--dur-3)var(--ease-out)backwards;animation-delay:calc(var(--i,0)*var(--stagger))}.spin{animation:.9s linear infinite spin}@media (prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:1ms!important;animation-delay:0s!important;transition-duration:1ms!important}}.shell-ambient{position:fixed;pointer-events:none;z-index:0;background:radial-gradient(60rem 28rem at 12% -10%,color-mix(in srgb,var(--accent-a)7%,transparent),transparent 70%),radial-gradient(50rem 26rem at 95% -12%,color-mix(in srgb,var(--accent-b)6%,transparent),transparent 70%);inset:0}.topbar{position:fixed;height:var(--topbar-h);z-index:40;display:flex;background:color-mix(in srgb,var(--bg)72%,transparent);backdrop-filter:blur(14px)saturate(160%);-webkit-backdrop-filter:blur(14px)saturate(160%);transition:border-color var(--dur-2)var(--ease);border-bottom:1px solid #0000;align-items: center;gap:12px;padding:0 14px 0 18px;top:0;left:0;right:0}.topbar[data-scrolled=true]{border-bottom-color:var(--line-1)}.topbar-brand{display:flex;min-width:calc(var(--sidebar-w) - 18px);letter-spacing:-.01em;align-items: center;gap:10px;font-weight:600}.topbar-mark{display:block;flex:none}.topbar-slash{color:var(--ink-4);font-size:18px;font-weight:300}.topbar-title{color:var(--ink-1);white-space:nowrap;font-weight:500}.topbar-spacer{flex:1}.topbar-actions{display:flex;align-items: center;gap:8px}.topbar-menu{display:none}.topbar-progress{position:absolute;overflow:hidden;pointer-events:none;height:2px;bottom:-1px;left:0;right:0}.topbar-progress-fill{background:var(--accent-gradient);transition:width var(--dur-3)var(--ease);box-shadow:0 0 12px var(--accent-b);height:100%}.topbar-progress-fill[data-indeterminate=true]{animation:indeterminate 1.2s var(--ease)infinite;width:40%!important}.sidebar{position:fixed;top:var(--topbar-h);width:var(--sidebar-w);overflow-y:auto;scrollbar-width:none;display:flex;z-index:30;flex-direction:column;gap:18px;padding:8px 10px 14px;bottom:0;left:0}.sidebar::-webkit-scrollbar{display:none}.nav-group{display:flex;flex-direction:column;gap:1px}.nav-heading{color:var(--ink-3);padding:0 10px 6px;font-size:12px;font-weight:500}.nav-row{display:flex;border-radius:var(--r-control);color:var(--ink-2);text-align:left;transition:background var(--dur-1)var(--ease),color var(--dur-1)var(--ease);align-items: center;gap:10px;width:100%;height:32px;padding:0 10px;font-weight:450}.nav-row:hover{background:var(--hover);color:var(--ink-1)}.nav-row:active{transform:scale(.99)}.nav-row[data-active=true]{background:var(--selected);color:var(--ink-1)}.nav-row svg{color:var(--ink-3);transition:color var(--dur-1)var(--ease)}.nav-row[data-active=true] svg{color:var(--accent)}.nav-row-label{flex:1}.nav-row kbd{color:var(--ink-4);opacity:0;transition:opacity var(--dur-1)var(--ease);font-size:10.5px}.nav-row:hover kbd{opacity:1}.sidebar-foot{border-radius:var(--r-card);border:1px solid var(--line-1);background:var(--card);display:flex;flex-direction:column;gap:6px;margin-top:auto;padding:10px}.shell-panel{position:relative;z-index:1;margin:var(--topbar-h)8px 8px var(--sidebar-w);min-height:calc(100dvh - var(--topbar-h) - 8px);background:var(--panel);border-radius:var(--r-panel);border:1px solid var(--line-1);box-shadow:var(--shadow-1);overflow:clip}.shell-content{padding:26px var(--gutter)48px;max-width:1560px;margin:0 auto}.drawer-scrim{position:fixed;z-index:60;animation:fade var(--dur-2)var(--ease)both;background:#00000080;inset:0}@media (max-width:1360px){:root{--sidebar-w:204px;--gutter:22px}}@media (max-width:900px){:root{--gutter:16px}.topbar-brand{min-width:0}.topbar-menu{display:inline-flex}.sidebar{z-index:70;background:var(--overlay);backdrop-filter:blur(18px)saturate(160%);-webkit-backdrop-filter:blur(18px)saturate(160%);border-right:1px solid var(--line-2);transition:transform var(--dur-3)var(--ease-out);width:260px;padding-top:16px;top:0;transform:translate(-102%)}.sidebar[data-open=true]{box-shadow:var(--shadow-3);transform:none}.shell-panel{margin-left:8px}.topbar-hide-narrow{display:none!important}}.page{display:flex;flex-direction:column;gap:20px}.page-header{display:flex;flex-wrap:wrap;justify-content:space-between;align-items: flex-end;gap:16px;padding-bottom:4px}.page-title{letter-spacing:-.02em;font-size:22px;font-weight:600;line-height:1.2}.page-description{color:var(--ink-2);max-width:72ch;margin-top:4px}.page-actions{display:flex;flex-wrap:wrap;align-items: center;gap:8px}.grid{display:grid;gap:16px}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-main-side{grid-template-columns:minmax(0,2fr)minmax(0,1fr)}@media (max-width:1100px){.grid-2,.grid-3,.grid-main-side{grid-template-columns:minmax(0,1fr)}}.row{display:flex;align-items: center;gap:8px;min-width:0}.stack{display:flex;flex-direction:column;gap:4px;min-width:0}.card{position:relative;border-radius:var(--r-card);background:linear-gradient(var(--card),var(--card))padding-box,linear-gradient(180deg,var(--line-3),var(--line-1)40%)border-box;box-shadow:var(--shadow-1);display:flex;border:1px solid #0000;flex-direction:column;min-width:0}.card-header{display:flex;flex-wrap:wrap;justify-content:space-between;align-items: flex-start;gap:12px;padding:14px 16px 0}.card-titles{display:flex;flex-direction:column;gap:2px;min-width:0}.card-title{letter-spacing:-.005em;display:flex;align-items: center;gap:8px;font-size:14px;font-weight:550}.card-description{color:var(--ink-3);font-size:12.5px}.card-actions{display:flex;flex-wrap:wrap;align-items: center;gap:6px}.card-body{flex:1;min-width:0;padding:14px 16px 16px}.card-body[data-flush=true]{padding:10px 0 0}.card-footer{border-top:1px solid var(--line-1);color:var(--ink-3);display:flex;justify-content:space-between;align-items: center;gap:8px;padding:10px 16px;font-size:12.5px}.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(var(--stat-min,170px),1fr));border-radius:var(--r-card);background:linear-gradient(var(--card),var(--card))padding-box,linear-gradient(180deg,var(--line-3),var(--line-1)40%)border-box;box-shadow:var(--shadow-1);overflow:hidden;border:1px solid #0000}.stat{position:relative;display:flex;box-shadow:1px 0 0 var(--line-1),0 1px 0 var(--line-1);flex-direction:column;gap:6px;min-width:0;padding:14px 16px 12px}.stat-label{color:var(--ink-2);display:flex;align-items: center;gap:6px;font-size:12.5px;font-weight:500}.stat-value{letter-spacing:-.025em;font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:24px;font-weight:550;line-height:1.15}.stat[data-size=sm] .stat-value{font-size:18px}.stat-value[data-flash=true]{animation:flash .9s var(--ease)both}.stat-foot{display:flex;color:var(--ink-3);align-items: center;gap:8px;min-height:18px;font-size:12px}.stat-spark{height:28px;margin-top:2px}.delta{display:inline-flex;font-family:var(--font-mono);border-radius:var(--r-pill);background:var(--raised);color:var(--ink-2);align-items: center;gap:2px;padding:1px 6px;font-size:11.5px;font-weight:500}.delta[data-tone=good]{color:var(--ok);background:var(--ok-soft)}.delta[data-tone=bad]{color:var(--bad);background:var(--bad-soft)}.btn{display:inline-flex;border-radius:var(--r-control);white-space:nowrap;border:1px solid var(--line-2);background:var(--raised);color:var(--ink-1);transition:background var(--dur-1)var(--ease),border-color var(--dur-1)var(--ease),transform var(--dur-1)var(--ease);justify-content:center;align-items: center;gap:6px;height:30px;padding:0 12px;font-size:13px;font-weight:500}.btn:hover:not(:disabled){border-color:var(--line-3);background:color-mix(in srgb,var(--raised)80%,var(--ink-1)6%)}.btn:active:not(:disabled){transform:scale(.97)}.btn:disabled{opacity:.5}.btn[data-variant=primary]{background:var(--ink-1);color:var(--ink-inverse);border-color:#0000}.btn[data-variant=primary]:hover:not(:disabled){background:color-mix(in srgb,var(--ink-1)88%,transparent)}.btn[data-variant=accent]{background:var(--accent-gradient);color:#fff;background-origin:border-box;border-color:#0000}.btn[data-variant=ghost]{color:var(--ink-2);background:0 0;border-color:#0000}.btn[data-variant=ghost]:hover:not(:disabled){background:var(--hover);color:var(--ink-1)}.btn[data-variant=danger]{background:var(--bad-soft);color:var(--bad);border-color:color-mix(in srgb,var(--bad)30%,transparent)}.btn[data-size=sm]{height:26px;padding:0 9px;font-size:12.5px}.btn[data-icon=true]{width:30px;padding:0}.btn[data-icon=true][data-size=sm]{width:26px}.input{border-radius:var(--r-control);border:1px solid var(--line-2);background:var(--card);color:var(--ink-1);transition:border-color var(--dur-1)var(--ease);min-width:0;height:30px;padding:0 10px;font-size:13px}.input::placeholder{color:var(--ink-3)}.input:hover{border-color:var(--line-3)}.input:focus{outline:none;border-color:var(--focus);box-shadow:0 0 0 3px color-mix(in srgb,var(--focus)18%,transparent)}.search{position:relative;display:inline-flex;align-items: center}.search svg{position:absolute;color:var(--ink-3);pointer-events:none;left:9px}.search .input{width:240px;padding-left:30px}select.input{appearance:none;cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23888' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-position:right 9px center;background-repeat:no-repeat;padding-right:28px}.check{display:inline-flex;color:var(--ink-2);cursor:pointer;user-select:none;align-items: center;gap:6px;font-size:12.5px}.check input{accent-color:var(--accent)}.segmented{position:relative;display:inline-flex;border-radius:var(--r-control);background:var(--card);border:1px solid var(--line-2);isolation:isolate;align-items: center;gap:0;padding:2px}.segmented-thumb{position:absolute;background:var(--raised);border:1px solid var(--line-3);transition:left var(--dur-2)var(--ease-out),width var(--dur-2)var(--ease-out);z-index:-1;border-radius:6px;top:2px;bottom:2px;box-shadow:0 1px 2px #00000040}.segmented-option{color:var(--ink-3);white-space:nowrap;display:inline-flex;transition:color var(--dur-1)var(--ease);border-radius:6px;align-items: center;gap:6px;height:24px;padding:0 10px;font-size:12.5px;font-weight:500}.segmented-option:hover,.segmented-option[data-active=true]{color:var(--ink-1)}.segmented[data-size=sm] .segmented-option{height:22px;padding:0 8px;font-size:12px}.tabs{display:flex;border-bottom:1px solid var(--line-1);align-items: center;gap:16px;padding:0 16px}.tab{position:relative;color:var(--ink-3);display:inline-flex;align-items: center;gap:6px;height:36px;font-size:13px;font-weight:500}.tab:hover,.tab[data-active=true]{color:var(--ink-1)}.tab[data-active=true]:after{content:"";position:absolute;background:var(--accent-gradient);border-radius:2px;height:2px;bottom:-1px;left:0;right:0}.kbd{display:inline-flex;border:1px solid var(--line-2);background:var(--card);font-family:var(--font-mono);color:var(--ink-3);border-radius:5px;justify-content:center;align-items: center;min-width:18px;height:18px;padding:0 4px;font-size:10.5px}.badge{display:inline-flex;border-radius:var(--r-pill);white-space:nowrap;background:var(--raised);color:var(--ink-2);border:1px solid var(--line-1);align-items: center;gap:5px;height:20px;padding:0 8px;font-size:11.5px;font-weight:500}.badge[data-tone=ok]{background:var(--ok-soft);color:var(--ok);border-color:#0000}.badge[data-tone=warn]{background:var(--warn-soft);color:var(--warn);border-color:#0000}.badge[data-tone=bad]{background:var(--bad-soft);color:var(--bad);border-color:#0000}.badge[data-tone=accent]{background:var(--accent-soft);color:var(--accent);border-color:#0000}.badge[data-mono=true]{font-family:var(--font-mono);font-size:11px}.dot{position:relative;display:inline-block;background:var(--ink-3);border-radius:50%;flex-shrink:0;width:8px;height:8px}.dot[data-tone=ok],.dot[data-tone=live]{background:var(--live)}.dot[data-tone=warn]{background:var(--warn)}.dot[data-tone=bad]{background:var(--bad)}.dot[data-tone=accent]{background:var(--accent)}.dot[data-pulse=true]:after{content:"";position:absolute;background:inherit;animation:ping 1.6s var(--ease-out)infinite;border-radius:50%;inset:0}.swatch{display:inline-block;border-radius:2px;flex-shrink:0;width:8px;height:8px}.table-wrap{overflow-x:auto;min-width:0}.table{width:100%;font-size:13px}.table th{position:sticky;z-index:1;text-align:left;color:var(--ink-3);white-space:nowrap;background:var(--card);border-bottom:1px solid var(--line-1);user-select:none;padding:8px 12px;font-size:12px;font-weight:500;top:0}.table th:first-child,.table td:first-child{padding-left:16px}.table th:last-child,.table td:last-child{padding-right:16px}.table th[data-sortable=true]{cursor:pointer}.table th[data-sortable=true]:hover,.table th[data-sorted]{color:var(--ink-1)}.table th .sort-arrow{display:inline-block;opacity:.8;vertical-align:-1px;margin-left:4px}.table td{border-bottom:1px solid var(--line-1);vertical-align:middle;white-space:nowrap;padding:9px 12px}.table tbody tr:last-child td{border-bottom:0}.table tbody tr{transition:background var(--dur-1)var(--ease)}.table tbody tr:hover{background:var(--hover)}.table tbody tr[data-clickable=true]{cursor:pointer}.table tbody tr[data-selected=true]{background:var(--selected)}.table [data-align=right]{text-align:right}.table [data-align=center]{text-align:center}.table td[data-wrap=true]{white-space:normal}.table[data-dense=true] td{padding-top:6px;padding-bottom:6px}.table-more{display:flex;border-top:1px solid var(--line-1);justify-content:center;align-items: center;gap:8px;padding:10px}.cell-primary{color:var(--ink-1);font-weight:500}.cell-secondary{color:var(--ink-3);font-size:12px}.meter{position:relative;background:var(--line-1);overflow:hidden;border-radius:2px;min-width:48px;height:4px}.meter-fill{position:absolute;background:var(--chart-primary);transition:width var(--dur-3)var(--ease-out);border-radius:2px;inset:0 auto 0 0}.meter-cell{display:flex;justify-content:flex-end;align-items: center;gap:10px}.meter-cell .meter{width:64px}.empty{display:flex;text-align:center;color:var(--ink-3);flex-direction:column;justify-content:center;align-items: center;gap:6px;min-height:140px;padding:40px 16px}.empty svg{color:var(--ink-4);margin-bottom:4px}.empty-title{color:var(--ink-2);font-weight:500}.empty-hint{max-width:44ch;font-size:12.5px}.error-state{display:flex;border-radius:var(--r-control);background:var(--bad-soft);color:var(--bad);align-items: center;gap:12px;margin:12px 16px;padding:12px 14px;font-size:13px}.error-state-message{overflow-wrap:anywhere;flex:1;min-width:0}.skeleton{background:linear-gradient(90deg,var(--line-1)0%,var(--line-2)50%,var(--line-1)100%);animation:1.6s linear infinite shimmer;background-size:200% 100%;border-radius:6px}[data-stale=true]{opacity:.55;transition:opacity var(--dur-2)var(--ease)}[data-stale=false]{transition:opacity var(--dur-2)var(--ease)}.drawer{position:fixed;width:min(var(--drawer-w,560px),calc(100vw - 16px));z-index:61;display:flex;border-radius:var(--r-panel);border:1px solid var(--line-2);background:var(--overlay);backdrop-filter:blur(20px)saturate(170%);-webkit-backdrop-filter:blur(20px)saturate(170%);box-shadow:var(--shadow-3);animation:drawer-in var(--dur-3)var(--ease-out)both;overflow:hidden;flex-direction:column;top:8px;bottom:8px;right:8px}@keyframes drawer-in{0%{transform:translate(24px);opacity:0}to{transform:none;opacity:1}}.drawer-header{display:flex;border-bottom:1px solid var(--line-1);align-items: flex-start;gap:12px;padding:16px 16px 12px 20px}.drawer-titles{overflow-wrap:anywhere;flex:1;min-width:0}.drawer-title{letter-spacing:-.01em;font-size:15px;font-weight:600}.drawer-subtitle{color:var(--ink-3);margin-top:2px;font-size:12.5px}.drawer-body{overflow-y:auto;display:flex;flex-direction:column;flex:1;gap:18px;padding:16px 20px 24px}.kv{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:12px 16px}.kv-item{display:flex;flex-direction:column;gap:2px;min-width:0}.kv-key{color:var(--ink-3);font-size:12px}.kv-value{font-family:var(--font-mono);color:var(--ink-1);overflow-wrap:anywhere;font-size:12.5px}.section-label{color:var(--ink-3);margin-bottom:8px;font-size:12px;font-weight:500}.code-block{border-radius:var(--r-control);border:1px solid var(--line-1);background:var(--card);font-family:var(--font-mono);color:var(--ink-2);overflow:auto;white-space:pre-wrap;overflow-wrap:anywhere;max-height:480px;margin:0;padding:12px 14px;font-size:12px;line-height:1.55}.live-chip{display:inline-flex;border-radius:var(--r-pill);border:1px solid var(--line-2);background:var(--card);color:var(--ink-2);white-space:nowrap;transition:border-color var(--dur-1)var(--ease);align-items: center;gap:8px;height:30px;padding:0 10px 0 11px;font-size:12.5px}.live-chip:hover{border-color:var(--line-3);color:var(--ink-1)}.live-chip-count{font-family:var(--font-mono);color:var(--ink-3);font-size:11.5px}.chart{position:relative;user-select:none;width:100%;min-width:0}.chart svg{overflow:visible}.chart-axis text{fill:var(--chart-axis);font-family:var(--font-mono);font-size:10.5px}.chart-grid line{stroke:var(--chart-grid);shape-rendering:crispEdges}.chart-baseline{stroke:var(--line-3);shape-rendering:crispEdges}.chart-cursor{fill:var(--chart-cursor)}.chart-bar{shape-rendering:crispEdges;transition:opacity var(--dur-1)var(--ease)}.chart[data-hovering=true] .chart-bar[data-hover=false]{opacity:.45}.chart-line{fill:none;stroke-width:1.5;stroke-linejoin:round;stroke-linecap:round;vector-effect:non-scaling-stroke}.chart-empty{position:absolute;display:flex;color:var(--ink-3);justify-content:center;align-items: center;font-size:12.5px;inset:0}.chart-tooltip{position:absolute;z-index:20;pointer-events:none;border-radius:var(--r-control);border:1px solid var(--line-2);background:var(--overlay);backdrop-filter:blur(14px)saturate(160%);-webkit-backdrop-filter:blur(14px)saturate(160%);box-shadow:var(--shadow-2);min-width:160px;max-width:280px;padding:8px 10px;transition:left 60ms linear,top 60ms linear;font-size:12px;top:0}.chart-tooltip-title{font-family:var(--font-mono);color:var(--ink-3);margin-bottom:6px;font-size:11px}.chart-tooltip-row{display:flex;align-items: center;gap:8px;line-height:1.7}.chart-tooltip-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink-2);flex:1;min-width:0}.chart-tooltip-value{font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--ink-1)}.chart-tooltip-total{border-top:1px solid var(--line-1);margin-top:4px;padding-top:4px}.legend{display:flex;color:var(--ink-2);flex-wrap:wrap;gap:4px 14px;font-size:12px}.legend-item{display:inline-flex;transition:opacity var(--dur-1)var(--ease);align-items: center;gap:6px;max-width:240px}button.legend-item:hover{color:var(--ink-1)}.legend-item[data-off=true]{opacity:.38}.legend-value{font-family:var(--font-mono);color:var(--ink-3);font-size:11.5px}.sparkline path.area{opacity:.16}.share-bar{display:flex;overflow:hidden;background:var(--line-1);border-radius:3px;gap:2px;width:100%;height:8px}.share-bar-seg{transition:flex-grow var(--dur-3)var(--ease-out);min-width:2px;height:100%}.bar-list{display:flex;flex-direction:column;gap:2px}.bar-list-row{position:relative;display:flex;text-align:left;isolation:isolate;border-radius:6px;align-items: center;gap:10px;width:100%;height:30px;padding:0 8px}button.bar-list-row:hover{background:var(--hover)}.bar-list-fill{position:absolute;z-index:-1;opacity:.16;transition:width var(--dur-3)var(--ease-out);border-radius:5px;top:3px;bottom:3px;left:0}.bar-list-label{display:flex;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;flex:1;align-items: center;gap:8px;min-width:0}.bar-list-value{font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--ink-2);font-size:12px}.modal-overlay{position:fixed;z-index:80;display:flex;animation:fade var(--dur-2)var(--ease)both;background:#0000008c;justify-content:center;align-items: center;padding:16px;inset:0}.modal{border-radius:var(--r-panel);border:1px solid var(--line-2);background:var(--overlay);backdrop-filter:blur(20px)saturate(170%);-webkit-backdrop-filter:blur(20px)saturate(170%);box-shadow:var(--shadow-3);animation:rise var(--dur-3)var(--ease-out)both;overflow:hidden;width:min(480px,100%)}.modal-header{display:flex;justify-content:space-between;align-items: center;gap:12px;padding:14px 14px 10px 18px}.modal-title{letter-spacing:-.01em;font-size:15px;font-weight:600}.modal-body{color:var(--ink-2);display:flex;flex-direction:column;gap:10px;padding:4px 18px 16px}.modal-footer{display:flex;border-top:1px solid var(--line-1);background:color-mix(in srgb,var(--card)60%,transparent);justify-content:flex-end;gap:8px;padding:12px 18px}.costs-components{display:flex;flex-direction:column}.costs-component-row{display:grid;grid-template-columns:minmax(0,1fr)auto 56px;border-bottom:1px solid var(--line-1);align-items: center;gap:12px;padding:7px 0}.costs-component-share{text-align:right}.costs-component-total{border-bottom:0;font-weight:500}.errors-signature{display:-webkit-box;-webkit-line-clamp:2;overflow:hidden;font-family:var(--font-mono);color:var(--ink-1);overflow-wrap:anywhere;-webkit-box-orient:vertical;font-size:12px;line-height:1.5}.errors-message{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:var(--font-mono);color:var(--bad);max-width:520px;font-size:12px}.errors-filter{max-width:260px}.errors-filter .truncate{min-width:0}.errors-detail{display:flex;background:var(--hover);border-bottom:1px solid var(--line-1);flex-direction:column;gap:10px;padding:4px 16px 14px}.errors-detail-message{color:var(--ink-1);max-height:200px}.errors-detail-meta{display:flex;flex-wrap:wrap;justify-content:space-between;align-items: center;gap:8px;font-size:12.5px}.errors-detail-models{display:flex;flex-wrap:wrap;gap:6px}.frustration-judge{gap:10px;font-size:13px}.frustration-spacer{flex:1}.frustration-progress{gap:8px}.frustration-progress-head{gap:10px}.frustration-progress-track{border-radius:3px;height:6px}.frustration-progress-fill{background:var(--accent-gradient);border-radius:3px}.frustration-progress-meta{flex-wrap:wrap;gap:4px 18px}.frustration-quote{display:flex;border:1px solid var(--line-2);border-radius:var(--r-control);background:var(--hover);flex-direction:column;gap:2px;padding:12px 14px}.frustration-quote-value{color:var(--ink-1);font-size:22px;font-weight:600}.frustration-chart-body{gap:14px}.frustration-classes{overflow-x:auto;scrollbar-width:none}.frustration-filters{flex-wrap:wrap;align-items: flex-start;gap:8px 16px}.frustration-filters .legend{flex:320px}.frustration-key{border-top:1px solid var(--line-1);color:var(--ink-3);padding-top:10px}.frustration-key .frustration-key-wide{max-width:none}.frustration-key-swatch[data-variant=assistant]{background:var(--ink-2)}.frustration-key-swatch[data-variant=angry]{background:color-mix(in srgb,var(--ink-2)55%,black)}.frustration-key-swatch[data-variant=other]{background:color-mix(in srgb,var(--ink-2)32%,transparent)}.frustration-key-swatch[data-variant=hatch]{background:repeating-linear-gradient(45deg,var(--ink-2)0 1.6px,color-mix(in srgb,var(--ink-2)14%,transparent)1.6px 3.5px)}.frustration-key-line{background:var(--ink-1);border-radius:1px;width:12px;height:2px}.frustration-chart-empty{display:flex;justify-content:center;align-items: center;height:340px}.frustration-tooltip-extra{display:flex;flex-direction:column;gap:2px}.frustration-judged{justify-content:flex-end;gap:6px}.models-chevron{display:inline-flex;color:var(--ink-3);transition:transform var(--dur-2)var(--ease)}.models-chevron[data-open=true]{color:var(--ink-1);transform:rotate(90deg)}.models-detail{display:grid;grid-template-columns:minmax(260px,340px)minmax(0,1fr);background:var(--panel);border-bottom:1px solid var(--line-1);animation:rise var(--dur-3)var(--ease-out)both;gap:24px;padding:16px 16px 18px 44px}.models-detail-facts{display:flex;flex-direction:column;gap:16px;min-width:0}.models-detail-chart{display:flex;flex-direction:column;gap:10px;min-width:0}@media (max-width:1100px){.models-detail{grid-template-columns:minmax(0,1fr);padding-left:16px}}.projects-folder{gap:8px;min-width:0;max-width:280px}.providers-select{max-width:220px}.providers-mix{display:flex;background:var(--bg);border-top:1px solid var(--line-1);flex-direction:column;gap:10px;padding:12px 16px 14px}.providers-swatch-slot{display:inline-flex;flex:none;width:10px}.providers-account{max-width:280px}.providers-accounts{border-top:1px solid var(--line-1);margin:0 -16px -16px}.request-drawer-error{--rd-tone:var(--bad);--rd-tone-soft:var(--bad-soft);border-radius:var(--r-control);border:1px solid color-mix(in srgb,var(--rd-tone)35%,transparent);background:var(--rd-tone-soft);padding:10px 12px 12px}.request-drawer-error[data-tone=warn]{--rd-tone:var(--warn);--rd-tone-soft:var(--warn-soft)}.request-drawer-error-label{color:var(--rd-tone);margin-bottom:6px;font-size:12px;font-weight:550}.request-drawer-error-text{font-family:var(--font-mono);color:var(--ink-1);white-space:pre-wrap;overflow-wrap:anywhere;overflow:auto;max-height:240px;margin:0;font-size:12px;line-height:1.55}.request-drawer-file{display:flex;flex-direction:column;gap:2px;margin-top:12px}.tools-filter{width:200px}.tools-name{max-width:220px}.tools-share{display:inline-block;text-align:right;min-width:32px;margin-left:8px}.traces-models{display:inline-flex;color:var(--ink-2);align-items: center;gap:6px;min-width:0;max-width:220px}.traces-title{display:block;max-width:720px}.traces-spin{animation:.9s linear infinite traces-spin}@keyframes traces-spin{to{transform:rotate(360deg)}}.traces-toolbar{display:flex;flex-wrap:wrap;align-items: center;gap:12px}.traces-check{display:inline-flex;color:var(--ink-2);cursor:pointer;user-select:none;align-items: center;gap:6px;font-size:12.5px}.traces-check input{accent-color:var(--accent);margin:0}.traces-search{display:inline-flex;align-items: center;gap:4px}.traces-match-count{text-align:center;min-width:36px;font-size:12px}.traces-legend{display:inline-flex;color:var(--ink-2);flex-wrap:wrap;gap:12px;margin-left:auto;font-size:12px}.traces-legend-item{display:inline-flex;align-items: center;gap:6px}.traces-minimap{display:block;cursor:crosshair;border-radius:var(--r-chip);border:1px solid var(--line-2);background:var(--panel);touch-action:none;width:100%}.traces-timeline{position:relative;display:flex;overflow-y:auto;overflow-x:hidden;border-top:1px solid var(--line-1);max-height:560px}.traces-canvas{cursor:grab;outline:none;touch-action:none}.traces-canvas:focus-visible{outline:1px solid var(--focus);outline-offset:-1px;border-radius:var(--r-chip)}.traces-canvas:active{cursor:grabbing}.traces-chevron{display:inline-flex;cursor:pointer;color:var(--ink-3);background:0 0;border:none;border-radius:4px;padding:0}.traces-chevron:hover{color:var(--ink-1)}.traces-chevron:focus-visible{outline:2px solid var(--focus)}.traces-gutter-track{color:var(--ink-1);font-size:12px;font-weight:500}.traces-gutter-model{color:var(--ink-3);font-size:10.5px}.traces-gutter-lane{position:absolute;color:var(--ink-3);font-size:10.5px}.traces-tooltip{position:fixed;z-index:60;pointer-events:none;background:var(--overlay);backdrop-filter:blur(12px);border:1px solid var(--line-3);border-radius:var(--r-control);box-shadow:var(--shadow-2);max-width:300px;padding:8px 10px;font-size:12px;line-height:1.5}.traces-tooltip-title{color:var(--ink-1);font-weight:500}.traces-tooltip-detail{color:var(--ink-2);word-break:break-word}.traces-list{overflow-y:auto;height:340px}.traces-row{display:flex;border:none;border-bottom:1px solid var(--line-1);color:inherit;font:inherit;text-align:left;cursor:pointer;transition:background var(--dur-1)var(--ease);background:0 0;align-items: center;gap:10px;width:100%;height:28px;padding:0 16px}.traces-row:hover{background:var(--hover)}.traces-row:focus-visible{outline:2px solid var(--focus);outline-offset:-2px}.traces-row[data-selected=true]{background:var(--selected);box-shadow:inset 2px 0 0 var(--accent)}.traces-row[data-static=true]{cursor:default}.traces-row[data-static=true]:hover{background:0 0}.traces-kind{border-radius:var(--r-chip);text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink-1);background:color-mix(in srgb,var(--traces-kind-color)18%,transparent);box-shadow:inset 2px 0 0 var(--traces-kind-color);flex-shrink:0;width:72px;padding:1px 0;font-size:11px;font-weight:500}.traces-row-track{color:var(--ink-3);flex-shrink:0;max-width:110px;font-size:11px}.traces-row-label{color:var(--ink-1);flex-shrink:1;min-width:0;font-size:12.5px}.traces-row-detail{color:var(--ink-3);flex:1;min-width:0;font-size:12px}.traces-row-meta{display:inline-flex;color:var(--ink-3);flex-shrink:0;gap:12px;margin-left:auto;font-size:11.5px}.traces-drawer{gap:16px}.traces-pre{white-space:pre-wrap;word-break:break-word;margin:0}.traces-pre[data-scroll=true]{overflow-y:auto;max-height:360px}
1
+ :root,[data-theme=dark]{--buncss-light: ;--buncss-dark:initial;color-scheme:dark;--bg:#000;--panel:#09090a;--card:#0e0e10;--raised:#17171a;--overlay:#0e0e10c7;--hover:#ffffff09;--press:#ffffff0f;--selected:#ffffff13;--line-1:#ffffff0f;--line-2:#ffffff17;--line-3:#ffffff24;--line-4:#ffffff38;--ink-1:#ededef;--ink-2:#a0a0a8;--ink-3:#6c6c74;--ink-4:#46464c;--ink-inverse:#0a0a0b;--accent-a:#5ad8e6;--accent-b:#ed4abf;--accent:#f068c8;--accent-soft:#ed4abf24;--accent-line:#ed4abf59;--accent-gradient:linear-gradient(100deg,var(--accent-a),var(--accent-b));--focus:#5ad8e6;--ok:#3ecf8e;--ok-soft:#3ecf8e21;--warn:#f5a524;--warn-soft:#f5a52421;--bad:#ff6166;--bad-soft:#ff616621;--live:#3ecf8e;--chart-grid:#ffffff0e;--chart-axis:#5c5c64;--chart-cursor:#ffffff0d;--chart-primary:#5ad8e6;--chart-secondary:#ed4abf;--shadow-1:0 1px 0 #ffffff08 inset,0 1px 2px #00000080;--shadow-2:0 8px 24px #0000008c,0 1px 0 #ffffff0d inset;--shadow-3:0 24px 64px #000000b3,0 1px 0 #ffffff0f inset}[data-theme=light]{--buncss-light:initial;--buncss-dark: ;color-scheme:light;--bg:#f2f2f3;--panel:#fff;--card:#fff;--raised:#f6f6f7;--overlay:#fffc;--hover:#00000008;--press:#0000000d;--selected:#0000000f;--line-1:#0000000f;--line-2:#00000017;--line-3:#00000024;--line-4:#00000038;--ink-1:#151518;--ink-2:#5a5a63;--ink-3:#8b8b94;--ink-4:#b9b9c0;--ink-inverse:#fff;--accent-a:#1fa9bb;--accent-b:#d42ea3;--accent:#c42596;--accent-soft:#d42ea31a;--accent-line:#d42ea34d;--focus:#1fa9bb;--ok:#12a36b;--ok-soft:#12a36b1c;--warn:#c77c02;--warn-soft:#c77c021c;--bad:#dc3a40;--bad-soft:#dc3a401a;--live:#12a36b;--chart-grid:#0000000f;--chart-axis:#9a9aa2;--chart-cursor:#0000000a;--chart-primary:#1fa9bb;--chart-secondary:#d42ea3;--shadow-1:0 1px 2px #0000000a;--shadow-2:0 8px 24px #0000001a;--shadow-3:0 24px 64px #00000029}:root{--font-sans:"Inter var","Inter",ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;--font-mono:ui-monospace,"SF Mono","JetBrains Mono","Fira Code",Menlo,Consolas,monospace;--r-chip:6px;--r-control:8px;--r-card:12px;--r-panel:16px;--r-pill:999px;--topbar-h:52px;--sidebar-w:224px;--gutter:28px;--ease:cubic-bezier(.2,0,0,1);--ease-out:cubic-bezier(.16,1,.3,1);--dur-1:.12s;--dur-2:.2s;--dur-3:.36s;--stagger:40ms}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;padding:0}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;background:var(--bg)}body{font-family:var(--font-sans);color:var(--ink-1);background:var(--bg);font-feature-settings:"cv11","ss01";min-height:100dvh;font-size:13.5px;line-height:1.5}h1,h2,h3,h4,p,ul,ol,figure{margin:0;padding:0}ul,ol{list-style:none}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer;background:0 0;border:0;padding:0}button:disabled{cursor:default}a{color:inherit;text-decoration:none}svg{display:block;flex-shrink:0}table{border-collapse:collapse;border-spacing:0}code,pre,kbd{font-family:var(--font-mono)}::selection{background:var(--accent-soft);color:var(--ink-1)}:focus-visible{outline:2px solid var(--focus);outline-offset:2px;border-radius:4px}[hidden]{display:none!important}*{scrollbar-width:thin;scrollbar-color:var(--line-3)transparent}.mono{font-family:var(--font-mono);font-size:.93em}.num{font-family:var(--font-mono);font-variant-numeric:tabular-nums;letter-spacing:-.01em;font-size:.93em}.muted{color:var(--ink-2)}.dim{color:var(--ink-3)}.micro{color:var(--ink-3);font-size:12px;font-weight:500;line-height:1.4}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.tone-ok{color:var(--ok)}.tone-warn{color:var(--warn)}.tone-bad{color:var(--bad)}.tone-accent{color:var(--accent)}.gradient-text{background:var(--accent-gradient);color:#0000;-webkit-background-clip:text;background-clip:text}@keyframes rise{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}@keyframes fade{0%{opacity:0}to{opacity:1}}@keyframes ping{0%{transform:scale(1);opacity:.7}80%,to{transform:scale(2.6);opacity:0}}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@keyframes indeterminate{0%{transform:translate(-100%)}to{transform:translate(250%)}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes flash{0%{color:var(--accent-a)}to{color:inherit}}.rise{animation:rise var(--dur-3)var(--ease-out)backwards;animation-delay:calc(var(--i,0)*var(--stagger))}.spin{animation:.9s linear infinite spin}@media (prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:1ms!important;animation-delay:0s!important;transition-duration:1ms!important}}.shell-ambient{position:fixed;pointer-events:none;z-index:0;background:radial-gradient(60rem 28rem at 12% -10%,color-mix(in srgb,var(--accent-a)7%,transparent),transparent 70%),radial-gradient(50rem 26rem at 95% -12%,color-mix(in srgb,var(--accent-b)6%,transparent),transparent 70%);inset:0}.topbar{position:fixed;height:var(--topbar-h);z-index:40;display:flex;background:color-mix(in srgb,var(--bg)72%,transparent);backdrop-filter:blur(14px)saturate(160%);-webkit-backdrop-filter:blur(14px)saturate(160%);transition:border-color var(--dur-2)var(--ease);border-bottom:1px solid #0000;align-items: center;gap:12px;padding:0 14px 0 18px;top:0;left:0;right:0}.topbar[data-scrolled=true]{border-bottom-color:var(--line-1)}.topbar-brand{display:flex;min-width:calc(var(--sidebar-w) - 18px);letter-spacing:-.01em;align-items: center;gap:10px;font-weight:600}.topbar-mark{display:block;flex:none}.topbar-slash{color:var(--ink-4);font-size:18px;font-weight:300}.topbar-title{color:var(--ink-1);white-space:nowrap;font-weight:500}.topbar-spacer{flex:1}.topbar-actions{display:flex;align-items: center;gap:8px}@media (min-width:901px){.btn.topbar-menu{display:none}}.topbar-progress{position:absolute;overflow:hidden;pointer-events:none;height:2px;bottom:-1px;left:0;right:0}.topbar-progress-fill{background:var(--accent-gradient);transition:width var(--dur-3)var(--ease);box-shadow:0 0 12px var(--accent-b);height:100%}.topbar-progress-fill[data-indeterminate=true]{animation:indeterminate 1.2s var(--ease)infinite;width:40%!important}.sidebar{position:fixed;top:var(--topbar-h);width:var(--sidebar-w);overflow-y:auto;scrollbar-width:none;display:flex;z-index:30;flex-direction:column;gap:18px;padding:8px 10px 14px;bottom:0;left:0}.sidebar::-webkit-scrollbar{display:none}.nav-group{display:flex;flex-direction:column;gap:1px}.nav-heading{color:var(--ink-3);padding:0 10px 6px;font-size:12px;font-weight:500}.nav-row{display:flex;border-radius:var(--r-control);color:var(--ink-2);text-align:left;transition:background var(--dur-1)var(--ease),color var(--dur-1)var(--ease);align-items: center;gap:10px;width:100%;height:32px;padding:0 10px;font-weight:450}.nav-row:hover{background:var(--hover);color:var(--ink-1)}.nav-row:active{transform:scale(.99)}.nav-row[data-active=true]{background:var(--selected);color:var(--ink-1)}.nav-row svg{color:var(--ink-3);transition:color var(--dur-1)var(--ease)}.nav-row[data-active=true] svg{color:var(--accent)}.nav-row-label{flex:1}.nav-row kbd{color:var(--ink-4);opacity:0;transition:opacity var(--dur-1)var(--ease);font-size:10.5px}.nav-row:hover kbd{opacity:1}.sidebar-foot{border-radius:var(--r-card);border:1px solid var(--line-1);background:var(--card);display:flex;flex-direction:column;gap:6px;margin-top:auto;padding:10px}.shell-panel{position:relative;z-index:1;margin:var(--topbar-h)8px 8px var(--sidebar-w);min-height:calc(100dvh - var(--topbar-h) - 8px);background:var(--panel);border-radius:var(--r-panel);border:1px solid var(--line-1);box-shadow:var(--shadow-1);overflow:clip}.shell-content{padding:26px var(--gutter)48px;max-width:1560px;margin:0 auto}.drawer-scrim{position:fixed;z-index:60;animation:fade var(--dur-2)var(--ease)both;background:#00000080;inset:0}@media (max-width:1360px){:root{--sidebar-w:204px;--gutter:22px}}@media (max-width:900px){:root{--gutter:16px}.topbar-brand{min-width:0}.topbar-menu{display:inline-flex}.sidebar{z-index:70;background:var(--overlay);backdrop-filter:blur(18px)saturate(160%);-webkit-backdrop-filter:blur(18px)saturate(160%);border-right:1px solid var(--line-2);transition:transform var(--dur-3)var(--ease-out);width:260px;padding-top:16px;top:0;transform:translate(-102%)}.sidebar[data-open=true]{box-shadow:var(--shadow-3);transform:none}.shell-panel{margin-left:8px}.topbar-hide-narrow{display:none!important}}.page{display:flex;flex-direction:column;gap:20px}.page-header{display:flex;flex-wrap:wrap;justify-content:space-between;align-items: flex-end;gap:16px;padding-bottom:4px}.page-title{letter-spacing:-.02em;font-size:22px;font-weight:600;line-height:1.2}.page-description{color:var(--ink-2);max-width:72ch;margin-top:4px}.page-actions{display:flex;flex-wrap:wrap;align-items: center;gap:8px}.grid{display:grid;gap:16px}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-main-side{grid-template-columns:minmax(0,2fr)minmax(0,1fr)}@media (max-width:1100px){.grid-2,.grid-3,.grid-main-side{grid-template-columns:minmax(0,1fr)}}.row{display:flex;align-items: center;gap:8px;min-width:0}.stack{display:flex;flex-direction:column;gap:4px;min-width:0}.card{position:relative;border-radius:var(--r-card);background:linear-gradient(var(--card),var(--card))padding-box,linear-gradient(180deg,var(--line-3),var(--line-1)40%)border-box;box-shadow:var(--shadow-1);display:flex;border:1px solid #0000;flex-direction:column;min-width:0}.card-header{display:flex;flex-wrap:wrap;justify-content:space-between;align-items: flex-start;gap:12px;padding:14px 16px 0}.card-titles{display:flex;flex-direction:column;gap:2px;min-width:0}.card-title{letter-spacing:-.005em;display:flex;align-items: center;gap:8px;font-size:14px;font-weight:550}.card-description{color:var(--ink-3);font-size:12.5px}.card-actions{display:flex;flex-wrap:wrap;align-items: center;gap:6px}.card-body{flex:1;min-width:0;padding:14px 16px 16px}.card-body[data-flush=true]{padding:10px 0 0}.card-footer{border-top:1px solid var(--line-1);color:var(--ink-3);display:flex;justify-content:space-between;align-items: center;gap:8px;padding:10px 16px;font-size:12.5px}.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(var(--stat-min,170px),1fr));border-radius:var(--r-card);background:linear-gradient(var(--card),var(--card))padding-box,linear-gradient(180deg,var(--line-3),var(--line-1)40%)border-box;box-shadow:var(--shadow-1);overflow:hidden;border:1px solid #0000}.stat{position:relative;display:flex;box-shadow:1px 0 0 var(--line-1),0 1px 0 var(--line-1);flex-direction:column;gap:6px;min-width:0;padding:14px 16px 12px}.stat-label{color:var(--ink-2);display:flex;align-items: center;gap:6px;font-size:12.5px;font-weight:500}.stat-value{letter-spacing:-.025em;font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:24px;font-weight:550;line-height:1.15}.stat[data-size=sm] .stat-value{font-size:18px}.stat-value[data-flash=true]{animation:flash .9s var(--ease)both}.stat-foot{display:flex;color:var(--ink-3);align-items: center;gap:8px;min-height:18px;font-size:12px}.stat-spark{height:28px;margin-top:2px}.delta{display:inline-flex;font-family:var(--font-mono);border-radius:var(--r-pill);background:var(--raised);color:var(--ink-2);align-items: center;gap:2px;padding:1px 6px;font-size:11.5px;font-weight:500}.delta[data-tone=good]{color:var(--ok);background:var(--ok-soft)}.delta[data-tone=bad]{color:var(--bad);background:var(--bad-soft)}.btn{display:inline-flex;border-radius:var(--r-control);white-space:nowrap;border:1px solid var(--line-2);background:var(--raised);color:var(--ink-1);transition:background var(--dur-1)var(--ease),border-color var(--dur-1)var(--ease),transform var(--dur-1)var(--ease);justify-content:center;align-items: center;gap:6px;height:30px;padding:0 12px;font-size:13px;font-weight:500}.btn:hover:not(:disabled){border-color:var(--line-3);background:color-mix(in srgb,var(--raised)80%,var(--ink-1)6%)}.btn:active:not(:disabled){transform:scale(.97)}.btn:disabled{opacity:.5}.btn[data-variant=primary]{background:var(--ink-1);color:var(--ink-inverse);border-color:#0000}.btn[data-variant=primary]:hover:not(:disabled){background:color-mix(in srgb,var(--ink-1)88%,transparent)}.btn[data-variant=accent]{background:var(--accent-gradient);color:#fff;background-origin:border-box;border-color:#0000}.btn[data-variant=ghost]{color:var(--ink-2);background:0 0;border-color:#0000}.btn[data-variant=ghost]:hover:not(:disabled){background:var(--hover);color:var(--ink-1)}.btn[data-variant=danger]{background:var(--bad-soft);color:var(--bad);border-color:color-mix(in srgb,var(--bad)30%,transparent)}.btn[data-size=sm]{height:26px;padding:0 9px;font-size:12.5px}.btn[data-icon=true]{width:30px;padding:0}.btn[data-icon=true][data-size=sm]{width:26px}.input{border-radius:var(--r-control);border:1px solid var(--line-2);background:var(--card);color:var(--ink-1);transition:border-color var(--dur-1)var(--ease);min-width:0;height:30px;padding:0 10px;font-size:13px}.input::placeholder{color:var(--ink-3)}.input:hover{border-color:var(--line-3)}.input:focus{outline:none;border-color:var(--focus);box-shadow:0 0 0 3px color-mix(in srgb,var(--focus)18%,transparent)}.search{position:relative;display:inline-flex;align-items: center}.search svg{position:absolute;color:var(--ink-3);pointer-events:none;left:9px}.search .input{width:240px;padding-left:30px}select.input{appearance:none;cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23888' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-position:right 9px center;background-repeat:no-repeat;padding-right:28px}.check{display:inline-flex;color:var(--ink-2);cursor:pointer;user-select:none;align-items: center;gap:6px;font-size:12.5px}.check input{accent-color:var(--accent)}.segmented{position:relative;display:inline-flex;border-radius:var(--r-control);background:var(--card);border:1px solid var(--line-2);isolation:isolate;align-items: center;gap:0;padding:2px}.segmented-thumb{position:absolute;background:var(--raised);border:1px solid var(--line-3);transition:left var(--dur-2)var(--ease-out),width var(--dur-2)var(--ease-out);z-index:-1;border-radius:6px;top:2px;bottom:2px;box-shadow:0 1px 2px #00000040}.segmented-option{color:var(--ink-3);white-space:nowrap;display:inline-flex;transition:color var(--dur-1)var(--ease);border-radius:6px;align-items: center;gap:6px;height:24px;padding:0 10px;font-size:12.5px;font-weight:500}.segmented-option:hover,.segmented-option[data-active=true]{color:var(--ink-1)}.segmented[data-size=sm] .segmented-option{height:22px;padding:0 8px;font-size:12px}.tabs{display:flex;border-bottom:1px solid var(--line-1);align-items: center;gap:16px;padding:0 16px}.tab{position:relative;color:var(--ink-3);display:inline-flex;align-items: center;gap:6px;height:36px;font-size:13px;font-weight:500}.tab:hover,.tab[data-active=true]{color:var(--ink-1)}.tab[data-active=true]:after{content:"";position:absolute;background:var(--accent-gradient);border-radius:2px;height:2px;bottom:-1px;left:0;right:0}.kbd{display:inline-flex;border:1px solid var(--line-2);background:var(--card);font-family:var(--font-mono);color:var(--ink-3);border-radius:5px;justify-content:center;align-items: center;min-width:18px;height:18px;padding:0 4px;font-size:10.5px}.badge{display:inline-flex;border-radius:var(--r-pill);white-space:nowrap;background:var(--raised);color:var(--ink-2);border:1px solid var(--line-1);align-items: center;gap:5px;height:20px;padding:0 8px;font-size:11.5px;font-weight:500}.badge[data-tone=ok]{background:var(--ok-soft);color:var(--ok);border-color:#0000}.badge[data-tone=warn]{background:var(--warn-soft);color:var(--warn);border-color:#0000}.badge[data-tone=bad]{background:var(--bad-soft);color:var(--bad);border-color:#0000}.badge[data-tone=accent]{background:var(--accent-soft);color:var(--accent);border-color:#0000}.badge[data-mono=true]{font-family:var(--font-mono);font-size:11px}.dot{position:relative;display:inline-block;background:var(--ink-3);border-radius:50%;flex-shrink:0;width:8px;height:8px}.dot[data-tone=ok],.dot[data-tone=live]{background:var(--live)}.dot[data-tone=warn]{background:var(--warn)}.dot[data-tone=bad]{background:var(--bad)}.dot[data-tone=accent]{background:var(--accent)}.dot[data-pulse=true]:after{content:"";position:absolute;background:inherit;animation:ping 1.6s var(--ease-out)infinite;border-radius:50%;inset:0}.swatch{display:inline-block;border-radius:2px;flex-shrink:0;width:8px;height:8px}.table-wrap{overflow-x:auto;min-width:0}.table{width:100%;font-size:13px}.table th{position:sticky;z-index:1;text-align:left;color:var(--ink-3);white-space:nowrap;background:var(--card);border-bottom:1px solid var(--line-1);user-select:none;padding:8px 12px;font-size:12px;font-weight:500;top:0}.table th:first-child,.table td:first-child{padding-left:16px}.table th:last-child,.table td:last-child{padding-right:16px}.table th[data-sortable=true]{cursor:pointer}.table th[data-sortable=true]:hover,.table th[data-sorted]{color:var(--ink-1)}.table th .sort-arrow{display:inline-block;opacity:.8;vertical-align:-1px;margin-left:4px}.table td{border-bottom:1px solid var(--line-1);vertical-align:middle;white-space:nowrap;padding:9px 12px}.table tbody tr:last-child td{border-bottom:0}.table tbody tr{transition:background var(--dur-1)var(--ease)}.table tbody tr:hover{background:var(--hover)}.table tbody tr[data-clickable=true]{cursor:pointer}.table tbody tr[data-selected=true]{background:var(--selected)}.table [data-align=right]{text-align:right}.table [data-align=center]{text-align:center}.table td[data-wrap=true]{white-space:normal}.table[data-dense=true] td{padding-top:6px;padding-bottom:6px}.table-more{display:flex;border-top:1px solid var(--line-1);justify-content:center;align-items: center;gap:8px;padding:10px}.cell-primary{color:var(--ink-1);font-weight:500}.cell-secondary{color:var(--ink-3);font-size:12px}.meter{position:relative;background:var(--line-1);overflow:hidden;border-radius:2px;min-width:48px;height:4px}.meter-fill{position:absolute;background:var(--chart-primary);transition:width var(--dur-3)var(--ease-out);border-radius:2px;inset:0 auto 0 0}.meter-cell{display:flex;justify-content:flex-end;align-items: center;gap:10px}.meter-cell .meter{width:64px}.empty{display:flex;text-align:center;color:var(--ink-3);flex-direction:column;justify-content:center;align-items: center;gap:6px;min-height:140px;padding:40px 16px}.empty svg{color:var(--ink-4);margin-bottom:4px}.empty-title{color:var(--ink-2);font-weight:500}.empty-hint{max-width:44ch;font-size:12.5px}.error-state{display:flex;border-radius:var(--r-control);background:var(--bad-soft);color:var(--bad);align-items: center;gap:12px;margin:12px 16px;padding:12px 14px;font-size:13px}.error-state-message{overflow-wrap:anywhere;flex:1;min-width:0}.skeleton{background:linear-gradient(90deg,var(--line-1)0%,var(--line-2)50%,var(--line-1)100%);animation:1.6s linear infinite shimmer;background-size:200% 100%;border-radius:6px}[data-stale=true]{opacity:.55;transition:opacity var(--dur-2)var(--ease)}[data-stale=false]{transition:opacity var(--dur-2)var(--ease)}.drawer{position:fixed;width:min(var(--drawer-w,560px),calc(100vw - 16px));z-index:61;display:flex;border-radius:var(--r-panel);border:1px solid var(--line-2);background:var(--overlay);backdrop-filter:blur(20px)saturate(170%);-webkit-backdrop-filter:blur(20px)saturate(170%);box-shadow:var(--shadow-3);animation:drawer-in var(--dur-3)var(--ease-out)both;overflow:hidden;flex-direction:column;top:8px;bottom:8px;right:8px}@keyframes drawer-in{0%{transform:translate(24px);opacity:0}to{transform:none;opacity:1}}.drawer-header{display:flex;border-bottom:1px solid var(--line-1);align-items: flex-start;gap:12px;padding:16px 16px 12px 20px}.drawer-titles{overflow-wrap:anywhere;flex:1;min-width:0}.drawer-title{letter-spacing:-.01em;font-size:15px;font-weight:600}.drawer-subtitle{color:var(--ink-3);margin-top:2px;font-size:12.5px}.drawer-body{overflow-y:auto;display:flex;flex-direction:column;flex:1;gap:18px;padding:16px 20px 24px}.kv{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:12px 16px}.kv-item{display:flex;flex-direction:column;gap:2px;min-width:0}.kv-key{color:var(--ink-3);font-size:12px}.kv-value{font-family:var(--font-mono);color:var(--ink-1);overflow-wrap:anywhere;font-size:12.5px}.section-label{color:var(--ink-3);margin-bottom:8px;font-size:12px;font-weight:500}.code-block{border-radius:var(--r-control);border:1px solid var(--line-1);background:var(--card);font-family:var(--font-mono);color:var(--ink-2);overflow:auto;white-space:pre-wrap;overflow-wrap:anywhere;max-height:480px;margin:0;padding:12px 14px;font-size:12px;line-height:1.55}.live-chip{display:inline-flex;border-radius:var(--r-pill);border:1px solid var(--line-2);background:var(--card);color:var(--ink-2);white-space:nowrap;transition:border-color var(--dur-1)var(--ease);align-items: center;gap:8px;height:30px;padding:0 10px 0 11px;font-size:12.5px}.live-chip:hover{border-color:var(--line-3);color:var(--ink-1)}.live-chip-count{font-family:var(--font-mono);color:var(--ink-3);font-size:11.5px}.chart{position:relative;user-select:none;width:100%;min-width:0}.chart svg{overflow:visible}.chart-axis text{fill:var(--chart-axis);font-family:var(--font-mono);font-size:10.5px}.chart-grid line{stroke:var(--chart-grid);shape-rendering:crispEdges}.chart-baseline{stroke:var(--line-3);shape-rendering:crispEdges}.chart-cursor{fill:var(--chart-cursor)}.chart-bar{shape-rendering:crispEdges;transition:opacity var(--dur-1)var(--ease)}.chart[data-hovering=true] .chart-bar[data-hover=false]{opacity:.45}.chart-line{fill:none;stroke-width:1.5;stroke-linejoin:round;stroke-linecap:round;vector-effect:non-scaling-stroke}.chart-empty{position:absolute;display:flex;color:var(--ink-3);justify-content:center;align-items: center;font-size:12.5px;inset:0}.chart-tooltip{position:absolute;z-index:20;pointer-events:none;border-radius:var(--r-control);border:1px solid var(--line-2);background:var(--overlay);backdrop-filter:blur(14px)saturate(160%);-webkit-backdrop-filter:blur(14px)saturate(160%);box-shadow:var(--shadow-2);min-width:160px;max-width:280px;padding:8px 10px;transition:left 60ms linear,top 60ms linear;font-size:12px;top:0}.chart-tooltip-title{font-family:var(--font-mono);color:var(--ink-3);margin-bottom:6px;font-size:11px}.chart-tooltip-row{display:flex;align-items: center;gap:8px;line-height:1.7}.chart-tooltip-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink-2);flex:1;min-width:0}.chart-tooltip-value{font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--ink-1)}.chart-tooltip-total{border-top:1px solid var(--line-1);margin-top:4px;padding-top:4px}.legend{display:flex;color:var(--ink-2);flex-wrap:wrap;gap:4px 14px;font-size:12px}.legend-item{display:inline-flex;transition:opacity var(--dur-1)var(--ease);align-items: center;gap:6px;max-width:240px}button.legend-item:hover{color:var(--ink-1)}.legend-item[data-off=true]{opacity:.38}.legend-value{font-family:var(--font-mono);color:var(--ink-3);font-size:11.5px}.sparkline path.area{opacity:.16}.share-bar{display:flex;overflow:hidden;background:var(--line-1);border-radius:3px;gap:2px;width:100%;height:8px}.share-bar-seg{transition:flex-grow var(--dur-3)var(--ease-out);min-width:2px;height:100%}.bar-list{display:flex;flex-direction:column;gap:2px}.bar-list-row{position:relative;display:flex;text-align:left;isolation:isolate;border-radius:6px;align-items: center;gap:10px;width:100%;height:30px;padding:0 8px}button.bar-list-row:hover{background:var(--hover)}.bar-list-fill{position:absolute;z-index:-1;opacity:.16;transition:width var(--dur-3)var(--ease-out);border-radius:5px;top:3px;bottom:3px;left:0}.bar-list-label{display:flex;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;flex:1;align-items: center;gap:8px;min-width:0}.bar-list-value{font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--ink-2);font-size:12px}.modal-overlay{position:fixed;z-index:80;display:flex;animation:fade var(--dur-2)var(--ease)both;background:#0000008c;justify-content:center;align-items: center;padding:16px;inset:0}.modal{border-radius:var(--r-panel);border:1px solid var(--line-2);background:var(--overlay);backdrop-filter:blur(20px)saturate(170%);-webkit-backdrop-filter:blur(20px)saturate(170%);box-shadow:var(--shadow-3);animation:rise var(--dur-3)var(--ease-out)both;overflow:hidden;width:min(480px,100%)}.modal-header{display:flex;justify-content:space-between;align-items: center;gap:12px;padding:14px 14px 10px 18px}.modal-title{letter-spacing:-.01em;font-size:15px;font-weight:600}.modal-body{color:var(--ink-2);display:flex;flex-direction:column;gap:10px;padding:4px 18px 16px}.modal-footer{display:flex;border-top:1px solid var(--line-1);background:color-mix(in srgb,var(--card)60%,transparent);justify-content:flex-end;gap:8px;padding:12px 18px}.costs-components{display:flex;flex-direction:column}.costs-component-row{display:grid;grid-template-columns:minmax(0,1fr)auto 56px;border-bottom:1px solid var(--line-1);align-items: center;gap:12px;padding:7px 0}.costs-component-share{text-align:right}.costs-component-total{border-bottom:0;font-weight:500}.errors-signature{display:-webkit-box;-webkit-line-clamp:2;overflow:hidden;font-family:var(--font-mono);color:var(--ink-1);overflow-wrap:anywhere;-webkit-box-orient:vertical;font-size:12px;line-height:1.5}.errors-message{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:var(--font-mono);color:var(--bad);max-width:520px;font-size:12px}.errors-filter{max-width:260px}.errors-filter .truncate{min-width:0}.errors-detail{display:flex;background:var(--hover);border-bottom:1px solid var(--line-1);flex-direction:column;gap:10px;padding:4px 16px 14px}.errors-detail-message{color:var(--ink-1);max-height:200px}.errors-detail-meta{display:flex;flex-wrap:wrap;justify-content:space-between;align-items: center;gap:8px;font-size:12.5px}.errors-detail-models{display:flex;flex-wrap:wrap;gap:6px}.frustration-judge{gap:10px;font-size:13px}.frustration-spacer{flex:1}.frustration-progress{gap:8px}.frustration-progress-head{gap:10px}.frustration-progress-track{border-radius:3px;height:6px}.frustration-progress-fill{background:var(--accent-gradient);border-radius:3px}.frustration-progress-meta{flex-wrap:wrap;gap:4px 18px}.frustration-quote{display:flex;border:1px solid var(--line-2);border-radius:var(--r-control);background:var(--hover);flex-direction:column;gap:2px;padding:12px 14px}.frustration-quote-value{color:var(--ink-1);font-size:22px;font-weight:600}.frustration-chart-body{gap:14px}.frustration-classes{overflow-x:auto;scrollbar-width:none}.frustration-filters{flex-wrap:wrap;align-items: flex-start;gap:8px 16px}.frustration-filters .legend{flex:320px}.frustration-key{border-top:1px solid var(--line-1);color:var(--ink-3);padding-top:10px}.frustration-key .frustration-key-wide{max-width:none}.frustration-key-swatch[data-variant=assistant]{background:var(--ink-2)}.frustration-key-swatch[data-variant=angry]{background:color-mix(in srgb,var(--ink-2)55%,black)}.frustration-key-swatch[data-variant=other]{background:color-mix(in srgb,var(--ink-2)32%,transparent)}.frustration-key-swatch[data-variant=hatch]{background:repeating-linear-gradient(45deg,var(--ink-2)0 1.6px,color-mix(in srgb,var(--ink-2)14%,transparent)1.6px 3.5px)}.frustration-key-line{background:var(--ink-1);border-radius:1px;width:12px;height:2px}.frustration-chart-empty{display:flex;justify-content:center;align-items: center;height:340px}.frustration-tooltip-extra{display:flex;flex-direction:column;gap:2px}.frustration-judged{justify-content:flex-end;gap:6px}.models-chevron{display:inline-flex;color:var(--ink-3);transition:transform var(--dur-2)var(--ease)}.models-chevron[data-open=true]{color:var(--ink-1);transform:rotate(90deg)}.models-detail{display:grid;grid-template-columns:minmax(260px,340px)minmax(0,1fr);background:var(--panel);border-bottom:1px solid var(--line-1);animation:rise var(--dur-3)var(--ease-out)both;gap:24px;padding:16px 16px 18px 44px}.models-detail-facts{display:flex;flex-direction:column;gap:16px;min-width:0}.models-detail-chart{display:flex;flex-direction:column;gap:10px;min-width:0}@media (max-width:1100px){.models-detail{grid-template-columns:minmax(0,1fr);padding-left:16px}}.projects-folder{gap:8px;min-width:0;max-width:280px}.providers-select{max-width:220px}.providers-mix{display:flex;background:var(--bg);border-top:1px solid var(--line-1);flex-direction:column;gap:10px;padding:12px 16px 14px}.providers-swatch-slot{display:inline-flex;flex:none;width:10px}.providers-account{max-width:280px}.providers-accounts{border-top:1px solid var(--line-1);margin:0 -16px -16px}.request-drawer-error{--rd-tone:var(--bad);--rd-tone-soft:var(--bad-soft);border-radius:var(--r-control);border:1px solid color-mix(in srgb,var(--rd-tone)35%,transparent);background:var(--rd-tone-soft);padding:10px 12px 12px}.request-drawer-error[data-tone=warn]{--rd-tone:var(--warn);--rd-tone-soft:var(--warn-soft)}.request-drawer-error-label{color:var(--rd-tone);margin-bottom:6px;font-size:12px;font-weight:550}.request-drawer-error-text{font-family:var(--font-mono);color:var(--ink-1);white-space:pre-wrap;overflow-wrap:anywhere;overflow:auto;max-height:240px;margin:0;font-size:12px;line-height:1.55}.request-drawer-file{display:flex;flex-direction:column;gap:2px;margin-top:12px}.tools-filter{width:200px}.tools-name{max-width:220px}.tools-share{display:inline-block;text-align:right;min-width:32px;margin-left:8px}.traces-models{display:inline-flex;color:var(--ink-2);align-items: center;gap:6px;min-width:0;max-width:220px}.traces-title{display:block;max-width:720px}.traces-spin{animation:.9s linear infinite traces-spin}@keyframes traces-spin{to{transform:rotate(360deg)}}.traces-toolbar{display:flex;flex-wrap:wrap;align-items: center;gap:12px}.traces-check{display:inline-flex;color:var(--ink-2);cursor:pointer;user-select:none;align-items: center;gap:6px;font-size:12.5px}.traces-check input{accent-color:var(--accent);margin:0}.traces-search{display:inline-flex;align-items: center;gap:4px}.traces-match-count{text-align:center;min-width:36px;font-size:12px}.traces-legend{display:inline-flex;color:var(--ink-2);flex-wrap:wrap;gap:12px;margin-left:auto;font-size:12px}.traces-legend-item{display:inline-flex;align-items: center;gap:6px}.traces-minimap{display:block;cursor:crosshair;border-radius:var(--r-chip);border:1px solid var(--line-2);background:var(--panel);touch-action:none;width:100%}.traces-timeline{position:relative;display:flex;overflow-y:auto;overflow-x:hidden;border-top:1px solid var(--line-1);max-height:560px}.traces-canvas{cursor:grab;outline:none;touch-action:none}.traces-canvas:focus-visible{outline:1px solid var(--focus);outline-offset:-1px;border-radius:var(--r-chip)}.traces-canvas:active{cursor:grabbing}.traces-chevron{display:inline-flex;cursor:pointer;color:var(--ink-3);background:0 0;border:none;border-radius:4px;padding:0}.traces-chevron:hover{color:var(--ink-1)}.traces-chevron:focus-visible{outline:2px solid var(--focus)}.traces-gutter-track{color:var(--ink-1);font-size:12px;font-weight:500}.traces-gutter-model{color:var(--ink-3);font-size:10.5px}.traces-gutter-lane{position:absolute;color:var(--ink-3);font-size:10.5px}.traces-tooltip{position:fixed;z-index:60;pointer-events:none;background:var(--overlay);backdrop-filter:blur(12px);border:1px solid var(--line-3);border-radius:var(--r-control);box-shadow:var(--shadow-2);max-width:300px;padding:8px 10px;font-size:12px;line-height:1.5}.traces-tooltip-title{color:var(--ink-1);font-weight:500}.traces-tooltip-detail{color:var(--ink-2);word-break:break-word}.traces-list{overflow-y:auto;height:340px}.traces-row{display:flex;border:none;border-bottom:1px solid var(--line-1);color:inherit;font:inherit;text-align:left;cursor:pointer;transition:background var(--dur-1)var(--ease);background:0 0;align-items: center;gap:10px;width:100%;height:28px;padding:0 16px}.traces-row:hover{background:var(--hover)}.traces-row:focus-visible{outline:2px solid var(--focus);outline-offset:-2px}.traces-row[data-selected=true]{background:var(--selected);box-shadow:inset 2px 0 0 var(--accent)}.traces-row[data-static=true]{cursor:default}.traces-row[data-static=true]:hover{background:0 0}.traces-kind{border-radius:var(--r-chip);text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink-1);background:color-mix(in srgb,var(--traces-kind-color)18%,transparent);box-shadow:inset 2px 0 0 var(--traces-kind-color);flex-shrink:0;width:72px;padding:1px 0;font-size:11px;font-weight:500}.traces-row-track{color:var(--ink-3);flex-shrink:0;max-width:110px;font-size:11px}.traces-row-label{color:var(--ink-1);flex-shrink:1;min-width:0;font-size:12.5px}.traces-row-detail{color:var(--ink-3);flex:1;min-width:0;font-size:12px}.traces-row-meta{display:inline-flex;color:var(--ink-3);flex-shrink:0;gap:12px;margin-left:auto;font-size:11.5px}.traces-drawer{gap:16px}.traces-pre{white-space:pre-wrap;word-break:break-word;margin:0}.traces-pre[data-scroll=true]{overflow-y:auto;max-height:360px}
@@ -33,6 +33,14 @@ export interface MessageStats {
33
33
  usage: Usage;
34
34
  /** Which agent produced this message (main agent, task subagent, advisor) */
35
35
  agentType: AgentType;
36
+ /**
37
+ * Service tier the provider reported serving this turn, or `null` when the
38
+ * provider reported none. Lets consumers separate a fast serving path's
39
+ * throughput and premium traffic from standard-tier traffic. Always written by
40
+ * `rowToMessageStats`; optional only because session fixtures that stand in
41
+ * for ingest input are typed as `MessageStats` too.
42
+ */
43
+ serviceTier?: ServiceTier | null;
36
44
  /**
37
45
  * Ingest refused to price this request: a scheduled (time-based) card with no
38
46
  * recoverable request timestamp, so `usage.cost.total` of 0 is unknown spend
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "type": "module",
3
3
  "name": "@oh-my-pi/omp-stats",
4
- "version": "18.6.1",
4
+ "version": "18.7.0",
5
5
  "description": "Local observability dashboard for omp AI usage statistics",
6
6
  "homepage": "https://omp.sh",
7
7
  "author": {
@@ -42,9 +42,9 @@
42
42
  "fmt": "oxfmt --no-error-on-unmatched-pattern 'src/**/*.{ts,tsx}' '{test,bench,examples,scripts}/**/*.ts' '*.ts'"
43
43
  },
44
44
  "dependencies": {
45
- "@oh-my-pi/pi-ai": "18.6.1",
46
- "@oh-my-pi/pi-catalog": "18.6.1",
47
- "@oh-my-pi/pi-utils": "18.6.1",
45
+ "@oh-my-pi/pi-ai": "18.7.0",
46
+ "@oh-my-pi/pi-catalog": "18.7.0",
47
+ "@oh-my-pi/pi-utils": "18.7.0",
48
48
  "lucide-react": "^1.24.0",
49
49
  "react": "19.2.7",
50
50
  "react-dom": "19.2.7"
@@ -460,8 +460,10 @@ kbd {
460
460
  gap: 8px;
461
461
  }
462
462
 
463
- .topbar-menu {
464
- display: none;
463
+ @media (min-width: 901px) {
464
+ .btn.topbar-menu {
465
+ display: none;
466
+ }
465
467
  }
466
468
 
467
469
  /* Sync progress hairline along the bottom edge of the topbar. */
package/src/db.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { Database } from "bun:sqlite";
2
2
  import * as fs from "node:fs/promises";
3
- import type { Usage } from "@oh-my-pi/pi-ai";
3
+ import type { ServiceTier, Usage } from "@oh-my-pi/pi-ai";
4
4
  import {
5
5
  calculateUncachedInputCost,
6
6
  calculateUsageCost,
@@ -88,7 +88,10 @@ const BACKFILL_COMPLETE = "complete";
88
88
  const BACKFILL_PENDING = "pending";
89
89
  const USER_MESSAGES_BACKFILL_KEY = "user_messages_v9";
90
90
  const USER_MESSAGE_LINKS_REPAIR_KEY = "user_message_links_v1";
91
- const PRIORITY_PREMIUM_REQUESTS_BACKFILL_KEY = "premium_requests_priority_v1";
91
+ // v2: the parser also records the served service tier per message, so a full
92
+ // re-parse fills `service_tier` and re-derives ultrafast premium counts that the
93
+ // v1 pass (priority only) left at zero.
94
+ const PRIORITY_PREMIUM_REQUESTS_BACKFILL_KEY = "premium_requests_priority_v2";
92
95
  const AGENT_TYPE_BACKFILL_KEY = "agent_type_v1";
93
96
  const FORK_DEDUPE_KEY = "fork_dedupe_v1";
94
97
  // v2: tool-name sanitization at ingest (see `sanitizeToolName` in parser.ts)
@@ -158,6 +161,7 @@ export async function initDb(): Promise<Database> {
158
161
  cost_no_cache_input REAL,
159
162
  cost_unpriced INTEGER NOT NULL DEFAULT 0,
160
163
  agent_type TEXT NOT NULL DEFAULT 'main',
164
+ service_tier TEXT,
161
165
  UNIQUE(session_file, entry_id)
162
166
  );
163
167
 
@@ -252,6 +256,11 @@ export async function initDb(): Promise<Database> {
252
256
  if (!messageColumns.some(column => column.name === "cost_no_cache_input")) {
253
257
  db.run("ALTER TABLE messages ADD COLUMN cost_no_cache_input REAL");
254
258
  }
259
+ // Rows ingested before this column existed carry no served tier; a re-parse
260
+ // fills them from the session's assistant messages.
261
+ if (!messageColumns.some(column => column.name === "service_tier")) {
262
+ db.run("ALTER TABLE messages ADD COLUMN service_tier TEXT");
263
+ }
255
264
  // Rows ingested before this column existed default to 0 (not unpriced), so
256
265
  // their epoch-sentinel zeros read as free until a re-parse rewrites them.
257
266
  if (!messageColumns.some(column => column.name === "cost_unpriced")) {
@@ -828,9 +837,9 @@ export function insertMessageStats(stats: Iterable<MessageStatsInput>): number {
828
837
  duration, ttft, stop_reason, error_message,
829
838
  input_tokens, output_tokens, cache_read_tokens, cache_write_tokens, total_tokens, premium_requests,
830
839
  cost_input, cost_output, cost_cache_read, cost_cache_write, cost_total, cost_no_cache_input,
831
- cost_unpriced, agent_type
840
+ cost_unpriced, agent_type, service_tier
832
841
  )
833
- SELECT ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?
842
+ SELECT ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?
834
843
  WHERE NOT EXISTS (
835
844
  SELECT 1 FROM messages
836
845
  WHERE entry_id = ? AND timestamp = ? AND session_file <> ?
@@ -843,7 +852,8 @@ export function insertMessageStats(stats: Iterable<MessageStatsInput>): number {
843
852
  cost_cache_write = excluded.cost_cache_write,
844
853
  cost_total = excluded.cost_total,
845
854
  cost_no_cache_input = excluded.cost_no_cache_input,
846
- cost_unpriced = excluded.cost_unpriced
855
+ cost_unpriced = excluded.cost_unpriced,
856
+ service_tier = excluded.service_tier
847
857
  `);
848
858
 
849
859
  let inserted = 0;
@@ -877,6 +887,7 @@ export function insertMessageStats(stats: Iterable<MessageStatsInput>): number {
877
887
  noCacheInputCost,
878
888
  unpriced ? 1 : 0,
879
889
  s.agentType,
890
+ s.serviceTier ?? null,
880
891
  // `WHERE NOT EXISTS` binds: skip when a different session_file
881
892
  // already holds this (entry_id, timestamp).
882
893
  s.entryId,
@@ -941,6 +952,7 @@ function rowToMessageStats(row: any): MessageStats {
941
952
  },
942
953
  },
943
954
  agentType: (row.agent_type as AgentType) ?? "main",
955
+ serviceTier: (row.service_tier as ServiceTier | null) ?? null,
944
956
  costUnpriced: row.cost_unpriced === 1,
945
957
  };
946
958
  }
package/src/parser.ts CHANGED
@@ -4,7 +4,8 @@ import * as path from "node:path";
4
4
  import {
5
5
  type AssistantMessage,
6
6
  coerceServiceTierByFamily,
7
- getPriorityPremiumRequests,
7
+ getPremiumServiceTierRequests,
8
+ parseServiceTier,
8
9
  resolveModelServiceTier,
9
10
  type ServiceTierByFamily,
10
11
  type ToolCall,
@@ -236,20 +237,26 @@ function extractStats(
236
237
  const rawUsage = msg.usage as Partial<Usage> | undefined;
237
238
  if (!rawUsage || typeof rawUsage !== "object") return null;
238
239
 
239
- // Backfill: when the session recorded `priority` as the active service tier
240
- // at this point but the AI usage payload was captured before priority
241
- // requests were folded into `premiumRequests`, derive the count here so the
242
- // "Premium Reqs" stat aggregates priority traffic on re-sync. Trust any
243
- // non-zero value already in `usage.premiumRequests` (Copilot multipliers or
244
- // the new AI code path) and only synthesise when the field is missing/zero.
240
+ // Backfill: when the session recorded a premium tier (`priority`/`ultrafast`)
241
+ // as the active service tier at this point but the AI usage payload was
242
+ // captured before premium requests were folded into `premiumRequests`, derive
243
+ // the count here so the "Premium Reqs" stat aggregates premium traffic on
244
+ // re-sync. The tier the provider reported serving the turn (`msg.serviceTier`)
245
+ // is authoritative — it is proof the tier reached the wire, so the
246
+ // discovery-metadata gate is skipped; the session's live setting is only a
247
+ // fallback for turns recorded before that field existed. Trust any non-zero
248
+ // value already in `usage.premiumRequests` (Copilot multipliers or the new AI
249
+ // code path) and only synthesise when the field is missing/zero.
245
250
  const recorded = rawUsage.premiumRequests ?? 0;
246
251
  const model = {
247
252
  provider: msg.provider,
248
253
  api: msg.api,
249
254
  identity: classifyModel(msg.provider, msg.model, { lenient: true }),
250
255
  };
251
- const tier = resolveModelServiceTier(currentServiceTier, model);
252
- const derived = recorded > 0 ? recorded : getPriorityPremiumRequests(tier, model);
256
+ const servedTier = parseServiceTier(msg.serviceTier);
257
+ const tier = servedTier ?? resolveModelServiceTier(currentServiceTier, model);
258
+ const derived =
259
+ recorded > 0 ? recorded : getPremiumServiceTierRequests(tier, model, { served: servedTier !== undefined });
253
260
  const wellFormed =
254
261
  isFiniteCount(rawUsage.input) &&
255
262
  isFiniteCount(rawUsage.output) &&
@@ -291,6 +298,7 @@ function extractStats(
291
298
  errorMessage: msg.errorMessage ?? null,
292
299
  usage,
293
300
  agentType,
301
+ serviceTier: servedTier ?? null,
294
302
  };
295
303
  }
296
304
 
package/src/types.ts CHANGED
@@ -35,6 +35,14 @@ export interface MessageStats {
35
35
  usage: Usage;
36
36
  /** Which agent produced this message (main agent, task subagent, advisor) */
37
37
  agentType: AgentType;
38
+ /**
39
+ * Service tier the provider reported serving this turn, or `null` when the
40
+ * provider reported none. Lets consumers separate a fast serving path's
41
+ * throughput and premium traffic from standard-tier traffic. Always written by
42
+ * `rowToMessageStats`; optional only because session fixtures that stand in
43
+ * for ingest input are typed as `MessageStats` too.
44
+ */
45
+ serviceTier?: ServiceTier | null;
38
46
  /**
39
47
  * Ingest refused to price this request: a scheduled (time-based) card with no
40
48
  * recoverable request timestamp, so `usage.cost.total` of 0 is unknown spend