@kenz1117/dsh-ui-usage-billing 1.0.32 → 1.0.34
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/lib/client.js +1 -1
- package/lib/index.js +38 -10
- package/lib/types/aggregate.d.ts +22 -2
- package/package.json +1 -1
package/lib/client.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
window.__ModuleLoader__.load({id:`@kenz1117/dsh-ui-usage-billing`,factory:e=>{var t={exports:{}},n=t.exports;Object.defineProperty(n,Symbol.toStringTag,{value:`Module`});let r=e("react"),i=e("@deepseek-ai/dsh-client-ui-primitives"),a=e("react/jsx-runtime"),o=e("@deepseek-ai/dsh-client-store");function s(e){return e}function c(e){return s(e)}function l(e){var t,n,r=``;if(typeof e==`string`||typeof e==`number`)r+=e;else if(typeof e==`object`){if(Array.isArray(e)){var i=e.length;for(t=0;t<i;t++)e[t]&&(n=l(e[t]))&&(r&&(r+=` `),r+=n)}else for(n in e)e[n]&&(r&&(r+=` `),r+=n)}return r}function u(){for(var e,t,n=0,r=``,i=arguments.length;n<i;n++)(e=arguments[n])&&(t=l(e))&&(r&&(r+=` `),r+=t);return r}let d={mode:`combined`,targets:[]},f=`dsh.ui-usage-billing.float`;function p(){try{let e=localStorage.getItem(f);if(e===null)return{...d,targets:[...d.targets]};let t=JSON.parse(e);return{mode:t.mode===`subscription`?`subscription`:`combined`,targets:Array.isArray(t.targets)?t.targets.filter(e=>typeof e==`string`):[]}}catch{return{...d,targets:[...d.targets]}}}function m(e){try{localStorage.setItem(f,JSON.stringify(e))}catch{}}let h={metric:`money`},g=`dsh.ui-usage-billing.card`;function _(){try{let e=localStorage.getItem(g);return e===null?{...h}:{metric:JSON.parse(e).metric===`tokens`?`tokens`:`money`}}catch{return{...h}}}function v(e){try{localStorage.setItem(g,JSON.stringify(e))}catch{}}let y={hideUnidentified:!0},b=`dsh.ui-usage-billing.sites`;function x(){try{let e=localStorage.getItem(b);return e===null?{...y}:{hideUnidentified:JSON.parse(e).hideUnidentified!==!1}}catch{return{...y}}}function S(e){try{localStorage.setItem(b,JSON.stringify(e))}catch{}}let C={show:!0,position:`below`},w=`dsh.ui-usage-billing.livecost`,T=`dsh.ui-usage-billing.livecost-pref`;function E(){try{let e=localStorage.getItem(w);if(e===null)return{...C};let t=JSON.parse(e);return{show:t.show!==!1,position:t.position===`above`||t.position===`toolbar`?t.position:`below`}}catch{return{...C}}}function ee(e){try{localStorage.setItem(w,JSON.stringify(e))}catch{}}let D=`dsh.ui-usage-billing.prices`;function te(){try{let e=localStorage.getItem(D);if(e===null)return[];let t=JSON.parse(e);if(t===null)return[];let n=[],r=(e,t)=>{if(typeof t!=`object`||!t)return;let r=t,i=Number(r.input),a=Number(r.cacheHit),o=Number(r.output);if(![i,a,o].every(e=>Number.isFinite(e)&&e>=0))return;let s=r.offPeak,c;if(typeof s==`object`&&s){let e=s,t=Number(e.input),n=Number(e.cacheHit),r=Number(e.output);[t,n,r].every(e=>Number.isFinite(e)&&e>=0)&&(c={input:t,cacheHit:n,output:r})}n.push({key:e,...typeof r.origin==`string`&&r.origin!==``?{origin:r.origin}:{},input:i,cacheHit:a,output:o,...c===void 0?{}:{offPeak:c},...r.currency===`USD`?{currency:`USD`}:{}})};if(Array.isArray(t))for(let e of t){if(typeof e!=`object`||!e)continue;let t=e;typeof t.key==`string`&&t.key!==``&&r(t.key,e)}else if(typeof t==`object`)for(let[e,n]of Object.entries(t))r(e,n);return n}catch{return[]}}function ne(e){try{localStorage.setItem(D,JSON.stringify(e))}catch{}}let O={metric:`ttft`},k=`dsh.ui-usage-billing.perf`;function re(){try{let e=localStorage.getItem(k);if(e===null)return{...O};let t=JSON.parse(e);return{metric:t.metric===`tps`?`tps`:`ttft`,...Array.isArray(t.models)?{models:t.models.filter(e=>typeof e==`string`)}:{}}}catch{return{...O}}}function ie(e){try{localStorage.setItem(k,JSON.stringify(e))}catch{}}let ae=`@kenz1117/dsh-ui-usage-billing/UsageBilling.module.css`;if(typeof document<`u`&&document.querySelector(`style[data-plugin-css=`+JSON.stringify(ae)+`]`)===null){let e=document.createElement(`style`);e.dataset.plugin=`@kenz1117/dsh-ui-usage-billing`,e.dataset.pluginCss=ae,e.textContent=`.KFXqYa_railButton{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-2);width:36px;height:36px;color:var(--dsw-alias-label-secondary);cursor:pointer;border-radius:8px;flex:none;justify-content:center;align-items:center;padding:0;transition:border-color .16s,color .16s;display:flex}.KFXqYa_railButton:hover,.KFXqYa_railButton:focus-visible{border-color:var(--dsw-static-blue-500);color:var(--dsw-static-blue-500);outline:none}.KFXqYa_railButton svg{stroke-width:2px;width:18px;height:18px}.KFXqYa_trigger{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-2);width:100%;min-width:0;color:var(--dsw-alias-label-primary);cursor:pointer;text-align:left;border-radius:14px;align-items:center;gap:10px;padding:9px 12px;transition:border-color .16s,transform .16s,box-shadow .16s;display:flex;position:relative;overflow:hidden;box-shadow:0 1px 2px #0000000a}.KFXqYa_trigger:hover,.KFXqYa_trigger:focus-visible{border-color:var(--dsw-static-blue-500);box-shadow:0 6px 18px -8px color-mix(in srgb, var(--dsw-static-blue-500) 45%, transparent);outline:none;transform:translateY(-1px)}.KFXqYa_triggerIcon{border:1px solid var(--dsw-alias-border-l1);width:32px;height:32px;color:var(--dsw-alias-label-secondary);opacity:.8;border-radius:8px;flex:none;justify-content:center;align-items:center;display:inline-flex}.KFXqYa_triggerIcon svg{stroke-width:2px;width:16px;height:16px}.KFXqYa_triggerMain{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.KFXqYa_triggerPrimary{align-items:baseline;gap:5px;min-width:0;display:inline-flex}.KFXqYa_triggerLabel{color:var(--dsw-alias-label-tertiary);white-space:nowrap;text-overflow:ellipsis;min-width:0;font-size:11px;line-height:15px;overflow:hidden}.KFXqYa_triggerYen{color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;font-size:12px;font-weight:600;line-height:16px}.KFXqYa_triggerMetric{color:var(--dsw-alias-label-primary);letter-spacing:-.02em;font-variant-numeric:tabular-nums;white-space:nowrap;text-overflow:ellipsis;min-width:0;font-size:20px;font-weight:700;line-height:24px;overflow:hidden}.KFXqYa_triggerSub{color:var(--dsw-alias-label-tertiary);white-space:nowrap;text-overflow:ellipsis;font-size:10px;line-height:14px;overflow:hidden}.KFXqYa_triggerSpark{flex:none;align-items:flex-end;gap:2px;height:20px;display:flex}.KFXqYa_triggerSparkBar,.KFXqYa_triggerSparkHot{background:var(--dsw-static-blue-500);opacity:.6;border-radius:1px 1px 0 0;width:3px}.KFXqYa_triggerSparkHot{opacity:1}.KFXqYa_triggerWrap{flex:auto;width:100%;min-width:96px;max-width:100%;display:block;position:relative;container:KFXqYa_billing-trigger/inline-size}@container KFXqYa_billing-trigger (width<=200px){.KFXqYa_trigger{gap:6px;padding:8px 10px}.KFXqYa_triggerSpark{display:none}}@container KFXqYa_billing-trigger (width<=170px){.KFXqYa_triggerSub,.KFXqYa_triggerLabel{display:none}}@container KFXqYa_billing-trigger (width<=110px){.KFXqYa_triggerIcon,.KFXqYa_triggerSpark,.KFXqYa_triggerSub,.KFXqYa_triggerLabel{display:none}.KFXqYa_trigger{justify-content:center;padding:8px 6px}}.KFXqYa_triggerPop{border:1px solid color-mix(in srgb, var(--dsw-alias-border-l1) 80%, transparent);background:color-mix(in srgb, var(--dsw-alias-bg-layer-3) 72%, transparent);-webkit-backdrop-filter:blur(14px)saturate(1.3);box-shadow:0 12px 32px #00000029, inset 0 1px 0 color-mix(in srgb, var(--dsw-alias-label-primary) 8%, transparent);opacity:0;visibility:hidden;pointer-events:none;z-index:10;border-radius:14px;flex-direction:column;gap:5px;padding:10px 12px;transition:opacity .16s,transform .16s,visibility 0s linear .16s;display:flex;position:absolute;bottom:calc(100% + 8px);left:0;right:0;overflow:hidden;transform:translateY(4px)}.KFXqYa_triggerPop:before{content:"";background:linear-gradient(90deg, transparent 0%, var(--dsw-static-amber-500) 30%, var(--dsw-alias-label-primary) 50%, var(--dsw-static-amber-500) 70%, transparent 100%);opacity:.9;pointer-events:none;background-size:200% 100%;height:1.5px;animation:4s ease-in-out infinite KFXqYa_subscriptionGoldFlow;position:absolute;top:0;left:0;right:0}.KFXqYa_triggerWrap:hover .KFXqYa_triggerPop,.KFXqYa_triggerWrap:focus-within .KFXqYa_triggerPop{opacity:1;visibility:visible;transition:opacity .16s,transform .16s,visibility linear;transform:translateY(0)}.KFXqYa_popHead{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.KFXqYa_popTitle{color:var(--dsw-alias-label-primary);font-size:13px;font-weight:700;line-height:18px}.KFXqYa_metricGrid{grid-template-columns:repeat(3,1fr);gap:10px 8px;display:grid}.KFXqYa_metricCell{flex-direction:column;gap:2px;min-width:0;display:flex}.KFXqYa_metricLabel{color:var(--dsw-alias-label-tertiary);font-size:10px;line-height:14px}.KFXqYa_metricValue{color:var(--dsw-alias-label-primary);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:12px;font-weight:700;line-height:16px}.KFXqYa_metricValuePrimary{color:var(--dsw-static-amber-500)}.KFXqYa_metricValueSuccess{color:var(--dsw-static-green-500)}.KFXqYa_popModel{border-top:1px solid var(--dsw-alias-border-l1);flex-direction:column;gap:6px;padding-top:10px;display:flex}.KFXqYa_popModelLabel{color:var(--dsw-alias-label-tertiary);font-size:10px;line-height:14px}.KFXqYa_popModelRow{align-items:center;gap:8px;min-width:0;display:flex}.KFXqYa_popDot{border-radius:999px;flex:none;width:6px;height:6px}.KFXqYa_popDotDirect{background:var(--dsw-static-green-500)}.KFXqYa_popDotSub{background:var(--dsw-static-amber-500)}.KFXqYa_popDotNeutral{background:var(--dsw-alias-label-tertiary)}.KFXqYa_popTagPrimary,.KFXqYa_popTagSub{white-space:nowrap;border-radius:5px;flex:none;align-items:center;height:18px;padding:0 6px;font-size:10px;font-weight:600;line-height:14px;display:inline-flex}.KFXqYa_popTagPrimary{background:color-mix(in srgb, var(--dsw-static-blue-500) 14%, transparent);color:var(--dsw-static-blue-500)}.KFXqYa_popTagSub{background:color-mix(in srgb, var(--dsw-static-amber-500) 18%, transparent);color:var(--dsw-static-amber-500)}.KFXqYa_popModelName{color:var(--dsw-alias-label-secondary);text-overflow:ellipsis;white-space:nowrap;font-size:11px;font-weight:500;line-height:16px;overflow:hidden}.KFXqYa_popModelStatus{color:var(--dsw-alias-label-primary);font-variant-numeric:tabular-nums;white-space:nowrap;margin-left:auto;font-size:11px;font-weight:600;line-height:16px}.KFXqYa_popModelStatusLow{color:var(--dsw-static-red-500)}.KFXqYa_dashboardModal{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-1);border-radius:14px;width:min(760px,100vw - 48px);max-height:min(760px,88vh);animation:.18s ease-out KFXqYa_dashboardIn;box-shadow:0 12px 32px -12px #0000002e,0 2px 8px #0000000f}@keyframes KFXqYa_dashboardIn{0%{opacity:0;transform:translateY(8px)scale(.98)}to{opacity:1;transform:none}}div[role=presentation]:has(>.dsh-billing-modal)>div[aria-hidden=true]:first-child{backdrop-filter:blur(8px)saturate(1.25)}.KFXqYa_dashboard{flex-direction:column;width:100%;max-height:min(760px,88vh);display:flex}.KFXqYa_dashboardHead{border-bottom:1px solid var(--dsw-alias-border-l1);justify-content:space-between;align-items:center;gap:12px;padding:12px 18px;display:flex}.KFXqYa_dashboardTitle{color:var(--dsw-alias-label-primary);margin:0;font-size:14px;font-weight:600;line-height:20px}.KFXqYa_dashboardSubtitle{color:var(--dsw-alias-label-caption);margin:2px 0 0;font-size:11px;line-height:16px}.KFXqYa_closeButton{border:1px solid var(--dsw-alias-border-l1);width:32px;height:32px;color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border-radius:8px;flex:none;justify-content:center;align-items:center;transition:background-color .14s,color .14s;display:inline-flex}.KFXqYa_closeButton:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.KFXqYa_closeButton svg{stroke-width:2px;width:16px;height:16px}.KFXqYa_dashboardBody{flex-direction:column;gap:14px;padding:16px 24px 24px;display:flex;overflow-y:auto}.KFXqYa_modalFooter{border-top:1px solid var(--dsw-alias-border-l1);color:var(--dsw-alias-label-tertiary);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;padding:8px 18px;font-size:11px;line-height:16px;display:flex}.KFXqYa_tabNav{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-2);border-radius:10px;align-items:center;gap:4px;margin:14px 24px 0;padding:4px;display:flex}.KFXqYa_tabButton{color:var(--dsw-alias-label-tertiary);cursor:pointer;background:0 0;border:none;border-radius:7px;padding:6px 14px;font-size:13px;font-weight:500;line-height:20px;transition:background-color .16s,color .16s}.KFXqYa_tabButton:hover,.KFXqYa_tabButton:focus-visible{color:var(--dsw-alias-label-primary);background:color-mix(in srgb, var(--dsw-alias-bg-layer-3) 62%, transparent);outline:none}.KFXqYa_tabButtonActive,.KFXqYa_tabButtonActive:hover,.KFXqYa_tabButtonActive:focus-visible{background:var(--dsw-alias-bg-layer-1);color:var(--dsw-alias-label-primary);font-weight:600;box-shadow:0 1px 3px #0000001f}.KFXqYa_tabPanel{flex-direction:column;gap:14px;animation:.14s ease-out KFXqYa_tabPanelIn;display:flex}@keyframes KFXqYa_tabPanelIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}.KFXqYa_reconcileNotice{border:1px solid color-mix(in srgb, var(--dsw-alias-border-l1) 78%, transparent);background:color-mix(in srgb, var(--dsw-alias-bg-layer-2) 62%, transparent);color:var(--dsw-alias-label-secondary);border-radius:10px;align-items:flex-start;gap:10px;padding:10px 12px;font-size:12px;line-height:1.55;display:flex}.KFXqYa_reconcileIcon{color:var(--dsw-alias-label-tertiary);flex:none;margin-top:1px;display:inline-flex}.KFXqYa_reconcileText{flex:1}.KFXqYa_reconcileDismiss{color:var(--dsw-alias-label-tertiary);cursor:pointer;white-space:nowrap;background:0 0;border:none;border-radius:6px;flex:none;padding:2px 8px;font-size:12px;line-height:1.4;transition:color .15s,background-color .15s}.KFXqYa_reconcileDismiss:hover{color:var(--dsw-alias-label-primary);background:color-mix(in srgb, var(--dsw-alias-label-primary) 8%, transparent)}.KFXqYa_hero{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-2);border-radius:10px;flex-direction:column;gap:12px;padding:14px 16px;display:flex;position:relative;overflow:hidden}.KFXqYa_heroTop{justify-content:space-between;align-items:center;gap:24px;display:flex}.KFXqYa_heroMain{flex-direction:column;gap:2px;min-width:0;display:flex}.KFXqYa_heroLabel{color:var(--dsw-alias-label-tertiary);text-transform:uppercase;letter-spacing:.06em;white-space:nowrap;font-size:10px;font-weight:500;line-height:14px}.KFXqYa_heroReadout{align-items:baseline;gap:4px;display:flex}.KFXqYa_heroCurrency{letter-spacing:-.01em;color:var(--dsw-alias-label-secondary);font-variant-numeric:tabular-nums;font-size:15px;font-weight:600;line-height:20px}.KFXqYa_heroValue{letter-spacing:-.02em;font-variant-numeric:tabular-nums;white-space:nowrap;color:var(--dsw-alias-label-primary);font-size:28px;font-weight:650;line-height:34px}.KFXqYa_heroMeta{color:var(--dsw-alias-label-caption);white-space:nowrap;margin-top:2px;font-size:11px;line-height:15px}.KFXqYa_heroGauge{flex:none;width:72px;height:72px;position:relative}.KFXqYa_heroGaugeSvg{width:100%;height:100%;display:block;transform:rotate(-90deg)}.KFXqYa_heroGaugeTrack{fill:none;stroke:var(--dsw-alias-bg-module-platform);stroke-width:7px}.KFXqYa_heroGaugeArc{fill:none;stroke:var(--dsw-static-blue-500);stroke-width:7px;stroke-linecap:round;transition:stroke-dasharray .26s}.KFXqYa_heroGaugeArcOver{stroke:var(--dsw-static-red-500)}.KFXqYa_heroGaugeCenter{flex-direction:column;justify-content:center;align-items:center;gap:1px;display:flex;position:absolute;inset:0}.KFXqYa_heroGaugePct{letter-spacing:-.02em;font-variant-numeric:tabular-nums;color:var(--dsw-alias-label-primary);font-size:14px;font-weight:700;line-height:18px}.KFXqYa_heroGaugePctOver{color:var(--dsw-static-red-500)}.KFXqYa_heroGaugeLabel{color:var(--dsw-alias-label-tertiary);font-size:9px;line-height:12px}.KFXqYa_heroBudget{border-top:1px solid var(--dsw-alias-border-l1);align-items:center;gap:14px;padding-top:14px;display:flex}.KFXqYa_heroBudgetLabel{color:var(--dsw-alias-label-secondary);white-space:nowrap;flex:none;font-size:11px;line-height:16px}.KFXqYa_heroBudgetTrack{background:var(--dsw-alias-border-l1);border-radius:999px;flex:1;min-width:0;height:6px;overflow:hidden}.KFXqYa_heroBudgetFill{background:var(--dsw-static-blue-500);border-radius:999px;height:100%;transition:width .22s}.KFXqYa_heroBudgetFillOver{background:var(--dsw-static-red-500)}.KFXqYa_heroBudgetValue{color:var(--dsw-alias-label-secondary);font-variant-numeric:tabular-nums;white-space:nowrap;flex:none;font-size:11px;line-height:16px}.KFXqYa_heroSide{border-top:1px solid var(--dsw-alias-border-l1);align-items:stretch;padding-top:12px;display:flex}.KFXqYa_heroSideItem{border-left:1px solid var(--dsw-alias-border-l1);flex-direction:column;flex:1;gap:2px;min-width:0;padding-left:14px;display:flex}.KFXqYa_heroSideItem:first-child{border-left:none;padding-left:0}.KFXqYa_heroSideLabel{color:var(--dsw-alias-label-tertiary);text-transform:uppercase;letter-spacing:.06em;white-space:nowrap;font-size:10px;font-weight:500;line-height:13px}.KFXqYa_heroSideValue{color:var(--dsw-alias-label-primary);font-variant-numeric:tabular-nums;letter-spacing:-.01em;white-space:nowrap;align-items:baseline;gap:6px;font-size:15px;font-weight:600;line-height:20px;display:inline-flex}.KFXqYa_heroSideSpacer{flex:1;display:block}.KFXqYa_delta{font-variant-numeric:tabular-nums;border-radius:999px;align-items:center;gap:2px;margin-left:6px;padding:1px 7px;font-size:10.5px;font-weight:600;line-height:16px;display:inline-flex}.KFXqYa_deltaUp{color:var(--dsw-static-green-500);background:color-mix(in srgb, var(--dsw-static-green-500) 12%, transparent)}.KFXqYa_deltaDown{color:var(--dsw-static-red-500);background:color-mix(in srgb, var(--dsw-static-red-500) 12%, transparent)}.KFXqYa_unpricedHint{border:1px solid color-mix(in srgb, var(--dsw-static-amber-500) 30%, transparent);background:color-mix(in srgb, var(--dsw-static-amber-500) 8%, transparent);color:var(--dsw-static-amber-500);border-radius:8px;align-items:center;padding:8px 12px;font-size:11.5px;font-weight:500;line-height:17px;display:flex}.KFXqYa_kpiGrid{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;display:grid}.KFXqYa_kpiTile{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-2);border-radius:10px;flex-direction:column;gap:2px;padding:10px 12px;transition:border-color .16s;display:flex;position:relative;overflow:hidden}.KFXqYa_kpiTile:hover{border-color:var(--dsw-alias-border-l2)}.KFXqYa_kpiLabel{color:var(--dsw-alias-label-tertiary);text-transform:uppercase;letter-spacing:.06em;font-size:10px;font-weight:500;line-height:13px}.KFXqYa_kpiValue{color:var(--dsw-alias-label-primary);font-variant-numeric:tabular-nums;letter-spacing:-.01em;font-size:16px;font-weight:650;line-height:22px}.KFXqYa_kpiGreen{color:var(--dsw-static-green-500)}.KFXqYa_kpiDetail{color:var(--dsw-alias-label-caption);white-space:nowrap;text-overflow:ellipsis;font-size:10.5px;line-height:14px;overflow:hidden}.KFXqYa_panel{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-2);border-radius:10px;flex-direction:column;gap:8px;padding:12px 14px;transition:border-color .16s;display:flex}.KFXqYa_panelHead{justify-content:space-between;align-items:baseline;gap:10px;display:flex}.KFXqYa_panelHeadControls{align-items:center;gap:8px;display:inline-flex}.KFXqYa_panelTitle{letter-spacing:-.005em;color:var(--dsw-alias-label-primary);margin:0;font-size:14px;font-weight:600;line-height:20px}.KFXqYa_panelHint{color:var(--dsw-alias-label-caption);white-space:nowrap;font-size:11px;line-height:16px}.KFXqYa_rangeToggle{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-1);border-radius:8px;gap:2px;padding:2px;display:inline-flex}.KFXqYa_rangeButton{color:var(--dsw-alias-label-tertiary);cursor:pointer;background:0 0;border:none;border-radius:6px;padding:2px 8px;font-size:11px;line-height:16px;transition:background-color .14s,color .14s}.KFXqYa_rangeButtonActive{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary);font-weight:600}.KFXqYa_exportBar{justify-content:flex-end;align-items:center;gap:8px;display:flex}.KFXqYa_exportLabel{color:var(--dsw-alias-label-caption);font-size:11px;line-height:16px}.KFXqYa_exportButton{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-1);color:var(--dsw-alias-label-secondary);cursor:pointer;border-radius:999px;padding:4px 12px;font-size:11.5px;line-height:16px;transition:border-color .16s,color .16s,background-color .16s}.KFXqYa_exportButton:hover,.KFXqYa_exportButton:focus-visible{border-color:var(--dsw-alias-border-l2);color:var(--dsw-alias-label-primary);outline:none}.KFXqYa_shareTrack{background:var(--dsw-alias-bg-module-platform);border-radius:999px;height:10px;display:flex;overflow:hidden}.KFXqYa_shareSeg{height:100%;transition:width .2s}.KFXqYa_shareSegPeak{background:var(--dsw-static-blue-500)}.KFXqYa_shareSegOff{background:color-mix(in srgb, var(--dsw-static-blue-500) 25%, var(--dsw-alias-bg-module-platform))}.KFXqYa_shareSegUser{background:var(--dsw-static-blue-500)}.KFXqYa_shareSegAssistant{background:var(--dsw-static-green-500)}.KFXqYa_shareSegTool{background:var(--dsw-static-amber-500)}.KFXqYa_shareLegend{align-items:center;gap:16px;display:flex}.KFXqYa_shareItem{color:var(--dsw-alias-label-secondary);align-items:baseline;gap:6px;font-size:12px;line-height:17px;display:inline-flex}.KFXqYa_bucketCost{align-items:baseline;gap:3px;display:inline-flex}.KFXqYa_bucketOfficial{color:var(--dsw-static-blue-500);font-weight:600}.KFXqYa_bucketSep{color:var(--dsw-alias-label-dimmed)}.KFXqYa_bucketThird{color:var(--dsw-alias-label-secondary)}.KFXqYa_shareDot{border-radius:50%;flex:none;align-self:center;width:8px;height:8px}.KFXqYa_shareValue{color:var(--dsw-alias-label-primary);font-variant-numeric:tabular-nums;font-weight:600}.KFXqYa_budgetInput{width:64px;color:var(--dsw-alias-label-primary);font-variant-numeric:tabular-nums;text-align:right;background:0 0;border:none;padding:0;font-size:12px;line-height:16px}.KFXqYa_budgetInput:focus-visible{outline:none}.KFXqYa_switch{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-module-platform);cursor:pointer;border-radius:999px;flex:none;width:30px;height:17px;padding:0;transition:background-color .16s,border-color .16s;position:relative}.KFXqYa_switchOn{border-color:var(--dsw-alias-border-l1);background:var(--dsw-alias-label-primary)}.KFXqYa_switchKnob{background:var(--dsw-static-neutral-bluish-00);border-radius:50%;width:11px;height:11px;transition:transform .16s;position:absolute;top:2px;left:2px}.KFXqYa_switchOn .KFXqYa_switchKnob{transform:translate(13px)}.KFXqYa_budgetFillWarn{background:var(--dsw-static-amber-500)}.KFXqYa_budgetFillOver{background:var(--dsw-static-red-500);animation:1.6s ease-in-out infinite KFXqYa_budgetOverPulse}@keyframes KFXqYa_budgetOverPulse{50%{opacity:.55}}.KFXqYa_chartWrap{width:100%;position:relative}.KFXqYa_chartSvg{width:100%;height:auto;display:block}.KFXqYa_chartEmpty{height:140px;color:var(--dsw-alias-label-caption);justify-content:center;align-items:center;font-size:13px;display:flex}.KFXqYa_emptyRow{text-align:center;color:var(--dsw-alias-label-caption);padding:28px 0;font-size:13px}.KFXqYa_chartGrid{stroke:var(--dsw-alias-border-l1);stroke-width:1px}.KFXqYa_chartAxisLabel{fill:var(--dsw-alias-label-tertiary);font-size:10px}.KFXqYa_chartBar{fill:var(--dsw-static-blue-500);opacity:.7}.KFXqYa_chartBar:hover{opacity:1}.KFXqYa_chartStack{stroke:var(--dsw-alias-bg-layer-1);stroke-width:.75px}.KFXqYa_chartStack:hover{opacity:.9}.KFXqYa_chartLine{stroke:var(--dsw-static-blue-500);stroke-width:2px;stroke-linecap:round;stroke-linejoin:round}.KFXqYa_chartCrosshair{stroke:var(--dsw-alias-label-dimmed);stroke-width:1px;stroke-dasharray:3 3}.KFXqYa_chartTooltip{pointer-events:none;z-index:2;border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-2);box-shadow:none;white-space:nowrap;border-radius:8px;padding:8px 10px;position:absolute;transform:translate(-50%,calc(-100% - 10px))}.KFXqYa_chartTooltipDate{color:var(--dsw-alias-label-primary);margin-bottom:3px;font-size:11px;font-weight:600}.KFXqYa_chartTooltipRow{color:var(--dsw-alias-label-secondary);align-items:center;gap:5px;font-size:11px;line-height:17px;display:flex}.KFXqYa_chartTooltipRow strong{color:var(--dsw-alias-label-primary);font-variant-numeric:tabular-nums;font-weight:600}.KFXqYa_chartTooltipHead{justify-content:space-between;align-items:baseline;gap:14px;margin-bottom:3px;display:flex}.KFXqYa_chartTooltipHead .KFXqYa_chartTooltipDate{margin-bottom:0}.KFXqYa_chartTooltipHead strong{color:var(--dsw-alias-label-primary);font-variant-numeric:tabular-nums;font-size:11px;font-weight:600}.KFXqYa_chartTooltipSplit{justify-content:space-between;gap:14px}.KFXqYa_chartTooltipLabel{align-items:center;gap:5px;display:flex}.KFXqYa_chartTooltipModelDetail{color:var(--dsw-alias-label-caption);font-variant-numeric:tabular-nums;margin:-2px 0 4px 13px;font-size:10.5px;line-height:14px}.KFXqYa_chartBarPlaceholder{fill:color-mix(in srgb, var(--dsw-alias-label-secondary) 30%, transparent)}.KFXqYa_chartLegendLine{background:var(--dsw-static-blue-500);border-radius:2px;width:10px;height:3px;display:inline-block}.KFXqYa_chartLegendBar{background:var(--dsw-static-blue-500);opacity:.5;border-radius:2px;width:7px;height:7px;display:inline-block}.KFXqYa_chartTooltipSwatch{border-radius:3px;flex:none;width:8px;height:8px;display:inline-block}.KFXqYa_chartLegend{color:var(--dsw-alias-label-tertiary);justify-content:flex-end;gap:14px;margin-top:2px;font-size:11px;display:flex}.KFXqYa_chartLegend span{align-items:center;gap:5px;display:inline-flex}.KFXqYa_chartLegendItem{font:inherit;color:inherit;cursor:pointer;background:0 0;border:none;align-items:center;gap:5px;padding:0;transition:color .12s;display:inline-flex}.KFXqYa_chartLegendItem:hover{color:var(--dsw-alias-label-secondary)}.KFXqYa_chartLegendItemActive{color:var(--dsw-alias-label-primary);font-weight:600}.KFXqYa_perfBar{align-items:center;margin:10px 0 2px;display:flex}.KFXqYa_perfChips{flex-wrap:wrap;gap:6px;margin:6px 0 2px;display:flex}.KFXqYa_perfChip{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-1);color:var(--dsw-alias-label-secondary);cursor:pointer;border-radius:999px;align-items:center;gap:5px;padding:2px 9px;font-size:11px;line-height:16px;transition:border-color .12s,color .12s,opacity .12s;display:inline-flex}.KFXqYa_perfChip:hover{color:var(--dsw-alias-label-primary)}.KFXqYa_perfChipOff{opacity:.45}.KFXqYa_perfChipDot{border-radius:3px;flex:none;width:8px;height:8px;display:inline-block}.KFXqYa_chartHoverDot{stroke:var(--dsw-alias-bg-layer-2);stroke-width:1.5px}.KFXqYa_tableScroll{border:1px solid var(--dsw-alias-border-l1);--dsh-scrollbar-thumb:var(--dsw-alias-scrollbar-bg-l2);--dsh-scrollbar-thumb-hover:var(--dsw-alias-scrollbar-hover-l2);border-radius:12px;overflow:auto}.KFXqYa_ubAlert{border:1px solid color-mix(in srgb, var(--dsw-static-blue-500) 30%, transparent);background:color-mix(in srgb, var(--dsw-static-blue-500) 8%, transparent);border-radius:10px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding:10px 14px;font-size:12px;line-height:17px;display:flex}.KFXqYa_ubAlertLeft{align-items:center;gap:8px;display:inline-flex}.KFXqYa_ubRate{color:var(--dsw-alias-label-primary);font-variant-numeric:tabular-nums;font-weight:600}.KFXqYa_ubAlertNote{color:var(--dsw-alias-label-secondary);margin:0}.KFXqYa_ubTag,.KFXqYa_ubTagSuccess,.KFXqYa_ubTagNeutral,.KFXqYa_ubTagAlert,.KFXqYa_ubTagPromo{white-space:nowrap;border-radius:999px;align-items:center;height:18px;padding:0 7px;font-size:10px;font-weight:600;line-height:14px;display:inline-flex}.KFXqYa_ubTagSuccess{background:color-mix(in srgb, var(--dsw-static-green-500) 14%, transparent);color:var(--dsw-static-green-500)}.KFXqYa_ubTagNeutral{background:var(--dsw-alias-bg-layer-3);color:var(--dsw-alias-label-secondary)}.KFXqYa_ubTagAlert{background:color-mix(in srgb, var(--dsw-static-amber-500) 16%, transparent);color:var(--dsw-static-amber-500)}.KFXqYa_ubTagPromo{background:color-mix(in srgb, var(--dsw-static-red-500) 14%, transparent);color:var(--dsw-static-red-500);cursor:help}.KFXqYa_ubExtraRow td{opacity:.72;padding-top:2px;padding-bottom:2px;font-size:12px}.KFXqYa_ubExtraName{color:var(--dsw-alias-label-secondary);margin-left:26px}.KFXqYa_ubExtraNote{color:var(--dsw-alias-label-tertiary);margin-left:8px;font-size:10px}.KFXqYa_ubCard{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-2);border-radius:12px;flex-direction:column;gap:12px;padding:16px 18px;display:flex}.KFXqYa_ubCardHead{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.KFXqYa_ubCardTitle{color:var(--dsw-alias-label-primary);margin:0;font-size:13px;font-weight:600;line-height:18px}.KFXqYa_ubCardSub{color:var(--dsw-alias-label-tertiary);font-size:11px;line-height:16px}.KFXqYa_ubTablewrap{border:1px solid var(--dsw-alias-border-l1);border-radius:10px;overflow:auto}.KFXqYa_ubTable{border-collapse:collapse;white-space:nowrap;width:100%;font-size:12.5px}.KFXqYa_ubTable th,.KFXqYa_ubTable td{border-bottom:1px solid var(--dsw-alias-border-l1);text-align:left;padding:9px 12px}.KFXqYa_ubTable tbody tr:last-child td{border-bottom:0}.KFXqYa_ubTable thead th{color:var(--dsw-alias-label-tertiary);text-transform:uppercase;letter-spacing:.05em;font-size:11px;font-weight:600}.KFXqYa_ubModel{align-items:center;gap:8px;display:inline-flex}.KFXqYa_vendorLogo{object-fit:contain;border-radius:4px;flex:none;width:18px;height:18px}.KFXqYa_vendorLetter{color:#fff;border-radius:4px;flex:none;justify-content:center;align-items:center;width:18px;height:18px;font-size:10px;font-weight:600;line-height:1;display:inline-flex}.KFXqYa_ubModelName{color:var(--dsw-alias-label-primary);align-items:center;gap:6px;font-weight:500;display:inline-flex}.KFXqYa_ubPricepair{flex-wrap:wrap;gap:6px;display:inline-flex}.KFXqYa_ubChipPeak,.KFXqYa_ubChipOff{font-variant-numeric:tabular-nums;border-radius:999px;align-items:center;gap:5px;height:20px;padding:0 8px;font-size:11px;line-height:16px;display:inline-flex}.KFXqYa_ubChipLabel{font-size:10px;font-weight:600}.KFXqYa_ubChipPeak{background:color-mix(in srgb, var(--dsw-static-blue-500) 14%, transparent);color:var(--dsw-static-blue-500)}.KFXqYa_ubChipOff{background:color-mix(in srgb, var(--dsw-static-green-500) 14%, transparent);color:var(--dsw-static-green-500)}.KFXqYa_ubNotes{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.KFXqYa_ubNotesItem{align-items:baseline;gap:10px;display:flex}.KFXqYa_ubNotesTerm{color:var(--dsw-alias-label-primary);flex:0 0 72px;font-size:12px;font-weight:500}.KFXqYa_ubNotesDesc{min-width:0;color:var(--dsw-alias-label-secondary);flex:1;font-size:12px;line-height:17px}.KFXqYa_ubCardControlGroup{flex-wrap:wrap;align-items:center;gap:8px;display:inline-flex}.KFXqYa_ubTagError{white-space:nowrap;background:color-mix(in srgb, var(--dsw-static-red-500) 14%, transparent);height:18px;color:var(--dsw-static-red-500);border-radius:999px;align-items:center;padding:0 7px;font-size:10px;font-weight:600;line-height:14px;display:inline-flex}.KFXqYa_ubStatGrid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.KFXqYa_ubStatCard{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-2);border-radius:12px;flex-direction:column;gap:4px;padding:14px 16px;display:flex}.KFXqYa_ubStatLabel{color:var(--dsw-alias-label-tertiary);font-size:11px;line-height:16px}.KFXqYa_ubStatValue{color:var(--dsw-alias-label-primary);font-variant-numeric:tabular-nums;letter-spacing:-.01em;font-size:22px;font-weight:700;line-height:28px}.KFXqYa_ubStatDetail{color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;font-size:11px;line-height:16px}.KFXqYa_rowlist{flex-direction:column;gap:4px;margin:0;padding:0;list-style:none;display:flex}.KFXqYa_rowline{width:100%;min-width:0;color:var(--dsw-alias-label-primary);text-align:left;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:10px;justify-content:space-between;align-items:center;gap:12px;padding:9px 12px;transition:background-color .14s,border-color .14s;display:flex}.KFXqYa_rowline:hover{background:color-mix(in srgb, var(--dsw-alias-bg-layer-3) 60%, transparent);border-color:var(--dsw-alias-border-l1)}.KFXqYa_rowlineName{min-width:0;color:var(--dsw-alias-label-primary);white-space:nowrap;text-overflow:ellipsis;flex:1;font-size:12.5px;font-weight:500;overflow:hidden}.KFXqYa_rowlineRight{font-variant-numeric:tabular-nums;flex:none;align-items:baseline;gap:8px;display:inline-flex}.KFXqYa_rowlineMuted{color:var(--dsw-alias-label-tertiary);font-size:11px;line-height:16px}.KFXqYa_rowlineChev{color:var(--dsw-alias-label-tertiary);font-size:14px}.KFXqYa_rowlineDrillWrap{padding-left:12px}.KFXqYa_rowlineDrill{border-left:1px solid var(--dsw-alias-border-l1);justify-content:space-between;align-items:center;gap:12px;padding:6px 12px;font-size:12px;display:flex}.KFXqYa_modelTable{border-collapse:collapse;width:100%;font-size:12.5px}.KFXqYa_modelTable th,.KFXqYa_modelTable td th td{border-bottom:1px solid var(--dsw-alias-border-l1);text-align:left;white-space:nowrap;padding:7px 10px}.KFXqYa_modelTable tbody tr:last-child td tbody tr:last-child td{border-bottom:0}.KFXqYa_modelTable thead th thead th{color:var(--dsw-alias-label-tertiary);text-transform:uppercase;letter-spacing:.05em;background:0 0;font-size:11px;font-weight:600}.KFXqYa_modelTable tbody tr tbody tr{transition:background-color .12s}.KFXqYa_modelTable tbody tr:hover tbody tr:hover{background:0 0}.KFXqYa_modelTable tbody tr.KFXqYa_modelRowFocusable{cursor:pointer}.KFXqYa_modelTable tbody tr.KFXqYa_modelRowActive,.KFXqYa_modelTable tbody tr.KFXqYa_modelRowActive:hover{background:var(--dsw-alias-interactive-bg-hover)}.KFXqYa_numCol{text-align:right;font-variant-numeric:tabular-nums}.KFXqYa_na{color:var(--dsw-alias-label-dimmed)}.KFXqYa_modelCell{align-items:center;gap:8px;display:inline-flex}.KFXqYa_modelDot{border-radius:50%;flex:none;width:9px;height:9px}.KFXqYa_modelName{color:var(--dsw-alias-label-primary);font-weight:500;line-height:16px;display:block}.KFXqYa_modelProvider{color:var(--dsw-alias-label-caption);font-size:10.5px;line-height:14px;display:block}.KFXqYa_siteRow{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-1);border-radius:10px;justify-content:space-between;align-items:center;gap:12px;padding:8px 10px;display:flex}.KFXqYa_siteRowName{align-items:center;gap:8px;min-width:0;display:inline-flex}.KFXqYa_siteKindTag{white-space:nowrap;border-radius:999px;flex:none;align-items:center;padding:1px 7px;font-size:10.5px;font-weight:600;line-height:16px;display:inline-flex}.KFXqYa_siteKindSite{color:var(--dsw-static-blue-500);background:color-mix(in srgb, var(--dsw-static-blue-500) 14%, transparent)}.KFXqYa_siteKindDirect{color:var(--dsw-static-green-500);background:color-mix(in srgb, var(--dsw-static-green-500) 14%, transparent)}.KFXqYa_siteKindUnknown{color:var(--dsw-static-red-500);background:color-mix(in srgb, var(--dsw-static-red-500) 14%, transparent)}.KFXqYa_siteRowTitle{color:var(--dsw-alias-label-primary);text-overflow:ellipsis;white-space:nowrap;font-size:12.5px;font-weight:600;line-height:18px;overflow:hidden}.KFXqYa_siteRowMeta{flex:none;align-items:center;gap:10px;display:inline-flex}.KFXqYa_siteRowCost{color:var(--dsw-alias-label-primary);font-variant-numeric:tabular-nums;font-size:12.5px;font-weight:700;line-height:18px}.KFXqYa_siteRowCalls{color:var(--dsw-alias-label-secondary);font-variant-numeric:tabular-nums;font-size:11.5px;line-height:17px}.KFXqYa_siteRowCallsLow{color:var(--dsw-static-red-500)}.KFXqYa_flatTag{color:var(--dsw-alias-label-caption);font-size:10.5px;line-height:14px}.KFXqYa_healthDot{border-radius:50%;flex:none;width:8px;height:8px;display:inline-block}.KFXqYa_healthOk{background:var(--dsw-static-green-500)}.KFXqYa_healthBad{background:var(--dsw-static-red-500)}.KFXqYa_healthIdle{background:var(--dsw-static-neutral-bluish-400)}.KFXqYa_dashboardRight{align-items:center;gap:8px;min-width:0;display:flex}.KFXqYa_healthBadge{white-space:nowrap;border-radius:999px;align-items:center;gap:6px;padding:3px 9px;font-size:11px;line-height:16px;display:inline-flex}.KFXqYa_healthBadgeOk{color:var(--dsw-static-green-500);background:var(--dsw-alias-bg-layer-2)}.KFXqYa_healthBadgeBad{color:var(--dsw-static-red-500);background:var(--dsw-alias-bg-layer-2)}.KFXqYa_planTag{color:var(--dsw-static-green-500);background:var(--dsw-alias-bg-layer-2);border-radius:999px;align-items:center;padding:1px 8px;font-size:11px;font-weight:500;line-height:17px;display:inline-flex}.KFXqYa_uncataloguedTag{vertical-align:1px;color:var(--dsw-static-amber-500);background:var(--dsw-alias-bg-layer-2);border-radius:999px;margin-left:6px;padding:0 6px;font-size:10px;font-weight:600;line-height:16px;display:inline-block}.KFXqYa_estimatedTag{vertical-align:1px;color:var(--dsw-static-blue-500);background:var(--dsw-alias-bg-layer-2);border-radius:999px;margin-left:6px;padding:0 6px;font-size:10px;font-weight:600;line-height:16px;display:inline-block}.KFXqYa_feeBar{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-3);color:var(--dsw-alias-label-secondary);font-variant-numeric:tabular-nums;border-radius:999px;flex-wrap:wrap;align-items:center;gap:8px;padding:6px 12px;font-size:11px;line-height:16px;display:inline-flex}.KFXqYa_feeBarAbove{order:-1;align-self:center;margin-bottom:8px}.KFXqYa_feeInline{font-variant-numeric:tabular-nums;white-space:nowrap;cursor:default;border-radius:999px;align-self:center;align-items:center;gap:5px;height:22px;padding:0 4px;font-size:11px;line-height:16px;display:inline-flex}.KFXqYa_feeInline .KFXqYa_feeChipPrimary,.KFXqYa_feeInline .KFXqYa_feeChipOff{height:18px;padding:0 7px}.KFXqYa_feeInlineNum{color:var(--dsw-alias-label-primary);padding-right:6px;font-weight:600}.KFXqYa_feeInlineAlert{background:color-mix(in srgb, var(--dsw-static-amber-500) 12%, transparent)}.KFXqYa_feeInlineAlert .KFXqYa_feeInlineNum{color:var(--dsw-static-amber-500)}.KFXqYa_feeInlineError{background:color-mix(in srgb, var(--dsw-static-red-500) 12%, transparent)}.KFXqYa_feeInlineError .KFXqYa_feeInlineNum{color:var(--dsw-static-red-500)}.KFXqYa_feeBar .KFXqYa_feeSep{color:var(--dsw-alias-label-dimmed)}.KFXqYa_feeCount{color:var(--dsw-alias-label-primary);font-weight:600}.KFXqYa_feeSuffix{color:var(--dsw-alias-label-tertiary)}.KFXqYa_feeItem{color:var(--dsw-alias-label-secondary);white-space:nowrap}.KFXqYa_feeNum{color:var(--dsw-alias-label-primary);font-weight:600}.KFXqYa_feeSep{color:var(--dsw-alias-label-tertiary)}.KFXqYa_feeChipPrimary,.KFXqYa_feeChipOff,.KFXqYa_feeChipAlert,.KFXqYa_feeChipError{font-variant-numeric:tabular-nums;white-space:nowrap;border-radius:999px;align-items:center;height:20px;padding:0 8px;font-size:10px;font-weight:600;line-height:14px;display:inline-flex}.KFXqYa_feeChipPrimary{background:color-mix(in srgb, var(--dsw-static-blue-500) 14%, transparent);color:var(--dsw-static-blue-500)}.KFXqYa_feeChipOff{background:color-mix(in srgb, var(--dsw-static-green-500) 14%, transparent);color:var(--dsw-static-green-500)}.KFXqYa_feeChipAlert{background:color-mix(in srgb, var(--dsw-static-amber-500) 16%, transparent);color:var(--dsw-static-amber-500)}.KFXqYa_feeChipError{background:color-mix(in srgb, var(--dsw-static-red-500) 14%, transparent);color:var(--dsw-static-red-500)}.KFXqYa_balanceCell{align-items:center;gap:6px;display:inline-flex;position:relative}.KFXqYa_balanceDaysBadge{border:1px solid var(--dsw-alias-label-caption);background:color-mix(in srgb, var(--dsw-alias-label-caption) 10%, transparent);min-width:24px;height:24px;color:var(--dsw-alias-label-secondary);cursor:pointer;border-radius:12px;justify-content:center;align-items:center;padding:0 6px;font-size:10.5px;font-weight:600;line-height:1;display:inline-flex}.KFXqYa_balanceDaysBadge:hover{border-color:var(--dsw-alias-label-secondary);background:color-mix(in srgb, var(--dsw-alias-label-caption) 18%, transparent)}.KFXqYa_balanceDaysBadgeLow{color:var(--dsw-static-red-500);border-color:var(--dsw-static-red-500);background:color-mix(in srgb, var(--dsw-static-red-500) 10%, transparent)}.KFXqYa_balanceDetailPop{z-index:20;background:var(--dsw-alias-bg-layer-3);border:1px solid var(--dsw-alias-label-caption);white-space:nowrap;border-radius:8px;flex-direction:column;gap:6px;min-width:180px;padding:8px 10px;display:inline-flex;position:absolute;top:calc(100% + 6px);right:0;box-shadow:0 6px 20px #0000002e}.KFXqYa_balanceDetailHead{justify-content:space-between;align-items:center;gap:12px;display:flex}.KFXqYa_balanceDetailTitle{color:var(--dsw-alias-label-primary);font-size:12px;font-weight:600}.KFXqYa_balanceDetailClose{cursor:pointer;color:var(--dsw-alias-label-caption);background:0 0;border:none;font-size:14px;line-height:1}.KFXqYa_balanceDetailClose:hover{color:var(--dsw-alias-label-primary)}.KFXqYa_balanceDetailGrid{flex-direction:column;gap:4px;display:inline-flex}.KFXqYa_balanceDetailRow{color:var(--dsw-alias-label-secondary);font-variant-numeric:tabular-nums;justify-content:space-between;gap:16px;font-size:11px;line-height:15px;display:flex}.KFXqYa_balanceDetailLabel{color:var(--dsw-alias-label-caption)}.KFXqYa_balanceDetailValue{color:var(--dsw-alias-label-primary);font-weight:500}body[data-zine-mode] .KFXqYa_trigger,body[data-zine-mode] .KFXqYa_triggerPop,body[data-zine-mode] .KFXqYa_railButton{display:none}body[data-zine-mode] .KFXqYa_dashboardHead{background:#000;border-bottom:2px solid #e8ff00}body[data-zine-mode] .KFXqYa_headTitleRow{align-items:center;gap:8px;margin-top:4px;display:flex}body[data-zine-mode] .KFXqYa_dashboardTitle{color:#e8ff00;letter-spacing:.04em;text-transform:uppercase;text-shadow:0 0 8px #e8ff0066;font-weight:900}body[data-zine-mode] .KFXqYa_dashboardSubtitle{color:#c9d98a;letter-spacing:.08em;text-transform:uppercase;font-size:10px}body[data-zine-mode] .KFXqYa_closeButton{color:#0a0a05;background:#ff2d95;border:1.5px solid #ff2d95;border-radius:0;box-shadow:0 0 10px #ff2d9573}body[data-zine-mode] .KFXqYa_hero{background:#000;border:2.5px solid #e8ff00;border-radius:0;position:relative;box-shadow:0 0 0 1px #0009,0 0 24px #e8ff002e}body[data-zine-mode] .KFXqYa_heroLabel{color:#c9d98a;letter-spacing:.12em;text-transform:uppercase;font-size:10px;font-weight:900}body[data-zine-mode] .KFXqYa_heroValue{color:#e8ff00;letter-spacing:-.02em;text-shadow:0 0 12px #e8ff0073;-webkit-text-fill-color:#e8ff00;background:0 0;font-size:38px;font-weight:900}body[data-zine-mode] .KFXqYa_heroMeta{color:#c9d98a;letter-spacing:.06em;text-transform:uppercase;font-size:10.5px}body[data-zine-mode] .KFXqYa_heroSideLabel{color:#c9d98a;letter-spacing:.1em;text-transform:uppercase;font-size:10px;font-weight:900}body[data-zine-mode] .KFXqYa_heroSideValue{color:#e8ff00;text-shadow:0 0 6px #e8ff0059}body[data-zine-mode] .KFXqYa_delta{font-weight:900}body[data-zine-mode] .KFXqYa_deltaUp{color:#ff2d95}body[data-zine-mode] .KFXqYa_deltaDown{color:#c9d98a}body[data-zine-mode] .KFXqYa_tabNav{background:#000;border-bottom:2px solid #e8ff00}body[data-zine-mode] .KFXqYa_tabButton{color:#c9d98a;letter-spacing:.08em;text-transform:uppercase;border-radius:0;font-size:10.5px;font-weight:900}body[data-zine-mode] .KFXqYa_tabButton:hover,body[data-zine-mode] .KFXqYa_tabButton:focus-visible{color:#e8ff00;background:#e8ff001f}body[data-zine-mode] .KFXqYa_tabButtonActive,body[data-zine-mode] .KFXqYa_tabButtonActive:hover,body[data-zine-mode] .KFXqYa_tabButtonActive:focus-visible{color:#0a0a05;background:#e8ff00;box-shadow:0 0 10px #e8ff0073}body[data-zine-mode] .KFXqYa_panel{background:#000;border:2px solid #e8ff00;border-radius:0}body[data-zine-mode] .KFXqYa_trendPanel{position:relative}body[data-zine-mode] .KFXqYa_panelTitle{color:#e8ff00;letter-spacing:.06em;text-transform:uppercase;text-shadow:0 0 6px #e8ff0066;font-weight:900}body[data-zine-mode] .KFXqYa_panelHint{color:#c9d98a;letter-spacing:.08em;text-transform:uppercase;font-size:10px;font-weight:900}body[data-zine-mode] .KFXqYa_modelTableScroll{background:#000;border:1.5px solid #e8ff0080;border-radius:0}.KFXqYa_currencyToggle{background:var(--dsw-alias-bg-layer-3);border:none;border-radius:8px;align-items:center;gap:2px;margin-right:8px;padding:2px;display:inline-flex}.KFXqYa_currencyButton{color:var(--dsw-alias-label-secondary);white-space:nowrap;cursor:pointer;background:0 0;border:0;border-radius:6px;padding:4px 8px;font-size:11px;font-weight:700;line-height:1}.KFXqYa_currencyButtonActive{background:var(--dsw-alias-bg-layer-2);color:var(--dsw-alias-label-primary)}.KFXqYa_subscriptionGrid{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:10px;margin-top:10px;display:grid}.KFXqYa_subscriptionCard{border:1px solid color-mix(in srgb, var(--dsw-alias-border-l1) 75%, transparent);background:color-mix(in srgb, var(--dsw-alias-bg-layer-2) 62%, transparent);-webkit-backdrop-filter:blur(12px)saturate(1.3);border-radius:12px;padding:12px 14px;transition:border-color .2s,box-shadow .2s;position:relative;overflow:hidden;box-shadow:0 8px 24px #0000001a}.KFXqYa_subscriptionCard:before{content:"";background:linear-gradient(90deg, transparent 0%, var(--dsw-static-amber-500) 30%, var(--dsw-alias-label-primary) 50%, var(--dsw-static-amber-500) 70%, transparent 100%);opacity:.9;pointer-events:none;background-size:200% 100%;height:1.5px;animation:3.6s ease-in-out infinite KFXqYa_subscriptionGoldFlow;position:absolute;top:0;left:0;right:0}@keyframes KFXqYa_subscriptionGoldFlow{0%{background-position:200% 0}to{background-position:-200% 0}}.KFXqYa_subscriptionCard:hover{border-color:color-mix(in srgb, var(--dsw-static-amber-500) 55%, var(--dsw-alias-border-l1));box-shadow:0 10px 30px #00000029}.KFXqYa_subscriptionHead{flex-wrap:wrap;align-items:baseline;gap:6px;margin-bottom:8px;display:flex}.KFXqYa_subscriptionName{font-size:13px;font-weight:700}.KFXqYa_subscriptionPlan{color:var(--dsw-alias-label-secondary);font-size:11px}.KFXqYa_subscriptionPlan[data-kind=code],.KFXqYa_subscriptionPlan[data-kind=token]{color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-bg-layer-3);border-radius:999px;padding:1px 8px;font-weight:500}.KFXqYa_subscriptionTier{color:var(--dsw-alias-label-secondary);margin-left:6px}.KFXqYa_subscriptionAuto{color:var(--dsw-static-blue-500);background:color-mix(in srgb, var(--dsw-static-blue-500) 14%, var(--dsw-alias-bg-layer-2));border-radius:999px;margin-left:6px;padding:1px 6px;font-size:10px}.KFXqYa_subscriptionStatus{color:var(--dsw-alias-label-secondary);margin-bottom:6px;font-size:11px}.KFXqYa_subscriptionWindow{align-items:center;gap:10px;margin-top:8px;font-size:11px;display:flex}.KFXqYa_subscriptionWindowLabel{color:var(--dsw-alias-label-secondary);flex:0 0 44px}.KFXqYa_subscriptionTrack{background:var(--dsw-alias-bg-layer-3);border-radius:3px;flex:1;height:6px;overflow:hidden}.KFXqYa_subscriptionFill{background:var(--dsw-static-blue-500);border-radius:3px;height:100%;transition:width .2s;display:block}.KFXqYa_subscriptionFillWarn{background:var(--dsw-static-amber-500)}.KFXqYa_subscriptionFillOver{background:var(--dsw-static-red-500)}.KFXqYa_subscriptionMeta{flex-direction:column;flex:none;align-items:flex-end;gap:2px;display:flex}.KFXqYa_subscriptionPct{text-align:right;font-variant-numeric:tabular-nums;flex:none;min-width:52px}.KFXqYa_subscriptionExhausted{color:var(--dsw-static-red-500);min-width:52px;font-weight:600}.KFXqYa_subscriptionReset{color:var(--dsw-alias-label-caption);white-space:nowrap;flex:none;font-size:10px}.KFXqYa_providerGroupList{flex-direction:column;gap:10px;display:flex}.KFXqYa_providerGroup{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-1);border-radius:12px;padding:12px 14px}.KFXqYa_providerGroupHead{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.KFXqYa_providerGroupTitle{align-items:center;gap:7px;min-width:0;display:inline-flex}.KFXqYa_providerGroupName{color:var(--dsw-alias-label-primary);font-size:13px;font-weight:600;line-height:18px}.KFXqYa_providerGroupMeta{flex:none;align-items:center;gap:10px;display:inline-flex}.KFXqYa_providerGroupBadge{color:var(--dsw-static-green-500);background:var(--dsw-alias-bg-layer-2);border-radius:999px;align-items:center;padding:1px 8px;font-size:11px;font-weight:500;line-height:17px;display:inline-flex}.KFXqYa_providerGroupBalance,.KFXqYa_providerGroupCost{color:var(--dsw-alias-label-secondary);font-variant-numeric:tabular-nums;white-space:nowrap;align-items:baseline;gap:6px;font-size:12px;line-height:17px;display:inline-flex}.KFXqYa_providerGroupCostLabel{font-size:11px}.KFXqYa_providerGroupCostValue{color:var(--dsw-alias-label-primary);font-weight:600}.KFXqYa_providerGroupBalanceLabel{color:var(--dsw-alias-label-caption);font-size:11px;line-height:17px}.KFXqYa_rounds{margin-top:10px}.KFXqYa_roundsBars{align-items:flex-end;gap:3px;height:124px;padding:16px 2px 0;display:flex;overflow-x:auto}.KFXqYa_roundsBarCol{border-radius:5px 5px 0 0;flex-direction:column;flex:1 0 28px;justify-content:flex-end;align-items:stretch;height:100%;display:flex;position:relative}.KFXqYa_roundsBarColPeak{background:color-mix(in srgb, var(--dsw-static-amber-500) 16%, transparent)}.KFXqYa_roundsBarColOff{background:var(--dsw-alias-bg-module-platform)}.KFXqYa_roundsBarLabel{text-align:center;color:var(--dsw-alias-label-secondary);white-space:nowrap;text-overflow:ellipsis;max-width:100%;font-size:9px;line-height:1.2;position:absolute;bottom:0;left:0;right:0;overflow:hidden;transform:translateY(-100%)}.KFXqYa_roundsBarWrap{flex:1;align-items:flex-end;min-height:0;display:flex}.KFXqYa_roundsBar{background:var(--dsw-static-blue-500);border-radius:2px 2px 0 0;width:100%;min-height:2px;position:relative}.KFXqYa_roundsBarFlagged{background:var(--dsw-static-red-500);border-radius:2px 2px 0 0;width:100%;min-height:2px;position:relative}.KFXqYa_roundsFlagMark{background:var(--dsw-static-red-500);border-radius:50%;width:7px;height:7px;position:absolute;top:-3px;right:-3px}.KFXqYa_roundsAxis{color:var(--dsw-alias-label-secondary);justify-content:space-between;margin-top:6px;font-size:10px;display:flex}.KFXqYa_roundsEmpty{color:var(--dsw-alias-label-secondary);margin-top:10px;font-size:12px}.KFXqYa_heatmap{margin-top:10px}.KFXqYa_heatmapGrid{grid-template-columns:repeat(7,minmax(0,1fr));gap:8px;display:grid}.KFXqYa_heatmapCellEmpty{background:var(--dsw-alias-bg-layer-1);height:30px;color:var(--dsw-alias-label-dimmed);font-variant-numeric:tabular-nums;border-radius:8px;justify-content:center;align-items:center;font-size:11px;display:flex}.KFXqYa_heatmapCell{font-variant-numeric:tabular-nums;cursor:pointer;border:0;border-radius:8px;justify-content:center;align-items:center;height:30px;padding:0;font-size:11px;display:flex}.KFXqYa_heatmapCell[data-level="0"],.KFXqYa_heatmapCell[data-level="1"],.KFXqYa_heatmapCell[data-level="2"]{color:var(--dsw-alias-label-primary)}.KFXqYa_heatmapCell[data-level="3"],.KFXqYa_heatmapCell[data-level="4"]{color:var(--dsw-static-neutral-bluish-00)}.KFXqYa_heatmapFooter{color:var(--dsw-alias-label-secondary);align-items:center;gap:8px;margin-top:10px;font-size:10px;display:flex}.KFXqYa_heatmapLegend{gap:3px;display:inline-flex}.KFXqYa_heatmapLegend i{border-radius:4px;width:14px;height:14px;display:block}.KFXqYa_heatmapHover{font-variant-numeric:tabular-nums;margin-left:auto}.KFXqYa_heatmapRangeSwitch{gap:4px;margin-left:auto;display:inline-flex}.KFXqYa_heatmapRangeButton{border:1px solid var(--dsw-alias-border-l1);color:var(--dsw-alias-text-secondary);cursor:pointer;background:0 0;border-radius:6px;padding:2px 8px;font-size:11px;line-height:1.4}.KFXqYa_heatmapRangeButtonActive{color:var(--dsw-alias-text-primary);border-color:currentColor;font-weight:600}.KFXqYa_heatmapYear{flex-direction:column;gap:6px;display:flex}.KFXqYa_heatmapYearBody{align-items:flex-start;gap:6px;display:flex}.KFXqYa_heatmapYearWeekdays{color:var(--dsw-alias-text-tertiary);flex:none;grid-template-rows:repeat(7,11px);gap:3px;padding-top:12px;font-size:9px;line-height:11px;display:grid}.KFXqYa_heatmapYearWeekday{white-space:nowrap;text-align:right;height:11px}.KFXqYa_heatmapYearMonths{min-width:max-content;color:var(--dsw-alias-text-tertiary);grid-template-columns:repeat(52,11px);gap:3px;font-size:9px;line-height:12px;display:grid;overflow:visible}.KFXqYa_heatmapYearMonth{white-space:nowrap;overflow:visible}.KFXqYa_heatmapYearScroll{padding-bottom:2px;overflow-x:auto}.KFXqYa_heatmapYearGrid{grid-template-rows:repeat(7,11px);grid-auto-flow:column;gap:3px;min-width:max-content;display:grid}.KFXqYa_heatmapYearCell{cursor:pointer;border:0;border-radius:2px;width:11px;height:11px;padding:0}.KFXqYa_triggerPopSubscription{width:auto;left:0;right:0}.KFXqYa_floatSub{flex-direction:column;gap:6px;min-width:0;display:flex}.KFXqYa_floatSubHead{flex-wrap:wrap;align-items:baseline;gap:6px;min-width:0;display:flex}.KFXqYa_floatSubName{color:var(--dsw-alias-label-primary);font-size:12px;font-weight:700}.KFXqYa_floatSubPlan{color:var(--dsw-alias-label-secondary);font-size:10px}.KFXqYa_floatSub .KFXqYa_subscriptionWindow{flex-wrap:wrap;gap:4px 10px}.KFXqYa_floatSub .KFXqYa_subscriptionWindowLabel{flex:none}.KFXqYa_floatSub .KFXqYa_subscriptionMeta{min-width:0;max-width:100%}.KFXqYa_floatSub .KFXqYa_subscriptionPct{min-width:0}.KFXqYa_floatSub .KFXqYa_subscriptionReset{white-space:normal;overflow-wrap:anywhere}.KFXqYa_triggerPopEmpty{color:var(--dsw-alias-label-tertiary);padding:2px 0;font-size:11px;line-height:1.5}.KFXqYa_triggerPopSwitcher{justify-content:flex-end;align-items:center;gap:8px;margin-top:2px;display:flex}.KFXqYa_triggerPopSwitchCount{color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;font-size:10px}.KFXqYa_floatModeBtn{border:1px solid color-mix(in srgb, var(--dsw-alias-border-l1) 75%, transparent);background:color-mix(in srgb, var(--dsw-alias-bg-layer-2) 60%, transparent);color:var(--dsw-alias-label-secondary);white-space:nowrap;cursor:pointer;border-radius:10px;flex:1;padding:7px 10px;font-size:12px}.KFXqYa_floatModeBtnOn{border-color:var(--dsw-static-blue-500);color:var(--dsw-alias-label-primary);background:color-mix(in srgb, var(--dsw-static-blue-500) 16%, transparent)}.KFXqYa_rdoRow{justify-content:space-between;align-items:center;gap:8px;margin-top:10px;display:flex}.KFXqYa_rdoLabel{color:var(--dsw-alias-label-secondary);font-size:12px}.KFXqYa_rdoSelect{border:1px solid color-mix(in srgb, var(--dsw-alias-border-l1) 75%, transparent);background:color-mix(in srgb, var(--dsw-alias-bg-layer-2) 60%, transparent);color:var(--dsw-alias-label-primary);white-space:nowrap;cursor:pointer;border-radius:10px;align-items:center;gap:5px;padding:5px 8px 5px 10px;font-size:12px;display:inline-flex}.KFXqYa_rdoSelect:hover{background:color-mix(in srgb, var(--dsw-alias-bg-layer-2) 85%, transparent)}.KFXqYa_rdoSelect:focus-visible{border-color:var(--dsw-static-blue-500);outline:none}.KFXqYa_rdoChevron{color:var(--dsw-alias-label-tertiary);transition:transform .15s;display:inline-flex}.KFXqYa_rdoChevronOpen{transform:rotate(180deg)}.KFXqYa_floatTarget{color:var(--dsw-alias-label-secondary);cursor:pointer;align-items:center;gap:5px;font-size:12px;display:inline-flex}.KFXqYa_floatTargetLabel{color:var(--dsw-alias-label-secondary)}.KFXqYa_staleNotice{color:var(--dsw-static-amber-500);background:color-mix(in srgb, var(--dsw-static-amber-500) 12%, transparent);border:1px solid color-mix(in srgb, var(--dsw-static-amber-500) 30%, transparent);border-radius:10px;align-items:center;gap:6px;margin:0 0 10px;padding:8px 10px;font-size:11px;display:flex}.KFXqYa_plgHead{align-items:flex-start;gap:12px;display:flex}.KFXqYa_plgIcon{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-1);width:40px;height:40px;color:var(--dsw-alias-label-secondary);border-radius:10px;flex:none;justify-content:center;align-items:center;display:inline-flex}.KFXqYa_plgTitle{flex-direction:column;gap:4px;min-width:0;display:flex}.KFXqYa_plgNameRow{align-items:center;gap:8px;display:flex}.KFXqYa_plgName{color:var(--dsw-alias-label-primary);margin:0;font-size:13px;font-weight:600;line-height:18px}.KFXqYa_plgTag{height:18px;color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-bg-layer-3);white-space:nowrap;border-radius:5px;align-items:center;padding:0 6px;font-size:10px;font-weight:600;display:inline-flex}.KFXqYa_plgDesc{color:var(--dsw-alias-label-secondary);margin:0;font-size:11px;line-height:16px}.KFXqYa_plgGrid{border-top:1px solid var(--dsw-alias-border-l1);grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;padding-top:12px;display:grid}.KFXqYa_plgItem{flex-direction:column;gap:2px;min-width:0;display:flex}.KFXqYa_plgLabel{color:var(--dsw-alias-label-tertiary);font-size:10px;line-height:14px}.KFXqYa_plgVal{color:var(--dsw-alias-label-primary);word-break:break-all;font-size:12px;line-height:17px}.KFXqYa_plgLink{color:var(--dsw-static-blue-500);word-break:break-all;font-size:12px;line-height:17px;text-decoration:none}.KFXqYa_plgLink:hover{text-decoration:underline}.KFXqYa_tokenPanel{flex-direction:column;gap:14px;display:flex}.KFXqYa_tokenModelBar{background:var(--dsw-alias-bg-layer-2);border-radius:999px;height:8px;overflow:hidden}.KFXqYa_tokenModelParts{height:100%;display:flex}.KFXqYa_tokenModelPartIn{background:var(--dsw-static-blue-500)}.KFXqYa_tokenModelPartOut{background:var(--dsw-static-amber-500)}.KFXqYa_tokenModelShareRow{align-items:center;gap:6px;display:inline-flex}@media (width<=640px){.KFXqYa_kpiGrid{grid-template-columns:repeat(2,minmax(0,1fr))}.KFXqYa_hero{gap:14px}.KFXqYa_heroTop{flex-direction:column;align-items:flex-start;gap:12px}.KFXqYa_heroGauge{width:72px;height:72px}.KFXqYa_heroSide{gap:12px}.KFXqYa_heroSideSpacer{display:none}}.KFXqYa_peakCard{z-index:2000;border:1px solid var(--dsw-alias-border-l1);background:color-mix(in srgb, var(--dsw-alias-bg-layer-2) 82%, transparent);-webkit-backdrop-filter:blur(12px)saturate(1.2);border-radius:12px;flex-direction:column;gap:8px;min-width:280px;max-width:380px;padding:16px;animation:.2s KFXqYa_peakAlertIn;display:flex;position:fixed;box-shadow:0 4px 16px #00000014}.KFXqYa_peakCardCorner{bottom:18px;right:18px}.KFXqYa_peakCardCenter{top:20%;left:50%;transform:translate(-50%)}.KFXqYa_peakCardPeak{color:var(--dsw-static-blue-500)}.KFXqYa_peakCardOff{color:var(--dsw-static-green-500)}.KFXqYa_peakHead{justify-content:space-between;align-items:center;gap:8px;display:flex}.KFXqYa_peakTag{white-space:nowrap;border-radius:6px;align-items:center;gap:6px;height:20px;padding:0 8px;font-size:11px;font-weight:600;line-height:14px;display:inline-flex}.KFXqYa_peakTagPrimary{background:var(--dsw-alias-bg-layer-3);color:var(--dsw-static-blue-500)}.KFXqYa_peakTagSuccess{background:var(--dsw-alias-bg-layer-3);color:var(--dsw-static-green-500)}.KFXqYa_peakDot{border-radius:999px;flex:none;width:6px;height:6px}.KFXqYa_peakDotPrimary{background:var(--dsw-static-blue-500)}.KFXqYa_peakDotSuccess{background:var(--dsw-static-green-500)}.KFXqYa_peakClose{width:24px;height:24px;color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:0;border-radius:6px;justify-content:center;align-items:center;font-size:15px;line-height:1;transition:background-color .14s,color .14s;display:inline-flex}.KFXqYa_peakClose:hover{color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-layer-2)}.KFXqYa_peakCount{font-variant-numeric:tabular-nums;font-size:28px;font-weight:700;line-height:34px}.KFXqYa_peakCountPrimary{color:var(--dsw-static-blue-500)}.KFXqYa_peakCountSuccess{color:var(--dsw-static-green-500)}.KFXqYa_peakDesc{color:var(--dsw-alias-label-secondary);margin:0;font-size:12px;line-height:18px}@keyframes KFXqYa_peakAlertIn{0%{opacity:0}to{opacity:1}}.KFXqYa_setCard{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-2);border-radius:12px;flex-direction:column;gap:12px;padding:16px 18px;display:flex}.KFXqYa_setGrid3,.KFXqYa_setGrid2{gap:10px;display:grid}.KFXqYa_setGrid3{grid-template-columns:repeat(3,minmax(0,1fr))}.KFXqYa_setGrid2{grid-template-columns:repeat(2,minmax(0,1fr))}@media (width<=720px){.KFXqYa_setGrid3,.KFXqYa_setGrid2{grid-template-columns:1fr}}.KFXqYa_setCell{border:1px solid var(--dsw-alias-border-l1);border-radius:10px;flex-direction:column;gap:8px;min-width:0;padding:12px 14px;display:flex}.KFXqYa_setCardHead{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.KFXqYa_setCardMeta{flex-direction:column;gap:4px;min-width:0;display:flex}.KFXqYa_setCardTitle{color:var(--dsw-alias-label-primary);margin:0;font-size:13px;font-weight:600;line-height:18px}.KFXqYa_setCardDesc{color:var(--dsw-alias-label-secondary);margin:0;font-size:11px;line-height:16px}.KFXqYa_ctlCol{flex-direction:column;gap:10px;padding-top:2px;display:flex}.KFXqYa_ctlRow{align-items:center;gap:12px;min-height:28px;display:flex}.KFXqYa_ctlRowStretch{display:flex}.KFXqYa_ctlLabel{color:var(--dsw-alias-label-secondary);flex:0 0 96px;font-size:11px;line-height:16px}.KFXqYa_ctlGroup{flex-wrap:wrap;align-items:center;gap:8px;display:inline-flex}.KFXqYa_userPriceRow{border-bottom:1px solid var(--dsw-alias-border-l1);align-items:center;gap:10px;padding:8px 0;display:flex}.KFXqYa_userPriceCheck{width:14px;height:14px;accent-color:var(--dsw-static-blue-500);flex:none;margin:0}.KFXqYa_userPriceBody{flex-direction:column;flex:1;gap:8px;min-width:0;display:flex}.KFXqYa_userPriceLineMeta{grid-template-columns:minmax(0,1fr) minmax(0,1.4fr) auto;align-items:end;gap:8px 10px;display:grid}@media (width<=720px){.KFXqYa_userPriceLineMeta{grid-template-columns:repeat(2,minmax(0,1fr))}}.KFXqYa_userPriceLineMeta .KFXqYa_userPriceInput{box-sizing:border-box;width:100%;min-width:0;max-width:none}.KFXqYa_userPriceBody .KFXqYa_ctlGroup{flex-wrap:nowrap}.KFXqYa_userPriceLineMeta .KFXqYa_userPriceField .KFXqYa_ctlLabel{align-items:flex-end;min-height:30px;display:flex}.KFXqYa_userPricePriceLine{border-left:2px solid var(--dsw-alias-border-l1);flex-wrap:wrap;align-items:center;gap:10px;width:calc(100% - 22px);margin-left:10px;padding:2px 0 6px 12px;display:flex}.KFXqYa_userPricePriceLine>.KFXqYa_ctlLabel{color:var(--dsw-alias-label-secondary);flex:0 0 44px;font-size:11px}.KFXqYa_userPricePriceLine .KFXqYa_userPriceInputNum{box-sizing:border-box;flex:1 1 0;width:auto;min-width:120px;max-width:240px}.KFXqYa_userPriceField{flex-direction:column;gap:4px;min-width:0;display:flex}.KFXqYa_userPriceField .KFXqYa_ctlLabel{flex:none;font-size:11px}.KFXqYa_userPriceInput,.KFXqYa_userPriceInputNum{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-1);min-width:96px;max-width:160px;color:var(--dsw-alias-label-primary);border-radius:6px;padding:4px 8px;font-size:12px;line-height:16px}.KFXqYa_userPriceInputNum{min-width:72px;max-width:88px}.KFXqYa_rdo{color:var(--dsw-alias-label-secondary);cursor:pointer;white-space:nowrap;align-items:center;gap:6px;font-size:12px;line-height:16px;display:inline-flex}.KFXqYa_rdo input{opacity:0;pointer-events:none;position:absolute}.KFXqYa_rdoDot{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-1);border-radius:50%;flex:none;width:14px;height:14px;position:relative}.KFXqYa_rdo input:checked+.KFXqYa_rdoDot{border-color:var(--dsw-static-blue-500)}.KFXqYa_rdo input:checked+.KFXqYa_rdoDot:after{content:"";background:var(--dsw-static-blue-500);border-radius:50%;position:absolute;inset:3px}.KFXqYa_inp{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-1);border-radius:6px;align-items:center;gap:4px;padding:2px 6px;display:inline-flex}.KFXqYa_affix{color:var(--dsw-alias-label-tertiary);font-size:11px;line-height:16px}.KFXqYa_prog{background:var(--dsw-alias-bg-module-platform);border-radius:999px;flex:1;min-width:0;height:6px;overflow:hidden}.KFXqYa_progFill{background:var(--dsw-static-blue-500);border-radius:999px;height:100%;transition:width .2s}.KFXqYa_btn{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-1);height:28px;color:var(--dsw-alias-label-secondary);cursor:pointer;border-radius:999px;align-items:center;gap:6px;padding:0 12px;font-size:12px;line-height:16px;transition:border-color .16s,color .16s,background-color .16s;display:inline-flex}.KFXqYa_btn:hover{border-color:var(--dsw-static-blue-500);color:var(--dsw-alias-label-primary);background:color-mix(in srgb, var(--dsw-static-blue-500) 12%, var(--dsw-alias-bg-layer-1))}.KFXqYa_modelTable tbody td:not(:first-child) tbody td:not(:first-child){text-align:right;font-family:var(--mono);font-variant-numeric:tabular-nums;color:var(--dsw-alias-label-primary)}`,document.head.appendChild(e)}var A={peakDotPrimary:`KFXqYa_peakDotPrimary`,triggerIcon:`KFXqYa_triggerIcon`,peakCard:`KFXqYa_peakCard`,exportLabel:`KFXqYa_exportLabel`,chartStack:`KFXqYa_chartStack`,chartLegendLine:`KFXqYa_chartLegendLine`,healthIdle:`KFXqYa_healthIdle`,chartTooltipHead:`KFXqYa_chartTooltipHead`,siteRowCalls:`KFXqYa_siteRowCalls`,balanceDetailRow:`KFXqYa_balanceDetailRow`,subscriptionWindowLabel:`KFXqYa_subscriptionWindowLabel`,rangeButton:`KFXqYa_rangeButton`,siteRowCost:`KFXqYa_siteRowCost`,chartTooltipRow:`KFXqYa_chartTooltipRow`,perfBar:`KFXqYa_perfBar`,heatmapYear:`KFXqYa_heatmapYear`,heatmapYearMonth:`KFXqYa_heatmapYearMonth`,peakTagPrimary:`KFXqYa_peakTagPrimary`,setCardMeta:`KFXqYa_setCardMeta`,ubExtraNote:`KFXqYa_ubExtraNote`,subscriptionFillOver:`KFXqYa_subscriptionFillOver`,switch:`KFXqYa_switch`,triggerMain:`KFXqYa_triggerMain`,balanceDetailLabel:`KFXqYa_balanceDetailLabel`,heatmapYearMonths:`KFXqYa_heatmapYearMonths`,estimatedTag:`KFXqYa_estimatedTag`,unpricedHint:`KFXqYa_unpricedHint`,popModelLabel:`KFXqYa_popModelLabel`,heatmapGrid:`KFXqYa_heatmapGrid`,staleNotice:`KFXqYa_staleNotice`,plgTitle:`KFXqYa_plgTitle`,rowlineDrillWrap:`KFXqYa_rowlineDrillWrap`,chartTooltipDate:`KFXqYa_chartTooltipDate`,subscriptionGoldFlow:`KFXqYa_subscriptionGoldFlow`,tabPanel:`KFXqYa_tabPanel`,subscriptionGrid:`KFXqYa_subscriptionGrid`,shareValue:`KFXqYa_shareValue`,metricGrid:`KFXqYa_metricGrid`,kpiTile:`KFXqYa_kpiTile`,shareSegOff:`KFXqYa_shareSegOff`,rdoRow:`KFXqYa_rdoRow`,emptyRow:`KFXqYa_emptyRow`,ubStatDetail:`KFXqYa_ubStatDetail`,floatModeBtnOn:`KFXqYa_floatModeBtnOn`,triggerPrimary:`KFXqYa_triggerPrimary`,peakCardCenter:`KFXqYa_peakCardCenter`,subscriptionReset:`KFXqYa_subscriptionReset`,trigger:`KFXqYa_trigger`,popTagPrimary:`KFXqYa_popTagPrimary`,chartWrap:`KFXqYa_chartWrap`,feeInline:`KFXqYa_feeInline`,heroBudgetValue:`KFXqYa_heroBudgetValue`,heroGauge:`KFXqYa_heroGauge`,siteKindSite:`KFXqYa_siteKindSite`,siteRowCallsLow:`KFXqYa_siteRowCallsLow`,ubNotesTerm:`KFXqYa_ubNotesTerm`,siteRowMeta:`KFXqYa_siteRowMeta`,balanceDetailPop:`KFXqYa_balanceDetailPop`,heatmapFooter:`KFXqYa_heatmapFooter`,heatmapYearCell:`KFXqYa_heatmapYearCell`,chartCrosshair:`KFXqYa_chartCrosshair`,floatTargetLabel:`KFXqYa_floatTargetLabel`,peakCardOff:`KFXqYa_peakCardOff`,userPriceInput:`KFXqYa_userPriceInput`,popTitle:`KFXqYa_popTitle`,tabButtonActive:`KFXqYa_tabButtonActive`,chartGrid:`KFXqYa_chartGrid`,ubExtraRow:`KFXqYa_ubExtraRow`,setCardDesc:`KFXqYa_setCardDesc`,feeSep:`KFXqYa_feeSep`,plgTag:`KFXqYa_plgTag`,popModelName:`KFXqYa_popModelName`,delta:`KFXqYa_delta`,plgLink:`KFXqYa_plgLink`,tokenModelPartIn:`KFXqYa_tokenModelPartIn`,railButton:`KFXqYa_railButton`,ubNotesDesc:`KFXqYa_ubNotesDesc`,floatModeBtn:`KFXqYa_floatModeBtn`,peakAlertIn:`KFXqYa_peakAlertIn`,heatmapRangeButtonActive:`KFXqYa_heatmapRangeButtonActive`,feeSuffix:`KFXqYa_feeSuffix`,popTagSub:`KFXqYa_popTagSub`,roundsEmpty:`KFXqYa_roundsEmpty`,heroBudgetTrack:`KFXqYa_heroBudgetTrack`,heroBudgetFillOver:`KFXqYa_heroBudgetFillOver`,siteRow:`KFXqYa_siteRow`,ubStatCard:`KFXqYa_ubStatCard`,roundsBars:`KFXqYa_roundsBars`,heatmapYearScroll:`KFXqYa_heatmapYearScroll`,subscriptionWindow:`KFXqYa_subscriptionWindow`,popDotSub:`KFXqYa_popDotSub`,modelRowActive:`KFXqYa_modelRowActive`,ubChipLabel:`KFXqYa_ubChipLabel`,shareSeg:`KFXqYa_shareSeg`,siteRowTitle:`KFXqYa_siteRowTitle`,bucketOfficial:`KFXqYa_bucketOfficial`,ubAlertLeft:`KFXqYa_ubAlertLeft`,heroCurrency:`KFXqYa_heroCurrency`,budgetFillOver:`KFXqYa_budgetFillOver`,modelTableScroll:`KFXqYa_modelTableScroll`,roundsBarCol:`KFXqYa_roundsBarCol`,floatSubName:`KFXqYa_floatSubName`,tokenModelPartOut:`KFXqYa_tokenModelPartOut`,chartTooltip:`KFXqYa_chartTooltip`,providerGroupCostLabel:`KFXqYa_providerGroupCostLabel`,floatTarget:`KFXqYa_floatTarget`,heatmapLegend:`KFXqYa_heatmapLegend`,peakClose:`KFXqYa_peakClose`,rdoDot:`KFXqYa_rdoDot`,metricLabel:`KFXqYa_metricLabel`,rowlist:`KFXqYa_rowlist`,triggerSparkHot:`KFXqYa_triggerSparkHot`,shareSegUser:`KFXqYa_shareSegUser`,popModelStatusLow:`KFXqYa_popModelStatusLow`,healthDot:`KFXqYa_healthDot`,balanceDaysBadgeLow:`KFXqYa_balanceDaysBadgeLow`,popModel:`KFXqYa_popModel`,tableScroll:`KFXqYa_tableScroll`,providerGroupBadge:`KFXqYa_providerGroupBadge`,deltaDown:`KFXqYa_deltaDown`,peakTag:`KFXqYa_peakTag`,dashboardModal:`KFXqYa_dashboardModal`,chartLegendItem:`KFXqYa_chartLegendItem`,perfChip:`KFXqYa_perfChip`,ubNotesItem:`KFXqYa_ubNotesItem`,providerGroupBalanceLabel:`KFXqYa_providerGroupBalanceLabel`,ctlRow:`KFXqYa_ctlRow`,ctlRowStretch:`KFXqYa_ctlRowStretch`,ubTable:`KFXqYa_ubTable`,ubCardSub:`KFXqYa_ubCardSub`,triggerPopSwitchCount:`KFXqYa_triggerPopSwitchCount`,triggerLabel:`KFXqYa_triggerLabel`,triggerSpark:`KFXqYa_triggerSpark`,headTitleRow:`KFXqYa_headTitleRow`,roundsBar:`KFXqYa_roundsBar`,reconcileText:`KFXqYa_reconcileText`,heroSide:`KFXqYa_heroSide`,chartTooltipSwatch:`KFXqYa_chartTooltipSwatch`,currencyButton:`KFXqYa_currencyButton`,heroMeta:`KFXqYa_heroMeta`,chartTooltipLabel:`KFXqYa_chartTooltipLabel`,feeChipError:`KFXqYa_feeChipError`,roundsBarLabel:`KFXqYa_roundsBarLabel`,peakTagSuccess:`KFXqYa_peakTagSuccess`,subscriptionFill:`KFXqYa_subscriptionFill`,siteKindTag:`KFXqYa_siteKindTag`,subscriptionPct:`KFXqYa_subscriptionPct`,heroBudgetFill:`KFXqYa_heroBudgetFill`,plgDesc:`KFXqYa_plgDesc`,popModelRow:`KFXqYa_popModelRow`,bucketCost:`KFXqYa_bucketCost`,modelRowFocusable:`KFXqYa_modelRowFocusable`,heatmapCellEmpty:`KFXqYa_heatmapCellEmpty`,numCol:`KFXqYa_numCol`,feeBarAbove:`KFXqYa_feeBarAbove`,plgName:`KFXqYa_plgName`,chartLegend:`KFXqYa_chartLegend`,roundsAxis:`KFXqYa_roundsAxis`,metricValue:`KFXqYa_metricValue`,ubTagPromo:`KFXqYa_ubTagPromo`,tokenModelBar:`KFXqYa_tokenModelBar`,bucketSep:`KFXqYa_bucketSep`,prog:`KFXqYa_prog`,switchKnob:`KFXqYa_switchKnob`,subscriptionExhausted:`KFXqYa_subscriptionExhausted`,heatmapYearWeekdays:`KFXqYa_heatmapYearWeekdays`,tokenPanel:`KFXqYa_tokenPanel`,ctlCol:`KFXqYa_ctlCol`,subscriptionAuto:`KFXqYa_subscriptionAuto`,modelTable:`KFXqYa_modelTable`,shareTrack:`KFXqYa_shareTrack`,flatTag:`KFXqYa_flatTag`,providerGroup:`KFXqYa_providerGroup`,peakCountPrimary:`KFXqYa_peakCountPrimary`,feeNum:`KFXqYa_feeNum`,subscriptionCard:`KFXqYa_subscriptionCard`,vendorLetter:`KFXqYa_vendorLetter`,dashboardHead:`KFXqYa_dashboardHead`,heroSideLabel:`KFXqYa_heroSideLabel`,rowlineMuted:`KFXqYa_rowlineMuted`,heroGaugeArcOver:`KFXqYa_heroGaugeArcOver`,feeInlineError:`KFXqYa_feeInlineError`,metricValueSuccess:`KFXqYa_metricValueSuccess`,shareItem:`KFXqYa_shareItem`,ubAlertNote:`KFXqYa_ubAlertNote`,chartHoverDot:`KFXqYa_chartHoverDot`,ubAlert:`KFXqYa_ubAlert`,ubTablewrap:`KFXqYa_ubTablewrap`,ubExtraName:`KFXqYa_ubExtraName`,tabNav:`KFXqYa_tabNav`,ubModel:`KFXqYa_ubModel`,rowlineDrill:`KFXqYa_rowlineDrill`,rowline:`KFXqYa_rowline`,popDotDirect:`KFXqYa_popDotDirect`,ubCardControlGroup:`KFXqYa_ubCardControlGroup`,healthOk:`KFXqYa_healthOk`,heroBudget:`KFXqYa_heroBudget`,kpiLabel:`KFXqYa_kpiLabel`,balanceDetailTitle:`KFXqYa_balanceDetailTitle`,ubCardTitle:`KFXqYa_ubCardTitle`,setGrid3:`KFXqYa_setGrid3`,budgetFillWarn:`KFXqYa_budgetFillWarn`,chartBarPlaceholder:`KFXqYa_chartBarPlaceholder`,peakDesc:`KFXqYa_peakDesc`,balanceDetailClose:`KFXqYa_balanceDetailClose`,triggerPopEmpty:`KFXqYa_triggerPopEmpty`,healthBad:`KFXqYa_healthBad`,na:`KFXqYa_na`,tabButton:`KFXqYa_tabButton`,providerGroupMeta:`KFXqYa_providerGroupMeta`,reconcileNotice:`KFXqYa_reconcileNotice`,plgIcon:`KFXqYa_plgIcon`,ubTagSuccess:`KFXqYa_ubTagSuccess`,roundsBarWrap:`KFXqYa_roundsBarWrap`,peakDot:`KFXqYa_peakDot`,peakCount:`KFXqYa_peakCount`,heatmapYearWeekday:`KFXqYa_heatmapYearWeekday`,modelDot:`KFXqYa_modelDot`,reconcileIcon:`KFXqYa_reconcileIcon`,chartSvg:`KFXqYa_chartSvg`,balanceDetailGrid:`KFXqYa_balanceDetailGrid`,userPricePriceLine:`KFXqYa_userPricePriceLine`,userPriceLineMeta:`KFXqYa_userPriceLineMeta`,kpiGreen:`KFXqYa_kpiGreen`,tokenModelParts:`KFXqYa_tokenModelParts`,heroSideItem:`KFXqYa_heroSideItem`,exportBar:`KFXqYa_exportBar`,panelHint:`KFXqYa_panelHint`,dashboardRight:`KFXqYa_dashboardRight`,perfChipDot:`KFXqYa_perfChipDot`,ctlLabel:`KFXqYa_ctlLabel`,modelName:`KFXqYa_modelName`,tokenModelShareRow:`KFXqYa_tokenModelShareRow`,balanceDetailHead:`KFXqYa_balanceDetailHead`,ubCard:`KFXqYa_ubCard`,plgItem:`KFXqYa_plgItem`,peakDotSuccess:`KFXqYa_peakDotSuccess`,heroGaugePctOver:`KFXqYa_heroGaugePctOver`,subscriptionTrack:`KFXqYa_subscriptionTrack`,"billing-trigger":`KFXqYa_billing-trigger`,providerGroupCostValue:`KFXqYa_providerGroupCostValue`,heatmap:`KFXqYa_heatmap`,vendorLogo:`KFXqYa_vendorLogo`,modelCell:`KFXqYa_modelCell`,subscriptionStatus:`KFXqYa_subscriptionStatus`,rdoSelect:`KFXqYa_rdoSelect`,shareSegPeak:`KFXqYa_shareSegPeak`,balanceDaysBadge:`KFXqYa_balanceDaysBadge`,heroGaugeTrack:`KFXqYa_heroGaugeTrack`,setGrid2:`KFXqYa_setGrid2`,ubCardHead:`KFXqYa_ubCardHead`,trendPanel:`KFXqYa_trendPanel`,currencyButtonActive:`KFXqYa_currencyButtonActive`,heroLabel:`KFXqYa_heroLabel`,feeChipAlert:`KFXqYa_feeChipAlert`,heatmapYearGrid:`KFXqYa_heatmapYearGrid`,chartBar:`KFXqYa_chartBar`,roundsBarColPeak:`KFXqYa_roundsBarColPeak`,triggerPop:`KFXqYa_triggerPop`,heroGaugeCenter:`KFXqYa_heroGaugeCenter`,feeItem:`KFXqYa_feeItem`,heroMain:`KFXqYa_heroMain`,heroReadout:`KFXqYa_heroReadout`,popModelStatus:`KFXqYa_popModelStatus`,rdoLabel:`KFXqYa_rdoLabel`,exportButton:`KFXqYa_exportButton`,roundsBarColOff:`KFXqYa_roundsBarColOff`,plgLabel:`KFXqYa_plgLabel`,balanceDetailValue:`KFXqYa_balanceDetailValue`,dashboardSubtitle:`KFXqYa_dashboardSubtitle`,heroGaugeSvg:`KFXqYa_heroGaugeSvg`,popHead:`KFXqYa_popHead`,ubNotes:`KFXqYa_ubNotes`,plgGrid:`KFXqYa_plgGrid`,popDotNeutral:`KFXqYa_popDotNeutral`,userPriceField:`KFXqYa_userPriceField`,providerGroupName:`KFXqYa_providerGroupName`,kpiDetail:`KFXqYa_kpiDetail`,chartAxisLabel:`KFXqYa_chartAxisLabel`,feeCount:`KFXqYa_feeCount`,rdo:`KFXqYa_rdo`,budgetOverPulse:`KFXqYa_budgetOverPulse`,siteKindDirect:`KFXqYa_siteKindDirect`,inp:`KFXqYa_inp`,metricValuePrimary:`KFXqYa_metricValuePrimary`,triggerYen:`KFXqYa_triggerYen`,healthBadgeOk:`KFXqYa_healthBadgeOk`,providerGroupList:`KFXqYa_providerGroupList`,floatSubPlan:`KFXqYa_floatSubPlan`,kpiValue:`KFXqYa_kpiValue`,heatmapRangeSwitch:`KFXqYa_heatmapRangeSwitch`,ubStatValue:`KFXqYa_ubStatValue`,feeInlineAlert:`KFXqYa_feeInlineAlert`,switchOn:`KFXqYa_switchOn`,feeBar:`KFXqYa_feeBar`,heatmapHover:`KFXqYa_heatmapHover`,rdoChevron:`KFXqYa_rdoChevron`,kpiGrid:`KFXqYa_kpiGrid`,peakCountSuccess:`KFXqYa_peakCountSuccess`,subscriptionTier:`KFXqYa_subscriptionTier`,ctlGroup:`KFXqYa_ctlGroup`,roundsFlagMark:`KFXqYa_roundsFlagMark`,dashboardIn:`KFXqYa_dashboardIn`,rangeToggle:`KFXqYa_rangeToggle`,dashboard:`KFXqYa_dashboard`,healthBadgeBad:`KFXqYa_healthBadgeBad`,heatmapYearBody:`KFXqYa_heatmapYearBody`,chartLegendItemActive:`KFXqYa_chartLegendItemActive`,userPriceCheck:`KFXqYa_userPriceCheck`,heroGaugeLabel:`KFXqYa_heroGaugeLabel`,heroValue:`KFXqYa_heroValue`,deltaUp:`KFXqYa_deltaUp`,panel:`KFXqYa_panel`,siteRowName:`KFXqYa_siteRowName`,balanceCell:`KFXqYa_balanceCell`,heatmapRangeButton:`KFXqYa_heatmapRangeButton`,triggerPopSubscription:`KFXqYa_triggerPopSubscription`,triggerWrap:`KFXqYa_triggerWrap`,ubTagError:`KFXqYa_ubTagError`,bucketThird:`KFXqYa_bucketThird`,triggerPopSwitcher:`KFXqYa_triggerPopSwitcher`,setCardHead:`KFXqYa_setCardHead`,userPriceRow:`KFXqYa_userPriceRow`,triggerSub:`KFXqYa_triggerSub`,heroSideSpacer:`KFXqYa_heroSideSpacer`,heatmapCell:`KFXqYa_heatmapCell`,chartEmpty:`KFXqYa_chartEmpty`,panelHeadControls:`KFXqYa_panelHeadControls`,rowlineName:`KFXqYa_rowlineName`,subscriptionPlan:`KFXqYa_subscriptionPlan`,reconcileDismiss:`KFXqYa_reconcileDismiss`,plgVal:`KFXqYa_plgVal`,shareLegend:`KFXqYa_shareLegend`,feeInlineNum:`KFXqYa_feeInlineNum`,triggerMetric:`KFXqYa_triggerMetric`,peakCardCorner:`KFXqYa_peakCardCorner`,healthBadge:`KFXqYa_healthBadge`,modalFooter:`KFXqYa_modalFooter`,siteKindUnknown:`KFXqYa_siteKindUnknown`,triggerSparkBar:`KFXqYa_triggerSparkBar`,heroBudgetLabel:`KFXqYa_heroBudgetLabel`,ubTag:`KFXqYa_ubTag`,dashboardTitle:`KFXqYa_dashboardTitle`,ubChipOff:`KFXqYa_ubChipOff`,ubTagAlert:`KFXqYa_ubTagAlert`,ubStatLabel:`KFXqYa_ubStatLabel`,tabPanelIn:`KFXqYa_tabPanelIn`,rowlineRight:`KFXqYa_rowlineRight`,modelProvider:`KFXqYa_modelProvider`,subscriptionHead:`KFXqYa_subscriptionHead`,subscriptionMeta:`KFXqYa_subscriptionMeta`,subscriptionName:`KFXqYa_subscriptionName`,providerGroupCost:`KFXqYa_providerGroupCost`,shareSegAssistant:`KFXqYa_shareSegAssistant`,panelTitle:`KFXqYa_panelTitle`,peakHead:`KFXqYa_peakHead`,affix:`KFXqYa_affix`,perfChipOff:`KFXqYa_perfChipOff`,plgHead:`KFXqYa_plgHead`,planTag:`KFXqYa_planTag`,ubTagNeutral:`KFXqYa_ubTagNeutral`,setCell:`KFXqYa_setCell`,setCard:`KFXqYa_setCard`,userPriceInputNum:`KFXqYa_userPriceInputNum`,popDot:`KFXqYa_popDot`,setCardTitle:`KFXqYa_setCardTitle`,chartTooltipModelDetail:`KFXqYa_chartTooltipModelDetail`,btn:`KFXqYa_btn`,subscriptionFillWarn:`KFXqYa_subscriptionFillWarn`,providerGroupTitle:`KFXqYa_providerGroupTitle`,providerGroupBalance:`KFXqYa_providerGroupBalance`,rounds:`KFXqYa_rounds`,chartLine:`KFXqYa_chartLine`,chartTooltipSplit:`KFXqYa_chartTooltipSplit`,hero:`KFXqYa_hero`,rangeButtonActive:`KFXqYa_rangeButtonActive`,uncataloguedTag:`KFXqYa_uncataloguedTag`,feeChipOff:`KFXqYa_feeChipOff`,ubChipPeak:`KFXqYa_ubChipPeak`,providerGroupHead:`KFXqYa_providerGroupHead`,heroSideValue:`KFXqYa_heroSideValue`,plgNameRow:`KFXqYa_plgNameRow`,heroGaugePct:`KFXqYa_heroGaugePct`,userPriceBody:`KFXqYa_userPriceBody`,budgetInput:`KFXqYa_budgetInput`,peakCardPeak:`KFXqYa_peakCardPeak`,progFill:`KFXqYa_progFill`,ubModelName:`KFXqYa_ubModelName`,roundsBarFlagged:`KFXqYa_roundsBarFlagged`,perfChips:`KFXqYa_perfChips`,ubRate:`KFXqYa_ubRate`,currencyToggle:`KFXqYa_currencyToggle`,floatSub:`KFXqYa_floatSub`,closeButton:`KFXqYa_closeButton`,heroTop:`KFXqYa_heroTop`,heroGaugeArc:`KFXqYa_heroGaugeArc`,shareDot:`KFXqYa_shareDot`,ubPricepair:`KFXqYa_ubPricepair`,shareSegTool:`KFXqYa_shareSegTool`,feeChipPrimary:`KFXqYa_feeChipPrimary`,floatSubHead:`KFXqYa_floatSubHead`,ubStatGrid:`KFXqYa_ubStatGrid`,metricCell:`KFXqYa_metricCell`,rdoChevronOpen:`KFXqYa_rdoChevronOpen`,rowlineChev:`KFXqYa_rowlineChev`,panelHead:`KFXqYa_panelHead`,dashboardBody:`KFXqYa_dashboardBody`,chartLegendBar:`KFXqYa_chartLegendBar`};let j={"opencode-go":{type:`code`,subscription:{amount:10,currency:`USD`,period:`month`},tier:{amount:10,currency:`USD`,periodDays:7,label:`周额度 $30`}},opencode:{type:`code`,subscription:{amount:10,currency:`USD`,period:`month`},tier:{amount:10,currency:`USD`,periodDays:7,label:`周额度 $30`}},"kimi-coding":{type:`code`},"zai-coding-cn":{type:`code`},"zai-coding":{type:`code`},"qwen-token-plan":{type:`code`},"qwen-token-plan-cn":{type:`code`},"xiaomi-token-plan-ams":{type:`code`},"xiaomi-token-plan-cn":{type:`code`},"xiaomi-token-plan-sgp":{type:`code`},"volcengine-token-plan":{type:`code`},"ark-token-plan":{type:`code`},"doubao-token-plan":{type:`code`},minimax:{type:`code`},"minimax-cn":{type:`code`},"minimax-token-plan":{type:`code`},"minimax-token-plan-cn":{type:`code`},"hunyuan-token-plan":{type:`code`},"tencent-token-plan":{type:`code`},"hy-token-plan":{type:`code`},"xinghuo-token-plan":{type:`code`},"xfyun-coding":{type:`code`},"spark-coding":{type:`code`},"huawei-token-plan":{type:`code`},"pangu-token-plan":{type:`code`},"huawei-maas-token-plan":{type:`code`},"volcengine-agent-plan":{type:`code`},"ark-agent-plan":{type:`code`},"baidu-token-plan":{type:`code`},"ernie-token-plan":{type:`code`},"wenxin-token-plan":{type:`code`}},oe={glm:`zai-coding-cn`,bigmodel:`zai-coding-cn`,zhipu:`zai-coding-cn`,zhipuai:`zai-coding-cn`,zai:`zai-coding`,ark:`volcengine-token-plan`,volcengine:`volcengine-token-plan`,doubao:`doubao-token-plan`,moonshot:`kimi-coding`,kimi:`kimi-coding`,xiaomi:`xiaomi-token-plan-cn`,opencode:`opencode-go`};function M(e){return e===``?e:oe[e]??e}function se(e){let t=j[M(e)];return t?.type===`code`?t.tier:void 0}let N=[{key:`deepseek-v4-flash`,input:.14,cacheHit:.0028,output:.28},{key:`deepseek-v4-pro`,input:.435,cacheHit:.003625,output:.87},{key:`gpt-5.6-sol`,input:5,cacheHit:.5,output:30},{key:`gpt-5.6-terra`,input:2,cacheHit:.2,output:12},{key:`gpt-5.6-luna`,input:.2,cacheHit:.02,output:1.2},{key:`glm-5.2`,input:1.4,cacheHit:.26,output:4.4},{key:`qwen3.8-max`,input:2,cacheHit:.21,output:6},{key:`kimi-k3`,input:2.82,cacheHit:.28,output:14.08},{key:`grok-4.6`,input:2,cacheHit:.5,output:6},{key:`gemini-2.5-pro`,input:1.25,cacheHit:.125,output:10}],ce,le,ue,de,P;function fe(e){let t=/:\/\//.test(e)?e:`https://${e}`;try{return new URL(t).origin}catch{return e.trim().toLowerCase().replace(/\/+$/,``)}}function pe(e,t){return fe(e)===fe(t)}function me(e){P=e.length>0?e:void 0}function he(){return P}function ge(e){return U(e)}function _e(e,t){let n=ve(e,t);if(n!==void 0)return{input:n.input,cacheHit:n.cacheHit,output:n.output,...n.currency===void 0?{}:{currency:n.currency},...n.offPeak===void 0?{}:{offPeak:n.offPeak}}}function ve(e,t){if(P===void 0)return;let n=ge(e),r=H(n),i=e=>ge(e.key)===n||H(e.key)===r;if(t!==void 0){for(let e of P)if(e.origin!==void 0&&e.origin!==``&&i(e)&&pe(e.origin,t))return e}for(let e of P)if((e.origin===void 0||e.origin===``)&&i(e))return e}function ye(e){if(P===void 0)return;let t=ge(e),n=H(t);return P.find(e=>e.origin!==void 0&&e.origin!==``&&(ge(e.key)===t||H(e.key)===n))}function F(e){ce=typeof e.rate==`number`&&Number.isFinite(e.rate)&&e.rate>0?e.rate:void 0,le=e.prices,ue=e.extraModels}function be(e){de=e}function xe(){return ce??6.79}function Se(){return{rate:xe(),live:ce!==void 0}}let Ce=.5;function I(e){return e>=9&&e<12||e>=14&&e<18}function we(e){return e==null||!Number.isFinite(e)?`peak`:L(e)?`offPeak`:I((new Date(e).getUTCHours()+8)%24)?`peak`:`offPeak`}function L(e){let t=new Date(e+288e5).getUTCDay();return t===0||t===6}let R=[540,720,840,1080];function z(e){return((e+288e5)%864e5+864e5)%864e5}function B(e){let t=we(e),n=z(e);for(let r=0;r<7;r++){let i=r*864e5-n;for(let n of R){let r=i+n*6e4;if(!(r<=0)&&we(e+r)!==t)return{tier:t,nextSwitchInMs:r}}}let r=R[0]??0;return{tier:t,nextSwitchInMs:864e5-n+r*6e4}}function Te(e,t){let{nextSwitchInMs:n}=B(e);if(n>t)return null;let r=e+n;return{entering:we(r),atMs:r}}function Ee(e){let t=Math.max(1,Math.ceil(e/6e4)),n=Math.floor(t/60),r=t%60;return n>0?`${n}h${String(r).padStart(2,`0`)}m`:`${r}m`}let V=[{key:`flash`,name:`DeepSeek V4 Flash`,provider:`DeepSeek`,colorVar:`dsw-static-blue-500`,price:{currency:`CNY`,input:3,cacheHit:.1,output:9,offPeak:{input:1.5,cacheHit:.05,output:4.5}},peakHours:`09:00-12:00 / 14:00-18:00`},{key:`flash-vision-exp`,name:`DeepSeek V4 Flash Vision (Exp)`,provider:`DeepSeek`,colorVar:`dsw-static-blue-500`,price:{currency:`CNY`,input:3,cacheHit:.1,output:9,offPeak:{input:1.5,cacheHit:.05,output:4.5}},peakHours:`09:00-12:00 / 14:00-18:00`},{key:`pro`,name:`DeepSeek V4 Pro`,provider:`DeepSeek`,colorVar:`dsw-static-deepseek-500`,price:{currency:`CNY`,input:9,cacheHit:.3,output:27,offPeak:{input:4.5,cacheHit:.15,output:13.5}},peakHours:`09:00-12:00 / 14:00-18:00`},{key:`glm`,name:`GLM-5.2`,provider:`智谱 AI`,colorVar:`dsw-static-blue-600`,price:{currency:`CNY`,input:8,cacheHit:2,output:28}},{key:`glm-5.3`,name:`GLM-5.3`,provider:`智谱 AI`,colorVar:`dsw-static-blue-500`,price:{currency:`CNY`,input:8,cacheHit:2,output:28}},{key:`glm-5.3-flash`,name:`GLM-5.3-Flash`,provider:`智谱 AI`,colorVar:`dsw-static-blue-300`,price:{currency:`CNY`,input:.8,cacheHit:.23,output:2.8},promo:{factor:.5,endsAtMs:Date.UTC(2026,8,8,16,0,0),note:`限时 5 折`}},{key:`glm-4.6`,name:`GLM-4.6`,provider:`智谱 AI`,colorVar:`dsw-static-blue-400`,price:{currency:`CNY`,input:4,cacheHit:.8,output:16}},{key:`glm-4.5-air`,name:`GLM-4.5-Air`,provider:`智谱 AI`,colorVar:`dsw-static-blue-300`,price:{currency:`CNY`,input:.8,cacheHit:.16,output:2}},{key:`glm-4.7`,name:`GLM-4.7`,provider:`智谱 AI`,colorVar:`dsw-static-blue-400`,price:{currency:`CNY`,input:4,cacheHit:1,output:16},estimated:!0},{key:`glm-5-turbo`,name:`GLM-5-Turbo`,provider:`智谱 AI`,colorVar:`dsw-static-blue-500`,price:{currency:`CNY`,input:5,cacheHit:1.2,output:22}},{key:`glm-5.1`,name:`GLM-5.1`,provider:`智谱 AI`,colorVar:`dsw-static-blue-600`,price:{currency:`CNY`,input:6,cacheHit:1.2,output:24}},{key:`glm-5v-turbo`,name:`GLM-5V-Turbo`,provider:`智谱 AI`,colorVar:`dsw-static-blue-300`,price:{currency:`CNY`,input:5,cacheHit:1.2,output:22}},{key:`qwen-3.8-max`,name:`Qwen3.8 Max`,provider:`阿里通义`,colorVar:`dsw-static-blue-600`,price:{currency:`CNY`,input:12,cacheHit:1.5,output:36},extraRows:[{label:`显式缓存创建`,input:15},{label:`显式缓存命中`,input:1},{label:`Batch File`,input:6,output:18,note:`长期半价`},{label:`Batch Chat`,input:12,output:36,note:`与标准价一致`}]},{key:`qwen-3.8-flash`,name:`Qwen3.8 Flash`,provider:`阿里通义`,colorVar:`dsw-static-blue-400`,price:{currency:`CNY`,input:1,cacheHit:.1,output:3},extraRows:[{label:`显式缓存创建`,input:1.25},{label:`显式缓存命中`,input:.1},{label:`Batch File`,input:.5,output:1.5,note:`长期半价`},{label:`Batch Chat`,input:1,output:3,note:`与标准价一致`}]},{key:`qwen-max`,name:`Qwen3.7-Max`,provider:`阿里通义`,colorVar:`dsw-static-blue-300`,price:{currency:`CNY`,input:12,cacheHit:1.2,output:36},promo:{factor:.5,note:`限时 5 折`},extraRows:[{label:`显式缓存创建`,input:15},{label:`显式缓存命中`,input:1.2},{label:`Batch File`,input:6,output:18,note:`长期半价`},{label:`Batch Chat`,input:12,output:36,note:`与标准价一致`}]},{key:`qwen-plus`,name:`Qwen3.5-Plus`,provider:`阿里通义`,colorVar:`dsw-static-blue-500`,price:{currency:`CNY`,input:.8,cacheHit:.08,output:4.8},extraRows:[{label:`显式缓存创建`,input:1},{label:`显式缓存命中`,input:.08},{label:`Batch File`,input:.4,output:2.4,note:`长期半价`},{label:`Batch Chat`,input:.8,output:4.8,note:`与标准价一致`}]},{key:`qwen-flash`,name:`Qwen3.5-Flash`,provider:`阿里通义`,colorVar:`dsw-static-blue-400`,price:{currency:`CNY`,input:.2,cacheHit:.02,output:2},extraRows:[{label:`显式缓存创建`,input:.25},{label:`显式缓存命中`,input:.02}]},{key:`doubao`,name:`Doubao Seed-2.0 Pro`,provider:`字节豆包`,colorVar:`dsw-static-red-500`,price:{currency:`CNY`,input:3.2,cacheHit:.64,output:16}},{key:`doubao-mini`,name:`Doubao Seed-2.0 Mini`,provider:`字节豆包`,colorVar:`dsw-static-red-300`,price:{currency:`CNY`,input:.2,cacheHit:.02,output:2}},{key:`doubao-1.6`,name:`Doubao Seed-1.6`,provider:`字节豆包`,colorVar:`dsw-static-red-400`,price:{currency:`CNY`,input:.8,cacheHit:0,output:8}},{key:`doubao-seed-evolving`,name:`Doubao-Seed-Evolving`,provider:`字节豆包`,colorVar:`dsw-static-red-500`,price:{currency:`CNY`,input:6,cacheHit:1.2,output:30}},{key:`doubao-seed-2.1-pro`,name:`Doubao Seed-2.1 Pro`,provider:`字节豆包`,colorVar:`dsw-static-red-400`,price:{currency:`CNY`,input:6,cacheHit:1.2,output:30}},{key:`doubao-seed-2.1-turbo`,name:`Doubao Seed-2.1 Turbo`,provider:`字节豆包`,colorVar:`dsw-static-red-300`,price:{currency:`CNY`,input:3,cacheHit:.6,output:15}},{key:`kimi`,name:`Kimi K2.7 Code`,provider:`月之暗面`,colorVar:`dsw-static-neutral-bluish-700`,price:{currency:`CNY`,input:6.5,cacheHit:1.3,output:27}},{key:`kimi-k2.7-hs`,name:`Kimi K2.7 Code HighSpeed`,provider:`月之暗面`,colorVar:`dsw-static-neutral-bluish-600`,price:{currency:`CNY`,input:13,cacheHit:2.6,output:54}},{key:`kimi-k2.6`,name:`Kimi K2.6`,provider:`月之暗面`,colorVar:`dsw-static-neutral-bluish-500`,price:{currency:`CNY`,input:6.5,cacheHit:1.1,output:27}},{key:`kimi-k3`,name:`Kimi K3`,provider:`月之暗面`,colorVar:`dsw-static-neutral-bluish-500`,price:{currency:`CNY`,input:20,cacheHit:2,output:100}},{key:`mimo-v2.5`,name:`MiMo V2.5`,provider:`小米`,colorVar:`dsw-static-green-400`,price:{currency:`CNY`,input:1,cacheHit:.02,output:2}},{key:`mimo-v2.5-pro`,name:`MiMo V2.5 Pro`,provider:`小米`,colorVar:`dsw-static-green-400`,price:{currency:`CNY`,input:3,cacheHit:.025,output:6}},{key:`minimax`,name:`MiniMax-M3`,provider:`MiniMax`,colorVar:`dsw-static-amber-500`,price:{currency:`CNY`,input:2.1,cacheHit:.42,output:8.4}},{key:`minimax-m2.7`,name:`MiniMax-M2.7`,provider:`MiniMax`,colorVar:`dsw-static-amber-400`,price:{currency:`CNY`,input:2.1,cacheHit:.42,output:8.4}},{key:`minimax-m2.7-highspeed`,name:`MiniMax-M2.7-highspeed`,provider:`MiniMax`,colorVar:`dsw-static-amber-500`,price:{currency:`CNY`,input:4.2,cacheHit:.42,output:16.8}},{key:`ernie`,name:`ERNIE-5.1`,provider:`百度文心`,colorVar:`dsw-static-blue-300`,price:{currency:`CNY`,input:4,cacheHit:.4,output:18}},{key:`hunyuan`,name:`混元 Hy3`,provider:`腾讯混元`,colorVar:`dsw-static-amber-400`,price:{currency:`CNY`,input:1,cacheHit:.25,output:4}},{key:`hunyuan-t1`,name:`混元 T1`,provider:`腾讯混元`,colorVar:`dsw-static-amber-300`,price:{currency:`CNY`,input:1,cacheHit:.1,output:4}},{key:`yi`,name:`Yi-Lightning`,provider:`零一万物`,colorVar:`dsw-static-green-500`,price:{currency:`CNY`,input:.99,cacheHit:.1,output:.99}},{key:`step`,name:`Step 3.7 Flash`,provider:`阶跃星辰`,colorVar:`dsw-static-neutral-bluish-400`,price:{currency:`CNY`,input:1.35,cacheHit:.27,output:8.1}},{key:`spark`,name:`Spark 4.0 Ultra`,provider:`科大讯飞`,colorVar:`dsw-static-green-400`,price:{currency:`CNY`,input:5,cacheHit:.5,output:10},estimated:!0},{key:`sensenova`,name:`SenseNova 6.5`,provider:`商汤`,colorVar:`dsw-static-red-400`,price:{currency:`CNY`,input:4.5,cacheHit:.45,output:9},estimated:!0},{key:`baichuan`,name:`Baichuan M3-Plus`,provider:`百川智能`,colorVar:`dsw-static-neutral-bluish-500`,price:{currency:`CNY`,input:5,cacheHit:.5,output:9}},{key:`gpt-5.6-sol`,name:`GPT-5.6 Sol`,provider:`OpenAI`,colorVar:`dsw-static-green-500`,price:{currency:`USD`,input:5,cacheHit:.5,output:30}},{key:`gpt-5.6-terra`,name:`GPT-5.6 Terra`,provider:`OpenAI`,colorVar:`dsw-static-green-400`,price:{currency:`USD`,input:2,cacheHit:.2,output:12}},{key:`gpt-5.6-luna`,name:`GPT-5.6 Luna`,provider:`OpenAI`,colorVar:`dsw-static-green-500`,price:{currency:`USD`,input:.2,cacheHit:.02,output:1.2}},{key:`gemini-pro`,name:`Gemini 3.1 Pro`,provider:`Google`,colorVar:`dsw-static-blue-600`,price:{currency:`USD`,input:2,cacheHit:.2,output:12,offPeak:{input:1,cacheHit:.1,output:6}},peakHours:`Standard / Flex`,tierSemantics:`latency`},{key:`gemini-flash`,name:`Gemini 3.6 Flash`,provider:`Google`,colorVar:`dsw-static-blue-400`,price:{currency:`USD`,input:1.5,cacheHit:.15,output:7.5,offPeak:{input:.75,cacheHit:.075,output:3.75}},peakHours:`Standard / Flex`,tierSemantics:`latency`},{key:`grok`,name:`Grok 4.6`,provider:`xAI`,colorVar:`dsw-static-neutral-bluish-700`,price:{currency:`USD`,input:2,cacheHit:.5,output:6}},{key:`grok-4.3`,name:`Grok 4.3`,provider:`xAI`,colorVar:`dsw-static-neutral-bluish-500`,price:{currency:`USD`,input:1.25,cacheHit:.2,output:2.5}},{key:`llama`,name:`Llama 4 Maverick`,provider:`Meta`,colorVar:`dsw-static-red-500`,price:{currency:`USD`,input:.2,cacheHit:.05,output:.6}},{key:`llama-scout`,name:`Llama 4 Scout`,provider:`Meta`,colorVar:`dsw-static-red-400`,price:{currency:`USD`,input:.1,cacheHit:.025,output:.3}},{key:`claude-opus-4-6`,name:`Claude Opus 4.6`,provider:`Anthropic`,colorVar:`dsw-static-red-500`,price:{currency:`USD`,input:5,cacheHit:.5,output:25}},{key:`claude-sonnet-4-6`,name:`Claude Sonnet 4.6`,provider:`Anthropic`,colorVar:`dsw-static-red-400`,price:{currency:`USD`,input:3,cacheHit:.3,output:15}},{key:`claude-haiku-4-5`,name:`Claude Haiku 4.5`,provider:`Anthropic`,colorVar:`dsw-static-red-300`,price:{currency:`USD`,input:1,cacheHit:.1,output:5}},{key:`claude-opus-5`,name:`Claude Opus 5`,provider:`Anthropic`,colorVar:`dsw-static-red-500`,price:{currency:`USD`,input:5,cacheHit:.5,output:25}},{key:`claude-sonnet-5`,name:`Claude Sonnet 5`,provider:`Anthropic`,colorVar:`dsw-static-red-400`,price:{currency:`USD`,input:2,cacheHit:.2,output:10}},{key:`mistral-large-2512`,name:`Mistral Large 3`,provider:`Mistral AI`,colorVar:`dsw-static-violet-500`,price:{currency:`USD`,input:.5,cacheHit:.05,output:1.5}},{key:`mistral-small-2603`,name:`Mistral Small 4`,provider:`Mistral AI`,colorVar:`dsw-static-violet-400`,price:{currency:`USD`,input:.15,cacheHit:.015,output:.6}},{key:`ministral-8b-latest`,name:`Ministral 8B`,provider:`Mistral AI`,colorVar:`dsw-static-violet-300`,price:{currency:`USD`,input:.1,cacheHit:.01,output:.1}},{key:`command-a-03-2025`,name:`Command A`,provider:`Cohere`,colorVar:`dsw-static-cyan-500`,price:{currency:`USD`,input:2.5,cacheHit:.25,output:10}},{key:`command-r-08-2024`,name:`Command R`,provider:`Cohere`,colorVar:`dsw-static-cyan-400`,price:{currency:`USD`,input:.15,cacheHit:.015,output:.6}},{key:`longcat-2.0`,name:`LongCat 2.0`,provider:`美团`,colorVar:`dsw-static-amber-500`,price:{currency:`CNY`,input:4,cacheHit:.8,output:16},estimated:!0},{key:`minicpm-v-4.5`,name:`MiniCPM-V 4.5`,provider:`面壁智能`,colorVar:`dsw-static-green-500`,price:{currency:`CNY`,input:1,cacheHit:.2,output:4},estimated:!0},{key:`ernie-4.5`,name:`ERNIE-4.5 300B`,provider:`百度文心`,colorVar:`dsw-static-blue-300`,price:{currency:`CNY`,input:2,cacheHit:.4,output:8},estimated:!0},{key:`dots-3-note-preview`,name:`Dots3-Note Preview`,provider:`小红书`,colorVar:`dsw-static-red-500`,price:{currency:`CNY`,input:2,cacheHit:.4,output:8},estimated:!0},{key:`qwen3.6-max`,name:`Qwen3.6 Max`,provider:`阿里通义`,colorVar:`dsw-static-orange-500`,price:{currency:`CNY`,input:9,cacheHit:.9,output:54},extraRows:[{label:`显式缓存创建`,input:11.25},{label:`显式缓存命中`,input:.9}]},{key:`qwen3-coder-plus`,name:`Qwen3-Coder Plus`,provider:`阿里通义`,colorVar:`dsw-static-orange-400`,price:{currency:`CNY`,input:4,cacheHit:.8,output:16},extraRows:[{label:`显式缓存创建`,input:5},{label:`显式缓存命中`,input:.4}]},{key:`qwen3-coder`,name:`Qwen3-Coder 480B`,provider:`阿里通义`,colorVar:`dsw-static-orange-300`,price:{currency:`CNY`,input:4,cacheHit:.8,output:16},estimated:!0},{key:`glm-4.5-x`,name:`GLM-4.5-X`,provider:`智谱 AI`,colorVar:`dsw-static-blue-400`,price:{currency:`CNY`,input:4,cacheHit:1,output:16},estimated:!0},{key:`glm-5.2-fast`,name:`GLM-5.2 Fast`,provider:`智谱 AI`,colorVar:`dsw-static-blue-300`,price:{currency:`CNY`,input:6,cacheHit:1.2,output:24},estimated:!0},{key:`kimi-k3-fast`,name:`Kimi K3 Fast`,provider:`月之暗面`,colorVar:`dsw-static-cyan-400`,price:{currency:`CNY`,input:20,cacheHit:2,output:100},estimated:!0},{key:`kimi-k2.7-code-fast`,name:`Kimi K2.7 Code Fast`,provider:`月之暗面`,colorVar:`dsw-static-cyan-400`,price:{currency:`CNY`,input:6.5,cacheHit:1.3,output:27},estimated:!0},{key:`kimi-k2.6-fast`,name:`Kimi K2.6 Fast`,provider:`月之暗面`,colorVar:`dsw-static-cyan-300`,price:{currency:`CNY`,input:6.5,cacheHit:1.1,output:27},estimated:!0},{key:`kimi-k2.6-turbo`,name:`Kimi K2.6 Turbo`,provider:`月之暗面`,colorVar:`dsw-static-cyan-300`,price:{currency:`CNY`,input:6.5,cacheHit:1.1,output:27},estimated:!0},{key:`kimi-k2-thinking-turbo`,name:`Kimi K2 Thinking Turbo`,provider:`月之暗面`,colorVar:`dsw-static-cyan-300`,price:{currency:`CNY`,input:8,cacheHit:1,output:58}},{key:`doubao-seed-2.0-code`,name:`Doubao Seed-2.0 Code`,provider:`字节豆包`,colorVar:`dsw-static-red-500`,price:{currency:`CNY`,input:3.2,cacheHit:.64,output:16}},{key:`doubao-seed-2.0-lite`,name:`Doubao Seed-2.0 Lite`,provider:`字节豆包`,colorVar:`dsw-static-red-300`,price:{currency:`CNY`,input:.6,cacheHit:.12,output:3.6}},{key:`other`,name:`其他模型`,provider:`Custom`,colorVar:`dsw-static-neutral-bluish-500`,price:{currency:`CNY`,input:0,cacheHit:0,cacheMiss:0,output:0}}],De={"deepseek-v4-flash":`flash`,"deepseek-v4-flash-vision-exp":`flash-vision-exp`,"deepseek-v4-pro":`pro`,"glm-5.2":`glm`,"glm-4.5-air":`glm-4.5-air`,"glm-4.5air":`glm-4.5-air`,"glm-4.7":`glm-4.7`,"glm-5-turbo":`glm-5-turbo`,"glm-5.1":`glm-5.1`,"glm-5.3-flash":`glm-5.3-flash`,"glm-5v-turbo":`glm-5v-turbo`,"glm-5v.1":`glm-5v-turbo`,"claude-opus-4-6":`claude-opus-4-6`,"claude-opus-4.6":`claude-opus-4-6`,"claude-sonnet-4-6":`claude-sonnet-4-6`,"claude-sonnet-4.6":`claude-sonnet-4-6`,"claude-haiku-4-5":`claude-haiku-4-5`,"claude-haiku-4.5":`claude-haiku-4-5`,"claude-opus-5":`claude-opus-5`,"claude-sonnet-5":`claude-sonnet-5`,"mistral-large-2512":`mistral-large-2512`,"mistral-large-3":`mistral-large-2512`,"mistral-small-2603":`mistral-small-2603`,"mistral-small-4":`mistral-small-2603`,"ministral-8b-latest":`ministral-8b-latest`,"ministral-8b":`ministral-8b-latest`,"command-a-03-2025":`command-a-03-2025`,"command-a":`command-a-03-2025`,"command-r-08-2024":`command-r-08-2024`,"command-r":`command-r-08-2024`,hy3:`hunyuan`,"longcat-2.0":`longcat-2.0`,"longcat-2":`longcat-2.0`,"minicpm-v-4.5":`minicpm-v-4.5`,"minicpm-v-4.5-thinking":`minicpm-v-4.5`,"ernie-4.5":`ernie-4.5`,"ernie-4.5-300b":`ernie-4.5`,"dots-3-note-preview":`dots-3-note-preview`,"dots-3-note":`dots-3-note-preview`,"dots3-note-preview":`dots-3-note-preview`,"rednote-dots3":`dots-3-note-preview`,"doubao-seed-evolving":`doubao-seed-evolving`,"doubao-seed-evolve":`doubao-seed-evolving`,"doubao-seed-2.1-pro":`doubao-seed-2.1-pro`,"doubao-seed-2.1-pro-290000":`doubao-seed-2.1-pro`,"doubao-seed-2.1-turbo":`doubao-seed-2.1-turbo`,"doubao-seed-2-1-turbo":`doubao-seed-2.1-turbo`,"qwen3.8-max":`qwen-3.8-max`,"qwen3.8-flash":`qwen-3.8-flash`,"qwen3.7-max":`qwen-max`,"qwen3.6-max":`qwen3.6-max`,"qwen3.6-max-preview":`qwen3.6-max`,"qwen3-coder-plus":`qwen3-coder-plus`,"qwen3-coder":`qwen3-coder`,"qwen3-coder-480b":`qwen3-coder`,"glm-4.5-x":`glm-4.5-x`,"glm-4.5x":`glm-4.5-x`,"glm-5.2-fast":`glm-5.2-fast`,"glm-5.2f":`glm-5.2-fast`,"kimi-k3-fast":`kimi-k3-fast`,"kimi-k3f":`kimi-k3-fast`,"kimi-k2.7-code-fast":`kimi-k2.7-code-fast`,"kimi-k2.7-code-f":`kimi-k2.7-code-fast`,"kimi-k2.6-fast":`kimi-k2.6-fast`,"kimi-k2.6-turbo":`kimi-k2.6-turbo`,"kimi-k2-thinking-turbo":`kimi-k2-thinking-turbo`,"doubao-seed-2.0-code":`doubao-seed-2.0-code`,"doubao-seed-2-0-code":`doubao-seed-2.0-code`,"doubao-seed-2.0-lite":`doubao-seed-2.0-lite`,"doubao-seed-2-0-lite":`doubao-seed-2.0-lite`,"qwen-max":`qwen-max`,"hunyuan-t1":`hunyuan-t1`,"step-3.7-flash":`step`,"seed-2.0-mini":`doubao-mini`,k3:`kimi-k3`,"kimi-k3":`kimi-k3`,"minimax-m1":`minimax`,"minimax-m2":`minimax`,"minimax-m3":`minimax`,"minimax-m2.7":`minimax-m2.7`,"minimax-m2.7-highspeed":`minimax-m2.7-highspeed`,"minimax-m2.7-high-speed":`minimax-m2.7-highspeed`,"minimax-m2-7":`minimax-m2.7`,"minimax-m2-7-highspeed":`minimax-m2.7-highspeed`,"minimax-m2-7-high-speed":`minimax-m2.7-highspeed`};function H(e){return String(e).toLowerCase().replace(/\([^)]*\)/g,``).replace(/[^a-z0-9]+/g,``)}let Oe=(()=>{let e=new Map,t=(t,n)=>{let r=H(t);r!==``&&!e.has(r)&&e.set(r,n)};for(let e of V)t(e.key,e.key);for(let[e,n]of Object.entries(De))t(e,n);for(let e of N)t(e.key,e.key);return e})();function ke(e){let t=[],n=e=>{e!==``&&!t.includes(e)&&t.push(e)},r=e=>{let t=e;for(;;){let e=t.replace(/[-_]\d{3,}$/u,``);if(e===t||e===``)return;t=e,n(t)}},i=e.lastIndexOf(`/`);if(i>0&&i<e.length-1){let t=e.slice(i+1);n(t),r(t)}return r(e),t}function Ae(e){let t=De[e];if(t!==void 0)return t;let n=H(e);if(n===``)return;let r=Oe.get(n);return r===void 0?(ue??[]).find(e=>H(e.key)===n)?.key:r}function U(e){let t=De[e]??e;if(t===e){let t=H(e);if(t!==``){let e=Oe.get(t);if(e!==void 0)return e;let n=(ue??[]).find(e=>H(e.key)===t);if(n!==void 0)return n.key}for(let t of ke(e)){let e=Ae(t);if(e!==void 0)return e}}return t}function je(e){let t=U(e),n=le?.[t];if(n!==void 0)return n;let r=N.find(e=>e.key.toLowerCase()===t.toLowerCase());if(r!==void 0)return{input:r.input,cacheHit:r.cacheHit,output:r.output}}function Me(e){let t=U(e),n=V.find(e=>e.key===t),r=ue?.find(e=>e.key===t),i=n??(r===void 0?(()=>{let e=V.at(-1);if(e!==void 0)return e;throw Error(`MODEL_CATALOG must not be empty`)})():W(r)),a=_e(t);if(a!==void 0)return{...i,userPriced:!0,price:{currency:a.currency??`CNY`,input:a.input,cacheHit:a.cacheHit,output:a.output,...a.offPeak===void 0?{}:{offPeak:a.offPeak}}};let o=je(t);return o===void 0?i:{...i,price:{currency:`USD`,input:o.input,cacheHit:o.cacheHit,output:o.output}}}function W(e){return{key:e.key,name:e.name,provider:e.provider,colorVar:`dsw-static-neutral-400`,price:{currency:`USD`,input:e.price.input,cacheHit:e.price.cacheHit,output:e.price.output}}}function Ne(e,t){let n=e.endsAtMs!==void 0&&t>=e.endsAtMs;return Number.isFinite(t)&&!n&&e.factor>0&&e.factor<1}function Pe(e,t){let{promo:n}=e;if(n===void 0||!Ne(n,t))return e;let r=e=>({input:e.input*n.factor,cacheHit:e.cacheHit*n.factor,...e.cacheMiss===void 0?{}:{cacheMiss:e.cacheMiss*n.factor},output:e.output*n.factor});return{...e,price:{...r(e.price),currency:e.price.currency,...e.price.offPeak===void 0?{}:{offPeak:r(e.price.offPeak)}}}}function Fe(e=Date.now()){let t=[...V.map(t=>Pe(t,e))],n=new Set(t.map(e=>e.key.toLowerCase())),r=new Set(t.map(e=>H(e.key)));for(let e of de??[]){let i=e.id.toLowerCase();if((()=>{let t=U(e.id);return V.find(e=>e.key===t)})()!==void 0)continue;let a=H(e.id);if(n.has(i)||a!==``&&r.has(a))continue;let o=(ue??[]).find(e=>H(e.key)===a),s;if(o!==void 0)s=W(o),e.name!==void 0&&e.name!==``&&(s={...s,name:e.name});else{let t=je(i);s=t===void 0?{key:U(e.id),name:e.name??e.id,provider:e.provider,colorVar:`dsw-static-neutral-400`,price:{currency:`USD`,input:0,cacheHit:0,output:0},uncatalogued:!0}:{key:i,name:e.name??e.id,provider:e.provider,colorVar:`dsw-static-neutral-400`,price:{currency:`USD`,input:t.input,cacheHit:t.cacheHit,output:t.output}}}n.add(s.key.toLowerCase()),a!==``&&r.add(a),t.push(s)}return t.map(e=>{let t=_e(e.key);return t===void 0?e:{...e,userPriced:!0,price:{currency:t.currency??`CNY`,input:t.input,cacheHit:t.cacheHit,output:t.output}}})}function Ie(e){let t=getComputedStyle(document.documentElement).getPropertyValue(`--${e}`).trim();return t===``?`#8b95a3`:t}function G(e,t,n){let r=t.cacheMiss>0?t.cacheMiss:Math.max(0,t.input-t.cacheHit),i=Math.min(t.cacheHit,t.input),a=(r*(e.cacheMiss??e.input)+i*e.cacheHit+t.output*e.output)/1e6;return n===`USD`?a*xe():a}function Le(e,t,n=Ce,r=Date.now()){let i=Pe(e,r),a=G(i.price,t,i.price.currency),o=i.price.offPeak===void 0?a:G(i.price.offPeak,t,i.price.currency);return a*n+o*(1-n)}function Re(e){let t=xe();return t>0?e/t:e}function K(e,t=`cny`){let n=Number(e);if(!Number.isFinite(n))return t===`cny`?`¥0`:`$0`;let r=t===`cny`?`¥`:`$`;return n<=0?`${r}0`:n>=1e3?`${r}${n.toFixed(0)}`:n>=10?`${r}${n.toFixed(1)}`:n>=.1?`${r}${n.toFixed(2)}`:`${r}${n.toFixed(3)}`}function ze(e,t=`CNY`){return e===0?`免费`:t===`USD`?e>=10?`$${e.toFixed(1)}`:`$${e.toFixed(2)}`:e>=10?`¥${e.toFixed(1)}`:`¥${e.toFixed(2)}`}function Be(e,t,n,r){return r<=0||!Number.isFinite(r)||t===(n===`usd`?`USD`:`CNY`)?e:n===`usd`?e/r:e*r}function q(e){return e>=1e9?`${(e/1e9).toFixed(2)}B`:e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e3?`${(e/1e3).toFixed(0)}K`:String(e)}function Ve(e){let t=Number(e);return Number.isFinite(t)?`${t.toFixed(1)}%`:`0.0%`}let J={top:18,right:40,bottom:26,left:46};function He(e){let[,t,n]=e.split(`-`);return`${Number(t)}/${Number(n)}`}function Ue(e){return e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e3?`${(e/1e3).toFixed(1)}K`:String(Math.round(e))}function We(e,t){let n=[];for(let r=0;r<e;r+=t)n.push(r);return e>0&&n[n.length-1]!==e-1&&n.push(e-1),n}let Ge={key:`__total__`,name:`总计`,color:``};function Ke({data:e,models:t=[],currency:n=`cny`,metric:i=`cost`}){let[o,s]=(0,r.useState)(null),c=e=>K(n===`usd`?Re(e):e,n),l=e=>i===`tokens`?Ue(e):c(e),u=e=>i===`tokens`?e.tokens??0:e.cost,d=(0,r.useMemo)(()=>{let n=e.length;if(n===0)return null;let r=680-J.left-J.right,a=220-J.top-J.bottom,o=e=>n===1?J.left+r/2:J.left+r*e/(n-1),s=Math.max(...i===`tokens`?e.map(e=>e.tokens??0):e.map(e=>Math.max(e.cost,Object.values(e.byModel??{}).reduce((e,t)=>e+t,0))),1e-4),c=e=>J.top+a-e/s*a,l=Math.max(...e.map(e=>e.calls),1),d=e=>J.top+a-e/l*a,f=r/n,p=Math.min(18,f*.6);return{n,plotW:r,plotH:a,inner:o,yCost:c,yCalls:d,barW:p,bars:e.flatMap((e,n)=>{let r=o(n)-p/2;if(t.length===0||i===`tokens`)return[{date:e.date,model:Ge,x:r,base:0,value:u(e),topRounded:!0}];let a=null;for(let n of t)(e.byModel?.[n.key]??0)>0&&(a=n.key);let s=0;return t.map(t=>{let n=e.byModel?.[t.key]??0,i={date:e.date,model:t,x:r,base:s,value:n,topRounded:t.key===a};return s+=n,i})}),costTicks:[0,.25,.5,.75,1].map(e=>s*e).reverse(),callsTicks:[0,.25,.5,.75,1].map(e=>l*e).reverse(),linePath:e.map((e,t)=>{let n=d(e.calls);return`${t===0?`M`:`L`}${o(t)} ${n}`}).join(` `)}},[e,t,i]);if(d===null)return(0,a.jsx)(`div`,{className:A.chartEmpty,children:`暂无趋势数据`});let{n:f,plotW:p,plotH:m,inner:h,yCost:g,yCalls:_,barW:v,bars:y,costTicks:b,callsTicks:x,linePath:S}=d,C=o===null?void 0:e[o],w=We(f,Math.max(1,Math.ceil(f/8)));return(0,a.jsxs)(`div`,{className:A.chartWrap,children:[(0,a.jsxs)(`svg`,{viewBox:`0 0 680 220`,className:A.chartSvg,role:`img`,"aria-label":`Daily cost by model and total calls`,onMouseLeave:()=>{s(null)},onMouseMove:e=>{let t=e.currentTarget.getBoundingClientRect(),n=((e.clientX-t.left)/t.width*680-J.left)/p,r=Math.round(n*(f-1));s(Math.min(Math.max(r,0),f-1))},children:[b.map((e,t)=>{let n=g(e);return(0,a.jsxs)(`g`,{children:[(0,a.jsx)(`line`,{x1:J.left,x2:680-J.right,y1:n,y2:n,className:A.chartGrid}),(0,a.jsx)(`text`,{x:J.left-8,y:n+3,textAnchor:`end`,className:A.chartAxisLabel,children:l(e)})]},`cost-${t}`)}),y.map(t=>{if(t.value>0)return(0,a.jsx)(`rect`,{x:t.x,y:g(t.base+t.value),width:v,height:g(t.base)-g(t.base+t.value),rx:t.topRounded?2:0,className:t.model.color===``?A.chartBar:A.chartStack,style:t.model.color===``?void 0:{fill:t.model.color}},`${t.date}-${t.model.key}`);let n=e.find(e=>e.date===t.date);return n!==void 0&&n.calls>0&&t.base===0?(0,a.jsx)(`rect`,{x:t.x,y:g(0)-1,width:v,height:1,rx:0,className:A.chartBarPlaceholder},`${t.date}-${t.model.key}-placeholder`):null}),(0,a.jsx)(`path`,{d:S,fill:`none`,className:A.chartLine}),x.map((e,t)=>{let n=_(e);return(0,a.jsx)(`text`,{x:680-J.right+8,y:n+3,textAnchor:`start`,className:A.chartAxisLabel,children:Ue(e)},`calls-${t}`)}),w.map(t=>{let n=e[t];return n===void 0?null:(0,a.jsx)(`text`,{x:h(t),y:214,textAnchor:`middle`,className:A.chartAxisLabel,children:He(n.date)},n.date)}),o!==null&&(0,a.jsx)(`line`,{x1:h(o),x2:h(o),y1:J.top,y2:J.top+m,className:A.chartCrosshair})]}),C!==void 0&&o!==null&&(0,a.jsxs)(`div`,{className:A.chartTooltip,style:{left:`${h(o)/680*100}%`,top:`${g(C.cost)/220*100}%`},children:[(0,a.jsx)(`div`,{className:A.chartTooltipDate,children:C.date}),i!==`tokens`&&t.filter(e=>(C.byModel?.[e.key]??0)>0).map(e=>(0,a.jsxs)(`div`,{className:A.chartTooltipRow,children:[(0,a.jsx)(`span`,{className:A.chartTooltipSwatch,style:{background:e.color}}),e.name,` `,(0,a.jsx)(`strong`,{children:c(C.byModel?.[e.key]??0)})]},e.key)),(0,a.jsxs)(`div`,{className:A.chartTooltipRow,children:[(0,a.jsx)(`span`,{className:A.chartLegendBar}),`总计 `,(0,a.jsx)(`strong`,{children:i===`tokens`?Ue(C.tokens??0):c(C.cost)})]}),(0,a.jsxs)(`div`,{className:A.chartTooltipRow,children:[(0,a.jsx)(`span`,{className:A.chartLegendLine}),`调用 `,(0,a.jsx)(`strong`,{children:C.calls.toLocaleString()})]})]}),t.length>0&&i!==`tokens`&&(0,a.jsxs)(`div`,{className:A.chartLegend,children:[t.map(e=>(0,a.jsxs)(`span`,{children:[(0,a.jsx)(`span`,{className:A.chartTooltipSwatch,style:{background:e.color}}),e.name]},e.key)),(0,a.jsxs)(`span`,{children:[(0,a.jsx)(`span`,{className:A.chartLegendLine}),`调用`]})]})]})}let Y={top:14,right:42,bottom:22,left:46};function qe(e){return e.slice(5,13).replace(`T`,` `)}function Je(e){return String(e>=100?Math.round(e):Number(e.toFixed(1)))}function Ye(e,t,n){return t===`ttft`?`${Math.round(e)} ms`:`${e.toFixed(1)} ${n(`perfTpsUnit`)}`}function Xe({perf:e,models:t,t:n}){let[i,o]=(0,r.useState)(()=>re()),[s,c]=(0,r.useState)(null),l=e=>{o(e),ie(e)},d=e=>t.find(t=>t.key===e)?.color??`#8b95a3`,f=(0,r.useMemo)(()=>e===void 0?[]:Object.entries(e.byModel).map(([e,n])=>({key:e,name:t.find(t=>t.key===e)?.name??e,color:d(e),samples:n.samples,ttftAvg:n.ttftAvg,ttftP50:n.ttftP50,ttftP90:n.ttftP90,...n.ttftMax===void 0?{}:{ttftMax:n.ttftMax},...n.ttftSpikes===void 0?{}:{ttftSpikes:n.ttftSpikes},...n.tpsAvg===void 0?{}:{tpsAvg:n.tpsAvg},latencyAvg:n.latencyAvg,estimatedSamples:n.estimatedSamples})).sort((e,t)=>t.samples-e.samples||t.ttftP90-e.ttftP90),[e,t]),p=(0,r.useMemo)(()=>{if(e===void 0)return[];if(i.models!==void 0){let t=new Set(Object.keys(e.byModel));return i.models.filter(e=>t.has(e))}return f.slice(0,5).map(e=>e.key)},[e,f,i.models]),m=(0,r.useMemo)(()=>{if(e===void 0)return null;let t=Object.keys(e.byHourModel).sort().slice(-48);if(t.length===0)return null;let n=t.length,r=680-Y.left-Y.right,a=180-Y.top-Y.bottom,o=e=>n===1?Y.left+r/2:Y.left+r*e/(n-1),s=new Set(p),c=e=>i.metric===`ttft`?e?.ttftAvg:e?.tpsAvg,l=[],u=0;for(let r of f){if(!s.has(r.key))continue;let i=[];for(let a=0;a<n;a++){let n=t[a];if(n===void 0)continue;let s=c(e.byHourModel[n]?.[r.key]);s===void 0||!Number.isFinite(s)||(i.push({i:a,x:o(a),y:0,v:s}),s>u&&(u=s))}l.push({key:r.key,name:r.name,color:r.color,segments:[],points:i})}let d=l.reduce((e,t)=>e+t.points.length,0);u=Math.max(u,1);let m=e=>Y.top+a-e/u*a;for(let e of l){let t=``,n=-2;for(let r of e.points)r.y=m(r.v),t!==``&&r.i!==n+1&&(e.segments.push(t),t=``),t+=`${t===``?`M`:`L`}${r.x} ${r.y} `,n=r.i;t!==``&&e.segments.push(t)}let h=Math.max(1,Math.ceil(n/8)),g=[];for(let e=0;e<n;e+=h)g.push(e);return g[g.length-1]!==n-1&&g.push(n-1),{hourKeys:t,n,plotW:r,plotH:a,inner:o,yOf:m,series:l,ticks:[0,.5,1].map(e=>u*e).reverse(),xTicks:g,totalPoints:d}},[e,f,p,i.metric]);if(e===void 0||f.length===0)return(0,a.jsx)(`div`,{className:A.chartEmpty,"data-testid":`billing-perf-empty`,children:n(`perfEmpty`)});let h=e=>{let t=p.includes(e)?p.filter(t=>t!==e):[...p,e];l({metric:i.metric,models:t})},g=e=>{l({metric:e,...i.models===void 0?{}:{models:i.models}})},_=s===null||m===null?[]:m.series.flatMap(e=>{let t=e.points.find(e=>e.i===s);return t===void 0?[]:[{key:e.key,name:e.name,color:e.color,v:t.v}]});return(0,a.jsxs)(`div`,{"data-testid":`billing-perf-panel`,children:[(0,a.jsx)(`div`,{className:A.tableScroll,"data-testid":`billing-perf-table`,children:(0,a.jsxs)(`table`,{className:A.modelTable,children:[(0,a.jsx)(`thead`,{children:(0,a.jsxs)(`tr`,{children:[(0,a.jsx)(`th`,{children:n(`model`)}),(0,a.jsx)(`th`,{className:A.numCol,children:n(`perfSamples`)}),(0,a.jsx)(`th`,{className:A.numCol,children:n(`perfTtft`)}),(0,a.jsx)(`th`,{className:A.numCol,children:n(`perfP50`)}),(0,a.jsx)(`th`,{className:A.numCol,children:n(`perfP90`)}),(0,a.jsx)(`th`,{className:A.numCol,children:n(`perfMax`)}),(0,a.jsx)(`th`,{className:A.numCol,children:n(`perfTps`)}),(0,a.jsx)(`th`,{className:A.numCol,children:n(`perfLatency`)}),(0,a.jsx)(`th`,{className:A.numCol,children:n(`perfEstimated`)})]})}),(0,a.jsx)(`tbody`,{children:f.map(e=>(0,a.jsxs)(`tr`,{children:[(0,a.jsx)(`td`,{children:(0,a.jsxs)(`span`,{className:A.modelCell,children:[(0,a.jsx)(`span`,{className:A.modelDot,style:{background:e.color}}),(0,a.jsx)(`span`,{className:A.modelName,children:e.name})]})}),(0,a.jsx)(`td`,{className:A.numCol,children:e.samples.toLocaleString()}),(0,a.jsxs)(`td`,{className:A.numCol,children:[e.ttftAvg.toFixed(0),` ms`]}),(0,a.jsxs)(`td`,{className:A.numCol,children:[e.ttftP50.toFixed(0),` ms`]}),(0,a.jsxs)(`td`,{className:A.numCol,children:[e.ttftP90.toFixed(0),` ms`]}),(0,a.jsx)(`td`,{className:A.numCol,children:e.ttftMax===void 0?(0,a.jsx)(`span`,{className:A.na,children:`—`}):(0,a.jsxs)(`span`,{children:[e.ttftMax.toFixed(0),` ms`,e.ttftSpikes!==void 0&&e.ttftSpikes>0?` (${e.ttftSpikes}↑)`:``]})}),(0,a.jsx)(`td`,{className:A.numCol,children:e.tpsAvg===void 0?(0,a.jsx)(`span`,{className:A.na,children:`—`}):`${e.tpsAvg.toFixed(1)}`}),(0,a.jsxs)(`td`,{className:A.numCol,children:[e.latencyAvg.toFixed(0),` ms`]}),(0,a.jsx)(`td`,{className:A.numCol,children:e.estimatedSamples>0?e.estimatedSamples:(0,a.jsx)(`span`,{className:A.na,children:`—`})})]},e.key))})]})}),m!==null&&(0,a.jsxs)(`div`,{"data-testid":`billing-perf-hour`,children:[(0,a.jsx)(`div`,{className:A.perfBar,children:(0,a.jsx)(`span`,{className:A.rangeToggle,role:`group`,"aria-label":n(`perfTitle`),children:[`ttft`,`tps`].map(e=>(0,a.jsx)(`button`,{type:`button`,className:u(A.rangeButton,i.metric===e&&A.rangeButtonActive),"aria-pressed":i.metric===e,"data-testid":`billing-perf-tab-${e}`,onClick:()=>{g(e)},children:e===`ttft`?`${n(`perfTtft`)} (ms)`:`${n(`perfTps`)} (${n(`perfTpsUnit`)})`},e))})}),(0,a.jsxs)(`div`,{className:A.perfChips,role:`group`,"aria-label":n(`model`),children:[(0,a.jsx)(`button`,{type:`button`,className:A.perfChip,"data-testid":`billing-perf-chip-all`,onClick:()=>{l({metric:i.metric,models:f.map(e=>e.key)})},children:n(`perfAll`)}),f.map(e=>{let t=p.includes(e.key);return(0,a.jsxs)(`button`,{type:`button`,className:u(A.perfChip,!t&&A.perfChipOff),style:t?{color:e.color,borderColor:`color-mix(in srgb, ${e.color} 45%, transparent)`}:void 0,"aria-pressed":t,"data-testid":`billing-perf-chip-${e.key}`,onClick:()=>{h(e.key)},children:[(0,a.jsx)(`span`,{className:A.perfChipDot,style:{background:t?e.color:`var(--dsw-alias-label-dimmed)`}}),e.name]},e.key)})]}),m.totalPoints>0?(0,a.jsxs)(`div`,{className:A.chartWrap,children:[(0,a.jsxs)(`svg`,{viewBox:`0 0 680 180`,className:A.chartSvg,role:`img`,"aria-label":`Hourly perf comparison by model`,onMouseLeave:()=>{c(null)},onMouseMove:e=>{let t=e.currentTarget.getBoundingClientRect(),n=((e.clientX-t.left)/t.width*680-Y.left)/m.plotW,r=Math.round(n*(m.n-1));c(Math.min(Math.max(r,0),m.n-1))},children:[m.ticks.map((e,t)=>{let n=m.yOf(e);return(0,a.jsxs)(`g`,{children:[(0,a.jsx)(`line`,{x1:Y.left,x2:680-Y.right,y1:n,y2:n,className:A.chartGrid}),(0,a.jsx)(`text`,{x:Y.left-8,y:n+3,textAnchor:`end`,className:A.chartAxisLabel,children:Je(e)})]},`tick-${t}`)}),m.series.map(e=>e.segments.map((t,n)=>(0,a.jsx)(`path`,{d:t,fill:`none`,className:A.chartLine,style:{stroke:e.color}},`${e.key}-${n}`))),m.xTicks.map(e=>{let t=m.hourKeys[e];return t===void 0?null:(0,a.jsx)(`text`,{x:m.inner(e),y:174,textAnchor:`middle`,className:A.chartAxisLabel,children:qe(t)},t)}),s!==null&&(0,a.jsx)(`line`,{x1:m.inner(s),x2:m.inner(s),y1:Y.top,y2:Y.top+m.plotH,className:A.chartCrosshair}),s!==null&&m.series.map(e=>{let t=e.points.find(e=>e.i===s);return t===void 0?null:(0,a.jsx)(`circle`,{cx:t.x,cy:t.y,r:3.5,fill:e.color,className:A.chartHoverDot},`${e.key}-dot`)})]}),s!==null&&_.length>0&&(0,a.jsxs)(`div`,{className:A.chartTooltip,"data-testid":`billing-perf-tooltip`,style:{left:`${m.inner(s)/680*100}%`,top:`${(Y.top+m.plotH/2)/180*100}%`},children:[(0,a.jsx)(`div`,{className:A.chartTooltipDate,children:qe(m.hourKeys[s]??``)}),_.map(e=>(0,a.jsxs)(`div`,{className:A.chartTooltipRow,children:[(0,a.jsx)(`span`,{className:A.chartTooltipSwatch,style:{background:e.color}}),e.name,` `,(0,a.jsx)(`strong`,{children:Ye(e.v,i.metric,n)})]},e.key))]})]}):(0,a.jsx)(`div`,{className:A.chartEmpty,"data-testid":`billing-perf-chart-empty`,children:n(`perfChartEmpty`)})]}),m===null&&(0,a.jsx)(`div`,{className:A.chartEmpty,"data-testid":`billing-perf-chart-empty`,children:n(`perfChartEmpty`)})]})}let Ze=`@kenz1117/dsh-ui-usage-billing`,Qe=`kenz1117`;function $e({t:e,version:t}){return(0,a.jsxs)(`section`,{className:A.setCard,"data-testid":`billing-plugin-info`,children:[(0,a.jsxs)(`div`,{className:A.plgHead,children:[(0,a.jsx)(`span`,{className:A.plgIcon,"aria-hidden":`true`,children:(0,a.jsx)(`svg`,{width:`20`,height:`20`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:(0,a.jsx)(`path`,{d:`M10 3a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v2a2 2 0 0 0 4 0V4a1 1 0 0 1 1-1h1a1 1 0 0 1 1 1v1a2 2 0 0 0 4 0 1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-1a2 2 0 0 0 0 4h1a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-1a2 2 0 0 0-4 0v1a1 1 0 0 1-1 1h-2a1 1 0 0 1-1-1v-2a2 2 0 0 0-4 0v1a1 1 0 0 1-1 1h-1a1 1 0 0 1-1-1v-1a2 2 0 0 0-4 0 1 1 0 0 1-1 1H3a1 1 0 0 1-1-1v-2a1 1 0 0 1 1-1h1a2 2 0 0 0 0-4H3a1 1 0 0 1-1-1v-2a1 1 0 0 1 1-1h1a2 2 0 0 0 4 0z`})})}),(0,a.jsxs)(`div`,{className:A.plgTitle,children:[(0,a.jsxs)(`div`,{className:A.plgNameRow,children:[(0,a.jsx)(`h3`,{className:A.plgName,children:Ze}),(0,a.jsx)(`span`,{className:A.plgTag,children:t===void 0?`—`:`v${t}`})]}),(0,a.jsx)(`p`,{className:A.plgDesc,children:`Usage billing dashboard for DeepSeek Harness`})]})]}),(0,a.jsxs)(`div`,{className:A.plgGrid,children:[(0,a.jsxs)(`div`,{className:A.plgItem,children:[(0,a.jsx)(`span`,{className:A.plgLabel,children:e(`pluginAuthor`)}),(0,a.jsxs)(`a`,{className:A.plgLink,href:`https://github.com/${Qe}`,target:`_blank`,rel:`noreferrer`,children:[`KenZ`,` (`,Qe,`)`]})]}),(0,a.jsxs)(`div`,{className:A.plgItem,children:[(0,a.jsx)(`span`,{className:A.plgLabel,children:e(`pluginRepository`)}),(0,a.jsx)(`a`,{className:A.plgLink,href:`https://github.com/kenz1117/dsh-ui-usage-billing`,target:`_blank`,rel:`noreferrer`,children:`GitHub`})]}),(0,a.jsxs)(`div`,{className:A.plgItem,children:[(0,a.jsx)(`span`,{className:A.plgLabel,children:e(`pluginNpm`)}),(0,a.jsx)(`a`,{className:A.plgLink,href:`https://www.npmjs.com/package/@kenz1117/dsh-ui-usage-billing`,target:`_blank`,rel:`noreferrer`,children:Ze})]}),(0,a.jsxs)(`div`,{className:A.plgItem,children:[(0,a.jsx)(`span`,{className:A.plgLabel,children:e(`pluginLicense`)}),(0,a.jsx)(`span`,{className:A.plgVal,children:`MIT`})]})]})]})}function X(e=Date.now()){let t=new Date(e),n=e=>String(e).padStart(2,`0`);return`${t.getFullYear()}-${n(t.getMonth()+1)}-${n(t.getDate())}`}function et(e){return e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e3?`${(e/1e3).toFixed(1)}K`:String(Math.round(e))}let Z={top:14,right:18,bottom:22,left:46},tt=`var(--dsw-static-blue-500)`,nt=`#14b8a6`,rt=`var(--dsw-static-amber-500)`;function it(e,t,n,r){return JSON.stringify({days:e,models:t,dayModels:n,total:r},null,2)}function at(e){let{stats:t,trendDays:n,onTrendDays:i,t:o}=e,s=e.models??[],{byDay:c,byModel:l,total:d}=t,[f,p]=(0,r.useState)(null),[m,h]=(0,r.useState)(`structure`),[g,_]=(0,r.useState)(null),v=t.byDayModels!==void 0,y=e=>{h(e),_(null)},b=(0,r.useMemo)(()=>{let e=[];for(let t=n-1;t>=0;--t){let n=new Date;n.setDate(n.getDate()-t);let r=X(n.getTime()),i=c[r];e.push({date:r,miss:i?.cacheMiss??0,hit:i?.cacheHit??0,output:i?.output??0,reasoning:i?.reasoning??0})}return e},[c,n]),x=(0,r.useMemo)(()=>{let e=[];for(let r=n-1;r>=0;--r){let n=new Date;n.setDate(n.getDate()-r);let i=X(n.getTime()),a=t.byDayModels?.[i],o={},s=0;if(a!==void 0)for(let[e,t]of Object.entries(a)){let n=t.cacheHit??0,r=t.cacheMiss??0,i=t.output??0,a=n+r+i;a<=0||(o[e]={hit:n,miss:r,output:i,total:a},s+=a)}e.push({date:i,models:o,total:s})}return e},[t.byDayModels,n]),S=(0,r.useMemo)(()=>{let e=new Map;for(let t of x)for(let[n,r]of Object.entries(t.models))e.set(n,(e.get(n)??0)+r.total);return[...e.entries()].sort((e,t)=>t[1]-e[1]).map(([e])=>({key:e,name:s.find(t=>t.key===e)?.name??Me(e).name,color:s.find(t=>t.key===e)?.color??`#8b95a3`}))},[x,s]),C=g!==null&&S.some(e=>e.key===g)?g:null,w=e=>{if(v){if(m!==`model`){h(`model`),_(e);return}_(t=>t===e?null:e)}},T=(0,r.useMemo)(()=>{let e=0;return Object.entries(l).filter(([,e])=>e.calls>0).map(([t,n])=>{let r=n.input+n.output;e+=r;let i=n.cacheHit+n.cacheMiss;return{key:t,name:Me(t).name,input:n.input,output:n.output,reasoning:n.reasoning??0,calls:n.calls,cacheHit:n.cacheHit,cacheMiss:n.cacheMiss,cacheHitRate:i>0?n.cacheHit/i*100:0,total:r,share:0}}).sort((e,t)=>t.total-e.total).map(t=>({...t,share:e>0?t.total/e:0}))},[l]),E=(0,r.useMemo)(()=>{let e=d.cacheHit??0,t=d.cacheMiss??0,n=d.input??0,r=d.output??0,i=d.reasoning??0,a=e+t,o=a>0?e/a*100:0,s=r>0?i/r*100:0,c=r>0?n/r:0,l;for(let e of b){let t=e.miss+e.hit+e.output;(l===void 0||t>l.miss+l.hit+l.output)&&(l=e)}return{cacheHitRate:o,reasoningPct:s,io:c,peak:l,hit:e,miss:t,input:n,output:r,reasoning:i}},[d,b]),ee=(0,r.useMemo)(()=>{let e=Object.entries(t.byTool??{}),n=e.slice(0,8),r=e.slice(8).reduce((e,[,t])=>e+t,0),i=e.reduce((e,[,t])=>e+t,0);return{top:n,rest:r>0?[[`…`,r]]:[],totalCalls:i}},[t.byTool]),D=(0,r.useMemo)(()=>{let e=b.length;if(e===0)return null;let t=680-Z.left-Z.right,n=200-Z.top-Z.bottom,r=Math.max(...m===`model`?x.map(e=>e.total):b.map(e=>e.miss+e.hit+e.output),1),i=e=>Z.top+n-e/r*n,a=t/e,o=Math.min(20,a*.6),s=n=>e===1?Z.left+t/2:Z.left+t*n/(e-1),c=Math.max(1,Math.ceil(e/8)),l=[];for(let t=0;t<e;t+=c)l.push(t);return e>0&&l[l.length-1]!==e-1&&l.push(e-1),{n:e,plotW:t,plotH:n,max:r,y:i,barW:o,inner:s,indices:l}},[b,x,m]),te=()=>{let e=new Blob([ot(b)],{type:`text/csv`}),t=document.createElement(`a`);t.href=URL.createObjectURL(e),t.download=`token-daily-${X()}.csv`,t.click(),setTimeout(()=>URL.revokeObjectURL(t.href),0)},ne=()=>{let e=new Blob([it(b,T,x,d)],{type:`application/json`}),t=document.createElement(`a`);t.href=URL.createObjectURL(e),t.download=`token-${X()}.json`,t.click(),setTimeout(()=>URL.revokeObjectURL(t.href),0)},O=f===null?void 0:b[f],k=f===null?void 0:x[f];return(0,a.jsxs)(`div`,{className:A.tokenPanel,"data-testid":`billing-token-panel`,children:[(0,a.jsxs)(`div`,{className:A.exportBar,role:`group`,"aria-label":o(`tokenExport`),children:[(0,a.jsx)(`span`,{className:A.exportLabel,children:o(`export`)}),(0,a.jsx)(`button`,{type:`button`,className:A.exportButton,"data-testid":`billing-token-export-csv`,onClick:te,children:o(`tokenExportCsv`)}),(0,a.jsx)(`button`,{type:`button`,className:A.exportButton,"data-testid":`billing-token-export-json`,onClick:ne,children:o(`exportJson`)})]}),(0,a.jsxs)(`div`,{className:A.kpiGrid,"data-testid":`billing-token-kpis`,children:[(0,a.jsxs)(`div`,{className:A.kpiTile,children:[(0,a.jsx)(`span`,{className:A.kpiLabel,children:o(`tokenCacheHitRate`)}),(0,a.jsxs)(`span`,{className:A.kpiValue,children:[E.cacheHitRate.toFixed(1),`%`]}),(0,a.jsxs)(`span`,{className:A.kpiDetail,children:[q(E.hit),` / `,q(E.hit+E.miss),(d.cacheWrite??0)>0?` · ${o(`tokenCacheWrite`)} ${q(d.cacheWrite??0)}`:``]})]}),(0,a.jsxs)(`div`,{className:A.kpiTile,children:[(0,a.jsx)(`span`,{className:A.kpiLabel,children:o(`tokenReasoningShare`)}),(0,a.jsxs)(`span`,{className:A.kpiValue,children:[E.reasoningPct.toFixed(1),`%`]}),(0,a.jsx)(`span`,{className:A.kpiDetail,children:q(E.reasoning)})]}),(0,a.jsxs)(`div`,{className:A.kpiTile,children:[(0,a.jsx)(`span`,{className:A.kpiLabel,children:o(`tokenIo`)}),(0,a.jsx)(`span`,{className:A.kpiValue,children:E.io.toFixed(2)}),(0,a.jsxs)(`span`,{className:A.kpiDetail,children:[q(E.input),` / `,q(E.output)]})]}),(0,a.jsxs)(`div`,{className:A.kpiTile,children:[(0,a.jsx)(`span`,{className:A.kpiLabel,children:o(`tokenPeak`)}),(0,a.jsx)(`span`,{className:A.kpiValue,children:E.peak===void 0?`—`:et(E.peak.miss+E.peak.hit+E.peak.output)}),(0,a.jsx)(`span`,{className:A.kpiDetail,children:E.peak?.date??`—`})]})]}),(0,a.jsxs)(`section`,{className:A.panel,"data-testid":`billing-token-daily`,children:[(0,a.jsxs)(`div`,{className:A.panelHead,children:[(0,a.jsx)(`h3`,{className:A.panelTitle,children:o(`tokenDaily`)}),(0,a.jsxs)(`span`,{className:A.panelHeadControls,children:[v&&(0,a.jsx)(`span`,{className:A.rangeToggle,role:`group`,"aria-label":o(`tokenDaily`),children:[`structure`,`model`].map(e=>(0,a.jsx)(`button`,{type:`button`,className:u(A.rangeButton,m===e&&A.rangeButtonActive),"aria-pressed":m===e,onClick:()=>{y(e)},"data-testid":`billing-token-view-${e}`,children:o(e===`structure`?`tokenViewStructure`:`tokenViewModel`)},e))}),(0,a.jsx)(`span`,{className:A.rangeToggle,role:`group`,"aria-label":o(`tokenDaily`),children:[7,30].map(e=>(0,a.jsx)(`button`,{type:`button`,className:u(A.rangeButton,n===e&&A.rangeButtonActive),"aria-pressed":n===e,onClick:()=>{i(e)},"data-testid":`billing-token-${e}d`,children:o(e===7?`trend7d`:`trend30d`)},e))})]})]}),D===null||m===`model`&&S.length===0?(0,a.jsx)(`div`,{className:A.chartEmpty,children:o(`trendEmpty`)}):(0,a.jsxs)(`div`,{className:A.chartWrap,children:[(0,a.jsxs)(`svg`,{viewBox:`0 0 680 200`,className:A.chartSvg,role:`img`,"aria-label":o(`tokenDaily`),onMouseLeave:()=>{p(null)},onMouseMove:e=>{let t=e.currentTarget.getBoundingClientRect(),n=((e.clientX-t.left)/t.width*680-Z.left)/D.plotW,r=Math.round(n*(D.n-1));p(Math.min(Math.max(r,0),D.n-1))},children:[[0,.5,1].map(e=>{let t=D.max*e,n=D.y(t);return(0,a.jsxs)(`g`,{children:[(0,a.jsx)(`line`,{x1:Z.left,x2:680-Z.right,y1:n,y2:n,className:A.chartGrid}),(0,a.jsx)(`text`,{x:Z.left-8,y:n+3,textAnchor:`end`,className:A.chartAxisLabel,children:et(t)})]},e)}),m===`structure`?b.map((e,t)=>{let n=D.inner(t)-D.barW/2,r=D.y(0),i=D.y(e.miss),o=D.y(e.miss+e.hit),s=D.y(e.miss+e.hit+e.output);return(0,a.jsxs)(`g`,{children:[(0,a.jsx)(`rect`,{x:n,y:i,width:D.barW,height:r-i,fill:tt}),(0,a.jsx)(`rect`,{x:n,y:o,width:D.barW,height:i-o,fill:nt}),(0,a.jsx)(`rect`,{x:n,y:s,width:D.barW,height:o-s,fill:rt})]},e.date)}):x.map((e,t)=>{let n=D.inner(t)-D.barW/2,r=0;return(0,a.jsx)(`g`,{children:S.map(t=>{let i=e.models[t.key];if(i===void 0)return null;let o=D.y(r);r+=i.total;let s=D.y(r),c=C!==null&&t.key!==C;return(0,a.jsx)(`rect`,{x:n,y:s,width:D.barW,height:o-s,fill:t.color,opacity:c?.15:1},t.key)})},e.date)}),D.indices.map(e=>{let t=b[e];return t===void 0?null:(0,a.jsx)(`text`,{x:D.inner(e),y:194,textAnchor:`middle`,className:A.chartAxisLabel,children:t.date.slice(5)},t.date)}),f!==null&&(0,a.jsx)(`line`,{x1:D.inner(f),x2:D.inner(f),y1:Z.top,y2:Z.top+D.plotH,className:A.chartCrosshair})]}),f!==null&&m===`structure`&&O!==void 0&&(0,a.jsxs)(`div`,{className:A.chartTooltip,"data-testid":`billing-token-tooltip`,style:{left:`${D.inner(f)/680*100}%`,top:`${D.y(O.miss+O.hit+O.output)/200*100}%`},children:[(0,a.jsxs)(`div`,{className:A.chartTooltipHead,children:[(0,a.jsx)(`span`,{className:A.chartTooltipDate,children:O.date}),(0,a.jsx)(`strong`,{children:(O.miss+O.hit+O.output).toLocaleString()})]}),(0,a.jsxs)(`div`,{className:u(A.chartTooltipRow,A.chartTooltipSplit),children:[(0,a.jsxs)(`span`,{className:A.chartTooltipLabel,children:[(0,a.jsx)(`span`,{className:A.chartTooltipSwatch,style:{background:nt}}),o(`tokenHit`)]}),(0,a.jsx)(`strong`,{children:O.hit.toLocaleString()})]}),(0,a.jsxs)(`div`,{className:u(A.chartTooltipRow,A.chartTooltipSplit),children:[(0,a.jsxs)(`span`,{className:A.chartTooltipLabel,children:[(0,a.jsx)(`span`,{className:A.chartTooltipSwatch,style:{background:tt}}),o(`tokenMiss`)]}),(0,a.jsx)(`strong`,{children:O.miss.toLocaleString()})]}),(0,a.jsxs)(`div`,{className:u(A.chartTooltipRow,A.chartTooltipSplit),children:[(0,a.jsxs)(`span`,{className:A.chartTooltipLabel,children:[(0,a.jsx)(`span`,{className:A.chartTooltipSwatch,style:{background:rt}}),o(`tokenOutput`)]}),(0,a.jsx)(`strong`,{children:O.output.toLocaleString()})]})]}),f!==null&&m===`model`&&k!==void 0&&(0,a.jsxs)(`div`,{className:A.chartTooltip,"data-testid":`billing-token-tooltip`,style:{left:`${D.inner(f)/680*100}%`,top:`${D.y(k.total)/200*100}%`},children:[(0,a.jsxs)(`div`,{className:A.chartTooltipHead,children:[(0,a.jsx)(`span`,{className:A.chartTooltipDate,children:k.date}),(0,a.jsx)(`strong`,{children:k.total.toLocaleString()})]}),S.map(e=>{let t=k.models[e.key];return t===void 0?null:(0,a.jsxs)(`div`,{className:A.chartTooltipModel,children:[(0,a.jsxs)(`div`,{className:u(A.chartTooltipRow,A.chartTooltipSplit),children:[(0,a.jsxs)(`span`,{className:A.chartTooltipLabel,children:[(0,a.jsx)(`span`,{className:A.chartTooltipSwatch,style:{background:e.color}}),e.name]}),(0,a.jsx)(`strong`,{children:t.total.toLocaleString()})]}),(0,a.jsxs)(`div`,{className:A.chartTooltipModelDetail,children:[o(`tokenHitShort`),` `,t.hit.toLocaleString(),` · `,o(`tokenMissShort`),` `,t.miss.toLocaleString(),` · `,o(`tokenOutput`),` `,t.output.toLocaleString()]})]},e.key)})]}),(0,a.jsx)(`div`,{className:A.chartLegend,children:m===`structure`?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)(`span`,{children:[(0,a.jsx)(`span`,{className:A.chartTooltipSwatch,style:{background:tt}}),o(`tokenMiss`)]}),(0,a.jsxs)(`span`,{children:[(0,a.jsx)(`span`,{className:A.chartTooltipSwatch,style:{background:nt}}),o(`tokenHit`)]}),(0,a.jsxs)(`span`,{children:[(0,a.jsx)(`span`,{className:A.chartTooltipSwatch,style:{background:rt}}),o(`tokenOutput`)]})]}):S.map(e=>(0,a.jsxs)(`button`,{type:`button`,className:u(A.chartLegendItem,C===e.key&&A.chartLegendItemActive),"aria-pressed":C===e.key,"data-testid":`billing-token-legend-${e.key}`,onClick:()=>{w(e.key)},children:[(0,a.jsx)(`span`,{className:A.chartTooltipSwatch,style:{background:e.color}}),e.name]},e.key))})]})]}),(0,a.jsxs)(`section`,{className:A.panel,"data-testid":`billing-token-models`,children:[(0,a.jsx)(`div`,{className:A.panelHead,children:(0,a.jsx)(`h3`,{className:A.panelTitle,children:o(`tokenByModel`)})}),T.length===0?(0,a.jsx)(`div`,{className:A.emptyRow,children:o(`noData`)}):(0,a.jsx)(`div`,{className:A.tableScroll,children:(0,a.jsxs)(`table`,{className:A.modelTable,"data-testid":`billing-token-model-table`,children:[(0,a.jsx)(`thead`,{children:(0,a.jsxs)(`tr`,{children:[(0,a.jsx)(`th`,{children:o(`model`)}),(0,a.jsx)(`th`,{className:A.numCol,children:o(`inputTokens`)}),(0,a.jsx)(`th`,{className:A.numCol,children:o(`outputTokens`)}),(0,a.jsx)(`th`,{className:A.numCol,children:o(`tokenReasoningShort`)}),(0,a.jsx)(`th`,{className:A.numCol,children:o(`cacheHitRate`)}),(0,a.jsx)(`th`,{className:A.numCol,children:o(`tokenTotal`)}),(0,a.jsx)(`th`,{className:A.numCol,children:o(`tokenShare`)}),(0,a.jsx)(`th`,{className:A.numCol,children:o(`calls`)})]})}),(0,a.jsx)(`tbody`,{children:T.map(e=>(0,a.jsxs)(`tr`,{"data-testid":`billing-token-model`,className:u(v&&A.modelRowFocusable,C===e.key&&A.modelRowActive),"aria-selected":v?C===e.key:void 0,onClick:v?()=>{w(e.key)}:void 0,children:[(0,a.jsx)(`td`,{children:(0,a.jsx)(`span`,{className:A.modelName,children:e.name})}),(0,a.jsx)(`td`,{className:A.numCol,children:q(e.input)}),(0,a.jsx)(`td`,{className:A.numCol,children:q(e.output)}),(0,a.jsx)(`td`,{className:A.numCol,children:e.reasoning>0?q(e.reasoning):(0,a.jsx)(`span`,{className:A.na,children:`—`})}),(0,a.jsxs)(`td`,{className:A.numCol,children:[e.cacheHitRate.toFixed(1),`%`]}),(0,a.jsx)(`td`,{className:A.numCol,children:q(e.total)}),(0,a.jsx)(`td`,{className:A.numCol,children:(0,a.jsxs)(`span`,{className:A.tokenModelShareRow,children:[(0,a.jsx)(`span`,{className:A.tokenModelBar,children:(0,a.jsxs)(`span`,{className:A.tokenModelParts,style:{width:`${(e.share*100).toFixed(2)}%`},children:[(0,a.jsx)(`span`,{className:A.tokenModelPartIn,style:{width:`${e.total>0?e.input/e.total*100:0}%`}}),(0,a.jsx)(`span`,{className:A.tokenModelPartOut,style:{width:`${e.total>0?e.output/e.total*100:0}%`}})]})}),(e.share*100).toFixed(1),`%`]})}),(0,a.jsx)(`td`,{className:A.numCol,children:e.calls.toLocaleString()})]},e.key))})]})})]}),ee.totalCalls>0&&(0,a.jsxs)(`section`,{className:A.panel,"data-testid":`billing-token-tools`,children:[(0,a.jsx)(`div`,{className:A.panelHead,children:(0,a.jsx)(`h3`,{className:A.panelTitle,children:o(`toolRank`)})}),(0,a.jsx)(`div`,{className:A.tableScroll,children:(0,a.jsxs)(`table`,{className:A.modelTable,"data-testid":`billing-tool-table`,children:[(0,a.jsx)(`thead`,{children:(0,a.jsxs)(`tr`,{children:[(0,a.jsx)(`th`,{children:o(`toolName`)}),(0,a.jsx)(`th`,{className:A.numCol,children:o(`calls`)}),(0,a.jsx)(`th`,{className:A.numCol,children:o(`tokenShare`)})]})}),(0,a.jsx)(`tbody`,{children:[...ee.top,...ee.rest].map(([e,t])=>(0,a.jsxs)(`tr`,{"data-testid":`billing-tool-row`,children:[(0,a.jsx)(`td`,{children:(0,a.jsx)(`span`,{className:A.modelName,children:e})}),(0,a.jsx)(`td`,{className:A.numCol,children:t.toLocaleString()}),(0,a.jsxs)(`td`,{className:A.numCol,children:[(t/ee.totalCalls*100).toFixed(1),`%`]})]},e))})]})})]})]})}function ot(e){return[`date,missInput,cacheHit,output,reasoning,total`,...e.map(e=>`${e.date},${e.miss},${e.hit},${e.output},${e.reasoning},${e.miss+e.hit+e.output}`)].join(`
|
|
1
|
+
window.__ModuleLoader__.load({id:`@kenz1117/dsh-ui-usage-billing`,factory:e=>{var t={exports:{}},n=t.exports;Object.defineProperty(n,Symbol.toStringTag,{value:`Module`});let r=e("react"),i=e("@deepseek-ai/dsh-client-ui-primitives"),a=e("react/jsx-runtime"),o=e("@deepseek-ai/dsh-client-store");function s(e){return e}function c(e){return s(e)}function l(e){var t,n,r=``;if(typeof e==`string`||typeof e==`number`)r+=e;else if(typeof e==`object`){if(Array.isArray(e)){var i=e.length;for(t=0;t<i;t++)e[t]&&(n=l(e[t]))&&(r&&(r+=` `),r+=n)}else for(n in e)e[n]&&(r&&(r+=` `),r+=n)}return r}function u(){for(var e,t,n=0,r=``,i=arguments.length;n<i;n++)(e=arguments[n])&&(t=l(e))&&(r&&(r+=` `),r+=t);return r}let d={mode:`combined`,targets:[]},f=`dsh.ui-usage-billing.float`;function p(){try{let e=localStorage.getItem(f);if(e===null)return{...d,targets:[...d.targets]};let t=JSON.parse(e);return{mode:t.mode===`subscription`?`subscription`:`combined`,targets:Array.isArray(t.targets)?t.targets.filter(e=>typeof e==`string`):[]}}catch{return{...d,targets:[...d.targets]}}}function m(e){try{localStorage.setItem(f,JSON.stringify(e))}catch{}}let h={metric:`money`},g=`dsh.ui-usage-billing.card`;function _(){try{let e=localStorage.getItem(g);return e===null?{...h}:{metric:JSON.parse(e).metric===`tokens`?`tokens`:`money`}}catch{return{...h}}}function v(e){try{localStorage.setItem(g,JSON.stringify(e))}catch{}}let y={hideUnidentified:!0},b=`dsh.ui-usage-billing.sites`;function x(){try{let e=localStorage.getItem(b);return e===null?{...y}:{hideUnidentified:JSON.parse(e).hideUnidentified!==!1}}catch{return{...y}}}function S(e){try{localStorage.setItem(b,JSON.stringify(e))}catch{}}let C={show:!0,position:`below`},w=`dsh.ui-usage-billing.livecost`,T=`dsh.ui-usage-billing.livecost-pref`;function E(){try{let e=localStorage.getItem(w);if(e===null)return{...C};let t=JSON.parse(e);return{show:t.show!==!1,position:t.position===`above`||t.position===`toolbar`?t.position:`below`}}catch{return{...C}}}function ee(e){try{localStorage.setItem(w,JSON.stringify(e))}catch{}}let D=`dsh.ui-usage-billing.prices`;function te(){try{let e=localStorage.getItem(D);if(e===null)return[];let t=JSON.parse(e);if(t===null)return[];let n=[],r=(e,t)=>{if(typeof t!=`object`||!t)return;let r=t,i=Number(r.input),a=Number(r.cacheHit),o=Number(r.output);if(![i,a,o].every(e=>Number.isFinite(e)&&e>=0))return;let s=r.offPeak,c;if(typeof s==`object`&&s){let e=s,t=Number(e.input),n=Number(e.cacheHit),r=Number(e.output);[t,n,r].every(e=>Number.isFinite(e)&&e>=0)&&(c={input:t,cacheHit:n,output:r})}n.push({key:e,...typeof r.origin==`string`&&r.origin!==``?{origin:r.origin}:{},input:i,cacheHit:a,output:o,...c===void 0?{}:{offPeak:c},...r.currency===`USD`?{currency:`USD`}:{}})};if(Array.isArray(t))for(let e of t){if(typeof e!=`object`||!e)continue;let t=e;typeof t.key==`string`&&t.key!==``&&r(t.key,e)}else if(typeof t==`object`)for(let[e,n]of Object.entries(t))r(e,n);return n}catch{return[]}}function ne(e){try{localStorage.setItem(D,JSON.stringify(e))}catch{}}let O={metric:`ttft`},k=`dsh.ui-usage-billing.perf`;function re(){try{let e=localStorage.getItem(k);if(e===null)return{...O};let t=JSON.parse(e);return{metric:t.metric===`tps`?`tps`:`ttft`,...Array.isArray(t.models)?{models:t.models.filter(e=>typeof e==`string`)}:{}}}catch{return{...O}}}function ie(e){try{localStorage.setItem(k,JSON.stringify(e))}catch{}}let ae=`@kenz1117/dsh-ui-usage-billing/UsageBilling.module.css`;if(typeof document<`u`&&document.querySelector(`style[data-plugin-css=`+JSON.stringify(ae)+`]`)===null){let e=document.createElement(`style`);e.dataset.plugin=`@kenz1117/dsh-ui-usage-billing`,e.dataset.pluginCss=ae,e.textContent=`.KFXqYa_railButton{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-2);width:36px;height:36px;color:var(--dsw-alias-label-secondary);cursor:pointer;border-radius:8px;flex:none;justify-content:center;align-items:center;padding:0;transition:border-color .16s,color .16s;display:flex}.KFXqYa_railButton:hover,.KFXqYa_railButton:focus-visible{border-color:var(--dsw-static-blue-500);color:var(--dsw-static-blue-500);outline:none}.KFXqYa_railButton svg{stroke-width:2px;width:18px;height:18px}.KFXqYa_trigger{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-2);width:100%;min-width:0;color:var(--dsw-alias-label-primary);cursor:pointer;text-align:left;border-radius:14px;align-items:center;gap:10px;padding:9px 12px;transition:border-color .16s,transform .16s,box-shadow .16s;display:flex;position:relative;overflow:hidden;box-shadow:0 1px 2px #0000000a}.KFXqYa_trigger:hover,.KFXqYa_trigger:focus-visible{border-color:var(--dsw-static-blue-500);box-shadow:0 6px 18px -8px color-mix(in srgb, var(--dsw-static-blue-500) 45%, transparent);outline:none;transform:translateY(-1px)}.KFXqYa_triggerIcon{border:1px solid var(--dsw-alias-border-l1);width:32px;height:32px;color:var(--dsw-alias-label-secondary);opacity:.8;border-radius:8px;flex:none;justify-content:center;align-items:center;display:inline-flex}.KFXqYa_triggerIcon svg{stroke-width:2px;width:16px;height:16px}.KFXqYa_triggerMain{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.KFXqYa_triggerPrimary{align-items:baseline;gap:5px;min-width:0;display:inline-flex}.KFXqYa_triggerLabel{color:var(--dsw-alias-label-tertiary);white-space:nowrap;text-overflow:ellipsis;min-width:0;font-size:11px;line-height:15px;overflow:hidden}.KFXqYa_triggerYen{color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;font-size:12px;font-weight:600;line-height:16px}.KFXqYa_triggerMetric{color:var(--dsw-alias-label-primary);letter-spacing:-.02em;font-variant-numeric:tabular-nums;white-space:nowrap;text-overflow:ellipsis;min-width:0;font-size:20px;font-weight:700;line-height:24px;overflow:hidden}.KFXqYa_triggerSub{color:var(--dsw-alias-label-tertiary);white-space:nowrap;text-overflow:ellipsis;font-size:10px;line-height:14px;overflow:hidden}.KFXqYa_triggerSpark{flex:none;align-items:flex-end;gap:2px;height:20px;display:flex}.KFXqYa_triggerSparkBar,.KFXqYa_triggerSparkHot{background:var(--dsw-static-blue-500);opacity:.6;border-radius:1px 1px 0 0;width:3px}.KFXqYa_triggerSparkHot{opacity:1}.KFXqYa_triggerWrap{flex:auto;width:100%;min-width:96px;max-width:100%;display:block;position:relative;container:KFXqYa_billing-trigger/inline-size}@container KFXqYa_billing-trigger (width<=200px){.KFXqYa_trigger{gap:6px;padding:8px 10px}.KFXqYa_triggerSpark{display:none}}@container KFXqYa_billing-trigger (width<=170px){.KFXqYa_triggerSub,.KFXqYa_triggerLabel{display:none}}@container KFXqYa_billing-trigger (width<=110px){.KFXqYa_triggerIcon,.KFXqYa_triggerSpark,.KFXqYa_triggerSub,.KFXqYa_triggerLabel{display:none}.KFXqYa_trigger{justify-content:center;padding:8px 6px}}.KFXqYa_triggerPop{border:1px solid color-mix(in srgb, var(--dsw-alias-border-l1) 80%, transparent);background:color-mix(in srgb, var(--dsw-alias-bg-layer-3) 72%, transparent);-webkit-backdrop-filter:blur(14px)saturate(1.3);box-shadow:0 12px 32px #00000029, inset 0 1px 0 color-mix(in srgb, var(--dsw-alias-label-primary) 8%, transparent);opacity:0;visibility:hidden;pointer-events:none;z-index:10;border-radius:14px;flex-direction:column;gap:5px;padding:10px 12px;transition:opacity .16s,transform .16s,visibility 0s linear .16s;display:flex;position:absolute;bottom:calc(100% + 8px);left:0;right:0;overflow:hidden;transform:translateY(4px)}.KFXqYa_triggerPop:before{content:"";background:linear-gradient(90deg, transparent 0%, var(--dsw-static-amber-500) 30%, var(--dsw-alias-label-primary) 50%, var(--dsw-static-amber-500) 70%, transparent 100%);opacity:.9;pointer-events:none;background-size:200% 100%;height:1.5px;animation:4s ease-in-out infinite KFXqYa_subscriptionGoldFlow;position:absolute;top:0;left:0;right:0}.KFXqYa_triggerWrap:hover .KFXqYa_triggerPop,.KFXqYa_triggerWrap:focus-within .KFXqYa_triggerPop{opacity:1;visibility:visible;transition:opacity .16s,transform .16s,visibility linear;transform:translateY(0)}.KFXqYa_triggerWrap:hover,.KFXqYa_triggerWrap:focus-within{z-index:30}.KFXqYa_popHead{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.KFXqYa_popTitle{color:var(--dsw-alias-label-primary);font-size:13px;font-weight:700;line-height:18px}.KFXqYa_metricGrid{grid-template-columns:repeat(3,1fr);gap:10px 8px;display:grid}.KFXqYa_metricCell{flex-direction:column;gap:2px;min-width:0;display:flex}.KFXqYa_metricLabel{color:var(--dsw-alias-label-tertiary);font-size:10px;line-height:14px}.KFXqYa_metricValue{color:var(--dsw-alias-label-primary);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:12px;font-weight:700;line-height:16px}.KFXqYa_metricValuePrimary{color:var(--dsw-static-amber-500)}.KFXqYa_metricValueSuccess{color:var(--dsw-static-green-500)}.KFXqYa_popModel{border-top:1px solid var(--dsw-alias-border-l1);flex-direction:column;gap:6px;padding-top:10px;display:flex}.KFXqYa_popModelLabel{color:var(--dsw-alias-label-tertiary);font-size:10px;line-height:14px}.KFXqYa_popModelRow{align-items:center;gap:8px;min-width:0;display:flex}.KFXqYa_popDot{border-radius:999px;flex:none;width:6px;height:6px}.KFXqYa_popDotDirect{background:var(--dsw-static-green-500)}.KFXqYa_popDotSub{background:var(--dsw-static-amber-500)}.KFXqYa_popDotNeutral{background:var(--dsw-alias-label-tertiary)}.KFXqYa_popTagPrimary,.KFXqYa_popTagSub{white-space:nowrap;border-radius:5px;flex:none;align-items:center;height:18px;padding:0 6px;font-size:10px;font-weight:600;line-height:14px;display:inline-flex}.KFXqYa_popTagPrimary{background:color-mix(in srgb, var(--dsw-static-blue-500) 14%, transparent);color:var(--dsw-static-blue-500)}.KFXqYa_popTagSub{background:color-mix(in srgb, var(--dsw-static-amber-500) 18%, transparent);color:var(--dsw-static-amber-500)}.KFXqYa_popModelName{color:var(--dsw-alias-label-secondary);text-overflow:ellipsis;white-space:nowrap;font-size:11px;font-weight:500;line-height:16px;overflow:hidden}.KFXqYa_popModelStatus{color:var(--dsw-alias-label-primary);font-variant-numeric:tabular-nums;white-space:nowrap;margin-left:auto;font-size:11px;font-weight:600;line-height:16px}.KFXqYa_popModelStatusLow{color:var(--dsw-static-red-500)}.KFXqYa_dashboardModal{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-1);border-radius:14px;width:min(760px,100vw - 48px);max-height:min(760px,88vh);animation:.18s ease-out KFXqYa_dashboardIn;box-shadow:0 12px 32px -12px #0000002e,0 2px 8px #0000000f}@keyframes KFXqYa_dashboardIn{0%{opacity:0;transform:translateY(8px)scale(.98)}to{opacity:1;transform:none}}div[role=presentation]:has(>.dsh-billing-modal)>div[aria-hidden=true]:first-child{backdrop-filter:blur(8px)saturate(1.25)}.KFXqYa_dashboard{flex-direction:column;width:100%;max-height:min(760px,88vh);display:flex}.KFXqYa_dashboardHead{border-bottom:1px solid var(--dsw-alias-border-l1);justify-content:space-between;align-items:center;gap:12px;padding:12px 18px;display:flex}.KFXqYa_dashboardTitle{color:var(--dsw-alias-label-primary);margin:0;font-size:14px;font-weight:600;line-height:20px}.KFXqYa_dashboardSubtitle{color:var(--dsw-alias-label-caption);margin:2px 0 0;font-size:11px;line-height:16px}.KFXqYa_closeButton{border:1px solid var(--dsw-alias-border-l1);width:32px;height:32px;color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border-radius:8px;flex:none;justify-content:center;align-items:center;transition:background-color .14s,color .14s;display:inline-flex}.KFXqYa_closeButton:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.KFXqYa_closeButton svg{stroke-width:2px;width:16px;height:16px}.KFXqYa_dashboardBody{flex-direction:column;gap:14px;padding:16px 24px 24px;display:flex;overflow-y:auto}.KFXqYa_modalFooter{border-top:1px solid var(--dsw-alias-border-l1);color:var(--dsw-alias-label-tertiary);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;padding:8px 18px;font-size:11px;line-height:16px;display:flex}.KFXqYa_tabNav{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-2);border-radius:10px;align-items:center;gap:4px;margin:14px 24px 0;padding:4px;display:flex}.KFXqYa_tabButton{color:var(--dsw-alias-label-tertiary);cursor:pointer;background:0 0;border:none;border-radius:7px;padding:6px 14px;font-size:13px;font-weight:500;line-height:20px;transition:background-color .16s,color .16s}.KFXqYa_tabButton:hover,.KFXqYa_tabButton:focus-visible{color:var(--dsw-alias-label-primary);background:color-mix(in srgb, var(--dsw-alias-bg-layer-3) 62%, transparent);outline:none}.KFXqYa_tabButtonActive,.KFXqYa_tabButtonActive:hover,.KFXqYa_tabButtonActive:focus-visible{background:var(--dsw-alias-bg-layer-1);color:var(--dsw-alias-label-primary);font-weight:600;box-shadow:0 1px 3px #0000001f}.KFXqYa_tabPanel{flex-direction:column;gap:14px;animation:.14s ease-out KFXqYa_tabPanelIn;display:flex}@keyframes KFXqYa_tabPanelIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}.KFXqYa_reconcileNotice{border:1px solid color-mix(in srgb, var(--dsw-alias-border-l1) 78%, transparent);background:color-mix(in srgb, var(--dsw-alias-bg-layer-2) 62%, transparent);color:var(--dsw-alias-label-secondary);border-radius:10px;align-items:flex-start;gap:10px;padding:10px 12px;font-size:12px;line-height:1.55;display:flex}.KFXqYa_reconcileIcon{color:var(--dsw-alias-label-tertiary);flex:none;margin-top:1px;display:inline-flex}.KFXqYa_reconcileText{flex:1}.KFXqYa_reconcileDismiss{color:var(--dsw-alias-label-tertiary);cursor:pointer;white-space:nowrap;background:0 0;border:none;border-radius:6px;flex:none;padding:2px 8px;font-size:12px;line-height:1.4;transition:color .15s,background-color .15s}.KFXqYa_reconcileDismiss:hover{color:var(--dsw-alias-label-primary);background:color-mix(in srgb, var(--dsw-alias-label-primary) 8%, transparent)}.KFXqYa_hero{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-2);border-radius:10px;flex-direction:column;gap:12px;padding:14px 16px;display:flex;position:relative;overflow:hidden}.KFXqYa_heroTop{justify-content:space-between;align-items:center;gap:24px;display:flex}.KFXqYa_heroMain{flex-direction:column;gap:2px;min-width:0;display:flex}.KFXqYa_heroLabel{color:var(--dsw-alias-label-tertiary);text-transform:uppercase;letter-spacing:.06em;white-space:nowrap;font-size:10px;font-weight:500;line-height:14px}.KFXqYa_heroReadout{align-items:baseline;gap:4px;display:flex}.KFXqYa_heroCurrency{letter-spacing:-.01em;color:var(--dsw-alias-label-secondary);font-variant-numeric:tabular-nums;font-size:15px;font-weight:600;line-height:20px}.KFXqYa_heroValue{letter-spacing:-.02em;font-variant-numeric:tabular-nums;white-space:nowrap;color:var(--dsw-alias-label-primary);font-size:28px;font-weight:650;line-height:34px}.KFXqYa_heroMeta{color:var(--dsw-alias-label-caption);white-space:nowrap;margin-top:2px;font-size:11px;line-height:15px}.KFXqYa_heroGauge{flex:none;width:72px;height:72px;position:relative}.KFXqYa_heroGaugeSvg{width:100%;height:100%;display:block;transform:rotate(-90deg)}.KFXqYa_heroGaugeTrack{fill:none;stroke:var(--dsw-alias-bg-module-platform);stroke-width:7px}.KFXqYa_heroGaugeArc{fill:none;stroke:var(--dsw-static-blue-500);stroke-width:7px;stroke-linecap:round;transition:stroke-dasharray .26s}.KFXqYa_heroGaugeArcOver{stroke:var(--dsw-static-red-500)}.KFXqYa_heroGaugeCenter{flex-direction:column;justify-content:center;align-items:center;gap:1px;display:flex;position:absolute;inset:0}.KFXqYa_heroGaugePct{letter-spacing:-.02em;font-variant-numeric:tabular-nums;color:var(--dsw-alias-label-primary);font-size:14px;font-weight:700;line-height:18px}.KFXqYa_heroGaugePctOver{color:var(--dsw-static-red-500)}.KFXqYa_heroGaugeLabel{color:var(--dsw-alias-label-tertiary);font-size:9px;line-height:12px}.KFXqYa_heroBudget{border-top:1px solid var(--dsw-alias-border-l1);align-items:center;gap:14px;padding-top:14px;display:flex}.KFXqYa_heroBudgetLabel{color:var(--dsw-alias-label-secondary);white-space:nowrap;flex:none;font-size:11px;line-height:16px}.KFXqYa_heroBudgetTrack{background:var(--dsw-alias-border-l1);border-radius:999px;flex:1;min-width:0;height:6px;overflow:hidden}.KFXqYa_heroBudgetFill{background:var(--dsw-static-blue-500);border-radius:999px;height:100%;transition:width .22s}.KFXqYa_heroBudgetFillOver{background:var(--dsw-static-red-500)}.KFXqYa_heroBudgetValue{color:var(--dsw-alias-label-secondary);font-variant-numeric:tabular-nums;white-space:nowrap;flex:none;font-size:11px;line-height:16px}.KFXqYa_heroSide{border-top:1px solid var(--dsw-alias-border-l1);align-items:stretch;padding-top:12px;display:flex}.KFXqYa_heroSideItem{border-left:1px solid var(--dsw-alias-border-l1);flex-direction:column;flex:1;gap:2px;min-width:0;padding-left:14px;display:flex}.KFXqYa_heroSideItem:first-child{border-left:none;padding-left:0}.KFXqYa_heroSideLabel{color:var(--dsw-alias-label-tertiary);text-transform:uppercase;letter-spacing:.06em;white-space:nowrap;font-size:10px;font-weight:500;line-height:13px}.KFXqYa_heroSideValue{color:var(--dsw-alias-label-primary);font-variant-numeric:tabular-nums;letter-spacing:-.01em;white-space:nowrap;align-items:baseline;gap:6px;font-size:15px;font-weight:600;line-height:20px;display:inline-flex}.KFXqYa_heroSideSpacer{flex:1;display:block}.KFXqYa_delta{font-variant-numeric:tabular-nums;border-radius:999px;align-items:center;gap:2px;margin-left:6px;padding:1px 7px;font-size:10.5px;font-weight:600;line-height:16px;display:inline-flex}.KFXqYa_deltaUp{color:var(--dsw-static-green-500);background:color-mix(in srgb, var(--dsw-static-green-500) 12%, transparent)}.KFXqYa_deltaDown{color:var(--dsw-static-red-500);background:color-mix(in srgb, var(--dsw-static-red-500) 12%, transparent)}.KFXqYa_unpricedHint{border:1px solid color-mix(in srgb, var(--dsw-static-amber-500) 30%, transparent);background:color-mix(in srgb, var(--dsw-static-amber-500) 8%, transparent);color:var(--dsw-static-amber-500);border-radius:8px;align-items:center;padding:8px 12px;font-size:11.5px;font-weight:500;line-height:17px;display:flex}.KFXqYa_kpiGrid{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;display:grid}.KFXqYa_kpiTile{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-2);border-radius:10px;flex-direction:column;gap:2px;padding:10px 12px;transition:border-color .16s;display:flex;position:relative;overflow:hidden}.KFXqYa_kpiTile:hover{border-color:var(--dsw-alias-border-l2)}.KFXqYa_kpiLabel{color:var(--dsw-alias-label-tertiary);text-transform:uppercase;letter-spacing:.06em;font-size:10px;font-weight:500;line-height:13px}.KFXqYa_kpiValue{color:var(--dsw-alias-label-primary);font-variant-numeric:tabular-nums;letter-spacing:-.01em;font-size:16px;font-weight:650;line-height:22px}.KFXqYa_kpiGreen{color:var(--dsw-static-green-500)}.KFXqYa_kpiDetail{color:var(--dsw-alias-label-caption);white-space:nowrap;text-overflow:ellipsis;font-size:10.5px;line-height:14px;overflow:hidden}.KFXqYa_panel{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-2);border-radius:10px;flex-direction:column;gap:8px;padding:12px 14px;transition:border-color .16s;display:flex}.KFXqYa_panelHead{justify-content:space-between;align-items:baseline;gap:10px;display:flex}.KFXqYa_panelHeadControls{align-items:center;gap:8px;display:inline-flex}.KFXqYa_panelTitle{letter-spacing:-.005em;color:var(--dsw-alias-label-primary);margin:0;font-size:14px;font-weight:600;line-height:20px}.KFXqYa_panelHint{color:var(--dsw-alias-label-caption);white-space:nowrap;font-size:11px;line-height:16px}.KFXqYa_rangeToggle{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-1);border-radius:8px;gap:2px;padding:2px;display:inline-flex}.KFXqYa_rangeButton{color:var(--dsw-alias-label-tertiary);cursor:pointer;background:0 0;border:none;border-radius:6px;padding:2px 8px;font-size:11px;line-height:16px;transition:background-color .14s,color .14s}.KFXqYa_rangeButtonActive{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary);font-weight:600}.KFXqYa_exportBar{justify-content:flex-end;align-items:center;gap:8px;display:flex}.KFXqYa_exportLabel{color:var(--dsw-alias-label-caption);font-size:11px;line-height:16px}.KFXqYa_exportButton{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-1);color:var(--dsw-alias-label-secondary);cursor:pointer;border-radius:999px;padding:4px 12px;font-size:11.5px;line-height:16px;transition:border-color .16s,color .16s,background-color .16s}.KFXqYa_exportButton:hover,.KFXqYa_exportButton:focus-visible{border-color:var(--dsw-alias-border-l2);color:var(--dsw-alias-label-primary);outline:none}.KFXqYa_shareTrack{background:var(--dsw-alias-bg-module-platform);border-radius:999px;height:10px;display:flex;overflow:hidden}.KFXqYa_shareSeg{height:100%;transition:width .2s}.KFXqYa_shareSegPeak{background:var(--dsw-static-blue-500)}.KFXqYa_shareSegOff{background:color-mix(in srgb, var(--dsw-static-blue-500) 25%, var(--dsw-alias-bg-module-platform))}.KFXqYa_shareSegUser{background:var(--dsw-static-blue-500)}.KFXqYa_shareSegAssistant{background:var(--dsw-static-green-500)}.KFXqYa_shareSegTool{background:var(--dsw-static-amber-500)}.KFXqYa_shareLegend{align-items:center;gap:16px;display:flex}.KFXqYa_shareItem{color:var(--dsw-alias-label-secondary);align-items:baseline;gap:6px;font-size:12px;line-height:17px;display:inline-flex}.KFXqYa_bucketCost{align-items:baseline;gap:3px;display:inline-flex}.KFXqYa_bucketOfficial{color:var(--dsw-static-blue-500);font-weight:600}.KFXqYa_bucketSep{color:var(--dsw-alias-label-dimmed)}.KFXqYa_bucketThird{color:var(--dsw-alias-label-secondary)}.KFXqYa_shareDot{border-radius:50%;flex:none;align-self:center;width:8px;height:8px}.KFXqYa_shareValue{color:var(--dsw-alias-label-primary);font-variant-numeric:tabular-nums;font-weight:600}.KFXqYa_budgetInput{width:64px;color:var(--dsw-alias-label-primary);font-variant-numeric:tabular-nums;text-align:right;background:0 0;border:none;padding:0;font-size:12px;line-height:16px}.KFXqYa_budgetInput:focus-visible{outline:none}.KFXqYa_switch{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-module-platform);cursor:pointer;border-radius:999px;flex:none;width:30px;height:17px;padding:0;transition:background-color .16s,border-color .16s;position:relative}.KFXqYa_switchOn{border-color:var(--dsw-alias-border-l1);background:var(--dsw-alias-label-primary)}.KFXqYa_switchKnob{background:var(--dsw-static-neutral-bluish-00);border-radius:50%;width:11px;height:11px;transition:transform .16s;position:absolute;top:2px;left:2px}.KFXqYa_switchOn .KFXqYa_switchKnob{transform:translate(13px)}.KFXqYa_budgetFillWarn{background:var(--dsw-static-amber-500)}.KFXqYa_budgetFillOver{background:var(--dsw-static-red-500);animation:1.6s ease-in-out infinite KFXqYa_budgetOverPulse}@keyframes KFXqYa_budgetOverPulse{50%{opacity:.55}}.KFXqYa_chartWrap{width:100%;position:relative}.KFXqYa_chartSvg{width:100%;height:auto;display:block}.KFXqYa_chartEmpty{height:140px;color:var(--dsw-alias-label-caption);justify-content:center;align-items:center;font-size:13px;display:flex}.KFXqYa_emptyRow{text-align:center;color:var(--dsw-alias-label-caption);padding:28px 0;font-size:13px}.KFXqYa_chartGrid{stroke:var(--dsw-alias-border-l1);stroke-width:1px}.KFXqYa_chartAxisLabel{fill:var(--dsw-alias-label-tertiary);font-size:10px}.KFXqYa_chartBar{fill:var(--dsw-static-blue-500);opacity:.7}.KFXqYa_chartBar:hover{opacity:1}.KFXqYa_chartStack{stroke:var(--dsw-alias-bg-layer-1);stroke-width:.75px}.KFXqYa_chartStack:hover{opacity:.9}.KFXqYa_chartLine{stroke:var(--dsw-static-blue-500);stroke-width:2px;stroke-linecap:round;stroke-linejoin:round}.KFXqYa_chartCrosshair{stroke:var(--dsw-alias-label-dimmed);stroke-width:1px;stroke-dasharray:3 3}.KFXqYa_chartTooltip{pointer-events:none;z-index:2;border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-2);box-shadow:none;white-space:nowrap;border-radius:8px;padding:8px 10px;position:absolute;transform:translate(-50%,calc(-100% - 10px))}.KFXqYa_chartTooltipDate{color:var(--dsw-alias-label-primary);margin-bottom:3px;font-size:11px;font-weight:600}.KFXqYa_chartTooltipRow{color:var(--dsw-alias-label-secondary);align-items:center;gap:5px;font-size:11px;line-height:17px;display:flex}.KFXqYa_chartTooltipRow strong{color:var(--dsw-alias-label-primary);font-variant-numeric:tabular-nums;font-weight:600}.KFXqYa_chartTooltipHead{justify-content:space-between;align-items:baseline;gap:14px;margin-bottom:3px;display:flex}.KFXqYa_chartTooltipHead .KFXqYa_chartTooltipDate{margin-bottom:0}.KFXqYa_chartTooltipHead strong{color:var(--dsw-alias-label-primary);font-variant-numeric:tabular-nums;font-size:11px;font-weight:600}.KFXqYa_chartTooltipSplit{justify-content:space-between;gap:14px}.KFXqYa_chartTooltipLabel{align-items:center;gap:5px;display:flex}.KFXqYa_chartTooltipModelDetail{color:var(--dsw-alias-label-caption);font-variant-numeric:tabular-nums;margin:-2px 0 4px 13px;font-size:10.5px;line-height:14px}.KFXqYa_chartBarPlaceholder{fill:color-mix(in srgb, var(--dsw-alias-label-secondary) 30%, transparent)}.KFXqYa_chartLegendLine{background:var(--dsw-static-blue-500);border-radius:2px;width:10px;height:3px;display:inline-block}.KFXqYa_chartLegendBar{background:var(--dsw-static-blue-500);opacity:.5;border-radius:2px;width:7px;height:7px;display:inline-block}.KFXqYa_chartTooltipSwatch{border-radius:3px;flex:none;width:8px;height:8px;display:inline-block}.KFXqYa_chartLegend{color:var(--dsw-alias-label-tertiary);justify-content:flex-end;gap:14px;margin-top:2px;font-size:11px;display:flex}.KFXqYa_chartLegend span{align-items:center;gap:5px;display:inline-flex}.KFXqYa_chartLegendItem{font:inherit;color:inherit;cursor:pointer;background:0 0;border:none;align-items:center;gap:5px;padding:0;transition:color .12s;display:inline-flex}.KFXqYa_chartLegendItem:hover{color:var(--dsw-alias-label-secondary)}.KFXqYa_chartLegendItemActive{color:var(--dsw-alias-label-primary);font-weight:600}.KFXqYa_perfBar{align-items:center;margin:10px 0 2px;display:flex}.KFXqYa_perfChips{flex-wrap:wrap;gap:6px;margin:6px 0 2px;display:flex}.KFXqYa_perfChip{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-1);color:var(--dsw-alias-label-secondary);cursor:pointer;border-radius:999px;align-items:center;gap:5px;padding:2px 9px;font-size:11px;line-height:16px;transition:border-color .12s,color .12s,opacity .12s;display:inline-flex}.KFXqYa_perfChip:hover{color:var(--dsw-alias-label-primary)}.KFXqYa_perfChipOff{opacity:.45}.KFXqYa_perfChipDot{border-radius:3px;flex:none;width:8px;height:8px;display:inline-block}.KFXqYa_chartHoverDot{stroke:var(--dsw-alias-bg-layer-2);stroke-width:1.5px}.KFXqYa_tableScroll{border:1px solid var(--dsw-alias-border-l1);--dsh-scrollbar-thumb:var(--dsw-alias-scrollbar-bg-l2);--dsh-scrollbar-thumb-hover:var(--dsw-alias-scrollbar-hover-l2);border-radius:12px;overflow:auto}.KFXqYa_ubAlert{border:1px solid color-mix(in srgb, var(--dsw-static-blue-500) 30%, transparent);background:color-mix(in srgb, var(--dsw-static-blue-500) 8%, transparent);border-radius:10px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding:10px 14px;font-size:12px;line-height:17px;display:flex}.KFXqYa_ubAlertLeft{align-items:center;gap:8px;display:inline-flex}.KFXqYa_ubRate{color:var(--dsw-alias-label-primary);font-variant-numeric:tabular-nums;font-weight:600}.KFXqYa_ubAlertNote{color:var(--dsw-alias-label-secondary);margin:0}.KFXqYa_ubTag,.KFXqYa_ubTagSuccess,.KFXqYa_ubTagNeutral,.KFXqYa_ubTagAlert,.KFXqYa_ubTagPromo{white-space:nowrap;border-radius:999px;align-items:center;height:18px;padding:0 7px;font-size:10px;font-weight:600;line-height:14px;display:inline-flex}.KFXqYa_ubTagSuccess{background:color-mix(in srgb, var(--dsw-static-green-500) 14%, transparent);color:var(--dsw-static-green-500)}.KFXqYa_ubTagNeutral{background:var(--dsw-alias-bg-layer-3);color:var(--dsw-alias-label-secondary)}.KFXqYa_ubTagAlert{background:color-mix(in srgb, var(--dsw-static-amber-500) 16%, transparent);color:var(--dsw-static-amber-500)}.KFXqYa_ubTagPromo{background:color-mix(in srgb, var(--dsw-static-red-500) 14%, transparent);color:var(--dsw-static-red-500);cursor:help}.KFXqYa_ubExtraRow td{opacity:.72;padding-top:2px;padding-bottom:2px;font-size:12px}.KFXqYa_ubExtraName{color:var(--dsw-alias-label-secondary);margin-left:26px}.KFXqYa_ubExtraNote{color:var(--dsw-alias-label-tertiary);margin-left:8px;font-size:10px}.KFXqYa_ubCard{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-2);border-radius:12px;flex-direction:column;gap:12px;padding:16px 18px;display:flex}.KFXqYa_ubCardHead{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.KFXqYa_ubCardTitle{color:var(--dsw-alias-label-primary);margin:0;font-size:13px;font-weight:600;line-height:18px}.KFXqYa_ubCardSub{color:var(--dsw-alias-label-tertiary);font-size:11px;line-height:16px}.KFXqYa_ubTablewrap{border:1px solid var(--dsw-alias-border-l1);border-radius:10px;overflow:auto}.KFXqYa_ubTable{border-collapse:collapse;white-space:nowrap;width:100%;font-size:12.5px}.KFXqYa_ubTable th,.KFXqYa_ubTable td{border-bottom:1px solid var(--dsw-alias-border-l1);text-align:left;padding:9px 12px}.KFXqYa_ubTable tbody tr:last-child td{border-bottom:0}.KFXqYa_ubTable thead th{color:var(--dsw-alias-label-tertiary);text-transform:uppercase;letter-spacing:.05em;font-size:11px;font-weight:600}.KFXqYa_ubModel{align-items:center;gap:8px;display:inline-flex}.KFXqYa_vendorLogo{object-fit:contain;border-radius:4px;flex:none;width:18px;height:18px}.KFXqYa_vendorLetter{color:#fff;border-radius:4px;flex:none;justify-content:center;align-items:center;width:18px;height:18px;font-size:10px;font-weight:600;line-height:1;display:inline-flex}.KFXqYa_ubModelName{color:var(--dsw-alias-label-primary);align-items:center;gap:6px;font-weight:500;display:inline-flex}.KFXqYa_ubPricepair{flex-wrap:wrap;gap:6px;display:inline-flex}.KFXqYa_ubChipPeak,.KFXqYa_ubChipOff{font-variant-numeric:tabular-nums;border-radius:999px;align-items:center;gap:5px;height:20px;padding:0 8px;font-size:11px;line-height:16px;display:inline-flex}.KFXqYa_ubChipLabel{font-size:10px;font-weight:600}.KFXqYa_ubChipPeak{background:color-mix(in srgb, var(--dsw-static-blue-500) 14%, transparent);color:var(--dsw-static-blue-500)}.KFXqYa_ubChipOff{background:color-mix(in srgb, var(--dsw-static-green-500) 14%, transparent);color:var(--dsw-static-green-500)}.KFXqYa_ubNotes{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.KFXqYa_ubNotesItem{align-items:baseline;gap:10px;display:flex}.KFXqYa_ubNotesTerm{color:var(--dsw-alias-label-primary);flex:0 0 72px;font-size:12px;font-weight:500}.KFXqYa_ubNotesDesc{min-width:0;color:var(--dsw-alias-label-secondary);flex:1;font-size:12px;line-height:17px}.KFXqYa_ubCardControlGroup{flex-wrap:wrap;align-items:center;gap:8px;display:inline-flex}.KFXqYa_ubTagError{white-space:nowrap;background:color-mix(in srgb, var(--dsw-static-red-500) 14%, transparent);height:18px;color:var(--dsw-static-red-500);border-radius:999px;align-items:center;padding:0 7px;font-size:10px;font-weight:600;line-height:14px;display:inline-flex}.KFXqYa_ubStatGrid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.KFXqYa_ubStatCard{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-2);border-radius:12px;flex-direction:column;gap:4px;padding:14px 16px;display:flex}.KFXqYa_ubStatLabel{color:var(--dsw-alias-label-tertiary);font-size:11px;line-height:16px}.KFXqYa_ubStatValue{color:var(--dsw-alias-label-primary);font-variant-numeric:tabular-nums;letter-spacing:-.01em;font-size:22px;font-weight:700;line-height:28px}.KFXqYa_ubStatDetail{color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;font-size:11px;line-height:16px}.KFXqYa_rowlist{flex-direction:column;gap:4px;margin:0;padding:0;list-style:none;display:flex}.KFXqYa_rowline{width:100%;min-width:0;color:var(--dsw-alias-label-primary);text-align:left;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:10px;justify-content:space-between;align-items:center;gap:12px;padding:9px 12px;transition:background-color .14s,border-color .14s;display:flex}.KFXqYa_rowline:hover{background:color-mix(in srgb, var(--dsw-alias-bg-layer-3) 60%, transparent);border-color:var(--dsw-alias-border-l1)}.KFXqYa_rowlineName{min-width:0;color:var(--dsw-alias-label-primary);white-space:nowrap;text-overflow:ellipsis;flex:1;font-size:12.5px;font-weight:500;overflow:hidden}.KFXqYa_rowlineRight{font-variant-numeric:tabular-nums;flex:none;align-items:baseline;gap:8px;display:inline-flex}.KFXqYa_rowlineMuted{color:var(--dsw-alias-label-tertiary);font-size:11px;line-height:16px}.KFXqYa_rowlineChev{color:var(--dsw-alias-label-tertiary);font-size:14px}.KFXqYa_rowlineDrillWrap{padding-left:12px}.KFXqYa_rowlineDrill{border-left:1px solid var(--dsw-alias-border-l1);justify-content:space-between;align-items:center;gap:12px;padding:6px 12px;font-size:12px;display:flex}.KFXqYa_modelTable{border-collapse:collapse;width:100%;font-size:12.5px}.KFXqYa_modelTable th,.KFXqYa_modelTable td th td{border-bottom:1px solid var(--dsw-alias-border-l1);text-align:left;white-space:nowrap;padding:7px 10px}.KFXqYa_modelTable tbody tr:last-child td tbody tr:last-child td{border-bottom:0}.KFXqYa_modelTable thead th thead th{color:var(--dsw-alias-label-tertiary);text-transform:uppercase;letter-spacing:.05em;background:0 0;font-size:11px;font-weight:600}.KFXqYa_modelTable tbody tr tbody tr{transition:background-color .12s}.KFXqYa_modelTable tbody tr:hover tbody tr:hover{background:0 0}.KFXqYa_modelTable tbody tr.KFXqYa_modelRowFocusable{cursor:pointer}.KFXqYa_modelTable tbody tr.KFXqYa_modelRowActive,.KFXqYa_modelTable tbody tr.KFXqYa_modelRowActive:hover{background:var(--dsw-alias-interactive-bg-hover)}.KFXqYa_numCol{text-align:right;font-variant-numeric:tabular-nums}.KFXqYa_na{color:var(--dsw-alias-label-dimmed)}.KFXqYa_modelCell{align-items:center;gap:8px;display:inline-flex}.KFXqYa_modelDot{border-radius:50%;flex:none;width:9px;height:9px}.KFXqYa_modelName{color:var(--dsw-alias-label-primary);font-weight:500;line-height:16px;display:block}.KFXqYa_modelProvider{color:var(--dsw-alias-label-caption);font-size:10.5px;line-height:14px;display:block}.KFXqYa_siteRow{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-1);border-radius:10px;justify-content:space-between;align-items:center;gap:12px;padding:8px 10px;display:flex}.KFXqYa_siteRowName{align-items:center;gap:8px;min-width:0;display:inline-flex}.KFXqYa_siteKindTag{white-space:nowrap;border-radius:999px;flex:none;align-items:center;padding:1px 7px;font-size:10.5px;font-weight:600;line-height:16px;display:inline-flex}.KFXqYa_siteKindSite{color:var(--dsw-static-blue-500);background:color-mix(in srgb, var(--dsw-static-blue-500) 14%, transparent)}.KFXqYa_siteKindDirect{color:var(--dsw-static-green-500);background:color-mix(in srgb, var(--dsw-static-green-500) 14%, transparent)}.KFXqYa_siteKindUnknown{color:var(--dsw-static-red-500);background:color-mix(in srgb, var(--dsw-static-red-500) 14%, transparent)}.KFXqYa_siteRowTitle{color:var(--dsw-alias-label-primary);text-overflow:ellipsis;white-space:nowrap;font-size:12.5px;font-weight:600;line-height:18px;overflow:hidden}.KFXqYa_siteRowMeta{flex:none;align-items:center;gap:10px;display:inline-flex}.KFXqYa_siteRowCost{color:var(--dsw-alias-label-primary);font-variant-numeric:tabular-nums;font-size:12.5px;font-weight:700;line-height:18px}.KFXqYa_siteRowCalls{color:var(--dsw-alias-label-secondary);font-variant-numeric:tabular-nums;font-size:11.5px;line-height:17px}.KFXqYa_siteRowCallsLow{color:var(--dsw-static-red-500)}.KFXqYa_flatTag{color:var(--dsw-alias-label-caption);font-size:10.5px;line-height:14px}.KFXqYa_healthDot{border-radius:50%;flex:none;width:8px;height:8px;display:inline-block}.KFXqYa_healthOk{background:var(--dsw-static-green-500)}.KFXqYa_healthBad{background:var(--dsw-static-red-500)}.KFXqYa_healthIdle{background:var(--dsw-static-neutral-bluish-400)}.KFXqYa_dashboardRight{align-items:center;gap:8px;min-width:0;display:flex}.KFXqYa_healthBadge{white-space:nowrap;border-radius:999px;align-items:center;gap:6px;padding:3px 9px;font-size:11px;line-height:16px;display:inline-flex}.KFXqYa_healthBadgeOk{color:var(--dsw-static-green-500);background:var(--dsw-alias-bg-layer-2)}.KFXqYa_healthBadgeBad{color:var(--dsw-static-red-500);background:var(--dsw-alias-bg-layer-2)}.KFXqYa_planTag{color:var(--dsw-static-green-500);background:var(--dsw-alias-bg-layer-2);border-radius:999px;align-items:center;padding:1px 8px;font-size:11px;font-weight:500;line-height:17px;display:inline-flex}.KFXqYa_uncataloguedTag{vertical-align:1px;color:var(--dsw-static-amber-500);background:var(--dsw-alias-bg-layer-2);border-radius:999px;margin-left:6px;padding:0 6px;font-size:10px;font-weight:600;line-height:16px;display:inline-block}.KFXqYa_estimatedTag{vertical-align:1px;color:var(--dsw-static-blue-500);background:var(--dsw-alias-bg-layer-2);border-radius:999px;margin-left:6px;padding:0 6px;font-size:10px;font-weight:600;line-height:16px;display:inline-block}.KFXqYa_feeBar{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-3);color:var(--dsw-alias-label-secondary);font-variant-numeric:tabular-nums;border-radius:999px;flex-wrap:wrap;align-items:center;gap:8px;padding:6px 12px;font-size:11px;line-height:16px;display:inline-flex}.KFXqYa_feeBarAbove{order:-1;align-self:center;margin-bottom:8px}.KFXqYa_feeInline{font-variant-numeric:tabular-nums;white-space:nowrap;cursor:default;border-radius:999px;align-self:center;align-items:center;gap:5px;height:22px;padding:0 4px;font-size:11px;line-height:16px;display:inline-flex}.KFXqYa_feeInline .KFXqYa_feeChipPrimary,.KFXqYa_feeInline .KFXqYa_feeChipOff{height:18px;padding:0 7px}.KFXqYa_feeInlineNum{color:var(--dsw-alias-label-primary);padding-right:6px;font-weight:600}.KFXqYa_feeInlineAlert{background:color-mix(in srgb, var(--dsw-static-amber-500) 12%, transparent)}.KFXqYa_feeInlineAlert .KFXqYa_feeInlineNum{color:var(--dsw-static-amber-500)}.KFXqYa_feeInlineError{background:color-mix(in srgb, var(--dsw-static-red-500) 12%, transparent)}.KFXqYa_feeInlineError .KFXqYa_feeInlineNum{color:var(--dsw-static-red-500)}.KFXqYa_feeBar .KFXqYa_feeSep{color:var(--dsw-alias-label-dimmed)}.KFXqYa_feeCount{color:var(--dsw-alias-label-primary);font-weight:600}.KFXqYa_feeSuffix{color:var(--dsw-alias-label-tertiary)}.KFXqYa_feeItem{color:var(--dsw-alias-label-secondary);white-space:nowrap}.KFXqYa_feeNum{color:var(--dsw-alias-label-primary);font-weight:600}.KFXqYa_feeSep{color:var(--dsw-alias-label-tertiary)}.KFXqYa_feeChipPrimary,.KFXqYa_feeChipOff,.KFXqYa_feeChipAlert,.KFXqYa_feeChipError{font-variant-numeric:tabular-nums;white-space:nowrap;border-radius:999px;align-items:center;height:20px;padding:0 8px;font-size:10px;font-weight:600;line-height:14px;display:inline-flex}.KFXqYa_feeChipPrimary{background:color-mix(in srgb, var(--dsw-static-blue-500) 14%, transparent);color:var(--dsw-static-blue-500)}.KFXqYa_feeChipOff{background:color-mix(in srgb, var(--dsw-static-green-500) 14%, transparent);color:var(--dsw-static-green-500)}.KFXqYa_feeChipAlert{background:color-mix(in srgb, var(--dsw-static-amber-500) 16%, transparent);color:var(--dsw-static-amber-500)}.KFXqYa_feeChipError{background:color-mix(in srgb, var(--dsw-static-red-500) 14%, transparent);color:var(--dsw-static-red-500)}.KFXqYa_balanceCell{align-items:center;gap:6px;display:inline-flex;position:relative}.KFXqYa_balanceDaysBadge{border:1px solid var(--dsw-alias-label-caption);background:color-mix(in srgb, var(--dsw-alias-label-caption) 10%, transparent);min-width:24px;height:24px;color:var(--dsw-alias-label-secondary);cursor:pointer;border-radius:12px;justify-content:center;align-items:center;padding:0 6px;font-size:10.5px;font-weight:600;line-height:1;display:inline-flex}.KFXqYa_balanceDaysBadge:hover{border-color:var(--dsw-alias-label-secondary);background:color-mix(in srgb, var(--dsw-alias-label-caption) 18%, transparent)}.KFXqYa_balanceDaysBadgeLow{color:var(--dsw-static-red-500);border-color:var(--dsw-static-red-500);background:color-mix(in srgb, var(--dsw-static-red-500) 10%, transparent)}.KFXqYa_balanceDetailPop{z-index:20;background:var(--dsw-alias-bg-layer-3);border:1px solid var(--dsw-alias-label-caption);white-space:nowrap;border-radius:8px;flex-direction:column;gap:6px;min-width:180px;padding:8px 10px;display:inline-flex;position:absolute;top:calc(100% + 6px);right:0;box-shadow:0 6px 20px #0000002e}.KFXqYa_balanceDetailHead{justify-content:space-between;align-items:center;gap:12px;display:flex}.KFXqYa_balanceDetailTitle{color:var(--dsw-alias-label-primary);font-size:12px;font-weight:600}.KFXqYa_balanceDetailClose{cursor:pointer;color:var(--dsw-alias-label-caption);background:0 0;border:none;font-size:14px;line-height:1}.KFXqYa_balanceDetailClose:hover{color:var(--dsw-alias-label-primary)}.KFXqYa_balanceDetailGrid{flex-direction:column;gap:4px;display:inline-flex}.KFXqYa_balanceDetailRow{color:var(--dsw-alias-label-secondary);font-variant-numeric:tabular-nums;justify-content:space-between;gap:16px;font-size:11px;line-height:15px;display:flex}.KFXqYa_balanceDetailLabel{color:var(--dsw-alias-label-caption)}.KFXqYa_balanceDetailValue{color:var(--dsw-alias-label-primary);font-weight:500}body[data-zine-mode] .KFXqYa_trigger,body[data-zine-mode] .KFXqYa_triggerPop,body[data-zine-mode] .KFXqYa_railButton{display:none}body[data-zine-mode] .KFXqYa_dashboardHead{background:#000;border-bottom:2px solid #e8ff00}body[data-zine-mode] .KFXqYa_headTitleRow{align-items:center;gap:8px;margin-top:4px;display:flex}body[data-zine-mode] .KFXqYa_dashboardTitle{color:#e8ff00;letter-spacing:.04em;text-transform:uppercase;text-shadow:0 0 8px #e8ff0066;font-weight:900}body[data-zine-mode] .KFXqYa_dashboardSubtitle{color:#c9d98a;letter-spacing:.08em;text-transform:uppercase;font-size:10px}body[data-zine-mode] .KFXqYa_closeButton{color:#0a0a05;background:#ff2d95;border:1.5px solid #ff2d95;border-radius:0;box-shadow:0 0 10px #ff2d9573}body[data-zine-mode] .KFXqYa_hero{background:#000;border:2.5px solid #e8ff00;border-radius:0;position:relative;box-shadow:0 0 0 1px #0009,0 0 24px #e8ff002e}body[data-zine-mode] .KFXqYa_heroLabel{color:#c9d98a;letter-spacing:.12em;text-transform:uppercase;font-size:10px;font-weight:900}body[data-zine-mode] .KFXqYa_heroValue{color:#e8ff00;letter-spacing:-.02em;text-shadow:0 0 12px #e8ff0073;-webkit-text-fill-color:#e8ff00;background:0 0;font-size:38px;font-weight:900}body[data-zine-mode] .KFXqYa_heroMeta{color:#c9d98a;letter-spacing:.06em;text-transform:uppercase;font-size:10.5px}body[data-zine-mode] .KFXqYa_heroSideLabel{color:#c9d98a;letter-spacing:.1em;text-transform:uppercase;font-size:10px;font-weight:900}body[data-zine-mode] .KFXqYa_heroSideValue{color:#e8ff00;text-shadow:0 0 6px #e8ff0059}body[data-zine-mode] .KFXqYa_delta{font-weight:900}body[data-zine-mode] .KFXqYa_deltaUp{color:#ff2d95}body[data-zine-mode] .KFXqYa_deltaDown{color:#c9d98a}body[data-zine-mode] .KFXqYa_tabNav{background:#000;border-bottom:2px solid #e8ff00}body[data-zine-mode] .KFXqYa_tabButton{color:#c9d98a;letter-spacing:.08em;text-transform:uppercase;border-radius:0;font-size:10.5px;font-weight:900}body[data-zine-mode] .KFXqYa_tabButton:hover,body[data-zine-mode] .KFXqYa_tabButton:focus-visible{color:#e8ff00;background:#e8ff001f}body[data-zine-mode] .KFXqYa_tabButtonActive,body[data-zine-mode] .KFXqYa_tabButtonActive:hover,body[data-zine-mode] .KFXqYa_tabButtonActive:focus-visible{color:#0a0a05;background:#e8ff00;box-shadow:0 0 10px #e8ff0073}body[data-zine-mode] .KFXqYa_panel{background:#000;border:2px solid #e8ff00;border-radius:0}body[data-zine-mode] .KFXqYa_trendPanel{position:relative}body[data-zine-mode] .KFXqYa_panelTitle{color:#e8ff00;letter-spacing:.06em;text-transform:uppercase;text-shadow:0 0 6px #e8ff0066;font-weight:900}body[data-zine-mode] .KFXqYa_panelHint{color:#c9d98a;letter-spacing:.08em;text-transform:uppercase;font-size:10px;font-weight:900}body[data-zine-mode] .KFXqYa_modelTableScroll{background:#000;border:1.5px solid #e8ff0080;border-radius:0}.KFXqYa_currencyToggle{background:var(--dsw-alias-bg-layer-3);border:none;border-radius:8px;align-items:center;gap:2px;margin-right:8px;padding:2px;display:inline-flex}.KFXqYa_currencyButton{color:var(--dsw-alias-label-secondary);white-space:nowrap;cursor:pointer;background:0 0;border:0;border-radius:6px;padding:4px 8px;font-size:11px;font-weight:700;line-height:1}.KFXqYa_currencyButtonActive{background:var(--dsw-alias-bg-layer-2);color:var(--dsw-alias-label-primary)}.KFXqYa_subscriptionGrid{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:10px;margin-top:10px;display:grid}.KFXqYa_subscriptionCard{border:1px solid color-mix(in srgb, var(--dsw-alias-border-l1) 75%, transparent);background:color-mix(in srgb, var(--dsw-alias-bg-layer-2) 62%, transparent);-webkit-backdrop-filter:blur(12px)saturate(1.3);border-radius:12px;padding:12px 14px;transition:border-color .2s,box-shadow .2s;position:relative;overflow:hidden;box-shadow:0 8px 24px #0000001a}.KFXqYa_subscriptionCard:before{content:"";background:linear-gradient(90deg, transparent 0%, var(--dsw-static-amber-500) 30%, var(--dsw-alias-label-primary) 50%, var(--dsw-static-amber-500) 70%, transparent 100%);opacity:.9;pointer-events:none;background-size:200% 100%;height:1.5px;animation:3.6s ease-in-out infinite KFXqYa_subscriptionGoldFlow;position:absolute;top:0;left:0;right:0}@keyframes KFXqYa_subscriptionGoldFlow{0%{background-position:200% 0}to{background-position:-200% 0}}.KFXqYa_subscriptionCard:hover{border-color:color-mix(in srgb, var(--dsw-static-amber-500) 55%, var(--dsw-alias-border-l1));box-shadow:0 10px 30px #00000029}.KFXqYa_subscriptionHead{flex-wrap:wrap;align-items:baseline;gap:6px;margin-bottom:8px;display:flex}.KFXqYa_subscriptionName{font-size:13px;font-weight:700}.KFXqYa_subscriptionPlan{color:var(--dsw-alias-label-secondary);font-size:11px}.KFXqYa_subscriptionPlan[data-kind=code],.KFXqYa_subscriptionPlan[data-kind=token]{color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-bg-layer-3);border-radius:999px;padding:1px 8px;font-weight:500}.KFXqYa_subscriptionTier{color:var(--dsw-alias-label-secondary);margin-left:6px}.KFXqYa_subscriptionAuto{color:var(--dsw-static-blue-500);background:color-mix(in srgb, var(--dsw-static-blue-500) 14%, var(--dsw-alias-bg-layer-2));border-radius:999px;margin-left:6px;padding:1px 6px;font-size:10px}.KFXqYa_subscriptionStatus{color:var(--dsw-alias-label-secondary);margin-bottom:6px;font-size:11px}.KFXqYa_subscriptionWindow{align-items:center;gap:10px;margin-top:8px;font-size:11px;display:flex}.KFXqYa_subscriptionWindowLabel{color:var(--dsw-alias-label-secondary);flex:0 0 44px}.KFXqYa_subscriptionTrack{background:var(--dsw-alias-bg-layer-3);border-radius:3px;flex:1;height:6px;overflow:hidden}.KFXqYa_subscriptionFill{background:var(--dsw-static-blue-500);border-radius:3px;height:100%;transition:width .2s;display:block}.KFXqYa_subscriptionFillWarn{background:var(--dsw-static-amber-500)}.KFXqYa_subscriptionFillOver{background:var(--dsw-static-red-500)}.KFXqYa_subscriptionMeta{flex-direction:column;flex:none;align-items:flex-end;gap:2px;display:flex}.KFXqYa_subscriptionPct{text-align:right;font-variant-numeric:tabular-nums;flex:none;min-width:52px}.KFXqYa_subscriptionExhausted{color:var(--dsw-static-red-500);min-width:52px;font-weight:600}.KFXqYa_subscriptionReset{color:var(--dsw-alias-label-caption);white-space:nowrap;flex:none;font-size:10px}.KFXqYa_providerGroupList{flex-direction:column;gap:10px;display:flex}.KFXqYa_providerGroup{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-1);border-radius:12px;padding:12px 14px}.KFXqYa_providerGroupHead{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.KFXqYa_providerGroupTitle{align-items:center;gap:7px;min-width:0;display:inline-flex}.KFXqYa_providerGroupName{color:var(--dsw-alias-label-primary);font-size:13px;font-weight:600;line-height:18px}.KFXqYa_providerGroupMeta{flex:none;align-items:center;gap:10px;display:inline-flex}.KFXqYa_providerGroupBadge{color:var(--dsw-static-green-500);background:var(--dsw-alias-bg-layer-2);border-radius:999px;align-items:center;padding:1px 8px;font-size:11px;font-weight:500;line-height:17px;display:inline-flex}.KFXqYa_providerGroupBalance,.KFXqYa_providerGroupCost{color:var(--dsw-alias-label-secondary);font-variant-numeric:tabular-nums;white-space:nowrap;align-items:baseline;gap:6px;font-size:12px;line-height:17px;display:inline-flex}.KFXqYa_providerGroupCostLabel{font-size:11px}.KFXqYa_providerGroupCostValue{color:var(--dsw-alias-label-primary);font-weight:600}.KFXqYa_providerGroupBalanceLabel{color:var(--dsw-alias-label-caption);font-size:11px;line-height:17px}.KFXqYa_rounds{margin-top:10px}.KFXqYa_roundsBars{align-items:flex-end;gap:3px;height:124px;padding:16px 2px 0;display:flex;overflow-x:auto}.KFXqYa_roundsBarCol{border-radius:5px 5px 0 0;flex-direction:column;flex:1 0 28px;justify-content:flex-end;align-items:stretch;height:100%;display:flex;position:relative}.KFXqYa_roundsBarColPeak{background:color-mix(in srgb, var(--dsw-static-amber-500) 16%, transparent)}.KFXqYa_roundsBarColOff{background:var(--dsw-alias-bg-module-platform)}.KFXqYa_roundsBarLabel{text-align:center;color:var(--dsw-alias-label-secondary);white-space:nowrap;text-overflow:ellipsis;max-width:100%;font-size:9px;line-height:1.2;position:absolute;bottom:0;left:0;right:0;overflow:hidden;transform:translateY(-100%)}.KFXqYa_roundsBarWrap{flex:1;align-items:flex-end;min-height:0;display:flex}.KFXqYa_roundsBar{background:var(--dsw-static-blue-500);border-radius:2px 2px 0 0;width:100%;min-height:2px;position:relative}.KFXqYa_roundsBarFlagged{background:var(--dsw-static-red-500);border-radius:2px 2px 0 0;width:100%;min-height:2px;position:relative}.KFXqYa_roundsFlagMark{background:var(--dsw-static-red-500);border-radius:50%;width:7px;height:7px;position:absolute;top:-3px;right:-3px}.KFXqYa_roundsAxis{color:var(--dsw-alias-label-secondary);justify-content:space-between;margin-top:6px;font-size:10px;display:flex}.KFXqYa_roundsEmpty{color:var(--dsw-alias-label-secondary);margin-top:10px;font-size:12px}.KFXqYa_heatmap{margin-top:10px}.KFXqYa_heatmapGrid{grid-template-columns:repeat(7,minmax(0,1fr));gap:8px;display:grid}.KFXqYa_heatmapCellEmpty{background:var(--dsw-alias-bg-layer-1);height:30px;color:var(--dsw-alias-label-dimmed);font-variant-numeric:tabular-nums;border-radius:8px;justify-content:center;align-items:center;font-size:11px;display:flex}.KFXqYa_heatmapCell{font-variant-numeric:tabular-nums;cursor:pointer;border:0;border-radius:8px;justify-content:center;align-items:center;height:30px;padding:0;font-size:11px;display:flex}.KFXqYa_heatmapCell[data-level="0"],.KFXqYa_heatmapCell[data-level="1"],.KFXqYa_heatmapCell[data-level="2"]{color:var(--dsw-alias-label-primary)}.KFXqYa_heatmapCell[data-level="3"],.KFXqYa_heatmapCell[data-level="4"]{color:var(--dsw-static-neutral-bluish-00)}.KFXqYa_heatmapFooter{color:var(--dsw-alias-label-secondary);align-items:center;gap:8px;margin-top:10px;font-size:10px;display:flex}.KFXqYa_heatmapLegend{gap:3px;display:inline-flex}.KFXqYa_heatmapLegend i{border-radius:4px;width:14px;height:14px;display:block}.KFXqYa_heatmapHover{font-variant-numeric:tabular-nums;margin-left:auto}.KFXqYa_heatmapRangeSwitch{gap:4px;margin-left:auto;display:inline-flex}.KFXqYa_heatmapRangeButton{border:1px solid var(--dsw-alias-border-l1);color:var(--dsw-alias-text-secondary);cursor:pointer;background:0 0;border-radius:6px;padding:2px 8px;font-size:11px;line-height:1.4}.KFXqYa_heatmapRangeButtonActive{color:var(--dsw-alias-text-primary);border-color:currentColor;font-weight:600}.KFXqYa_heatmapYear{flex-direction:column;gap:6px;display:flex}.KFXqYa_heatmapYearBody{align-items:flex-start;gap:6px;display:flex}.KFXqYa_heatmapYearWeekdays{color:var(--dsw-alias-text-tertiary);flex:none;grid-template-rows:repeat(7,11px);gap:3px;padding-top:12px;font-size:9px;line-height:11px;display:grid}.KFXqYa_heatmapYearWeekday{white-space:nowrap;text-align:right;height:11px}.KFXqYa_heatmapYearMonths{min-width:max-content;color:var(--dsw-alias-text-tertiary);grid-template-columns:repeat(52,11px);gap:3px;font-size:9px;line-height:12px;display:grid;overflow:visible}.KFXqYa_heatmapYearMonth{white-space:nowrap;overflow:visible}.KFXqYa_heatmapYearScroll{padding-bottom:2px;overflow-x:auto}.KFXqYa_heatmapYearGrid{grid-template-rows:repeat(7,11px);grid-auto-flow:column;gap:3px;min-width:max-content;display:grid}.KFXqYa_heatmapYearCell{cursor:pointer;border:0;border-radius:2px;width:11px;height:11px;padding:0}.KFXqYa_triggerPopSubscription{width:auto;left:0;right:0}.KFXqYa_floatSub{flex-direction:column;gap:6px;min-width:0;display:flex}.KFXqYa_floatSubHead{flex-wrap:wrap;align-items:baseline;gap:6px;min-width:0;display:flex}.KFXqYa_floatSubName{color:var(--dsw-alias-label-primary);font-size:12px;font-weight:700}.KFXqYa_floatSubPlan{color:var(--dsw-alias-label-secondary);font-size:10px}.KFXqYa_floatSub .KFXqYa_subscriptionWindow{flex-wrap:wrap;gap:4px 10px}.KFXqYa_floatSub .KFXqYa_subscriptionWindowLabel{flex:none}.KFXqYa_floatSub .KFXqYa_subscriptionMeta{min-width:0;max-width:100%}.KFXqYa_floatSub .KFXqYa_subscriptionPct{min-width:0}.KFXqYa_floatSub .KFXqYa_subscriptionReset{white-space:normal;overflow-wrap:anywhere}.KFXqYa_triggerPopEmpty{color:var(--dsw-alias-label-tertiary);padding:2px 0;font-size:11px;line-height:1.5}.KFXqYa_triggerPopSwitcher{justify-content:flex-end;align-items:center;gap:8px;margin-top:2px;display:flex}.KFXqYa_triggerPopSwitchCount{color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;font-size:10px}.KFXqYa_floatModeBtn{border:1px solid color-mix(in srgb, var(--dsw-alias-border-l1) 75%, transparent);background:color-mix(in srgb, var(--dsw-alias-bg-layer-2) 60%, transparent);color:var(--dsw-alias-label-secondary);white-space:nowrap;cursor:pointer;border-radius:10px;flex:1;padding:7px 10px;font-size:12px}.KFXqYa_floatModeBtnOn{border-color:var(--dsw-static-blue-500);color:var(--dsw-alias-label-primary);background:color-mix(in srgb, var(--dsw-static-blue-500) 16%, transparent)}.KFXqYa_rdoRow{justify-content:space-between;align-items:center;gap:8px;margin-top:10px;display:flex}.KFXqYa_rdoLabel{color:var(--dsw-alias-label-secondary);font-size:12px}.KFXqYa_rdoSelect{border:1px solid color-mix(in srgb, var(--dsw-alias-border-l1) 75%, transparent);background:color-mix(in srgb, var(--dsw-alias-bg-layer-2) 60%, transparent);color:var(--dsw-alias-label-primary);white-space:nowrap;cursor:pointer;border-radius:10px;align-items:center;gap:5px;padding:5px 8px 5px 10px;font-size:12px;display:inline-flex}.KFXqYa_rdoSelect:hover{background:color-mix(in srgb, var(--dsw-alias-bg-layer-2) 85%, transparent)}.KFXqYa_rdoSelect:focus-visible{border-color:var(--dsw-static-blue-500);outline:none}.KFXqYa_rdoChevron{color:var(--dsw-alias-label-tertiary);transition:transform .15s;display:inline-flex}.KFXqYa_rdoChevronOpen{transform:rotate(180deg)}.KFXqYa_floatTarget{color:var(--dsw-alias-label-secondary);cursor:pointer;align-items:center;gap:5px;font-size:12px;display:inline-flex}.KFXqYa_floatTargetLabel{color:var(--dsw-alias-label-secondary)}.KFXqYa_staleNotice{color:var(--dsw-static-amber-500);background:color-mix(in srgb, var(--dsw-static-amber-500) 12%, transparent);border:1px solid color-mix(in srgb, var(--dsw-static-amber-500) 30%, transparent);border-radius:10px;align-items:center;gap:6px;margin:0 0 10px;padding:8px 10px;font-size:11px;display:flex}.KFXqYa_plgHead{align-items:flex-start;gap:12px;display:flex}.KFXqYa_plgIcon{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-1);width:40px;height:40px;color:var(--dsw-alias-label-secondary);border-radius:10px;flex:none;justify-content:center;align-items:center;display:inline-flex}.KFXqYa_plgTitle{flex-direction:column;gap:4px;min-width:0;display:flex}.KFXqYa_plgNameRow{align-items:center;gap:8px;display:flex}.KFXqYa_plgName{color:var(--dsw-alias-label-primary);margin:0;font-size:13px;font-weight:600;line-height:18px}.KFXqYa_plgTag{height:18px;color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-bg-layer-3);white-space:nowrap;border-radius:5px;align-items:center;padding:0 6px;font-size:10px;font-weight:600;display:inline-flex}.KFXqYa_plgDesc{color:var(--dsw-alias-label-secondary);margin:0;font-size:11px;line-height:16px}.KFXqYa_plgGrid{border-top:1px solid var(--dsw-alias-border-l1);grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;padding-top:12px;display:grid}.KFXqYa_plgItem{flex-direction:column;gap:2px;min-width:0;display:flex}.KFXqYa_plgLabel{color:var(--dsw-alias-label-tertiary);font-size:10px;line-height:14px}.KFXqYa_plgVal{color:var(--dsw-alias-label-primary);word-break:break-all;font-size:12px;line-height:17px}.KFXqYa_plgLink{color:var(--dsw-static-blue-500);word-break:break-all;font-size:12px;line-height:17px;text-decoration:none}.KFXqYa_plgLink:hover{text-decoration:underline}.KFXqYa_tokenPanel{flex-direction:column;gap:14px;display:flex}.KFXqYa_tokenModelBar{background:var(--dsw-alias-bg-layer-2);border-radius:999px;height:8px;overflow:hidden}.KFXqYa_tokenModelParts{height:100%;display:flex}.KFXqYa_tokenModelPartIn{background:var(--dsw-static-blue-500)}.KFXqYa_tokenModelPartOut{background:var(--dsw-static-amber-500)}.KFXqYa_tokenModelShareRow{align-items:center;gap:6px;display:inline-flex}@media (width<=640px){.KFXqYa_kpiGrid{grid-template-columns:repeat(2,minmax(0,1fr))}.KFXqYa_hero{gap:14px}.KFXqYa_heroTop{flex-direction:column;align-items:flex-start;gap:12px}.KFXqYa_heroGauge{width:72px;height:72px}.KFXqYa_heroSide{gap:12px}.KFXqYa_heroSideSpacer{display:none}}.KFXqYa_peakCard{z-index:2000;border:1px solid var(--dsw-alias-border-l1);background:color-mix(in srgb, var(--dsw-alias-bg-layer-2) 82%, transparent);-webkit-backdrop-filter:blur(12px)saturate(1.2);border-radius:12px;flex-direction:column;gap:8px;min-width:280px;max-width:380px;padding:16px;animation:.2s KFXqYa_peakAlertIn;display:flex;position:fixed;box-shadow:0 4px 16px #00000014}.KFXqYa_peakCardCorner{bottom:18px;right:18px}.KFXqYa_peakCardCenter{top:20%;left:50%;transform:translate(-50%)}.KFXqYa_peakCardPeak{color:var(--dsw-static-blue-500)}.KFXqYa_peakCardOff{color:var(--dsw-static-green-500)}.KFXqYa_peakHead{justify-content:space-between;align-items:center;gap:8px;display:flex}.KFXqYa_peakTag{white-space:nowrap;border-radius:6px;align-items:center;gap:6px;height:20px;padding:0 8px;font-size:11px;font-weight:600;line-height:14px;display:inline-flex}.KFXqYa_peakTagPrimary{background:var(--dsw-alias-bg-layer-3);color:var(--dsw-static-blue-500)}.KFXqYa_peakTagSuccess{background:var(--dsw-alias-bg-layer-3);color:var(--dsw-static-green-500)}.KFXqYa_peakDot{border-radius:999px;flex:none;width:6px;height:6px}.KFXqYa_peakDotPrimary{background:var(--dsw-static-blue-500)}.KFXqYa_peakDotSuccess{background:var(--dsw-static-green-500)}.KFXqYa_peakClose{width:24px;height:24px;color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:0;border-radius:6px;justify-content:center;align-items:center;font-size:15px;line-height:1;transition:background-color .14s,color .14s;display:inline-flex}.KFXqYa_peakClose:hover{color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-layer-2)}.KFXqYa_peakCount{font-variant-numeric:tabular-nums;font-size:28px;font-weight:700;line-height:34px}.KFXqYa_peakCountPrimary{color:var(--dsw-static-blue-500)}.KFXqYa_peakCountSuccess{color:var(--dsw-static-green-500)}.KFXqYa_peakDesc{color:var(--dsw-alias-label-secondary);margin:0;font-size:12px;line-height:18px}@keyframes KFXqYa_peakAlertIn{0%{opacity:0}to{opacity:1}}.KFXqYa_setCard{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-2);border-radius:12px;flex-direction:column;gap:12px;padding:16px 18px;display:flex}.KFXqYa_setGrid3,.KFXqYa_setGrid2{gap:10px;display:grid}.KFXqYa_setGrid3{grid-template-columns:repeat(3,minmax(0,1fr))}.KFXqYa_setGrid2{grid-template-columns:repeat(2,minmax(0,1fr))}@media (width<=720px){.KFXqYa_setGrid3,.KFXqYa_setGrid2{grid-template-columns:1fr}}.KFXqYa_setCell{border:1px solid var(--dsw-alias-border-l1);border-radius:10px;flex-direction:column;gap:8px;min-width:0;padding:12px 14px;display:flex}.KFXqYa_setCardHead{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.KFXqYa_setCardMeta{flex-direction:column;gap:4px;min-width:0;display:flex}.KFXqYa_setCardTitle{color:var(--dsw-alias-label-primary);margin:0;font-size:13px;font-weight:600;line-height:18px}.KFXqYa_setCardDesc{color:var(--dsw-alias-label-secondary);margin:0;font-size:11px;line-height:16px}.KFXqYa_ctlCol{flex-direction:column;gap:10px;padding-top:2px;display:flex}.KFXqYa_ctlRow{align-items:center;gap:12px;min-height:28px;display:flex}.KFXqYa_ctlRowStretch{display:flex}.KFXqYa_ctlLabel{color:var(--dsw-alias-label-secondary);flex:0 0 96px;font-size:11px;line-height:16px}.KFXqYa_ctlGroup{flex-wrap:wrap;align-items:center;gap:8px;display:inline-flex}.KFXqYa_userPriceRow{border-bottom:1px solid var(--dsw-alias-border-l1);align-items:center;gap:10px;padding:8px 0;display:flex}.KFXqYa_userPriceCheck{width:14px;height:14px;accent-color:var(--dsw-static-blue-500);flex:none;margin:0}.KFXqYa_userPriceBody{flex-direction:column;flex:1;gap:8px;min-width:0;display:flex}.KFXqYa_userPriceLineMeta{grid-template-columns:minmax(0,1fr) minmax(0,1.4fr) auto;align-items:end;gap:8px 10px;display:grid}@media (width<=720px){.KFXqYa_userPriceLineMeta{grid-template-columns:repeat(2,minmax(0,1fr))}}.KFXqYa_userPriceLineMeta .KFXqYa_userPriceInput{box-sizing:border-box;width:100%;min-width:0;max-width:none}.KFXqYa_userPriceBody .KFXqYa_ctlGroup{flex-wrap:nowrap}.KFXqYa_userPriceLineMeta .KFXqYa_userPriceField .KFXqYa_ctlLabel{align-items:flex-end;min-height:30px;display:flex}.KFXqYa_userPricePriceLine{border-left:2px solid var(--dsw-alias-border-l1);flex-wrap:wrap;align-items:center;gap:10px;width:calc(100% - 22px);margin-left:10px;padding:2px 0 6px 12px;display:flex}.KFXqYa_userPricePriceLine>.KFXqYa_ctlLabel{color:var(--dsw-alias-label-secondary);flex:0 0 44px;font-size:11px}.KFXqYa_userPricePriceLine .KFXqYa_userPriceInputNum{box-sizing:border-box;flex:1 1 0;width:auto;min-width:120px;max-width:240px}.KFXqYa_userPriceField{flex-direction:column;gap:4px;min-width:0;display:flex}.KFXqYa_userPriceField .KFXqYa_ctlLabel{flex:none;font-size:11px}.KFXqYa_userPriceInput,.KFXqYa_userPriceInputNum{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-1);min-width:96px;max-width:160px;color:var(--dsw-alias-label-primary);border-radius:6px;padding:4px 8px;font-size:12px;line-height:16px}.KFXqYa_userPriceInputNum{min-width:72px;max-width:88px}.KFXqYa_rdo{color:var(--dsw-alias-label-secondary);cursor:pointer;white-space:nowrap;align-items:center;gap:6px;font-size:12px;line-height:16px;display:inline-flex}.KFXqYa_rdo input{opacity:0;pointer-events:none;position:absolute}.KFXqYa_rdoDot{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-1);border-radius:50%;flex:none;width:14px;height:14px;position:relative}.KFXqYa_rdo input:checked+.KFXqYa_rdoDot{border-color:var(--dsw-static-blue-500)}.KFXqYa_rdo input:checked+.KFXqYa_rdoDot:after{content:"";background:var(--dsw-static-blue-500);border-radius:50%;position:absolute;inset:3px}.KFXqYa_inp{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-1);border-radius:6px;align-items:center;gap:4px;padding:2px 6px;display:inline-flex}.KFXqYa_affix{color:var(--dsw-alias-label-tertiary);font-size:11px;line-height:16px}.KFXqYa_prog{background:var(--dsw-alias-bg-module-platform);border-radius:999px;flex:1;min-width:0;height:6px;overflow:hidden}.KFXqYa_progFill{background:var(--dsw-static-blue-500);border-radius:999px;height:100%;transition:width .2s}.KFXqYa_btn{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-1);height:28px;color:var(--dsw-alias-label-secondary);cursor:pointer;border-radius:999px;align-items:center;gap:6px;padding:0 12px;font-size:12px;line-height:16px;transition:border-color .16s,color .16s,background-color .16s;display:inline-flex}.KFXqYa_btn:hover{border-color:var(--dsw-static-blue-500);color:var(--dsw-alias-label-primary);background:color-mix(in srgb, var(--dsw-static-blue-500) 12%, var(--dsw-alias-bg-layer-1))}.KFXqYa_modelTable tbody td:not(:first-child) tbody td:not(:first-child){text-align:right;font-family:var(--mono);font-variant-numeric:tabular-nums;color:var(--dsw-alias-label-primary)}`,document.head.appendChild(e)}var A={providerGroupCostValue:`KFXqYa_providerGroupCostValue`,feeSuffix:`KFXqYa_feeSuffix`,headTitleRow:`KFXqYa_headTitleRow`,healthDot:`KFXqYa_healthDot`,shareSeg:`KFXqYa_shareSeg`,balanceCell:`KFXqYa_balanceCell`,heatmapRangeButtonActive:`KFXqYa_heatmapRangeButtonActive`,perfChip:`KFXqYa_perfChip`,userPriceLineMeta:`KFXqYa_userPriceLineMeta`,heatmap:`KFXqYa_heatmap`,dashboardSubtitle:`KFXqYa_dashboardSubtitle`,setCardHead:`KFXqYa_setCardHead`,setCardMeta:`KFXqYa_setCardMeta`,heroSideValue:`KFXqYa_heroSideValue`,chartTooltipDate:`KFXqYa_chartTooltipDate`,roundsBars:`KFXqYa_roundsBars`,triggerPopSwitchCount:`KFXqYa_triggerPopSwitchCount`,chartEmpty:`KFXqYa_chartEmpty`,ubAlert:`KFXqYa_ubAlert`,chartGrid:`KFXqYa_chartGrid`,chartCrosshair:`KFXqYa_chartCrosshair`,ubAlertLeft:`KFXqYa_ubAlertLeft`,healthBad:`KFXqYa_healthBad`,healthBadgeBad:`KFXqYa_healthBadgeBad`,subscriptionWindow:`KFXqYa_subscriptionWindow`,subscriptionName:`KFXqYa_subscriptionName`,providerGroupMeta:`KFXqYa_providerGroupMeta`,plgNameRow:`KFXqYa_plgNameRow`,ctlCol:`KFXqYa_ctlCol`,modelCell:`KFXqYa_modelCell`,switchOn:`KFXqYa_switchOn`,healthOk:`KFXqYa_healthOk`,ubStatLabel:`KFXqYa_ubStatLabel`,siteRowName:`KFXqYa_siteRowName`,dashboardIn:`KFXqYa_dashboardIn`,dashboardRight:`KFXqYa_dashboardRight`,heroReadout:`KFXqYa_heroReadout`,ubStatDetail:`KFXqYa_ubStatDetail`,plgName:`KFXqYa_plgName`,plgItem:`KFXqYa_plgItem`,triggerPrimary:`KFXqYa_triggerPrimary`,kpiGreen:`KFXqYa_kpiGreen`,kpiTile:`KFXqYa_kpiTile`,modelRowFocusable:`KFXqYa_modelRowFocusable`,popTagPrimary:`KFXqYa_popTagPrimary`,exportLabel:`KFXqYa_exportLabel`,peakTagPrimary:`KFXqYa_peakTagPrimary`,currencyToggle:`KFXqYa_currencyToggle`,providerGroupHead:`KFXqYa_providerGroupHead`,heatmapYearBody:`KFXqYa_heatmapYearBody`,plgTag:`KFXqYa_plgTag`,heatmapYear:`KFXqYa_heatmapYear`,feeCount:`KFXqYa_feeCount`,siteRowCost:`KFXqYa_siteRowCost`,userPricePriceLine:`KFXqYa_userPricePriceLine`,triggerPopSwitcher:`KFXqYa_triggerPopSwitcher`,siteRowMeta:`KFXqYa_siteRowMeta`,modelTableScroll:`KFXqYa_modelTableScroll`,heatmapLegend:`KFXqYa_heatmapLegend`,metricValuePrimary:`KFXqYa_metricValuePrimary`,subscriptionCard:`KFXqYa_subscriptionCard`,heatmapHover:`KFXqYa_heatmapHover`,triggerYen:`KFXqYa_triggerYen`,triggerPopSubscription:`KFXqYa_triggerPopSubscription`,ubStatValue:`KFXqYa_ubStatValue`,affix:`KFXqYa_affix`,peakCountSuccess:`KFXqYa_peakCountSuccess`,popModelRow:`KFXqYa_popModelRow`,feeBarAbove:`KFXqYa_feeBarAbove`,metricValue:`KFXqYa_metricValue`,popModelStatusLow:`KFXqYa_popModelStatusLow`,reconcileIcon:`KFXqYa_reconcileIcon`,shareLegend:`KFXqYa_shareLegend`,ubStatGrid:`KFXqYa_ubStatGrid`,ubChipOff:`KFXqYa_ubChipOff`,ubTagNeutral:`KFXqYa_ubTagNeutral`,tabPanelIn:`KFXqYa_tabPanelIn`,plgTitle:`KFXqYa_plgTitle`,feeChipError:`KFXqYa_feeChipError`,subscriptionWindowLabel:`KFXqYa_subscriptionWindowLabel`,tableScroll:`KFXqYa_tableScroll`,rangeToggle:`KFXqYa_rangeToggle`,peakAlertIn:`KFXqYa_peakAlertIn`,heatmapFooter:`KFXqYa_heatmapFooter`,peakDotPrimary:`KFXqYa_peakDotPrimary`,triggerSparkBar:`KFXqYa_triggerSparkBar`,providerGroupBalance:`KFXqYa_providerGroupBalance`,exportBar:`KFXqYa_exportBar`,popModel:`KFXqYa_popModel`,ubNotesDesc:`KFXqYa_ubNotesDesc`,balanceDetailLabel:`KFXqYa_balanceDetailLabel`,subscriptionStatus:`KFXqYa_subscriptionStatus`,providerGroupBadge:`KFXqYa_providerGroupBadge`,heatmapYearMonths:`KFXqYa_heatmapYearMonths`,heatmapYearGrid:`KFXqYa_heatmapYearGrid`,peakTagSuccess:`KFXqYa_peakTagSuccess`,metricGrid:`KFXqYa_metricGrid`,ctlRowStretch:`KFXqYa_ctlRowStretch`,userPriceField:`KFXqYa_userPriceField`,dashboardBody:`KFXqYa_dashboardBody`,metricCell:`KFXqYa_metricCell`,balanceDetailPop:`KFXqYa_balanceDetailPop`,floatSubHead:`KFXqYa_floatSubHead`,peakTag:`KFXqYa_peakTag`,panelHeadControls:`KFXqYa_panelHeadControls`,deltaDown:`KFXqYa_deltaDown`,subscriptionGrid:`KFXqYa_subscriptionGrid`,roundsBarWrap:`KFXqYa_roundsBarWrap`,plgHead:`KFXqYa_plgHead`,peakDot:`KFXqYa_peakDot`,peakClose:`KFXqYa_peakClose`,prog:`KFXqYa_prog`,heroMeta:`KFXqYa_heroMeta`,siteKindDirect:`KFXqYa_siteKindDirect`,chartTooltipModelDetail:`KFXqYa_chartTooltipModelDetail`,popDotSub:`KFXqYa_popDotSub`,tokenModelPartIn:`KFXqYa_tokenModelPartIn`,chartSvg:`KFXqYa_chartSvg`,peakCardPeak:`KFXqYa_peakCardPeak`,healthBadgeOk:`KFXqYa_healthBadgeOk`,budgetOverPulse:`KFXqYa_budgetOverPulse`,userPriceInput:`KFXqYa_userPriceInput`,heroValue:`KFXqYa_heroValue`,heroGauge:`KFXqYa_heroGauge`,shareValue:`KFXqYa_shareValue`,subscriptionHead:`KFXqYa_subscriptionHead`,subscriptionFillOver:`KFXqYa_subscriptionFillOver`,heroGaugeTrack:`KFXqYa_heroGaugeTrack`,plgVal:`KFXqYa_plgVal`,panelHead:`KFXqYa_panelHead`,ubTablewrap:`KFXqYa_ubTablewrap`,heroMain:`KFXqYa_heroMain`,tokenModelParts:`KFXqYa_tokenModelParts`,shareSegAssistant:`KFXqYa_shareSegAssistant`,vendorLogo:`KFXqYa_vendorLogo`,subscriptionFill:`KFXqYa_subscriptionFill`,peakCardOff:`KFXqYa_peakCardOff`,chartBarPlaceholder:`KFXqYa_chartBarPlaceholder`,rowlineRight:`KFXqYa_rowlineRight`,chartAxisLabel:`KFXqYa_chartAxisLabel`,floatModeBtn:`KFXqYa_floatModeBtn`,flatTag:`KFXqYa_flatTag`,bucketThird:`KFXqYa_bucketThird`,triggerIcon:`KFXqYa_triggerIcon`,heroSideItem:`KFXqYa_heroSideItem`,popModelStatus:`KFXqYa_popModelStatus`,chartTooltipRow:`KFXqYa_chartTooltipRow`,perfChipOff:`KFXqYa_perfChipOff`,ctlLabel:`KFXqYa_ctlLabel`,dashboard:`KFXqYa_dashboard`,chartHoverDot:`KFXqYa_chartHoverDot`,triggerWrap:`KFXqYa_triggerWrap`,heroGaugeArc:`KFXqYa_heroGaugeArc`,chartTooltipSplit:`KFXqYa_chartTooltipSplit`,providerGroupCost:`KFXqYa_providerGroupCost`,siteRowCallsLow:`KFXqYa_siteRowCallsLow`,reconcileNotice:`KFXqYa_reconcileNotice`,heroBudgetFillOver:`KFXqYa_heroBudgetFillOver`,feeInlineNum:`KFXqYa_feeInlineNum`,kpiDetail:`KFXqYa_kpiDetail`,balanceDetailRow:`KFXqYa_balanceDetailRow`,popDotNeutral:`KFXqYa_popDotNeutral`,peakDotSuccess:`KFXqYa_peakDotSuccess`,triggerPop:`KFXqYa_triggerPop`,ubTagPromo:`KFXqYa_ubTagPromo`,tabNav:`KFXqYa_tabNav`,chartLegendLine:`KFXqYa_chartLegendLine`,perfChips:`KFXqYa_perfChips`,ubTagError:`KFXqYa_ubTagError`,siteRowTitle:`KFXqYa_siteRowTitle`,estimatedTag:`KFXqYa_estimatedTag`,rdoChevron:`KFXqYa_rdoChevron`,ubCard:`KFXqYa_ubCard`,rdoChevronOpen:`KFXqYa_rdoChevronOpen`,setCard:`KFXqYa_setCard`,rowlist:`KFXqYa_rowlist`,roundsBarFlagged:`KFXqYa_roundsBarFlagged`,rdo:`KFXqYa_rdo`,plgLink:`KFXqYa_plgLink`,heroSideSpacer:`KFXqYa_heroSideSpacer`,modelDot:`KFXqYa_modelDot`,peakCountPrimary:`KFXqYa_peakCountPrimary`,shareSegTool:`KFXqYa_shareSegTool`,railButton:`KFXqYa_railButton`,shareSegPeak:`KFXqYa_shareSegPeak`,balanceDetailClose:`KFXqYa_balanceDetailClose`,floatTargetLabel:`KFXqYa_floatTargetLabel`,floatTarget:`KFXqYa_floatTarget`,subscriptionPct:`KFXqYa_subscriptionPct`,popHead:`KFXqYa_popHead`,heroGaugePctOver:`KFXqYa_heroGaugePctOver`,heroGaugeArcOver:`KFXqYa_heroGaugeArcOver`,siteKindTag:`KFXqYa_siteKindTag`,chartBar:`KFXqYa_chartBar`,deltaUp:`KFXqYa_deltaUp`,uncataloguedTag:`KFXqYa_uncataloguedTag`,switchKnob:`KFXqYa_switchKnob`,feeItem:`KFXqYa_feeItem`,balanceDetailValue:`KFXqYa_balanceDetailValue`,ubModel:`KFXqYa_ubModel`,ubCardSub:`KFXqYa_ubCardSub`,ubExtraName:`KFXqYa_ubExtraName`,vendorLetter:`KFXqYa_vendorLetter`,kpiValue:`KFXqYa_kpiValue`,heatmapYearCell:`KFXqYa_heatmapYearCell`,ubCardHead:`KFXqYa_ubCardHead`,ubTagAlert:`KFXqYa_ubTagAlert`,delta:`KFXqYa_delta`,providerGroupName:`KFXqYa_providerGroupName`,triggerMain:`KFXqYa_triggerMain`,ubExtraRow:`KFXqYa_ubExtraRow`,ubExtraNote:`KFXqYa_ubExtraNote`,roundsBarColPeak:`KFXqYa_roundsBarColPeak`,roundsEmpty:`KFXqYa_roundsEmpty`,triggerSparkHot:`KFXqYa_triggerSparkHot`,subscriptionGoldFlow:`KFXqYa_subscriptionGoldFlow`,tokenPanel:`KFXqYa_tokenPanel`,peakCount:`KFXqYa_peakCount`,budgetInput:`KFXqYa_budgetInput`,heroCurrency:`KFXqYa_heroCurrency`,providerGroupList:`KFXqYa_providerGroupList`,ubCardTitle:`KFXqYa_ubCardTitle`,heatmapGrid:`KFXqYa_heatmapGrid`,reconcileText:`KFXqYa_reconcileText`,tokenModelPartOut:`KFXqYa_tokenModelPartOut`,floatSubName:`KFXqYa_floatSubName`,subscriptionAuto:`KFXqYa_subscriptionAuto`,popDot:`KFXqYa_popDot`,heroBudgetFill:`KFXqYa_heroBudgetFill`,numCol:`KFXqYa_numCol`,heatmapRangeButton:`KFXqYa_heatmapRangeButton`,roundsBar:`KFXqYa_roundsBar`,rdoSelect:`KFXqYa_rdoSelect`,popModelName:`KFXqYa_popModelName`,heroBudgetLabel:`KFXqYa_heroBudgetLabel`,unpricedHint:`KFXqYa_unpricedHint`,rangeButtonActive:`KFXqYa_rangeButtonActive`,ubCardControlGroup:`KFXqYa_ubCardControlGroup`,feeSep:`KFXqYa_feeSep`,balanceDetailGrid:`KFXqYa_balanceDetailGrid`,rowline:`KFXqYa_rowline`,trigger:`KFXqYa_trigger`,rdoRow:`KFXqYa_rdoRow`,plgDesc:`KFXqYa_plgDesc`,popModelLabel:`KFXqYa_popModelLabel`,peakDesc:`KFXqYa_peakDesc`,setCardDesc:`KFXqYa_setCardDesc`,tabButtonActive:`KFXqYa_tabButtonActive`,rowlineMuted:`KFXqYa_rowlineMuted`,siteKindSite:`KFXqYa_siteKindSite`,heatmapYearWeekday:`KFXqYa_heatmapYearWeekday`,heroBudget:`KFXqYa_heroBudget`,tabPanel:`KFXqYa_tabPanel`,triggerMetric:`KFXqYa_triggerMetric`,chartLegendItemActive:`KFXqYa_chartLegendItemActive`,ubTagSuccess:`KFXqYa_ubTagSuccess`,feeNum:`KFXqYa_feeNum`,balanceDaysBadge:`KFXqYa_balanceDaysBadge`,trendPanel:`KFXqYa_trendPanel`,heatmapCellEmpty:`KFXqYa_heatmapCellEmpty`,heatmapRangeSwitch:`KFXqYa_heatmapRangeSwitch`,rowlineName:`KFXqYa_rowlineName`,heatmapYearScroll:`KFXqYa_heatmapYearScroll`,setGrid2:`KFXqYa_setGrid2`,panelTitle:`KFXqYa_panelTitle`,modelName:`KFXqYa_modelName`,feeChipPrimary:`KFXqYa_feeChipPrimary`,siteRow:`KFXqYa_siteRow`,roundsBarLabel:`KFXqYa_roundsBarLabel`,panel:`KFXqYa_panel`,closeButton:`KFXqYa_closeButton`,shareSegUser:`KFXqYa_shareSegUser`,reconcileDismiss:`KFXqYa_reconcileDismiss`,heroSide:`KFXqYa_heroSide`,shareItem:`KFXqYa_shareItem`,bucketOfficial:`KFXqYa_bucketOfficial`,modelTable:`KFXqYa_modelTable`,currencyButton:`KFXqYa_currencyButton`,balanceDetailHead:`KFXqYa_balanceDetailHead`,subscriptionMeta:`KFXqYa_subscriptionMeta`,peakHead:`KFXqYa_peakHead`,setCell:`KFXqYa_setCell`,setGrid3:`KFXqYa_setGrid3`,floatSubPlan:`KFXqYa_floatSubPlan`,floatSub:`KFXqYa_floatSub`,providerGroupBalanceLabel:`KFXqYa_providerGroupBalanceLabel`,ubNotes:`KFXqYa_ubNotes`,heroLabel:`KFXqYa_heroLabel`,kpiGrid:`KFXqYa_kpiGrid`,modelProvider:`KFXqYa_modelProvider`,heatmapYearWeekdays:`KFXqYa_heatmapYearWeekdays`,staleNotice:`KFXqYa_staleNotice`,peakCardCenter:`KFXqYa_peakCardCenter`,roundsBarColOff:`KFXqYa_roundsBarColOff`,ctlGroup:`KFXqYa_ctlGroup`,shareDot:`KFXqYa_shareDot`,emptyRow:`KFXqYa_emptyRow`,setCardTitle:`KFXqYa_setCardTitle`,btn:`KFXqYa_btn`,chartLegend:`KFXqYa_chartLegend`,feeInlineAlert:`KFXqYa_feeInlineAlert`,popDotDirect:`KFXqYa_popDotDirect`,rounds:`KFXqYa_rounds`,plgLabel:`KFXqYa_plgLabel`,subscriptionPlan:`KFXqYa_subscriptionPlan`,modalFooter:`KFXqYa_modalFooter`,rangeButton:`KFXqYa_rangeButton`,heroGaugeLabel:`KFXqYa_heroGaugeLabel`,budgetFillOver:`KFXqYa_budgetFillOver`,userPriceCheck:`KFXqYa_userPriceCheck`,balanceDaysBadgeLow:`KFXqYa_balanceDaysBadgeLow`,shareSegOff:`KFXqYa_shareSegOff`,healthIdle:`KFXqYa_healthIdle`,heroGaugeCenter:`KFXqYa_heroGaugeCenter`,siteKindUnknown:`KFXqYa_siteKindUnknown`,rowlineDrill:`KFXqYa_rowlineDrill`,feeInlineError:`KFXqYa_feeInlineError`,subscriptionReset:`KFXqYa_subscriptionReset`,providerGroup:`KFXqYa_providerGroup`,heroBudgetValue:`KFXqYa_heroBudgetValue`,heatmapCell:`KFXqYa_heatmapCell`,providerGroupCostLabel:`KFXqYa_providerGroupCostLabel`,subscriptionExhausted:`KFXqYa_subscriptionExhausted`,chartTooltip:`KFXqYa_chartTooltip`,providerGroupTitle:`KFXqYa_providerGroupTitle`,subscriptionTier:`KFXqYa_subscriptionTier`,triggerPopEmpty:`KFXqYa_triggerPopEmpty`,tokenModelShareRow:`KFXqYa_tokenModelShareRow`,ubAlertNote:`KFXqYa_ubAlertNote`,feeInline:`KFXqYa_feeInline`,heroTop:`KFXqYa_heroTop`,feeChipOff:`KFXqYa_feeChipOff`,roundsAxis:`KFXqYa_roundsAxis`,userPriceInputNum:`KFXqYa_userPriceInputNum`,perfBar:`KFXqYa_perfBar`,subscriptionFillWarn:`KFXqYa_subscriptionFillWarn`,floatModeBtnOn:`KFXqYa_floatModeBtnOn`,triggerLabel:`KFXqYa_triggerLabel`,bucketCost:`KFXqYa_bucketCost`,"billing-trigger":`KFXqYa_billing-trigger`,heroBudgetTrack:`KFXqYa_heroBudgetTrack`,chartTooltipSwatch:`KFXqYa_chartTooltipSwatch`,kpiLabel:`KFXqYa_kpiLabel`,ubRate:`KFXqYa_ubRate`,chartWrap:`KFXqYa_chartWrap`,chartTooltipHead:`KFXqYa_chartTooltipHead`,tabButton:`KFXqYa_tabButton`,metricLabel:`KFXqYa_metricLabel`,heroGaugePct:`KFXqYa_heroGaugePct`,chartTooltipLabel:`KFXqYa_chartTooltipLabel`,perfChipDot:`KFXqYa_perfChipDot`,ubNotesTerm:`KFXqYa_ubNotesTerm`,rowlineChev:`KFXqYa_rowlineChev`,feeChipAlert:`KFXqYa_feeChipAlert`,roundsBarCol:`KFXqYa_roundsBarCol`,chartLegendBar:`KFXqYa_chartLegendBar`,balanceDetailTitle:`KFXqYa_balanceDetailTitle`,popTagSub:`KFXqYa_popTagSub`,dashboardHead:`KFXqYa_dashboardHead`,ubPricepair:`KFXqYa_ubPricepair`,plgGrid:`KFXqYa_plgGrid`,peakCard:`KFXqYa_peakCard`,modelRowActive:`KFXqYa_modelRowActive`,chartStack:`KFXqYa_chartStack`,ubChipPeak:`KFXqYa_ubChipPeak`,ubChipLabel:`KFXqYa_ubChipLabel`,peakCardCorner:`KFXqYa_peakCardCorner`,metricValueSuccess:`KFXqYa_metricValueSuccess`,shareTrack:`KFXqYa_shareTrack`,ubNotesItem:`KFXqYa_ubNotesItem`,currencyButtonActive:`KFXqYa_currencyButtonActive`,heatmapYearMonth:`KFXqYa_heatmapYearMonth`,triggerSub:`KFXqYa_triggerSub`,ubTag:`KFXqYa_ubTag`,budgetFillWarn:`KFXqYa_budgetFillWarn`,na:`KFXqYa_na`,planTag:`KFXqYa_planTag`,feeBar:`KFXqYa_feeBar`,rdoLabel:`KFXqYa_rdoLabel`,ubStatCard:`KFXqYa_ubStatCard`,plgIcon:`KFXqYa_plgIcon`,tokenModelBar:`KFXqYa_tokenModelBar`,userPriceRow:`KFXqYa_userPriceRow`,userPriceBody:`KFXqYa_userPriceBody`,roundsFlagMark:`KFXqYa_roundsFlagMark`,heroSideLabel:`KFXqYa_heroSideLabel`,healthBadge:`KFXqYa_healthBadge`,ctlRow:`KFXqYa_ctlRow`,progFill:`KFXqYa_progFill`,bucketSep:`KFXqYa_bucketSep`,dashboardTitle:`KFXqYa_dashboardTitle`,switch:`KFXqYa_switch`,chartLegendItem:`KFXqYa_chartLegendItem`,ubTable:`KFXqYa_ubTable`,inp:`KFXqYa_inp`,triggerSpark:`KFXqYa_triggerSpark`,ubModelName:`KFXqYa_ubModelName`,popTitle:`KFXqYa_popTitle`,rdoDot:`KFXqYa_rdoDot`,hero:`KFXqYa_hero`,panelHint:`KFXqYa_panelHint`,dashboardModal:`KFXqYa_dashboardModal`,chartLine:`KFXqYa_chartLine`,subscriptionTrack:`KFXqYa_subscriptionTrack`,rowlineDrillWrap:`KFXqYa_rowlineDrillWrap`,siteRowCalls:`KFXqYa_siteRowCalls`,exportButton:`KFXqYa_exportButton`,heroGaugeSvg:`KFXqYa_heroGaugeSvg`};let j={"opencode-go":{type:`code`,subscription:{amount:10,currency:`USD`,period:`month`},tier:{amount:10,currency:`USD`,periodDays:7,label:`周额度 $30`}},opencode:{type:`code`,subscription:{amount:10,currency:`USD`,period:`month`},tier:{amount:10,currency:`USD`,periodDays:7,label:`周额度 $30`}},"kimi-coding":{type:`code`},"zai-coding-cn":{type:`code`},"zai-coding":{type:`code`},"qwen-token-plan":{type:`code`},"qwen-token-plan-cn":{type:`code`},"xiaomi-token-plan-ams":{type:`code`},"xiaomi-token-plan-cn":{type:`code`},"xiaomi-token-plan-sgp":{type:`code`},"volcengine-token-plan":{type:`code`},"ark-token-plan":{type:`code`},"doubao-token-plan":{type:`code`},minimax:{type:`code`},"minimax-cn":{type:`code`},"minimax-token-plan":{type:`code`},"minimax-token-plan-cn":{type:`code`},"hunyuan-token-plan":{type:`code`},"tencent-token-plan":{type:`code`},"hy-token-plan":{type:`code`},"xinghuo-token-plan":{type:`code`},"xfyun-coding":{type:`code`},"spark-coding":{type:`code`},"huawei-token-plan":{type:`code`},"pangu-token-plan":{type:`code`},"huawei-maas-token-plan":{type:`code`},"volcengine-agent-plan":{type:`code`},"ark-agent-plan":{type:`code`},"baidu-token-plan":{type:`code`},"ernie-token-plan":{type:`code`},"wenxin-token-plan":{type:`code`}},oe={glm:`zai-coding-cn`,bigmodel:`zai-coding-cn`,zhipu:`zai-coding-cn`,zhipuai:`zai-coding-cn`,zai:`zai-coding`,ark:`volcengine-token-plan`,volcengine:`volcengine-token-plan`,doubao:`doubao-token-plan`,moonshot:`kimi-coding`,kimi:`kimi-coding`,xiaomi:`xiaomi-token-plan-cn`,opencode:`opencode-go`};function M(e){return e===``?e:oe[e]??e}function se(e){let t=j[M(e)];return t?.type===`code`?t.tier:void 0}let N=[{key:`deepseek-v4-flash`,input:.14,cacheHit:.0028,output:.28},{key:`deepseek-v4-pro`,input:.435,cacheHit:.003625,output:.87},{key:`gpt-5.6-sol`,input:5,cacheHit:.5,output:30},{key:`gpt-5.6-terra`,input:2,cacheHit:.2,output:12},{key:`gpt-5.6-luna`,input:.2,cacheHit:.02,output:1.2},{key:`glm-5.2`,input:1.4,cacheHit:.26,output:4.4},{key:`qwen3.8-max`,input:2,cacheHit:.21,output:6},{key:`kimi-k3`,input:2.82,cacheHit:.28,output:14.08},{key:`grok-4.6`,input:2,cacheHit:.5,output:6},{key:`gemini-2.5-pro`,input:1.25,cacheHit:.125,output:10}],ce,le,ue,de,P;function fe(e){let t=/:\/\//.test(e)?e:`https://${e}`;try{return new URL(t).origin}catch{return e.trim().toLowerCase().replace(/\/+$/,``)}}function pe(e,t){return fe(e)===fe(t)}function me(e){P=e.length>0?e:void 0}function he(){return P}function ge(e){return U(e)}function _e(e,t){let n=ve(e,t);if(n!==void 0)return{input:n.input,cacheHit:n.cacheHit,output:n.output,...n.currency===void 0?{}:{currency:n.currency},...n.offPeak===void 0?{}:{offPeak:n.offPeak}}}function ve(e,t){if(P===void 0)return;let n=ge(e),r=H(n),i=e=>ge(e.key)===n||H(e.key)===r;if(t!==void 0){for(let e of P)if(e.origin!==void 0&&e.origin!==``&&i(e)&&pe(e.origin,t))return e}for(let e of P)if((e.origin===void 0||e.origin===``)&&i(e))return e}function ye(e){if(P===void 0)return;let t=ge(e),n=H(t);return P.find(e=>e.origin!==void 0&&e.origin!==``&&(ge(e.key)===t||H(e.key)===n))}function F(e){ce=typeof e.rate==`number`&&Number.isFinite(e.rate)&&e.rate>0?e.rate:void 0,le=e.prices,ue=e.extraModels}function be(e){de=e}function xe(){return ce??6.79}function Se(){return{rate:xe(),live:ce!==void 0}}let Ce=.5;function I(e){return e>=9&&e<12||e>=14&&e<18}function we(e){return e==null||!Number.isFinite(e)?`peak`:L(e)?`offPeak`:I((new Date(e).getUTCHours()+8)%24)?`peak`:`offPeak`}function L(e){let t=new Date(e+288e5).getUTCDay();return t===0||t===6}let R=[540,720,840,1080];function z(e){return((e+288e5)%864e5+864e5)%864e5}function B(e){let t=we(e),n=z(e);for(let r=0;r<7;r++){let i=r*864e5-n;for(let n of R){let r=i+n*6e4;if(!(r<=0)&&we(e+r)!==t)return{tier:t,nextSwitchInMs:r}}}let r=R[0]??0;return{tier:t,nextSwitchInMs:864e5-n+r*6e4}}function Te(e,t){let{nextSwitchInMs:n}=B(e);if(n>t)return null;let r=e+n;return{entering:we(r),atMs:r}}function Ee(e){let t=Math.max(1,Math.ceil(e/6e4)),n=Math.floor(t/60),r=t%60;return n>0?`${n}h${String(r).padStart(2,`0`)}m`:`${r}m`}let V=[{key:`flash`,name:`DeepSeek V4 Flash`,provider:`DeepSeek`,colorVar:`dsw-static-blue-500`,price:{currency:`CNY`,input:3,cacheHit:.1,output:9,offPeak:{input:1.5,cacheHit:.05,output:4.5}},peakHours:`09:00-12:00 / 14:00-18:00`},{key:`flash-vision-exp`,name:`DeepSeek V4 Flash Vision (Exp)`,provider:`DeepSeek`,colorVar:`dsw-static-blue-500`,price:{currency:`CNY`,input:3,cacheHit:.1,output:9,offPeak:{input:1.5,cacheHit:.05,output:4.5}},peakHours:`09:00-12:00 / 14:00-18:00`},{key:`pro`,name:`DeepSeek V4 Pro`,provider:`DeepSeek`,colorVar:`dsw-static-deepseek-500`,price:{currency:`CNY`,input:9,cacheHit:.3,output:27,offPeak:{input:4.5,cacheHit:.15,output:13.5}},peakHours:`09:00-12:00 / 14:00-18:00`},{key:`glm`,name:`GLM-5.2`,provider:`智谱 AI`,colorVar:`dsw-static-blue-600`,price:{currency:`CNY`,input:8,cacheHit:2,output:28}},{key:`glm-5.3`,name:`GLM-5.3`,provider:`智谱 AI`,colorVar:`dsw-static-blue-500`,price:{currency:`CNY`,input:8,cacheHit:2,output:28}},{key:`glm-5.3-flash`,name:`GLM-5.3-Flash`,provider:`智谱 AI`,colorVar:`dsw-static-blue-300`,price:{currency:`CNY`,input:.8,cacheHit:.23,output:2.8},promo:{factor:.5,endsAtMs:Date.UTC(2026,8,8,16,0,0),note:`限时 5 折`}},{key:`glm-4.6`,name:`GLM-4.6`,provider:`智谱 AI`,colorVar:`dsw-static-blue-400`,price:{currency:`CNY`,input:4,cacheHit:.8,output:16}},{key:`glm-4.5-air`,name:`GLM-4.5-Air`,provider:`智谱 AI`,colorVar:`dsw-static-blue-300`,price:{currency:`CNY`,input:.8,cacheHit:.16,output:2}},{key:`glm-4.7`,name:`GLM-4.7`,provider:`智谱 AI`,colorVar:`dsw-static-blue-400`,price:{currency:`CNY`,input:4,cacheHit:1,output:16},estimated:!0},{key:`glm-5-turbo`,name:`GLM-5-Turbo`,provider:`智谱 AI`,colorVar:`dsw-static-blue-500`,price:{currency:`CNY`,input:5,cacheHit:1.2,output:22}},{key:`glm-5.1`,name:`GLM-5.1`,provider:`智谱 AI`,colorVar:`dsw-static-blue-600`,price:{currency:`CNY`,input:6,cacheHit:1.2,output:24}},{key:`glm-5v-turbo`,name:`GLM-5V-Turbo`,provider:`智谱 AI`,colorVar:`dsw-static-blue-300`,price:{currency:`CNY`,input:5,cacheHit:1.2,output:22}},{key:`qwen-3.8-max`,name:`Qwen3.8 Max`,provider:`阿里通义`,colorVar:`dsw-static-blue-600`,price:{currency:`CNY`,input:12,cacheHit:1.5,output:36},extraRows:[{label:`显式缓存创建`,input:15},{label:`显式缓存命中`,input:1},{label:`Batch File`,input:6,output:18,note:`长期半价`},{label:`Batch Chat`,input:12,output:36,note:`与标准价一致`}]},{key:`qwen-3.8-flash`,name:`Qwen3.8 Flash`,provider:`阿里通义`,colorVar:`dsw-static-blue-400`,price:{currency:`CNY`,input:1,cacheHit:.1,output:3},extraRows:[{label:`显式缓存创建`,input:1.25},{label:`显式缓存命中`,input:.1},{label:`Batch File`,input:.5,output:1.5,note:`长期半价`},{label:`Batch Chat`,input:1,output:3,note:`与标准价一致`}]},{key:`qwen-max`,name:`Qwen3.7-Max`,provider:`阿里通义`,colorVar:`dsw-static-blue-300`,price:{currency:`CNY`,input:12,cacheHit:1.2,output:36},promo:{factor:.5,note:`限时 5 折`},extraRows:[{label:`显式缓存创建`,input:15},{label:`显式缓存命中`,input:1.2},{label:`Batch File`,input:6,output:18,note:`长期半价`},{label:`Batch Chat`,input:12,output:36,note:`与标准价一致`}]},{key:`qwen-plus`,name:`Qwen3.5-Plus`,provider:`阿里通义`,colorVar:`dsw-static-blue-500`,price:{currency:`CNY`,input:.8,cacheHit:.08,output:4.8},extraRows:[{label:`显式缓存创建`,input:1},{label:`显式缓存命中`,input:.08},{label:`Batch File`,input:.4,output:2.4,note:`长期半价`},{label:`Batch Chat`,input:.8,output:4.8,note:`与标准价一致`}]},{key:`qwen-flash`,name:`Qwen3.5-Flash`,provider:`阿里通义`,colorVar:`dsw-static-blue-400`,price:{currency:`CNY`,input:.2,cacheHit:.02,output:2},extraRows:[{label:`显式缓存创建`,input:.25},{label:`显式缓存命中`,input:.02}]},{key:`doubao`,name:`Doubao Seed-2.0 Pro`,provider:`字节豆包`,colorVar:`dsw-static-red-500`,price:{currency:`CNY`,input:3.2,cacheHit:.64,output:16}},{key:`doubao-mini`,name:`Doubao Seed-2.0 Mini`,provider:`字节豆包`,colorVar:`dsw-static-red-300`,price:{currency:`CNY`,input:.2,cacheHit:.02,output:2}},{key:`doubao-1.6`,name:`Doubao Seed-1.6`,provider:`字节豆包`,colorVar:`dsw-static-red-400`,price:{currency:`CNY`,input:.8,cacheHit:0,output:8}},{key:`doubao-seed-evolving`,name:`Doubao-Seed-Evolving`,provider:`字节豆包`,colorVar:`dsw-static-red-500`,price:{currency:`CNY`,input:6,cacheHit:1.2,output:30}},{key:`doubao-seed-2.1-pro`,name:`Doubao Seed-2.1 Pro`,provider:`字节豆包`,colorVar:`dsw-static-red-400`,price:{currency:`CNY`,input:6,cacheHit:1.2,output:30}},{key:`doubao-seed-2.1-turbo`,name:`Doubao Seed-2.1 Turbo`,provider:`字节豆包`,colorVar:`dsw-static-red-300`,price:{currency:`CNY`,input:3,cacheHit:.6,output:15}},{key:`kimi`,name:`Kimi K2.7 Code`,provider:`月之暗面`,colorVar:`dsw-static-neutral-bluish-700`,price:{currency:`CNY`,input:6.5,cacheHit:1.3,output:27}},{key:`kimi-k2.7-hs`,name:`Kimi K2.7 Code HighSpeed`,provider:`月之暗面`,colorVar:`dsw-static-neutral-bluish-600`,price:{currency:`CNY`,input:13,cacheHit:2.6,output:54}},{key:`kimi-k2.6`,name:`Kimi K2.6`,provider:`月之暗面`,colorVar:`dsw-static-neutral-bluish-500`,price:{currency:`CNY`,input:6.5,cacheHit:1.1,output:27}},{key:`kimi-k3`,name:`Kimi K3`,provider:`月之暗面`,colorVar:`dsw-static-neutral-bluish-500`,price:{currency:`CNY`,input:20,cacheHit:2,output:100}},{key:`mimo-v2.5`,name:`MiMo V2.5`,provider:`小米`,colorVar:`dsw-static-green-400`,price:{currency:`CNY`,input:1,cacheHit:.02,output:2}},{key:`mimo-v2.5-pro`,name:`MiMo V2.5 Pro`,provider:`小米`,colorVar:`dsw-static-green-400`,price:{currency:`CNY`,input:3,cacheHit:.025,output:6}},{key:`minimax`,name:`MiniMax-M3`,provider:`MiniMax`,colorVar:`dsw-static-amber-500`,price:{currency:`CNY`,input:2.1,cacheHit:.42,output:8.4}},{key:`minimax-m2.7`,name:`MiniMax-M2.7`,provider:`MiniMax`,colorVar:`dsw-static-amber-400`,price:{currency:`CNY`,input:2.1,cacheHit:.42,output:8.4}},{key:`minimax-m2.7-highspeed`,name:`MiniMax-M2.7-highspeed`,provider:`MiniMax`,colorVar:`dsw-static-amber-500`,price:{currency:`CNY`,input:4.2,cacheHit:.42,output:16.8}},{key:`ernie`,name:`ERNIE-5.1`,provider:`百度文心`,colorVar:`dsw-static-blue-300`,price:{currency:`CNY`,input:4,cacheHit:.4,output:18}},{key:`hunyuan`,name:`混元 Hy3`,provider:`腾讯混元`,colorVar:`dsw-static-amber-400`,price:{currency:`CNY`,input:1,cacheHit:.25,output:4}},{key:`hunyuan-t1`,name:`混元 T1`,provider:`腾讯混元`,colorVar:`dsw-static-amber-300`,price:{currency:`CNY`,input:1,cacheHit:.1,output:4}},{key:`yi`,name:`Yi-Lightning`,provider:`零一万物`,colorVar:`dsw-static-green-500`,price:{currency:`CNY`,input:.99,cacheHit:.1,output:.99}},{key:`step`,name:`Step 3.7 Flash`,provider:`阶跃星辰`,colorVar:`dsw-static-neutral-bluish-400`,price:{currency:`CNY`,input:1.35,cacheHit:.27,output:8.1}},{key:`spark`,name:`Spark 4.0 Ultra`,provider:`科大讯飞`,colorVar:`dsw-static-green-400`,price:{currency:`CNY`,input:5,cacheHit:.5,output:10},estimated:!0},{key:`sensenova`,name:`SenseNova 6.5`,provider:`商汤`,colorVar:`dsw-static-red-400`,price:{currency:`CNY`,input:4.5,cacheHit:.45,output:9},estimated:!0},{key:`baichuan`,name:`Baichuan M3-Plus`,provider:`百川智能`,colorVar:`dsw-static-neutral-bluish-500`,price:{currency:`CNY`,input:5,cacheHit:.5,output:9}},{key:`gpt-5.6-sol`,name:`GPT-5.6 Sol`,provider:`OpenAI`,colorVar:`dsw-static-green-500`,price:{currency:`USD`,input:5,cacheHit:.5,output:30}},{key:`gpt-5.6-terra`,name:`GPT-5.6 Terra`,provider:`OpenAI`,colorVar:`dsw-static-green-400`,price:{currency:`USD`,input:2,cacheHit:.2,output:12}},{key:`gpt-5.6-luna`,name:`GPT-5.6 Luna`,provider:`OpenAI`,colorVar:`dsw-static-green-500`,price:{currency:`USD`,input:.2,cacheHit:.02,output:1.2}},{key:`gemini-pro`,name:`Gemini 3.1 Pro`,provider:`Google`,colorVar:`dsw-static-blue-600`,price:{currency:`USD`,input:2,cacheHit:.2,output:12,offPeak:{input:1,cacheHit:.1,output:6}},peakHours:`Standard / Flex`,tierSemantics:`latency`},{key:`gemini-flash`,name:`Gemini 3.6 Flash`,provider:`Google`,colorVar:`dsw-static-blue-400`,price:{currency:`USD`,input:1.5,cacheHit:.15,output:7.5,offPeak:{input:.75,cacheHit:.075,output:3.75}},peakHours:`Standard / Flex`,tierSemantics:`latency`},{key:`grok`,name:`Grok 4.6`,provider:`xAI`,colorVar:`dsw-static-neutral-bluish-700`,price:{currency:`USD`,input:2,cacheHit:.5,output:6}},{key:`grok-4.3`,name:`Grok 4.3`,provider:`xAI`,colorVar:`dsw-static-neutral-bluish-500`,price:{currency:`USD`,input:1.25,cacheHit:.2,output:2.5}},{key:`llama`,name:`Llama 4 Maverick`,provider:`Meta`,colorVar:`dsw-static-red-500`,price:{currency:`USD`,input:.2,cacheHit:.05,output:.6}},{key:`llama-scout`,name:`Llama 4 Scout`,provider:`Meta`,colorVar:`dsw-static-red-400`,price:{currency:`USD`,input:.1,cacheHit:.025,output:.3}},{key:`claude-opus-4-6`,name:`Claude Opus 4.6`,provider:`Anthropic`,colorVar:`dsw-static-red-500`,price:{currency:`USD`,input:5,cacheHit:.5,output:25}},{key:`claude-sonnet-4-6`,name:`Claude Sonnet 4.6`,provider:`Anthropic`,colorVar:`dsw-static-red-400`,price:{currency:`USD`,input:3,cacheHit:.3,output:15}},{key:`claude-haiku-4-5`,name:`Claude Haiku 4.5`,provider:`Anthropic`,colorVar:`dsw-static-red-300`,price:{currency:`USD`,input:1,cacheHit:.1,output:5}},{key:`claude-opus-5`,name:`Claude Opus 5`,provider:`Anthropic`,colorVar:`dsw-static-red-500`,price:{currency:`USD`,input:5,cacheHit:.5,output:25}},{key:`claude-sonnet-5`,name:`Claude Sonnet 5`,provider:`Anthropic`,colorVar:`dsw-static-red-400`,price:{currency:`USD`,input:2,cacheHit:.2,output:10}},{key:`mistral-large-2512`,name:`Mistral Large 3`,provider:`Mistral AI`,colorVar:`dsw-static-violet-500`,price:{currency:`USD`,input:.5,cacheHit:.05,output:1.5}},{key:`mistral-small-2603`,name:`Mistral Small 4`,provider:`Mistral AI`,colorVar:`dsw-static-violet-400`,price:{currency:`USD`,input:.15,cacheHit:.015,output:.6}},{key:`ministral-8b-latest`,name:`Ministral 8B`,provider:`Mistral AI`,colorVar:`dsw-static-violet-300`,price:{currency:`USD`,input:.1,cacheHit:.01,output:.1}},{key:`command-a-03-2025`,name:`Command A`,provider:`Cohere`,colorVar:`dsw-static-cyan-500`,price:{currency:`USD`,input:2.5,cacheHit:.25,output:10}},{key:`command-r-08-2024`,name:`Command R`,provider:`Cohere`,colorVar:`dsw-static-cyan-400`,price:{currency:`USD`,input:.15,cacheHit:.015,output:.6}},{key:`longcat-2.0`,name:`LongCat 2.0`,provider:`美团`,colorVar:`dsw-static-amber-500`,price:{currency:`CNY`,input:4,cacheHit:.8,output:16},estimated:!0},{key:`minicpm-v-4.5`,name:`MiniCPM-V 4.5`,provider:`面壁智能`,colorVar:`dsw-static-green-500`,price:{currency:`CNY`,input:1,cacheHit:.2,output:4},estimated:!0},{key:`ernie-4.5`,name:`ERNIE-4.5 300B`,provider:`百度文心`,colorVar:`dsw-static-blue-300`,price:{currency:`CNY`,input:2,cacheHit:.4,output:8},estimated:!0},{key:`dots-3-note-preview`,name:`Dots3-Note Preview`,provider:`小红书`,colorVar:`dsw-static-red-500`,price:{currency:`CNY`,input:2,cacheHit:.4,output:8},estimated:!0},{key:`qwen3.6-max`,name:`Qwen3.6 Max`,provider:`阿里通义`,colorVar:`dsw-static-orange-500`,price:{currency:`CNY`,input:9,cacheHit:.9,output:54},extraRows:[{label:`显式缓存创建`,input:11.25},{label:`显式缓存命中`,input:.9}]},{key:`qwen3-coder-plus`,name:`Qwen3-Coder Plus`,provider:`阿里通义`,colorVar:`dsw-static-orange-400`,price:{currency:`CNY`,input:4,cacheHit:.8,output:16},extraRows:[{label:`显式缓存创建`,input:5},{label:`显式缓存命中`,input:.4}]},{key:`qwen3-coder`,name:`Qwen3-Coder 480B`,provider:`阿里通义`,colorVar:`dsw-static-orange-300`,price:{currency:`CNY`,input:4,cacheHit:.8,output:16},estimated:!0},{key:`glm-4.5-x`,name:`GLM-4.5-X`,provider:`智谱 AI`,colorVar:`dsw-static-blue-400`,price:{currency:`CNY`,input:4,cacheHit:1,output:16},estimated:!0},{key:`glm-5.2-fast`,name:`GLM-5.2 Fast`,provider:`智谱 AI`,colorVar:`dsw-static-blue-300`,price:{currency:`CNY`,input:6,cacheHit:1.2,output:24},estimated:!0},{key:`kimi-k3-fast`,name:`Kimi K3 Fast`,provider:`月之暗面`,colorVar:`dsw-static-cyan-400`,price:{currency:`CNY`,input:20,cacheHit:2,output:100},estimated:!0},{key:`kimi-k2.7-code-fast`,name:`Kimi K2.7 Code Fast`,provider:`月之暗面`,colorVar:`dsw-static-cyan-400`,price:{currency:`CNY`,input:6.5,cacheHit:1.3,output:27},estimated:!0},{key:`kimi-k2.6-fast`,name:`Kimi K2.6 Fast`,provider:`月之暗面`,colorVar:`dsw-static-cyan-300`,price:{currency:`CNY`,input:6.5,cacheHit:1.1,output:27},estimated:!0},{key:`kimi-k2.6-turbo`,name:`Kimi K2.6 Turbo`,provider:`月之暗面`,colorVar:`dsw-static-cyan-300`,price:{currency:`CNY`,input:6.5,cacheHit:1.1,output:27},estimated:!0},{key:`kimi-k2-thinking-turbo`,name:`Kimi K2 Thinking Turbo`,provider:`月之暗面`,colorVar:`dsw-static-cyan-300`,price:{currency:`CNY`,input:8,cacheHit:1,output:58}},{key:`doubao-seed-2.0-code`,name:`Doubao Seed-2.0 Code`,provider:`字节豆包`,colorVar:`dsw-static-red-500`,price:{currency:`CNY`,input:3.2,cacheHit:.64,output:16}},{key:`doubao-seed-2.0-lite`,name:`Doubao Seed-2.0 Lite`,provider:`字节豆包`,colorVar:`dsw-static-red-300`,price:{currency:`CNY`,input:.6,cacheHit:.12,output:3.6}},{key:`other`,name:`其他模型`,provider:`Custom`,colorVar:`dsw-static-neutral-bluish-500`,price:{currency:`CNY`,input:0,cacheHit:0,cacheMiss:0,output:0}}],De={"deepseek-v4-flash":`flash`,"deepseek-v4-flash-vision-exp":`flash-vision-exp`,"deepseek-v4-pro":`pro`,"glm-5.2":`glm`,"glm-4.5-air":`glm-4.5-air`,"glm-4.5air":`glm-4.5-air`,"glm-4.7":`glm-4.7`,"glm-5-turbo":`glm-5-turbo`,"glm-5.1":`glm-5.1`,"glm-5.3-flash":`glm-5.3-flash`,"glm-5v-turbo":`glm-5v-turbo`,"glm-5v.1":`glm-5v-turbo`,"claude-opus-4-6":`claude-opus-4-6`,"claude-opus-4.6":`claude-opus-4-6`,"claude-sonnet-4-6":`claude-sonnet-4-6`,"claude-sonnet-4.6":`claude-sonnet-4-6`,"claude-haiku-4-5":`claude-haiku-4-5`,"claude-haiku-4.5":`claude-haiku-4-5`,"claude-opus-5":`claude-opus-5`,"claude-sonnet-5":`claude-sonnet-5`,"mistral-large-2512":`mistral-large-2512`,"mistral-large-3":`mistral-large-2512`,"mistral-small-2603":`mistral-small-2603`,"mistral-small-4":`mistral-small-2603`,"ministral-8b-latest":`ministral-8b-latest`,"ministral-8b":`ministral-8b-latest`,"command-a-03-2025":`command-a-03-2025`,"command-a":`command-a-03-2025`,"command-r-08-2024":`command-r-08-2024`,"command-r":`command-r-08-2024`,hy3:`hunyuan`,"longcat-2.0":`longcat-2.0`,"longcat-2":`longcat-2.0`,"minicpm-v-4.5":`minicpm-v-4.5`,"minicpm-v-4.5-thinking":`minicpm-v-4.5`,"ernie-4.5":`ernie-4.5`,"ernie-4.5-300b":`ernie-4.5`,"dots-3-note-preview":`dots-3-note-preview`,"dots-3-note":`dots-3-note-preview`,"dots3-note-preview":`dots-3-note-preview`,"rednote-dots3":`dots-3-note-preview`,"doubao-seed-evolving":`doubao-seed-evolving`,"doubao-seed-evolve":`doubao-seed-evolving`,"doubao-seed-2.1-pro":`doubao-seed-2.1-pro`,"doubao-seed-2.1-pro-290000":`doubao-seed-2.1-pro`,"doubao-seed-2.1-turbo":`doubao-seed-2.1-turbo`,"doubao-seed-2-1-turbo":`doubao-seed-2.1-turbo`,"qwen3.8-max":`qwen-3.8-max`,"qwen3.8-flash":`qwen-3.8-flash`,"qwen3.7-max":`qwen-max`,"qwen3.6-max":`qwen3.6-max`,"qwen3.6-max-preview":`qwen3.6-max`,"qwen3-coder-plus":`qwen3-coder-plus`,"qwen3-coder":`qwen3-coder`,"qwen3-coder-480b":`qwen3-coder`,"glm-4.5-x":`glm-4.5-x`,"glm-4.5x":`glm-4.5-x`,"glm-5.2-fast":`glm-5.2-fast`,"glm-5.2f":`glm-5.2-fast`,"kimi-k3-fast":`kimi-k3-fast`,"kimi-k3f":`kimi-k3-fast`,"kimi-k2.7-code-fast":`kimi-k2.7-code-fast`,"kimi-k2.7-code-f":`kimi-k2.7-code-fast`,"kimi-k2.6-fast":`kimi-k2.6-fast`,"kimi-k2.6-turbo":`kimi-k2.6-turbo`,"kimi-k2-thinking-turbo":`kimi-k2-thinking-turbo`,"doubao-seed-2.0-code":`doubao-seed-2.0-code`,"doubao-seed-2-0-code":`doubao-seed-2.0-code`,"doubao-seed-2.0-lite":`doubao-seed-2.0-lite`,"doubao-seed-2-0-lite":`doubao-seed-2.0-lite`,"qwen-max":`qwen-max`,"hunyuan-t1":`hunyuan-t1`,"step-3.7-flash":`step`,"seed-2.0-mini":`doubao-mini`,k3:`kimi-k3`,"kimi-k3":`kimi-k3`,"minimax-m1":`minimax`,"minimax-m2":`minimax`,"minimax-m3":`minimax`,"minimax-m2.7":`minimax-m2.7`,"minimax-m2.7-highspeed":`minimax-m2.7-highspeed`,"minimax-m2.7-high-speed":`minimax-m2.7-highspeed`,"minimax-m2-7":`minimax-m2.7`,"minimax-m2-7-highspeed":`minimax-m2.7-highspeed`,"minimax-m2-7-high-speed":`minimax-m2.7-highspeed`};function H(e){return String(e).toLowerCase().replace(/\([^)]*\)/g,``).replace(/[^a-z0-9]+/g,``)}let Oe=(()=>{let e=new Map,t=(t,n)=>{let r=H(t);r!==``&&!e.has(r)&&e.set(r,n)};for(let e of V)t(e.key,e.key);for(let[e,n]of Object.entries(De))t(e,n);for(let e of N)t(e.key,e.key);return e})();function ke(e){let t=[],n=e=>{e!==``&&!t.includes(e)&&t.push(e)},r=e=>{let t=e;for(;;){let e=t.replace(/[-_]\d{3,}$/u,``);if(e===t||e===``)return;t=e,n(t)}},i=e.lastIndexOf(`/`);if(i>0&&i<e.length-1){let t=e.slice(i+1);n(t),r(t)}return r(e),t}function Ae(e){let t=De[e];if(t!==void 0)return t;let n=H(e);if(n===``)return;let r=Oe.get(n);return r===void 0?(ue??[]).find(e=>H(e.key)===n)?.key:r}function U(e){let t=De[e]??e;if(t===e){let t=H(e);if(t!==``){let e=Oe.get(t);if(e!==void 0)return e;let n=(ue??[]).find(e=>H(e.key)===t);if(n!==void 0)return n.key}for(let t of ke(e)){let e=Ae(t);if(e!==void 0)return e}}return t}function je(e){let t=U(e),n=le?.[t];if(n!==void 0)return n;let r=N.find(e=>e.key.toLowerCase()===t.toLowerCase());if(r!==void 0)return{input:r.input,cacheHit:r.cacheHit,output:r.output}}function Me(e){let t=U(e),n=V.find(e=>e.key===t),r=ue?.find(e=>e.key===t),i=n??(r===void 0?(()=>{let e=V.at(-1);if(e!==void 0)return e;throw Error(`MODEL_CATALOG must not be empty`)})():W(r)),a=_e(t);if(a!==void 0)return{...i,userPriced:!0,price:{currency:a.currency??`CNY`,input:a.input,cacheHit:a.cacheHit,output:a.output,...a.offPeak===void 0?{}:{offPeak:a.offPeak}}};let o=je(t);return o===void 0?i:{...i,price:{currency:`USD`,input:o.input,cacheHit:o.cacheHit,output:o.output}}}function W(e){return{key:e.key,name:e.name,provider:e.provider,colorVar:`dsw-static-neutral-400`,price:{currency:`USD`,input:e.price.input,cacheHit:e.price.cacheHit,output:e.price.output}}}function Ne(e,t){let n=e.endsAtMs!==void 0&&t>=e.endsAtMs;return Number.isFinite(t)&&!n&&e.factor>0&&e.factor<1}function Pe(e,t){let{promo:n}=e;if(n===void 0||!Ne(n,t))return e;let r=e=>({input:e.input*n.factor,cacheHit:e.cacheHit*n.factor,...e.cacheMiss===void 0?{}:{cacheMiss:e.cacheMiss*n.factor},output:e.output*n.factor});return{...e,price:{...r(e.price),currency:e.price.currency,...e.price.offPeak===void 0?{}:{offPeak:r(e.price.offPeak)}}}}function Fe(e=Date.now()){let t=[...V.map(t=>Pe(t,e))],n=new Set(t.map(e=>e.key.toLowerCase())),r=new Set(t.map(e=>H(e.key)));for(let e of de??[]){let i=e.id.toLowerCase();if((()=>{let t=U(e.id);return V.find(e=>e.key===t)})()!==void 0)continue;let a=H(e.id);if(n.has(i)||a!==``&&r.has(a))continue;let o=(ue??[]).find(e=>H(e.key)===a),s;if(o!==void 0)s=W(o),e.name!==void 0&&e.name!==``&&(s={...s,name:e.name});else{let t=je(i);s=t===void 0?{key:U(e.id),name:e.name??e.id,provider:e.provider,colorVar:`dsw-static-neutral-400`,price:{currency:`USD`,input:0,cacheHit:0,output:0},uncatalogued:!0}:{key:i,name:e.name??e.id,provider:e.provider,colorVar:`dsw-static-neutral-400`,price:{currency:`USD`,input:t.input,cacheHit:t.cacheHit,output:t.output}}}n.add(s.key.toLowerCase()),a!==``&&r.add(a),t.push(s)}return t.map(e=>{let t=_e(e.key);return t===void 0?e:{...e,userPriced:!0,price:{currency:t.currency??`CNY`,input:t.input,cacheHit:t.cacheHit,output:t.output}}})}function Ie(e){let t=getComputedStyle(document.documentElement).getPropertyValue(`--${e}`).trim();return t===``?`#8b95a3`:t}function G(e,t,n){let r=t.cacheMiss>0?t.cacheMiss:Math.max(0,t.input-t.cacheHit),i=Math.min(t.cacheHit,t.input),a=(r*(e.cacheMiss??e.input)+i*e.cacheHit+t.output*e.output)/1e6;return n===`USD`?a*xe():a}function Le(e,t,n=Ce,r=Date.now()){let i=Pe(e,r),a=G(i.price,t,i.price.currency),o=i.price.offPeak===void 0?a:G(i.price.offPeak,t,i.price.currency);return a*n+o*(1-n)}function Re(e){let t=xe();return t>0?e/t:e}function K(e,t=`cny`){let n=Number(e);if(!Number.isFinite(n))return t===`cny`?`¥0`:`$0`;let r=t===`cny`?`¥`:`$`;return n<=0?`${r}0`:n>=1e3?`${r}${n.toFixed(0)}`:n>=10?`${r}${n.toFixed(1)}`:n>=.1?`${r}${n.toFixed(2)}`:`${r}${n.toFixed(3)}`}function ze(e,t=`CNY`){return e===0?`免费`:t===`USD`?e>=10?`$${e.toFixed(1)}`:`$${e.toFixed(2)}`:e>=10?`¥${e.toFixed(1)}`:`¥${e.toFixed(2)}`}function Be(e,t,n,r){return r<=0||!Number.isFinite(r)||t===(n===`usd`?`USD`:`CNY`)?e:n===`usd`?e/r:e*r}function q(e){return e>=1e9?`${(e/1e9).toFixed(2)}B`:e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e3?`${(e/1e3).toFixed(0)}K`:String(e)}function Ve(e){let t=Number(e);return Number.isFinite(t)?`${t.toFixed(1)}%`:`0.0%`}let J={top:18,right:40,bottom:26,left:46};function He(e){let[,t,n]=e.split(`-`);return`${Number(t)}/${Number(n)}`}function Ue(e){return e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e3?`${(e/1e3).toFixed(1)}K`:String(Math.round(e))}function We(e,t){let n=[];for(let r=0;r<e;r+=t)n.push(r);return e>0&&n[n.length-1]!==e-1&&n.push(e-1),n}let Ge={key:`__total__`,name:`总计`,color:``};function Ke({data:e,models:t=[],currency:n=`cny`,metric:i=`cost`}){let[o,s]=(0,r.useState)(null),c=e=>K(n===`usd`?Re(e):e,n),l=e=>i===`tokens`?Ue(e):c(e),u=e=>i===`tokens`?e.tokens??0:e.cost,d=(0,r.useMemo)(()=>{let n=e.length;if(n===0)return null;let r=680-J.left-J.right,a=220-J.top-J.bottom,o=e=>n===1?J.left+r/2:J.left+r*e/(n-1),s=Math.max(...i===`tokens`?e.map(e=>e.tokens??0):e.map(e=>Math.max(e.cost,Object.values(e.byModel??{}).reduce((e,t)=>e+t,0))),1e-4),c=e=>J.top+a-e/s*a,l=Math.max(...e.map(e=>e.calls),1),d=e=>J.top+a-e/l*a,f=r/n,p=Math.min(18,f*.6);return{n,plotW:r,plotH:a,inner:o,yCost:c,yCalls:d,barW:p,bars:e.flatMap((e,n)=>{let r=o(n)-p/2;if(t.length===0||i===`tokens`)return[{date:e.date,model:Ge,x:r,base:0,value:u(e),topRounded:!0}];let a=null;for(let n of t)(e.byModel?.[n.key]??0)>0&&(a=n.key);let s=0;return t.map(t=>{let n=e.byModel?.[t.key]??0,i={date:e.date,model:t,x:r,base:s,value:n,topRounded:t.key===a};return s+=n,i})}),costTicks:[0,.25,.5,.75,1].map(e=>s*e).reverse(),callsTicks:[0,.25,.5,.75,1].map(e=>l*e).reverse(),linePath:e.map((e,t)=>{let n=d(e.calls);return`${t===0?`M`:`L`}${o(t)} ${n}`}).join(` `)}},[e,t,i]);if(d===null)return(0,a.jsx)(`div`,{className:A.chartEmpty,children:`暂无趋势数据`});let{n:f,plotW:p,plotH:m,inner:h,yCost:g,yCalls:_,barW:v,bars:y,costTicks:b,callsTicks:x,linePath:S}=d,C=o===null?void 0:e[o],w=We(f,Math.max(1,Math.ceil(f/8)));return(0,a.jsxs)(`div`,{className:A.chartWrap,children:[(0,a.jsxs)(`svg`,{viewBox:`0 0 680 220`,className:A.chartSvg,role:`img`,"aria-label":`Daily cost by model and total calls`,onMouseLeave:()=>{s(null)},onMouseMove:e=>{let t=e.currentTarget.getBoundingClientRect(),n=((e.clientX-t.left)/t.width*680-J.left)/p,r=Math.round(n*(f-1));s(Math.min(Math.max(r,0),f-1))},children:[b.map((e,t)=>{let n=g(e);return(0,a.jsxs)(`g`,{children:[(0,a.jsx)(`line`,{x1:J.left,x2:680-J.right,y1:n,y2:n,className:A.chartGrid}),(0,a.jsx)(`text`,{x:J.left-8,y:n+3,textAnchor:`end`,className:A.chartAxisLabel,children:l(e)})]},`cost-${t}`)}),y.map(t=>{if(t.value>0)return(0,a.jsx)(`rect`,{x:t.x,y:g(t.base+t.value),width:v,height:g(t.base)-g(t.base+t.value),rx:t.topRounded?2:0,className:t.model.color===``?A.chartBar:A.chartStack,style:t.model.color===``?void 0:{fill:t.model.color}},`${t.date}-${t.model.key}`);let n=e.find(e=>e.date===t.date);return n!==void 0&&n.calls>0&&t.base===0?(0,a.jsx)(`rect`,{x:t.x,y:g(0)-1,width:v,height:1,rx:0,className:A.chartBarPlaceholder},`${t.date}-${t.model.key}-placeholder`):null}),(0,a.jsx)(`path`,{d:S,fill:`none`,className:A.chartLine}),x.map((e,t)=>{let n=_(e);return(0,a.jsx)(`text`,{x:680-J.right+8,y:n+3,textAnchor:`start`,className:A.chartAxisLabel,children:Ue(e)},`calls-${t}`)}),w.map(t=>{let n=e[t];return n===void 0?null:(0,a.jsx)(`text`,{x:h(t),y:214,textAnchor:`middle`,className:A.chartAxisLabel,children:He(n.date)},n.date)}),o!==null&&(0,a.jsx)(`line`,{x1:h(o),x2:h(o),y1:J.top,y2:J.top+m,className:A.chartCrosshair})]}),C!==void 0&&o!==null&&(0,a.jsxs)(`div`,{className:A.chartTooltip,style:{left:`${h(o)/680*100}%`,top:`${g(C.cost)/220*100}%`},children:[(0,a.jsx)(`div`,{className:A.chartTooltipDate,children:C.date}),i!==`tokens`&&t.filter(e=>(C.byModel?.[e.key]??0)>0).map(e=>(0,a.jsxs)(`div`,{className:A.chartTooltipRow,children:[(0,a.jsx)(`span`,{className:A.chartTooltipSwatch,style:{background:e.color}}),e.name,` `,(0,a.jsx)(`strong`,{children:c(C.byModel?.[e.key]??0)})]},e.key)),(0,a.jsxs)(`div`,{className:A.chartTooltipRow,children:[(0,a.jsx)(`span`,{className:A.chartLegendBar}),`总计 `,(0,a.jsx)(`strong`,{children:i===`tokens`?Ue(C.tokens??0):c(C.cost)})]}),(0,a.jsxs)(`div`,{className:A.chartTooltipRow,children:[(0,a.jsx)(`span`,{className:A.chartLegendLine}),`调用 `,(0,a.jsx)(`strong`,{children:C.calls.toLocaleString()})]})]}),t.length>0&&i!==`tokens`&&(0,a.jsxs)(`div`,{className:A.chartLegend,children:[t.map(e=>(0,a.jsxs)(`span`,{children:[(0,a.jsx)(`span`,{className:A.chartTooltipSwatch,style:{background:e.color}}),e.name]},e.key)),(0,a.jsxs)(`span`,{children:[(0,a.jsx)(`span`,{className:A.chartLegendLine}),`调用`]})]})]})}let Y={top:14,right:42,bottom:22,left:46};function qe(e){return e.slice(5,13).replace(`T`,` `)}function Je(e){return String(e>=100?Math.round(e):Number(e.toFixed(1)))}function Ye(e,t,n){return t===`ttft`?`${Math.round(e)} ms`:`${e.toFixed(1)} ${n(`perfTpsUnit`)}`}function Xe({perf:e,models:t,t:n}){let[i,o]=(0,r.useState)(()=>re()),[s,c]=(0,r.useState)(null),l=e=>{o(e),ie(e)},d=e=>t.find(t=>t.key===e)?.color??`#8b95a3`,f=(0,r.useMemo)(()=>e===void 0?[]:Object.entries(e.byModel).map(([e,n])=>({key:e,name:t.find(t=>t.key===e)?.name??e,color:d(e),samples:n.samples,ttftAvg:n.ttftAvg,ttftP50:n.ttftP50,ttftP90:n.ttftP90,...n.ttftMax===void 0?{}:{ttftMax:n.ttftMax},...n.ttftSpikes===void 0?{}:{ttftSpikes:n.ttftSpikes},...n.tpsAvg===void 0?{}:{tpsAvg:n.tpsAvg},latencyAvg:n.latencyAvg,estimatedSamples:n.estimatedSamples})).sort((e,t)=>t.samples-e.samples||t.ttftP90-e.ttftP90),[e,t]),p=(0,r.useMemo)(()=>{if(e===void 0)return[];if(i.models!==void 0){let t=new Set(Object.keys(e.byModel));return i.models.filter(e=>t.has(e))}return f.slice(0,5).map(e=>e.key)},[e,f,i.models]),m=(0,r.useMemo)(()=>{if(e===void 0)return null;let t=Object.keys(e.byHourModel).sort().slice(-48);if(t.length===0)return null;let n=t.length,r=680-Y.left-Y.right,a=180-Y.top-Y.bottom,o=e=>n===1?Y.left+r/2:Y.left+r*e/(n-1),s=new Set(p),c=e=>i.metric===`ttft`?e?.ttftAvg:e?.tpsAvg,l=[],u=0;for(let r of f){if(!s.has(r.key))continue;let i=[];for(let a=0;a<n;a++){let n=t[a];if(n===void 0)continue;let s=c(e.byHourModel[n]?.[r.key]);s===void 0||!Number.isFinite(s)||(i.push({i:a,x:o(a),y:0,v:s}),s>u&&(u=s))}l.push({key:r.key,name:r.name,color:r.color,segments:[],points:i})}let d=l.reduce((e,t)=>e+t.points.length,0);u=Math.max(u,1);let m=e=>Y.top+a-e/u*a;for(let e of l){let t=``,n=-2;for(let r of e.points)r.y=m(r.v),t!==``&&r.i!==n+1&&(e.segments.push(t),t=``),t+=`${t===``?`M`:`L`}${r.x} ${r.y} `,n=r.i;t!==``&&e.segments.push(t)}let h=Math.max(1,Math.ceil(n/8)),g=[];for(let e=0;e<n;e+=h)g.push(e);return g[g.length-1]!==n-1&&g.push(n-1),{hourKeys:t,n,plotW:r,plotH:a,inner:o,yOf:m,series:l,ticks:[0,.5,1].map(e=>u*e).reverse(),xTicks:g,totalPoints:d}},[e,f,p,i.metric]);if(e===void 0||f.length===0)return(0,a.jsx)(`div`,{className:A.chartEmpty,"data-testid":`billing-perf-empty`,children:n(`perfEmpty`)});let h=e=>{let t=p.includes(e)?p.filter(t=>t!==e):[...p,e];l({metric:i.metric,models:t})},g=e=>{l({metric:e,...i.models===void 0?{}:{models:i.models}})},_=s===null||m===null?[]:m.series.flatMap(e=>{let t=e.points.find(e=>e.i===s);return t===void 0?[]:[{key:e.key,name:e.name,color:e.color,v:t.v}]});return(0,a.jsxs)(`div`,{"data-testid":`billing-perf-panel`,children:[(0,a.jsx)(`div`,{className:A.tableScroll,"data-testid":`billing-perf-table`,children:(0,a.jsxs)(`table`,{className:A.modelTable,children:[(0,a.jsx)(`thead`,{children:(0,a.jsxs)(`tr`,{children:[(0,a.jsx)(`th`,{children:n(`model`)}),(0,a.jsx)(`th`,{className:A.numCol,children:n(`perfSamples`)}),(0,a.jsx)(`th`,{className:A.numCol,children:n(`perfTtft`)}),(0,a.jsx)(`th`,{className:A.numCol,children:n(`perfP50`)}),(0,a.jsx)(`th`,{className:A.numCol,children:n(`perfP90`)}),(0,a.jsx)(`th`,{className:A.numCol,children:n(`perfMax`)}),(0,a.jsx)(`th`,{className:A.numCol,children:n(`perfTps`)}),(0,a.jsx)(`th`,{className:A.numCol,children:n(`perfLatency`)}),(0,a.jsx)(`th`,{className:A.numCol,children:n(`perfEstimated`)})]})}),(0,a.jsx)(`tbody`,{children:f.map(e=>(0,a.jsxs)(`tr`,{children:[(0,a.jsx)(`td`,{children:(0,a.jsxs)(`span`,{className:A.modelCell,children:[(0,a.jsx)(`span`,{className:A.modelDot,style:{background:e.color}}),(0,a.jsx)(`span`,{className:A.modelName,children:e.name})]})}),(0,a.jsx)(`td`,{className:A.numCol,children:e.samples.toLocaleString()}),(0,a.jsxs)(`td`,{className:A.numCol,children:[e.ttftAvg.toFixed(0),` ms`]}),(0,a.jsxs)(`td`,{className:A.numCol,children:[e.ttftP50.toFixed(0),` ms`]}),(0,a.jsxs)(`td`,{className:A.numCol,children:[e.ttftP90.toFixed(0),` ms`]}),(0,a.jsx)(`td`,{className:A.numCol,children:e.ttftMax===void 0?(0,a.jsx)(`span`,{className:A.na,children:`—`}):(0,a.jsxs)(`span`,{children:[e.ttftMax.toFixed(0),` ms`,e.ttftSpikes!==void 0&&e.ttftSpikes>0?` (${e.ttftSpikes}↑)`:``]})}),(0,a.jsx)(`td`,{className:A.numCol,children:e.tpsAvg===void 0?(0,a.jsx)(`span`,{className:A.na,children:`—`}):`${e.tpsAvg.toFixed(1)}`}),(0,a.jsxs)(`td`,{className:A.numCol,children:[e.latencyAvg.toFixed(0),` ms`]}),(0,a.jsx)(`td`,{className:A.numCol,children:e.estimatedSamples>0?e.estimatedSamples:(0,a.jsx)(`span`,{className:A.na,children:`—`})})]},e.key))})]})}),m!==null&&(0,a.jsxs)(`div`,{"data-testid":`billing-perf-hour`,children:[(0,a.jsx)(`div`,{className:A.perfBar,children:(0,a.jsx)(`span`,{className:A.rangeToggle,role:`group`,"aria-label":n(`perfTitle`),children:[`ttft`,`tps`].map(e=>(0,a.jsx)(`button`,{type:`button`,className:u(A.rangeButton,i.metric===e&&A.rangeButtonActive),"aria-pressed":i.metric===e,"data-testid":`billing-perf-tab-${e}`,onClick:()=>{g(e)},children:e===`ttft`?`${n(`perfTtft`)} (ms)`:`${n(`perfTps`)} (${n(`perfTpsUnit`)})`},e))})}),(0,a.jsxs)(`div`,{className:A.perfChips,role:`group`,"aria-label":n(`model`),children:[(0,a.jsx)(`button`,{type:`button`,className:A.perfChip,"data-testid":`billing-perf-chip-all`,onClick:()=>{l({metric:i.metric,models:f.map(e=>e.key)})},children:n(`perfAll`)}),f.map(e=>{let t=p.includes(e.key);return(0,a.jsxs)(`button`,{type:`button`,className:u(A.perfChip,!t&&A.perfChipOff),style:t?{color:e.color,borderColor:`color-mix(in srgb, ${e.color} 45%, transparent)`}:void 0,"aria-pressed":t,"data-testid":`billing-perf-chip-${e.key}`,onClick:()=>{h(e.key)},children:[(0,a.jsx)(`span`,{className:A.perfChipDot,style:{background:t?e.color:`var(--dsw-alias-label-dimmed)`}}),e.name]},e.key)})]}),m.totalPoints>0?(0,a.jsxs)(`div`,{className:A.chartWrap,children:[(0,a.jsxs)(`svg`,{viewBox:`0 0 680 180`,className:A.chartSvg,role:`img`,"aria-label":`Hourly perf comparison by model`,onMouseLeave:()=>{c(null)},onMouseMove:e=>{let t=e.currentTarget.getBoundingClientRect(),n=((e.clientX-t.left)/t.width*680-Y.left)/m.plotW,r=Math.round(n*(m.n-1));c(Math.min(Math.max(r,0),m.n-1))},children:[m.ticks.map((e,t)=>{let n=m.yOf(e);return(0,a.jsxs)(`g`,{children:[(0,a.jsx)(`line`,{x1:Y.left,x2:680-Y.right,y1:n,y2:n,className:A.chartGrid}),(0,a.jsx)(`text`,{x:Y.left-8,y:n+3,textAnchor:`end`,className:A.chartAxisLabel,children:Je(e)})]},`tick-${t}`)}),m.series.map(e=>e.segments.map((t,n)=>(0,a.jsx)(`path`,{d:t,fill:`none`,className:A.chartLine,style:{stroke:e.color}},`${e.key}-${n}`))),m.xTicks.map(e=>{let t=m.hourKeys[e];return t===void 0?null:(0,a.jsx)(`text`,{x:m.inner(e),y:174,textAnchor:`middle`,className:A.chartAxisLabel,children:qe(t)},t)}),s!==null&&(0,a.jsx)(`line`,{x1:m.inner(s),x2:m.inner(s),y1:Y.top,y2:Y.top+m.plotH,className:A.chartCrosshair}),s!==null&&m.series.map(e=>{let t=e.points.find(e=>e.i===s);return t===void 0?null:(0,a.jsx)(`circle`,{cx:t.x,cy:t.y,r:3.5,fill:e.color,className:A.chartHoverDot},`${e.key}-dot`)})]}),s!==null&&_.length>0&&(0,a.jsxs)(`div`,{className:A.chartTooltip,"data-testid":`billing-perf-tooltip`,style:{left:`${m.inner(s)/680*100}%`,top:`${(Y.top+m.plotH/2)/180*100}%`},children:[(0,a.jsx)(`div`,{className:A.chartTooltipDate,children:qe(m.hourKeys[s]??``)}),_.map(e=>(0,a.jsxs)(`div`,{className:A.chartTooltipRow,children:[(0,a.jsx)(`span`,{className:A.chartTooltipSwatch,style:{background:e.color}}),e.name,` `,(0,a.jsx)(`strong`,{children:Ye(e.v,i.metric,n)})]},e.key))]})]}):(0,a.jsx)(`div`,{className:A.chartEmpty,"data-testid":`billing-perf-chart-empty`,children:n(`perfChartEmpty`)})]}),m===null&&(0,a.jsx)(`div`,{className:A.chartEmpty,"data-testid":`billing-perf-chart-empty`,children:n(`perfChartEmpty`)})]})}let Ze=`@kenz1117/dsh-ui-usage-billing`,Qe=`kenz1117`;function $e({t:e,version:t}){return(0,a.jsxs)(`section`,{className:A.setCard,"data-testid":`billing-plugin-info`,children:[(0,a.jsxs)(`div`,{className:A.plgHead,children:[(0,a.jsx)(`span`,{className:A.plgIcon,"aria-hidden":`true`,children:(0,a.jsx)(`svg`,{width:`20`,height:`20`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:(0,a.jsx)(`path`,{d:`M10 3a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v2a2 2 0 0 0 4 0V4a1 1 0 0 1 1-1h1a1 1 0 0 1 1 1v1a2 2 0 0 0 4 0 1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-1a2 2 0 0 0 0 4h1a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-1a2 2 0 0 0-4 0v1a1 1 0 0 1-1 1h-2a1 1 0 0 1-1-1v-2a2 2 0 0 0-4 0v1a1 1 0 0 1-1 1h-1a1 1 0 0 1-1-1v-1a2 2 0 0 0-4 0 1 1 0 0 1-1 1H3a1 1 0 0 1-1-1v-2a1 1 0 0 1 1-1h1a2 2 0 0 0 0-4H3a1 1 0 0 1-1-1v-2a1 1 0 0 1 1-1h1a2 2 0 0 0 4 0z`})})}),(0,a.jsxs)(`div`,{className:A.plgTitle,children:[(0,a.jsxs)(`div`,{className:A.plgNameRow,children:[(0,a.jsx)(`h3`,{className:A.plgName,children:Ze}),(0,a.jsx)(`span`,{className:A.plgTag,children:t===void 0?`—`:`v${t}`})]}),(0,a.jsx)(`p`,{className:A.plgDesc,children:`Usage billing dashboard for DeepSeek Harness`})]})]}),(0,a.jsxs)(`div`,{className:A.plgGrid,children:[(0,a.jsxs)(`div`,{className:A.plgItem,children:[(0,a.jsx)(`span`,{className:A.plgLabel,children:e(`pluginAuthor`)}),(0,a.jsxs)(`a`,{className:A.plgLink,href:`https://github.com/${Qe}`,target:`_blank`,rel:`noreferrer`,children:[`KenZ`,` (`,Qe,`)`]})]}),(0,a.jsxs)(`div`,{className:A.plgItem,children:[(0,a.jsx)(`span`,{className:A.plgLabel,children:e(`pluginRepository`)}),(0,a.jsx)(`a`,{className:A.plgLink,href:`https://github.com/kenz1117/dsh-ui-usage-billing`,target:`_blank`,rel:`noreferrer`,children:`GitHub`})]}),(0,a.jsxs)(`div`,{className:A.plgItem,children:[(0,a.jsx)(`span`,{className:A.plgLabel,children:e(`pluginNpm`)}),(0,a.jsx)(`a`,{className:A.plgLink,href:`https://www.npmjs.com/package/@kenz1117/dsh-ui-usage-billing`,target:`_blank`,rel:`noreferrer`,children:Ze})]}),(0,a.jsxs)(`div`,{className:A.plgItem,children:[(0,a.jsx)(`span`,{className:A.plgLabel,children:e(`pluginLicense`)}),(0,a.jsx)(`span`,{className:A.plgVal,children:`MIT`})]})]})]})}function X(e=Date.now()){let t=new Date(e),n=e=>String(e).padStart(2,`0`);return`${t.getFullYear()}-${n(t.getMonth()+1)}-${n(t.getDate())}`}function et(e){return e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e3?`${(e/1e3).toFixed(1)}K`:String(Math.round(e))}let Z={top:14,right:18,bottom:22,left:46},tt=`var(--dsw-static-blue-500)`,nt=`#14b8a6`,rt=`var(--dsw-static-amber-500)`;function it(e,t,n,r){return JSON.stringify({days:e,models:t,dayModels:n,total:r},null,2)}function at(e){let{stats:t,trendDays:n,onTrendDays:i,t:o}=e,s=e.models??[],{byDay:c,byModel:l,total:d}=t,[f,p]=(0,r.useState)(null),[m,h]=(0,r.useState)(`structure`),[g,_]=(0,r.useState)(null),v=t.byDayModels!==void 0,y=e=>{h(e),_(null)},b=(0,r.useMemo)(()=>{let e=[];for(let t=n-1;t>=0;--t){let n=new Date;n.setDate(n.getDate()-t);let r=X(n.getTime()),i=c[r];e.push({date:r,miss:i?.cacheMiss??0,hit:i?.cacheHit??0,output:i?.output??0,reasoning:i?.reasoning??0})}return e},[c,n]),x=(0,r.useMemo)(()=>{let e=[];for(let r=n-1;r>=0;--r){let n=new Date;n.setDate(n.getDate()-r);let i=X(n.getTime()),a=t.byDayModels?.[i],o={},s=0;if(a!==void 0)for(let[e,t]of Object.entries(a)){let n=t.cacheHit??0,r=t.cacheMiss??0,i=t.output??0,a=n+r+i;a<=0||(o[e]={hit:n,miss:r,output:i,total:a},s+=a)}e.push({date:i,models:o,total:s})}return e},[t.byDayModels,n]),S=(0,r.useMemo)(()=>{let e=new Map;for(let t of x)for(let[n,r]of Object.entries(t.models))e.set(n,(e.get(n)??0)+r.total);return[...e.entries()].sort((e,t)=>t[1]-e[1]).map(([e])=>({key:e,name:s.find(t=>t.key===e)?.name??Me(e).name,color:s.find(t=>t.key===e)?.color??`#8b95a3`}))},[x,s]),C=g!==null&&S.some(e=>e.key===g)?g:null,w=e=>{if(v){if(m!==`model`){h(`model`),_(e);return}_(t=>t===e?null:e)}},T=(0,r.useMemo)(()=>{let e=0;return Object.entries(l).filter(([,e])=>e.calls>0).map(([t,n])=>{let r=n.input+n.output;e+=r;let i=n.cacheHit+n.cacheMiss;return{key:t,name:Me(t).name,input:n.input,output:n.output,reasoning:n.reasoning??0,calls:n.calls,cacheHit:n.cacheHit,cacheMiss:n.cacheMiss,cacheHitRate:i>0?n.cacheHit/i*100:0,total:r,share:0}}).sort((e,t)=>t.total-e.total).map(t=>({...t,share:e>0?t.total/e:0}))},[l]),E=(0,r.useMemo)(()=>{let e=d.cacheHit??0,t=d.cacheMiss??0,n=d.input??0,r=d.output??0,i=d.reasoning??0,a=e+t,o=a>0?e/a*100:0,s=r>0?i/r*100:0,c=r>0?n/r:0,l;for(let e of b){let t=e.miss+e.hit+e.output;(l===void 0||t>l.miss+l.hit+l.output)&&(l=e)}return{cacheHitRate:o,reasoningPct:s,io:c,peak:l,hit:e,miss:t,input:n,output:r,reasoning:i}},[d,b]),ee=(0,r.useMemo)(()=>{let e=Object.entries(t.byTool??{}),n=e.slice(0,8),r=e.slice(8).reduce((e,[,t])=>e+t,0),i=e.reduce((e,[,t])=>e+t,0);return{top:n,rest:r>0?[[`…`,r]]:[],totalCalls:i}},[t.byTool]),D=(0,r.useMemo)(()=>{let e=b.length;if(e===0)return null;let t=680-Z.left-Z.right,n=200-Z.top-Z.bottom,r=Math.max(...m===`model`?x.map(e=>e.total):b.map(e=>e.miss+e.hit+e.output),1),i=e=>Z.top+n-e/r*n,a=t/e,o=Math.min(20,a*.6),s=n=>e===1?Z.left+t/2:Z.left+t*n/(e-1),c=Math.max(1,Math.ceil(e/8)),l=[];for(let t=0;t<e;t+=c)l.push(t);return e>0&&l[l.length-1]!==e-1&&l.push(e-1),{n:e,plotW:t,plotH:n,max:r,y:i,barW:o,inner:s,indices:l}},[b,x,m]),te=()=>{let e=new Blob([ot(b)],{type:`text/csv`}),t=document.createElement(`a`);t.href=URL.createObjectURL(e),t.download=`token-daily-${X()}.csv`,t.click(),setTimeout(()=>URL.revokeObjectURL(t.href),0)},ne=()=>{let e=new Blob([it(b,T,x,d)],{type:`application/json`}),t=document.createElement(`a`);t.href=URL.createObjectURL(e),t.download=`token-${X()}.json`,t.click(),setTimeout(()=>URL.revokeObjectURL(t.href),0)},O=f===null?void 0:b[f],k=f===null?void 0:x[f];return(0,a.jsxs)(`div`,{className:A.tokenPanel,"data-testid":`billing-token-panel`,children:[(0,a.jsxs)(`div`,{className:A.exportBar,role:`group`,"aria-label":o(`tokenExport`),children:[(0,a.jsx)(`span`,{className:A.exportLabel,children:o(`export`)}),(0,a.jsx)(`button`,{type:`button`,className:A.exportButton,"data-testid":`billing-token-export-csv`,onClick:te,children:o(`tokenExportCsv`)}),(0,a.jsx)(`button`,{type:`button`,className:A.exportButton,"data-testid":`billing-token-export-json`,onClick:ne,children:o(`exportJson`)})]}),(0,a.jsxs)(`div`,{className:A.kpiGrid,"data-testid":`billing-token-kpis`,children:[(0,a.jsxs)(`div`,{className:A.kpiTile,children:[(0,a.jsx)(`span`,{className:A.kpiLabel,children:o(`tokenCacheHitRate`)}),(0,a.jsxs)(`span`,{className:A.kpiValue,children:[E.cacheHitRate.toFixed(1),`%`]}),(0,a.jsxs)(`span`,{className:A.kpiDetail,children:[q(E.hit),` / `,q(E.hit+E.miss),(d.cacheWrite??0)>0?` · ${o(`tokenCacheWrite`)} ${q(d.cacheWrite??0)}`:``]})]}),(0,a.jsxs)(`div`,{className:A.kpiTile,children:[(0,a.jsx)(`span`,{className:A.kpiLabel,children:o(`tokenReasoningShare`)}),(0,a.jsxs)(`span`,{className:A.kpiValue,children:[E.reasoningPct.toFixed(1),`%`]}),(0,a.jsx)(`span`,{className:A.kpiDetail,children:q(E.reasoning)})]}),(0,a.jsxs)(`div`,{className:A.kpiTile,children:[(0,a.jsx)(`span`,{className:A.kpiLabel,children:o(`tokenIo`)}),(0,a.jsx)(`span`,{className:A.kpiValue,children:E.io.toFixed(2)}),(0,a.jsxs)(`span`,{className:A.kpiDetail,children:[q(E.input),` / `,q(E.output)]})]}),(0,a.jsxs)(`div`,{className:A.kpiTile,children:[(0,a.jsx)(`span`,{className:A.kpiLabel,children:o(`tokenPeak`)}),(0,a.jsx)(`span`,{className:A.kpiValue,children:E.peak===void 0?`—`:et(E.peak.miss+E.peak.hit+E.peak.output)}),(0,a.jsx)(`span`,{className:A.kpiDetail,children:E.peak?.date??`—`})]})]}),(0,a.jsxs)(`section`,{className:A.panel,"data-testid":`billing-token-daily`,children:[(0,a.jsxs)(`div`,{className:A.panelHead,children:[(0,a.jsx)(`h3`,{className:A.panelTitle,children:o(`tokenDaily`)}),(0,a.jsxs)(`span`,{className:A.panelHeadControls,children:[v&&(0,a.jsx)(`span`,{className:A.rangeToggle,role:`group`,"aria-label":o(`tokenDaily`),children:[`structure`,`model`].map(e=>(0,a.jsx)(`button`,{type:`button`,className:u(A.rangeButton,m===e&&A.rangeButtonActive),"aria-pressed":m===e,onClick:()=>{y(e)},"data-testid":`billing-token-view-${e}`,children:o(e===`structure`?`tokenViewStructure`:`tokenViewModel`)},e))}),(0,a.jsx)(`span`,{className:A.rangeToggle,role:`group`,"aria-label":o(`tokenDaily`),children:[7,30].map(e=>(0,a.jsx)(`button`,{type:`button`,className:u(A.rangeButton,n===e&&A.rangeButtonActive),"aria-pressed":n===e,onClick:()=>{i(e)},"data-testid":`billing-token-${e}d`,children:o(e===7?`trend7d`:`trend30d`)},e))})]})]}),D===null||m===`model`&&S.length===0?(0,a.jsx)(`div`,{className:A.chartEmpty,children:o(`trendEmpty`)}):(0,a.jsxs)(`div`,{className:A.chartWrap,children:[(0,a.jsxs)(`svg`,{viewBox:`0 0 680 200`,className:A.chartSvg,role:`img`,"aria-label":o(`tokenDaily`),onMouseLeave:()=>{p(null)},onMouseMove:e=>{let t=e.currentTarget.getBoundingClientRect(),n=((e.clientX-t.left)/t.width*680-Z.left)/D.plotW,r=Math.round(n*(D.n-1));p(Math.min(Math.max(r,0),D.n-1))},children:[[0,.5,1].map(e=>{let t=D.max*e,n=D.y(t);return(0,a.jsxs)(`g`,{children:[(0,a.jsx)(`line`,{x1:Z.left,x2:680-Z.right,y1:n,y2:n,className:A.chartGrid}),(0,a.jsx)(`text`,{x:Z.left-8,y:n+3,textAnchor:`end`,className:A.chartAxisLabel,children:et(t)})]},e)}),m===`structure`?b.map((e,t)=>{let n=D.inner(t)-D.barW/2,r=D.y(0),i=D.y(e.miss),o=D.y(e.miss+e.hit),s=D.y(e.miss+e.hit+e.output);return(0,a.jsxs)(`g`,{children:[(0,a.jsx)(`rect`,{x:n,y:i,width:D.barW,height:r-i,fill:tt}),(0,a.jsx)(`rect`,{x:n,y:o,width:D.barW,height:i-o,fill:nt}),(0,a.jsx)(`rect`,{x:n,y:s,width:D.barW,height:o-s,fill:rt})]},e.date)}):x.map((e,t)=>{let n=D.inner(t)-D.barW/2,r=0;return(0,a.jsx)(`g`,{children:S.map(t=>{let i=e.models[t.key];if(i===void 0)return null;let o=D.y(r);r+=i.total;let s=D.y(r),c=C!==null&&t.key!==C;return(0,a.jsx)(`rect`,{x:n,y:s,width:D.barW,height:o-s,fill:t.color,opacity:c?.15:1},t.key)})},e.date)}),D.indices.map(e=>{let t=b[e];return t===void 0?null:(0,a.jsx)(`text`,{x:D.inner(e),y:194,textAnchor:`middle`,className:A.chartAxisLabel,children:t.date.slice(5)},t.date)}),f!==null&&(0,a.jsx)(`line`,{x1:D.inner(f),x2:D.inner(f),y1:Z.top,y2:Z.top+D.plotH,className:A.chartCrosshair})]}),f!==null&&m===`structure`&&O!==void 0&&(0,a.jsxs)(`div`,{className:A.chartTooltip,"data-testid":`billing-token-tooltip`,style:{left:`${D.inner(f)/680*100}%`,top:`${D.y(O.miss+O.hit+O.output)/200*100}%`},children:[(0,a.jsxs)(`div`,{className:A.chartTooltipHead,children:[(0,a.jsx)(`span`,{className:A.chartTooltipDate,children:O.date}),(0,a.jsx)(`strong`,{children:(O.miss+O.hit+O.output).toLocaleString()})]}),(0,a.jsxs)(`div`,{className:u(A.chartTooltipRow,A.chartTooltipSplit),children:[(0,a.jsxs)(`span`,{className:A.chartTooltipLabel,children:[(0,a.jsx)(`span`,{className:A.chartTooltipSwatch,style:{background:nt}}),o(`tokenHit`)]}),(0,a.jsx)(`strong`,{children:O.hit.toLocaleString()})]}),(0,a.jsxs)(`div`,{className:u(A.chartTooltipRow,A.chartTooltipSplit),children:[(0,a.jsxs)(`span`,{className:A.chartTooltipLabel,children:[(0,a.jsx)(`span`,{className:A.chartTooltipSwatch,style:{background:tt}}),o(`tokenMiss`)]}),(0,a.jsx)(`strong`,{children:O.miss.toLocaleString()})]}),(0,a.jsxs)(`div`,{className:u(A.chartTooltipRow,A.chartTooltipSplit),children:[(0,a.jsxs)(`span`,{className:A.chartTooltipLabel,children:[(0,a.jsx)(`span`,{className:A.chartTooltipSwatch,style:{background:rt}}),o(`tokenOutput`)]}),(0,a.jsx)(`strong`,{children:O.output.toLocaleString()})]})]}),f!==null&&m===`model`&&k!==void 0&&(0,a.jsxs)(`div`,{className:A.chartTooltip,"data-testid":`billing-token-tooltip`,style:{left:`${D.inner(f)/680*100}%`,top:`${D.y(k.total)/200*100}%`},children:[(0,a.jsxs)(`div`,{className:A.chartTooltipHead,children:[(0,a.jsx)(`span`,{className:A.chartTooltipDate,children:k.date}),(0,a.jsx)(`strong`,{children:k.total.toLocaleString()})]}),S.map(e=>{let t=k.models[e.key];return t===void 0?null:(0,a.jsxs)(`div`,{className:A.chartTooltipModel,children:[(0,a.jsxs)(`div`,{className:u(A.chartTooltipRow,A.chartTooltipSplit),children:[(0,a.jsxs)(`span`,{className:A.chartTooltipLabel,children:[(0,a.jsx)(`span`,{className:A.chartTooltipSwatch,style:{background:e.color}}),e.name]}),(0,a.jsx)(`strong`,{children:t.total.toLocaleString()})]}),(0,a.jsxs)(`div`,{className:A.chartTooltipModelDetail,children:[o(`tokenHitShort`),` `,t.hit.toLocaleString(),` · `,o(`tokenMissShort`),` `,t.miss.toLocaleString(),` · `,o(`tokenOutput`),` `,t.output.toLocaleString()]})]},e.key)})]}),(0,a.jsx)(`div`,{className:A.chartLegend,children:m===`structure`?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)(`span`,{children:[(0,a.jsx)(`span`,{className:A.chartTooltipSwatch,style:{background:tt}}),o(`tokenMiss`)]}),(0,a.jsxs)(`span`,{children:[(0,a.jsx)(`span`,{className:A.chartTooltipSwatch,style:{background:nt}}),o(`tokenHit`)]}),(0,a.jsxs)(`span`,{children:[(0,a.jsx)(`span`,{className:A.chartTooltipSwatch,style:{background:rt}}),o(`tokenOutput`)]})]}):S.map(e=>(0,a.jsxs)(`button`,{type:`button`,className:u(A.chartLegendItem,C===e.key&&A.chartLegendItemActive),"aria-pressed":C===e.key,"data-testid":`billing-token-legend-${e.key}`,onClick:()=>{w(e.key)},children:[(0,a.jsx)(`span`,{className:A.chartTooltipSwatch,style:{background:e.color}}),e.name]},e.key))})]})]}),(0,a.jsxs)(`section`,{className:A.panel,"data-testid":`billing-token-models`,children:[(0,a.jsx)(`div`,{className:A.panelHead,children:(0,a.jsx)(`h3`,{className:A.panelTitle,children:o(`tokenByModel`)})}),T.length===0?(0,a.jsx)(`div`,{className:A.emptyRow,children:o(`noData`)}):(0,a.jsx)(`div`,{className:A.tableScroll,children:(0,a.jsxs)(`table`,{className:A.modelTable,"data-testid":`billing-token-model-table`,children:[(0,a.jsx)(`thead`,{children:(0,a.jsxs)(`tr`,{children:[(0,a.jsx)(`th`,{children:o(`model`)}),(0,a.jsx)(`th`,{className:A.numCol,children:o(`inputTokens`)}),(0,a.jsx)(`th`,{className:A.numCol,children:o(`outputTokens`)}),(0,a.jsx)(`th`,{className:A.numCol,children:o(`tokenReasoningShort`)}),(0,a.jsx)(`th`,{className:A.numCol,children:o(`cacheHitRate`)}),(0,a.jsx)(`th`,{className:A.numCol,children:o(`tokenTotal`)}),(0,a.jsx)(`th`,{className:A.numCol,children:o(`tokenShare`)}),(0,a.jsx)(`th`,{className:A.numCol,children:o(`calls`)})]})}),(0,a.jsx)(`tbody`,{children:T.map(e=>(0,a.jsxs)(`tr`,{"data-testid":`billing-token-model`,className:u(v&&A.modelRowFocusable,C===e.key&&A.modelRowActive),"aria-selected":v?C===e.key:void 0,onClick:v?()=>{w(e.key)}:void 0,children:[(0,a.jsx)(`td`,{children:(0,a.jsx)(`span`,{className:A.modelName,children:e.name})}),(0,a.jsx)(`td`,{className:A.numCol,children:q(e.input)}),(0,a.jsx)(`td`,{className:A.numCol,children:q(e.output)}),(0,a.jsx)(`td`,{className:A.numCol,children:e.reasoning>0?q(e.reasoning):(0,a.jsx)(`span`,{className:A.na,children:`—`})}),(0,a.jsxs)(`td`,{className:A.numCol,children:[e.cacheHitRate.toFixed(1),`%`]}),(0,a.jsx)(`td`,{className:A.numCol,children:q(e.total)}),(0,a.jsx)(`td`,{className:A.numCol,children:(0,a.jsxs)(`span`,{className:A.tokenModelShareRow,children:[(0,a.jsx)(`span`,{className:A.tokenModelBar,children:(0,a.jsxs)(`span`,{className:A.tokenModelParts,style:{width:`${(e.share*100).toFixed(2)}%`},children:[(0,a.jsx)(`span`,{className:A.tokenModelPartIn,style:{width:`${e.total>0?e.input/e.total*100:0}%`}}),(0,a.jsx)(`span`,{className:A.tokenModelPartOut,style:{width:`${e.total>0?e.output/e.total*100:0}%`}})]})}),(e.share*100).toFixed(1),`%`]})}),(0,a.jsx)(`td`,{className:A.numCol,children:e.calls.toLocaleString()})]},e.key))})]})})]}),ee.totalCalls>0&&(0,a.jsxs)(`section`,{className:A.panel,"data-testid":`billing-token-tools`,children:[(0,a.jsx)(`div`,{className:A.panelHead,children:(0,a.jsx)(`h3`,{className:A.panelTitle,children:o(`toolRank`)})}),(0,a.jsx)(`div`,{className:A.tableScroll,children:(0,a.jsxs)(`table`,{className:A.modelTable,"data-testid":`billing-tool-table`,children:[(0,a.jsx)(`thead`,{children:(0,a.jsxs)(`tr`,{children:[(0,a.jsx)(`th`,{children:o(`toolName`)}),(0,a.jsx)(`th`,{className:A.numCol,children:o(`calls`)}),(0,a.jsx)(`th`,{className:A.numCol,children:o(`tokenShare`)})]})}),(0,a.jsx)(`tbody`,{children:[...ee.top,...ee.rest].map(([e,t])=>(0,a.jsxs)(`tr`,{"data-testid":`billing-tool-row`,children:[(0,a.jsx)(`td`,{children:(0,a.jsx)(`span`,{className:A.modelName,children:e})}),(0,a.jsx)(`td`,{className:A.numCol,children:t.toLocaleString()}),(0,a.jsxs)(`td`,{className:A.numCol,children:[(t/ee.totalCalls*100).toFixed(1),`%`]})]},e))})]})})]})]})}function ot(e){return[`date,missInput,cacheHit,output,reasoning,total`,...e.map(e=>`${e.date},${e.miss},${e.hit},${e.output},${e.reasoning},${e.miss+e.hit+e.output}`)].join(`
|
|
2
2
|
`)}function st(e){let t=new Date(e),n=e=>String(e).padStart(2,`0`);return`${n(t.getHours())}:${n(t.getMinutes())}`}function ct(e){let t=new Date(e),n=e=>String(e).padStart(2,`0`);return`${t.getFullYear()}-${n(t.getMonth()+1)}-${n(t.getDate())} ${n(t.getHours())}:${n(t.getMinutes())}`}function lt(e){let t=Math.round(e/1e3);return t<60?`${t}s`:`${Math.floor(t/60)}m${String(t%60).padStart(2,`0`)}s`}function ut({rounds:e,flags:t,currency:n,t:i}){let o=(0,r.useMemo)(()=>e.slice(-40),[e]),s=(0,r.useMemo)(()=>new Set(t.map(e=>`${e.sessionId}:${e.turn}`)),[t]),c=(0,r.useMemo)(()=>Math.max(1e-4,...o.map(e=>e.cost)),[o]);if(o.length===0)return(0,a.jsxs)(`div`,{className:A.roundsEmpty,children:[i(`model`),` —`]});let l=e=>K(n===`usd`?Re(e):e,n);return(0,a.jsxs)(`div`,{className:A.rounds,children:[(0,a.jsx)(`div`,{className:A.roundsBars,role:`img`,"aria-label":`cost per turn`,children:o.map(e=>{let t=s.has(`${e.sessionId}:${e.turn}`),n=Math.max(1,e.cost/c*100),r=we(e.startedAt)===`peak`;return(0,a.jsxs)(`div`,{className:u(A.roundsBarCol,r?A.roundsBarColPeak:A.roundsBarColOff),children:[(0,a.jsx)(`span`,{className:A.roundsBarLabel,style:{bottom:`${n}%`},children:l(e.cost)}),(0,a.jsx)(`div`,{className:A.roundsBarWrap,children:(0,a.jsx)(`div`,{className:t?A.roundsBarFlagged:A.roundsBar,style:{height:`${n}%`},"data-testid":`round-bar`,title:`${i(`model`)} ${e.model} · ${l(e.cost)} · ${ct(e.startedAt)}${e.endedAt===void 0?``:` → ${st(e.endedAt)} (${lt(e.endedAt-e.startedAt)})`}`,children:t&&(0,a.jsx)(`span`,{className:A.roundsFlagMark,"aria-hidden":`true`})})})]},`${e.sessionId}:${e.turn}`)})}),(0,a.jsxs)(`div`,{className:A.roundsAxis,children:[(0,a.jsxs)(`span`,{children:[i(`costAbbr`),` `,l(c)]}),(0,a.jsxs)(`span`,{children:[o.length,` 轮`]})]})]})}let dt=[`var(--dsw-alias-bg-layer-2)`,`color-mix(in srgb, var(--dsw-static-green-500) 22%, var(--dsw-alias-bg-layer-2))`,`color-mix(in srgb, var(--dsw-static-green-500) 45%, var(--dsw-alias-bg-layer-2))`,`color-mix(in srgb, var(--dsw-static-green-500) 70%, var(--dsw-alias-bg-layer-2))`,`var(--dsw-static-green-500)`],ft=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`];function pt(e){let t=e=>String(e).padStart(2,`0`);return`${e.getFullYear()}-${t(e.getMonth()+1)}-${t(e.getDate())}`}function mt(e,t){let n=new Map;for(let t of e)n.set(t.date,t.value);let r=0;for(let e of n.values())e>r&&(r=e);let i=t.getFullYear(),a=t.getMonth(),o=t.getDate(),s=new Date(i,a+1,0).getDate(),c=new Date(i,a,1).getDay(),l=c+s,u=Math.ceil(l/7),d=[];for(let e=0;e<u;e+=1){let t=[];for(let l=0;l<7;l+=1){let u=e*7+l-c+1;if(u<1){let e=new Date(i,a,u);t.push({date:pt(e),dayNum:e.getDate(),value:0,level:0,placeholder:!0});continue}if(u>s){let e=new Date(i,a+1,u-s);t.push({date:pt(e),dayNum:e.getDate(),value:0,level:0,placeholder:!0});continue}let d=pt(new Date(i,a,u)),f=n.get(d)??0,p=0;if(f>0&&r>0){let e=Math.ceil(f/r*4);p=Math.min(4,Math.max(1,e))}let m=u>o;t.push({date:d,dayNum:u,value:m?0:f,level:m?0:p,placeholder:m})}d.push(t)}return d}function ht(e,t){let n=new Map;for(let t of e)n.set(t.date,t.value);let r=0;for(let e of n.values())e>r&&(r=e);let i=pt(t),a=new Date(t);a.setHours(0,0,0,0),a.setDate(a.getDate()-a.getDay());let o=new Date(a);o.setDate(a.getDate()-357);let s=[];for(let e=0;e<52;e+=1){let t=[];for(let a=0;a<7;a+=1){let s=new Date(o);s.setDate(o.getDate()+e*7+a);let c=pt(s),l=c>i,u=l?0:n.get(c)??0,d=0;if(!l&&u>0&&r>0){let e=Math.ceil(u/r*4);d=Math.min(4,Math.max(1,e))}t.push({date:c,dayNum:s.getDate(),value:u,level:d,placeholder:l})}s.push(t)}return s}function gt({days:e,currency:t,now:n,t:i,range:o=`month`}){let[s,c]=(0,r.useState)(null),l=e=>K(t===`usd`?Re(e):e,t),u=(0,r.useMemo)(()=>mt(e,n??new Date),[e,n]);if(o===`year`){let t=ht(e,n??new Date),r=[],o=-1;return t.forEach((e,t)=>{let n=Number(e[0]?.date.slice(5,7)??0);n!==o&&(r.push({index:t,label:ft[n-1]??``}),o=n)}),(0,a.jsxs)(`div`,{className:A.heatmapYear,"data-testid":`heatmap-year`,children:[(0,a.jsxs)(`div`,{className:A.heatmapYearBody,children:[(0,a.jsx)(`div`,{className:A.heatmapYearWeekdays,"aria-hidden":`true`,children:[{label:`Mon`,row:1},{label:`Wed`,row:3},{label:`Fri`,row:5}].map(e=>(0,a.jsx)(`span`,{className:A.heatmapYearWeekday,style:{gridRow:e.row},children:e.label},e.label))}),(0,a.jsxs)(`div`,{className:A.heatmapYearScroll,children:[(0,a.jsx)(`div`,{className:A.heatmapYearMonths,"aria-hidden":`true`,"data-testid":`heatmap-year-months`,children:r.map(e=>(0,a.jsx)(`span`,{className:A.heatmapYearMonth,style:{gridColumn:e.index+1},children:e.label},e.index))}),(0,a.jsx)(`div`,{className:A.heatmapYearGrid,role:`img`,"aria-label":`yearly cost heatmap`,"data-testid":`heatmap-year-grid`,children:t.flat().map(e=>(0,a.jsx)(`button`,{type:`button`,className:A.heatmapYearCell,"data-testid":`heatmap-year-cell`,"data-level":e.level,style:{background:dt[e.level]},title:`${e.date} · ${l(e.value)}`,"aria-label":`${e.date}: ${l(e.value)}`},e.date))})]})]}),(0,a.jsxs)(`div`,{className:A.heatmapFooter,children:[(0,a.jsx)(`span`,{className:A.heatmapLegendText,children:i(`heatmapLess`)}),(0,a.jsx)(`span`,{className:A.heatmapLegend,children:dt.map((e,t)=>(0,a.jsx)(`i`,{style:{background:e}},t))}),(0,a.jsx)(`span`,{className:A.heatmapLegendText,children:i(`heatmapMore`)})]})]})}return(0,a.jsxs)(`div`,{className:A.heatmap,children:[(0,a.jsx)(`div`,{className:A.heatmapGrid,role:`img`,"aria-label":`daily cost heatmap`,children:u.map(e=>e.map(e=>e.placeholder?(0,a.jsx)(`div`,{className:A.heatmapCellEmpty,children:e.dayNum},e.date):(0,a.jsx)(`button`,{type:`button`,className:A.heatmapCell,"data-testid":`heatmap-cell`,"data-level":e.level,style:{background:dt[e.level]},title:`${e.date} · ${l(e.value)}`,"aria-label":`${e.date}: ${l(e.value)}`,onMouseEnter:()=>{c(e)},onMouseLeave:()=>{c(null)},onFocus:()=>{c(e)},onBlur:()=>{c(null)},children:e.dayNum},e.date)))}),(0,a.jsxs)(`div`,{className:A.heatmapFooter,children:[(0,a.jsx)(`span`,{className:A.heatmapLegendText,children:i(`heatmapLess`)}),(0,a.jsx)(`span`,{className:A.heatmapLegend,children:dt.map((e,t)=>(0,a.jsx)(`i`,{style:{background:e}},t))}),(0,a.jsx)(`span`,{className:A.heatmapLegendText,children:i(`heatmapMore`)}),s!==null&&(0,a.jsxs)(`span`,{className:A.heatmapHover,"data-testid":`heatmap-hover`,children:[s.date,` · `,l(s.value)]})]})]})}let _t={window:6,threshold:2,reasonFactor:1.8,reasonHitDropPp:15};function vt(e){if(e.length===0)return null;let t=0;for(let n of e)t+=n;return t/e.length}function yt(e){let t=e.cacheHit+e.cacheMiss;return t<=0?null:e.cacheHit/t*100}function bt(e,t){let n=t?.window??_t.window,r=t?.threshold??_t.threshold,i=t?.reasonFactor??_t.reasonFactor,a=t?.reasonHitDropPp??_t.reasonHitDropPp,o=[];if(n<=0||r<=0)return o;let s=[],c=[],l=[],u=[];for(let t of e){if(t.cost<=0)continue;let e=t.output,d=t.input,f=yt(t),p=vt(s),m=[];if(p!==null&&p>0&&t.cost>p*r){let n=vt(c),r=vt(l),s=vt(u);n!==null&&n>0&&e>n*i&&m.push(`output-growth`),r!==null&&r>0&&d>r*i&&m.push(`context-bloat`),s!==null&&f!==null&&f<s-a&&m.push(`cache-hit-drop`),o.push({sessionId:t.sessionId,turn:t.turn,cost:t.cost,reasons:m})}for(s.push(t.cost),c.push(e),l.push(d),f!==null&&u.push(f);s.length>n;)s.shift();for(;c.length>n;)c.shift();for(;l.length>n;)l.shift();for(;u.length>n;)u.shift()}return o}function xt(e){return/[",\r\n]/.test(e)?`"${e.replace(/"/g,`""`)}"`:e}function St(e){return/^[=+\-@\t\r]/.test(e)?`'${e}`:e}function Ct(e){return e.toFixed(2)}function wt(e){return[`date,calls,input,output,cache_hit,cache_miss,cost_cny`,...Object.keys(e).sort().map(t=>{let n=e[t];return n===void 0?``:[t,n.calls,n.input,n.output,n.cacheHit,n.cacheMiss,Ct(n.cost)].join(`,`)})].join(`
|
|
3
3
|
`)}function Tt(e){return[`site,kind,calls,cost_cny`,...Object.entries(e).map(([e,t])=>{let n=e.startsWith(`site:`)?e.slice(5):e.startsWith(`direct:`)?e.slice(7):`unknown`,r=e.startsWith(`site:`)?`site`:e.startsWith(`direct:`)?`direct`:`unknown`;return[xt(St(n)),r,t.calls,Ct(t.cost)].join(`,`)})].join(`
|
|
4
4
|
`)}function Et(e){return e===void 0?``:e.split(/[\\/]/).filter(Boolean).pop()??e}function Dt(e){return[`session_id,title,project,calls,cost_cny,last_active`,...e.map(e=>[xt(St(e.id)),xt(St(e.title??``)),xt(St(Et(e.cwd))),e.calls,Ct(e.cost),e.lastActive>0?new Date(e.lastActive).toISOString():``].join(`,`))].join(`
|
package/lib/index.js
CHANGED
|
@@ -1781,7 +1781,8 @@ const DEFAULT_SUBSCRIPTION_PROVIDERS = [
|
|
|
1781
1781
|
"xiaomi-token-plan-ams",
|
|
1782
1782
|
"xiaomi-token-plan-cn",
|
|
1783
1783
|
"xiaomi-token-plan-sgp",
|
|
1784
|
-
"tencent-token-plan"
|
|
1784
|
+
"tencent-token-plan",
|
|
1785
|
+
"grok"
|
|
1785
1786
|
];
|
|
1786
1787
|
/**
|
|
1787
1788
|
* 官方渠道 provider id 判定:`deepseek` 前缀(DeepSeek 官方直连)视为官方,
|
|
@@ -1823,11 +1824,17 @@ function siteOriginOf(baseURL) {
|
|
|
1823
1824
|
* 把一个 provider 路由归类为站点引用。判定顺序(与路由在 provider 配置里的状态一致):
|
|
1824
1825
|
* - 路由存在于当前配置且配了 baseURL → 中转站 `site`(按 origin 归组,同站多 key 合并);
|
|
1825
1826
|
* - 路由存在于当前配置但无 baseURL → 厂商直连 `direct`;
|
|
1826
|
-
* -
|
|
1827
|
+
* - 路由不在当前配置里:内置官方直连(`deepseek` / `deepseek-*` 形态,不经 llm-pi-ai
|
|
1828
|
+
* 网关)按 `direct` 归位——unknown 一刀切会把官方直连的费用堆进「未知路由」组、
|
|
1829
|
+
* 且不算官方渠道(回归修复);订阅豁免命中的通道(显式 `subscriptionProviders`
|
|
1830
|
+
* 配置或判定函数)同样按 `direct` 归位——订阅管理类插件注册的通道不经路由表,
|
|
1831
|
+
* unknown 桶既掩盖归属又按 token 误计费(issue #37 的 grok build);其余配置外
|
|
1832
|
+
* 名称保留 unknown(无法核实通道)。
|
|
1827
1833
|
* @param provider - 会话日志里的 provider 路由名(request/header 的 `config.provider`)。
|
|
1828
1834
|
* @param routes - 当前 provider 路由视图(来自 llm-pi-ai providers)。
|
|
1835
|
+
* @param opts - `subscription`:该调用是否已被订阅豁免判定命中。
|
|
1829
1836
|
*/
|
|
1830
|
-
function siteRefOf(provider, routes) {
|
|
1837
|
+
function siteRefOf(provider, routes, opts = {}) {
|
|
1831
1838
|
const view = routes[provider];
|
|
1832
1839
|
if (view !== void 0) {
|
|
1833
1840
|
if (view.baseURL !== void 0) return {
|
|
@@ -1844,6 +1851,10 @@ function siteRefOf(provider, routes) {
|
|
|
1844
1851
|
kind: "direct",
|
|
1845
1852
|
provider
|
|
1846
1853
|
};
|
|
1854
|
+
if (opts.subscription === true) return {
|
|
1855
|
+
kind: "direct",
|
|
1856
|
+
provider
|
|
1857
|
+
};
|
|
1847
1858
|
return {
|
|
1848
1859
|
kind: "unknown",
|
|
1849
1860
|
provider
|
|
@@ -2214,7 +2225,7 @@ function foldInto(fold, machine, events, subscriptionProviders, officialProvider
|
|
|
2214
2225
|
const provider = routeAliases[rawProvider] ?? rawProvider;
|
|
2215
2226
|
key = resolveCatalogKey(model);
|
|
2216
2227
|
subscription = isSubscriptionCall(subscriptionProviders, provider);
|
|
2217
|
-
const siteRef = siteRefOf(provider, routes);
|
|
2228
|
+
const siteRef = siteRefOf(provider, routes, { subscription });
|
|
2218
2229
|
official = officialChannelOf(provider, siteRef, officialProviderIds);
|
|
2219
2230
|
siteBucket = siteBucketKey(siteRef);
|
|
2220
2231
|
if (lastOpenStepKey !== void 0) {
|
|
@@ -2272,7 +2283,7 @@ function foldInto(fold, machine, events, subscriptionProviders, officialProvider
|
|
|
2272
2283
|
const provider = routeAliases[source.provider] ?? source.provider;
|
|
2273
2284
|
key = resolveCatalogKey(source.model);
|
|
2274
2285
|
subscription = isSubscriptionCall(subscriptionProviders, provider);
|
|
2275
|
-
const siteRef = siteRefOf(provider, routes);
|
|
2286
|
+
const siteRef = siteRefOf(provider, routes, { subscription });
|
|
2276
2287
|
official = officialChannelOf(provider, siteRef, officialProviderIds);
|
|
2277
2288
|
siteBucket = siteBucketKey(siteRef);
|
|
2278
2289
|
}
|
|
@@ -2402,6 +2413,20 @@ function percentile(values, p) {
|
|
|
2402
2413
|
return a + (b - a) * (idx - lo);
|
|
2403
2414
|
}
|
|
2404
2415
|
/**
|
|
2416
|
+
* 聚合配置指纹:影响折叠语义的全部配置(订阅豁免、官方名单、路由别名、搜索估值)
|
|
2417
|
+
* 的稳定序列化。账本行的复用判定携带该指纹——用户改配置后(如为 grok build 加
|
|
2418
|
+
* 订阅豁免),历史账本行立即失效并全量重折,配置变更即时生效(issue #37)。
|
|
2419
|
+
* 判定函数无法序列化,统一记为 `fn`(任何函数形态互视为同一指纹)。
|
|
2420
|
+
*/
|
|
2421
|
+
function configFingerprint(subscriptionMatcher, officialProviderIds, routeAliases, searchEstimate) {
|
|
2422
|
+
return [
|
|
2423
|
+
typeof subscriptionMatcher === "function" ? "fn" : [...subscriptionMatcher].sort().join(","),
|
|
2424
|
+
officialProviderIds === void 0 ? "" : [...officialProviderIds].sort().join(","),
|
|
2425
|
+
Object.keys(routeAliases).sort().map((key) => `${key}=${routeAliases[key]}`).join(","),
|
|
2426
|
+
String(searchEstimate)
|
|
2427
|
+
].join("|");
|
|
2428
|
+
}
|
|
2429
|
+
/**
|
|
2405
2430
|
* Create the incremental usage aggregator.
|
|
2406
2431
|
* @param persistence - the session persistence service.
|
|
2407
2432
|
* @param options - aggregation tuning (e.g. subscription-plan providers).
|
|
@@ -2422,6 +2447,7 @@ function createUsageAggregator(persistence, options = {}) {
|
|
|
2422
2447
|
/** 每次聚合取最新的 provider 路由视图(中转站零配置发现);缺省按空处理(全部未知路由)。 */
|
|
2423
2448
|
const routesOf = () => options.resolveRoutes?.() ?? {};
|
|
2424
2449
|
const searchEstimate = options.searchCallEstimateCny ?? .02;
|
|
2450
|
+
const foldFingerprint = configFingerprint(subscriptionMatcher, officialProviderIds, routeAliases, searchEstimate);
|
|
2425
2451
|
const FOLD_CHUNK_EVENTS = 8e3;
|
|
2426
2452
|
/** 把一份(全量或增量)折叠结果登记进 durable ledger;内容无变化时不落盘。 */
|
|
2427
2453
|
const recordLedger = (id, cwd, stamp, fold) => {
|
|
@@ -2431,10 +2457,11 @@ function createUsageAggregator(persistence, options = {}) {
|
|
|
2431
2457
|
...cwd === void 0 ? {} : { cwd },
|
|
2432
2458
|
...stamp === null ? {} : { stamp },
|
|
2433
2459
|
foldVersion: 10,
|
|
2460
|
+
fingerprint: foldFingerprint,
|
|
2434
2461
|
fold: serializeFold(fold)
|
|
2435
2462
|
};
|
|
2436
2463
|
const row = ledger.get(id);
|
|
2437
|
-
if (row === void 0 || row.stamp !== entry.stamp || row.cwd !== entry.cwd || row.foldVersion !== entry.foldVersion || stamp === null && JSON.stringify(row.fold) !== JSON.stringify(entry.fold)) {
|
|
2464
|
+
if (row === void 0 || row.stamp !== entry.stamp || row.cwd !== entry.cwd || row.foldVersion !== entry.foldVersion || row.fingerprint !== entry.fingerprint || stamp === null && JSON.stringify(row.fold) !== JSON.stringify(entry.fold)) {
|
|
2438
2465
|
ledger.set(id, entry);
|
|
2439
2466
|
ledgerNeedsSave = true;
|
|
2440
2467
|
}
|
|
@@ -2508,7 +2535,7 @@ function createUsageAggregator(persistence, options = {}) {
|
|
|
2508
2535
|
try {
|
|
2509
2536
|
const cwd = meta.cwd;
|
|
2510
2537
|
const ledgerRow = ledger.get(id);
|
|
2511
|
-
if (ledgerRow !== void 0 && ledgerRow.stamp !== void 0 && stamp !== null && ledgerRow.stamp === stamp && (ledgerRow.foldVersion ?? 1) === 10) {
|
|
2538
|
+
if (ledgerRow !== void 0 && ledgerRow.stamp !== void 0 && stamp !== null && ledgerRow.stamp === stamp && (ledgerRow.foldVersion ?? 1) === 10 && ledgerRow.fingerprint === foldFingerprint) {
|
|
2512
2539
|
const fold = deserializeFold(ledgerRow.fold);
|
|
2513
2540
|
cache.set(id, {
|
|
2514
2541
|
stamp,
|
|
@@ -2592,7 +2619,7 @@ function createUsageAggregator(persistence, options = {}) {
|
|
|
2592
2619
|
for (const entry of ledger.values()) {
|
|
2593
2620
|
if (included.has(entry.id)) continue;
|
|
2594
2621
|
try {
|
|
2595
|
-
const stale = (entry.foldVersion ?? 1) < 10;
|
|
2622
|
+
const stale = (entry.foldVersion ?? 1) < 10 || entry.fingerprint !== foldFingerprint;
|
|
2596
2623
|
folds.push({
|
|
2597
2624
|
id: entry.id,
|
|
2598
2625
|
...entry.cwd === void 0 ? {} : { cwd: entry.cwd },
|
|
@@ -4330,10 +4357,11 @@ const SUBSCRIPTION_DISPLAY_NAMES = {
|
|
|
4330
4357
|
"minimax-token-plan-cn": "MiniMax Token Plan(国内)",
|
|
4331
4358
|
"minimax-cn": "MiniMax Token Plan(国内)",
|
|
4332
4359
|
"openrouter": "OpenRouter",
|
|
4333
|
-
"tencent-token-plan": "腾讯云 Token Plan"
|
|
4360
|
+
"tencent-token-plan": "腾讯云 Token Plan",
|
|
4361
|
+
"grok": "Grok(X Premium)"
|
|
4334
4362
|
};
|
|
4335
4363
|
/** 订阅类 provider id 判定:带 coding / agent-plan / token-plan 后缀,或已知订阅通道。 */
|
|
4336
|
-
const SUBSCRIPTION_ID_RE = /* @__PURE__ */ new RegExp("(?:^|-)(?:coding|agent[-_]?plan|token[-_]?plan)(?:$|-|_)|^(?:opencode|opencode-go|kimi-coding|zai-coding|minimax|minimax-cn|minimax-token-plan|minimax-token-plan-cn|openrouter)", "i");
|
|
4364
|
+
const SUBSCRIPTION_ID_RE = /* @__PURE__ */ new RegExp("(?:^|-)(?:coding|agent[-_]?plan|token[-_]?plan)(?:$|-|_)|^(?:opencode|opencode-go|kimi-coding|zai-coding|minimax|minimax-cn|minimax-token-plan|minimax-token-plan-cn|openrouter|grok)", "i");
|
|
4337
4365
|
/** 是否是订阅类 provider id(如 kimi-coding、xiaomi-token-plan-cn)。 */
|
|
4338
4366
|
function isSubscriptionProviderId(providerId) {
|
|
4339
4367
|
if (SUBSCRIPTION_ID_RE.test(providerId)) return true;
|
package/lib/types/aggregate.d.ts
CHANGED
|
@@ -69,11 +69,19 @@ export declare function siteOriginOf(baseURL: string): string;
|
|
|
69
69
|
* 把一个 provider 路由归类为站点引用。判定顺序(与路由在 provider 配置里的状态一致):
|
|
70
70
|
* - 路由存在于当前配置且配了 baseURL → 中转站 `site`(按 origin 归组,同站多 key 合并);
|
|
71
71
|
* - 路由存在于当前配置但无 baseURL → 厂商直连 `direct`;
|
|
72
|
-
* -
|
|
72
|
+
* - 路由不在当前配置里:内置官方直连(`deepseek` / `deepseek-*` 形态,不经 llm-pi-ai
|
|
73
|
+
* 网关)按 `direct` 归位——unknown 一刀切会把官方直连的费用堆进「未知路由」组、
|
|
74
|
+
* 且不算官方渠道(回归修复);订阅豁免命中的通道(显式 `subscriptionProviders`
|
|
75
|
+
* 配置或判定函数)同样按 `direct` 归位——订阅管理类插件注册的通道不经路由表,
|
|
76
|
+
* unknown 桶既掩盖归属又按 token 误计费(issue #37 的 grok build);其余配置外
|
|
77
|
+
* 名称保留 unknown(无法核实通道)。
|
|
73
78
|
* @param provider - 会话日志里的 provider 路由名(request/header 的 `config.provider`)。
|
|
74
79
|
* @param routes - 当前 provider 路由视图(来自 llm-pi-ai providers)。
|
|
80
|
+
* @param opts - `subscription`:该调用是否已被订阅豁免判定命中。
|
|
75
81
|
*/
|
|
76
|
-
export declare function siteRefOf(provider: string, routes: Readonly<Record<string, ProviderRouteView
|
|
82
|
+
export declare function siteRefOf(provider: string, routes: Readonly<Record<string, ProviderRouteView>>, opts?: {
|
|
83
|
+
subscription?: boolean;
|
|
84
|
+
}): SiteRef;
|
|
77
85
|
/** 站点桶的稳定 key:`site:<origin>` 与 `direct:<provider>` 分开,`unknown` 单一桶。 */
|
|
78
86
|
export declare function siteBucketKey(ref: SiteRef): string;
|
|
79
87
|
/** Aggregation tuning options. */
|
|
@@ -437,6 +445,11 @@ export interface UsageLedgerSession {
|
|
|
437
445
|
* 旧算法行(加载边界由迁移统一回填为 1)。
|
|
438
446
|
*/
|
|
439
447
|
foldVersion?: number;
|
|
448
|
+
/**
|
|
449
|
+
* 折叠该行时的聚合配置指纹({@link configFingerprint})。缺失 = 1.0.32 及
|
|
450
|
+
* 更早写入的行(配置不参与复用判定);与当前指纹不一致的行不复用、全量重折。
|
|
451
|
+
*/
|
|
452
|
+
fingerprint?: string;
|
|
440
453
|
fold: SerializedSessionFold;
|
|
441
454
|
}
|
|
442
455
|
/** On-disk durable usage ledger. Versioned independently from the dashboard document. */
|
|
@@ -528,6 +541,13 @@ export interface UsageAggregator {
|
|
|
528
541
|
/** Aggregate current usage, reusing cached per-session folds when their logs are untouched. */
|
|
529
542
|
aggregate(): Promise<UsageStatsDocument>;
|
|
530
543
|
}
|
|
544
|
+
/**
|
|
545
|
+
* 聚合配置指纹:影响折叠语义的全部配置(订阅豁免、官方名单、路由别名、搜索估值)
|
|
546
|
+
* 的稳定序列化。账本行的复用判定携带该指纹——用户改配置后(如为 grok build 加
|
|
547
|
+
* 订阅豁免),历史账本行立即失效并全量重折,配置变更即时生效(issue #37)。
|
|
548
|
+
* 判定函数无法序列化,统一记为 `fn`(任何函数形态互视为同一指纹)。
|
|
549
|
+
*/
|
|
550
|
+
export declare function configFingerprint(subscriptionMatcher: SubscriptionMatcher, officialProviderIds: ReadonlySet<string> | undefined, routeAliases: Readonly<Record<string, string>>, searchEstimate: number): string;
|
|
531
551
|
/**
|
|
532
552
|
* Create the incremental usage aggregator.
|
|
533
553
|
* @param persistence - the session persistence service.
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kenz1117/dsh-ui-usage-billing",
|
|
3
3
|
"description": "Usage billing dashboard for DeepSeek Harness: sidebar cost metrics plus a full dashboard modal, priced from a current multi-provider catalog with real usage aggregated from session logs.",
|
|
4
|
-
"version": "1.0.
|
|
4
|
+
"version": "1.0.34",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"deepseek-harness",
|
|
7
7
|
"deepseek",
|