:root{--bg:#0f1115;--card:#171a21;--border:#262b36;--text:#e8eaf0;--muted:#98a2b3;--accent:#7aa2f7;--warn:#e6a23c;--radius:12px;--input:#647ef2;--output:#41c7a8;--cache-read:#e6a23c;--cache-write:#bd83f4;--hermes:#bd83f4;--opencode:#41c7a8}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-family:system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;line-height:1.45}
.topbar{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:calc(.9rem + env(safe-area-inset-top)) max(1rem,env(safe-area-inset-right)) .9rem max(1rem,env(safe-area-inset-left));border-bottom:1px solid var(--border);flex-wrap:wrap}
.brand{display:flex;align-items:center;gap:.65rem}.brand-icon{border-radius:7px;display:block}.topbar h1{font-size:1.05rem;margin:0}.brand-sub{margin:0;color:var(--muted);font-size:.76rem}
.session{display:flex;align-items:center;gap:.6rem;color:var(--muted);font-size:.9rem}
main{padding:1rem max(1rem,env(safe-area-inset-right)) calc(1rem + env(safe-area-inset-bottom)) max(1rem,env(safe-area-inset-left));max-width:1100px;margin:0 auto}
.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:1rem}
[hidden]{display:none!important}
.auth-view{max-width:420px;margin:2rem auto;display:grid;gap:1rem}.auth-card{display:grid;gap:.4rem}.auth-card h2{margin:0 0 .4rem;font-size:1rem}
label{font-size:.82rem;color:var(--muted)}
input[type=text],input:not([type]),input[type=password]{background:#0d0f14;border:1px solid var(--border);border-radius:8px;color:var(--text);padding:.55rem .6rem;font-size:.95rem;width:100%}
button{background:var(--accent);color:#0b1020;border:0;border-radius:8px;padding:.55rem .9rem;font-size:.92rem;font-weight:600;cursor:pointer}
button.ghost{background:transparent;color:var(--muted);border:1px solid var(--border)}
select{background:#0d0f14;border:1px solid var(--border);border-radius:8px;color:var(--text);padding:.5rem .65rem;font-size:.9rem;min-width:145px;max-width:100%}
.error{color:#f87171;font-size:.9rem;margin:0}
.banner{margin:0 0 .75rem;padding:.55rem .75rem;border:1px solid #6a4a20;border-radius:8px;color:#ffd58e;font-size:.85rem}
.filters-card{display:flex;align-items:end;gap:1rem;flex-wrap:wrap;margin-bottom:.9rem}
.filter-group{display:grid;gap:.25rem}.filter-label{font-size:.72rem;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);font-weight:600}
.harness-switch{display:inline-flex;background:#0d0f14;border:1px solid var(--border);border-radius:9px;padding:.2rem;gap:.15rem}
.harness-btn{background:transparent;color:var(--muted);padding:.38rem .72rem;font-size:.85rem;border-radius:7px;white-space:nowrap}
.harness-btn.active{background:var(--accent);color:#0b1020}.harness-btn:disabled{opacity:.35;cursor:not-allowed}
.filter-meta{margin-left:auto;display:flex;align-items:center;gap:.6rem;flex-wrap:wrap}.as-of{margin:0;font-size:.82rem;color:var(--muted)}
.stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.7rem;margin:0 0 .5rem}
.stat-card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:.8rem .85rem;min-height:112px;display:grid;align-content:start;gap:.15rem}
.stat-label{font-size:.72rem;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);font-weight:600;display:flex;align-items:center;gap:.35rem}
.stat-value{font-size:clamp(1.25rem,4.2vw,1.7rem);font-weight:750;line-height:1.15;font-variant-numeric:tabular-nums;letter-spacing:-.02em}
.stat-split{margin:0;font-size:.74rem;color:var(--muted)}.stat-split .h{color:var(--hermes)}.stat-split .o{color:var(--opencode)}.stat-split .h,.stat-split .o{white-space:nowrap}
.stat-foot{margin:0;font-size:.7rem;color:#6f7788}
.mix-note{margin:0 0 .8rem;font-size:.8rem;color:var(--muted)}.mix-note b{color:var(--text)}.mix-note .h{color:var(--hermes)}.mix-note .o{color:var(--opencode)}
.chart-card{display:grid;gap:.7rem;margin-bottom:.9rem}.chart-toolbar{display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem;flex-wrap:wrap}
.ledger-title{margin:0;color:var(--text);font-size:.95rem;font-weight:600}.chart-sub{margin:.1rem 0 0;color:var(--muted);font-size:.8rem}
.chart-controls{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap}
.metric-switch{display:inline-flex;background:#0d0f14;border:1px solid var(--border);border-radius:8px;padding:.2rem;gap:.15rem}
.switch-btn{background:transparent;color:var(--muted);padding:.32rem .6rem;font-size:.8rem;border-radius:6px}.switch-btn.active{background:#252b3a;color:var(--text)}
.breadcrumb{display:flex;flex-wrap:wrap;gap:.35rem;align-items:center;font-size:.82rem}.breadcrumb button{background:none;color:var(--accent);border:0;padding:0;font-weight:500}.breadcrumb span{color:var(--muted)}.breadcrumb>*+*::before{content:"·";color:#4a5160;margin-right:.35rem}
.token-legend{display:flex;flex-wrap:wrap;gap:.6rem;font-size:.8rem;color:var(--muted)}
.token-legend .entry{display:grid;gap:.05rem;padding:.35rem .5rem;border:1px solid transparent;border-radius:8px;cursor:pointer}
.token-legend .entry.static{cursor:default}
.token-legend .entry.active{border-color:var(--border);background:#0d0f14}
.legend-top{display:inline-flex;align-items:center;gap:.35rem}.legend-label{color:var(--text);font-weight:600}.legend-avg{font-size:.74rem;color:var(--muted)}.legend-avg-num{color:var(--text)}.legend-avg-num .h{color:var(--hermes)}.legend-avg-num .o{color:var(--opencode)}
.swatch{display:inline-block;width:11px;height:11px;border-radius:2px}
.swatch.input,.bar.input{fill:var(--input);background:var(--input)}.swatch.output,.bar.output{fill:var(--output);background:var(--output)}
.swatch.cache-read,.bar.cache-read{fill:var(--cache-read);background:var(--cache-read)}.swatch.cache-write,.bar.cache-write{fill:var(--cache-write);background:var(--cache-write)}
.swatch.hermes{background:var(--hermes)}.swatch.opencode{background:var(--opencode)}
.bar.cost.hermes{fill:var(--hermes)}.bar.cost.opencode{fill:var(--opencode)}
.bar.cost{fill:var(--accent)}
.chart-wrap{position:relative;width:100%;overflow:hidden}#chart{width:100%;height:auto;display:block;touch-action:manipulation}
#chart .bar{cursor:pointer}#chart .bar:hover,#chart .bar:focus{filter:brightness(1.2);outline:none}
#chart .axis{stroke:#2a3040;stroke-width:1}#chart .grid{stroke:#1e222c;stroke-width:1}#chart .label{fill:var(--text);font-size:11px}
#chart .dominant{font-size:9px;font-weight:600}#chart .dominant.small{font-size:8px}
#chart .dominant.input{fill:var(--input)}#chart .dominant.output{fill:var(--output)}#chart .dominant.cache-read{fill:var(--cache-read)}#chart .dominant.cache-write{fill:var(--cache-write)}
#chart .bar-tag{font-size:10px;font-weight:700}#chart .bar-tag.hermes{fill:var(--hermes)}#chart .bar-tag.opencode{fill:var(--opencode)}
#chart .mix-track{fill:#0d0f14;stroke:var(--border);stroke-width:1}
#chart .mix-pct{fill:#0b1020;font-size:24px;font-weight:750}
#chart .mix-harness{font-size:30px;font-weight:750}#chart .mix-harness.hermes{fill:var(--hermes)}#chart .mix-harness.opencode{fill:var(--opencode)}
#chart .mix-total{fill:var(--muted);font-size:22px}
.tooltip{position:absolute;pointer-events:none;background:#0b0e14;border:1px solid var(--border);border-radius:8px;padding:.45rem .6rem;font-size:.8rem;color:var(--text);max-width:280px;z-index:3}
.tooltip strong{display:block}.tooltip span{display:block}.tooltip .sep{height:.35rem}
.empty,.note{margin:0;font-size:.82rem;color:var(--muted)}.loading{display:flex;align-items:center;gap:.5rem;font-size:.85rem;color:var(--muted);margin:0}
.spinner{display:inline-block;width:13px;height:13px;flex:none;border:2px solid rgba(169,194,255,.25);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}
.attribution-card{display:grid;gap:.6rem}.table-wrap{overflow-x:auto}
.attrib-table{width:100%;border-collapse:collapse;font-size:.82rem}
.attrib-table th{text-align:left;color:var(--muted);font-weight:600;font-size:.72rem;text-transform:uppercase;letter-spacing:.04em;padding:.4rem .5rem;border-bottom:1px solid var(--border);white-space:nowrap}
.attrib-table td{padding:.42rem .5rem;border-bottom:1px solid #1e222c;white-space:nowrap}.attrib-table td.num,.attrib-table th.num{text-align:right;font-variant-numeric:tabular-nums}
.attrib-table tr:last-child td{border-bottom:0}
.badge{display:inline-block;padding:.12rem .42rem;border-radius:999px;font-size:.7rem;font-weight:700;letter-spacing:.02em}
.badge.hermes{background:rgba(189,131,244,.16);color:var(--hermes)}.badge.opencode{background:rgba(65,199,168,.14);color:var(--opencode)}
@media(max-width:860px){.stats{grid-template-columns:repeat(2,minmax(0,1fr))}.filter-meta{margin-left:0;width:100%}}
@media(max-width:640px){
  .table-wrap{overflow:visible}
  .attrib-table thead{display:none}
  .attrib-table,.attrib-table tbody{display:block}
  .attrib-table tr{display:grid;grid-template-columns:1fr 1fr;gap:.15rem .7rem;padding:.6rem 0;border-bottom:1px solid #1e222c}
  .attrib-table td{display:block;border:0;padding:0;white-space:normal;overflow-wrap:anywhere}
  .attrib-table td.num{text-align:left}
  .attrib-table td::before{content:attr(data-label);display:block;font-size:.6rem;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}
  .attrib-table td:first-child{grid-column:1/-1}
  .stats{gap:.5rem}
  .stat-card{min-height:104px;padding:.7rem .7rem}
  .stat-value{font-size:clamp(1.15rem,5.2vw,1.5rem)}
  .stat-split{font-size:.7rem}
  .token-legend{gap:.45rem}
  .token-legend .entry{padding:.45rem .55rem}
  #chart .label{font-size:24px}
  #chart .bar-tag{font-size:18px}
  #chart .mix-pct{font-size:26px}
  #chart .mix-harness{font-size:32px}
  #chart .mix-total{font-size:24px}
}
@media(max-width:520px){main{padding:.7rem max(.7rem,env(safe-area-inset-right)) calc(.7rem + env(safe-area-inset-bottom)) max(.7rem,env(safe-area-inset-left))}.filters-card{gap:.7rem}select{min-width:0}.stat-value{font-size:clamp(.95rem,4.6vw,1.15rem)}}
