@kenz1117/dsh-ui-usage-billing 0.9.20 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/client.js CHANGED
@@ -60,7 +60,7 @@ window.__ModuleLoader__.load({
60
60
  }
61
61
  //#endregion
62
62
  //#region \0dsh-css:/Users/ken/deepseek-harness/packages/client/ui-usage-billing/src/client/UsageBilling.module.css.mjs
63
- const css = ".VWh0dG_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}.VWh0dG_railButton:hover,.VWh0dG_railButton:focus-visible{border-color:var(--dsw-static-blue-500);color:var(--dsw-static-blue-500);outline:none}.VWh0dG_railButton svg{stroke-width:2px;width:18px;height:18px}.VWh0dG_trigger{border:1px solid color-mix(in srgb, var(--dsw-alias-border-l1) 82%, transparent);background:color-mix(in srgb, var(--dsw-alias-bg-layer-2) 78%, transparent);-webkit-backdrop-filter:blur(10px)saturate(1.2);width:100%;min-width:0;box-shadow:inset 0 1px 0 color-mix(in srgb, var(--dsw-alias-label-primary) 7%, transparent);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}.VWh0dG_trigger:hover,.VWh0dG_trigger:focus-visible{border-color:var(--dsw-static-blue-500);box-shadow:inset 0 1px 0 color-mix(in srgb, var(--dsw-alias-label-primary) 10%, transparent), 0 6px 18px -6px color-mix(in srgb, var(--dsw-static-blue-500) 45%, transparent);outline:none;transform:translateY(-1px)}.VWh0dG_triggerIcon{background:linear-gradient(135deg, var(--dsw-static-blue-500), var(--dsw-static-blue-400));width:30px;height:30px;color:var(--dsw-static-neutral-bluish-00);box-shadow:0 3px 10px -3px color-mix(in srgb, var(--dsw-static-blue-500) 60%, transparent), inset 0 1px 0 color-mix(in srgb, var(--dsw-static-neutral-bluish-00) 22%, transparent);border-radius:10px;flex:none;justify-content:center;align-items:center;display:inline-flex}.VWh0dG_triggerIcon svg{stroke-width:2px;width:16px;height:16px}.VWh0dG_triggerBody{flex-direction:column;flex:1;gap:1px;min-width:0;display:flex}.VWh0dG_triggerRow{align-items:baseline;gap:5px;min-width:0;display:inline-flex}.VWh0dG_triggerAmount{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:17px;font-weight:700;line-height:21px;overflow:hidden}.VWh0dG_triggerSub{color:var(--dsw-alias-label-tertiary);white-space:nowrap;text-overflow:ellipsis;font-size:10px;line-height:14px;overflow:hidden}.VWh0dG_triggerMeta{color:var(--dsw-alias-label-tertiary);white-space:nowrap;letter-spacing:.02em;text-transform:uppercase;text-overflow:ellipsis;min-width:0;font-size:9.5px;font-weight:600;line-height:12px;overflow:hidden}.VWh0dG_triggerSpark{flex:none;align-items:flex-end;gap:2px;height:20px;display:flex}.VWh0dG_triggerSparkBar,.VWh0dG_triggerSparkHot{background:var(--dsw-static-blue-500);opacity:.6;border-radius:1px 1px 0 0;width:3px}.VWh0dG_triggerSparkHot{opacity:1}.VWh0dG_triggerWrap{flex:auto;width:100%;min-width:0;display:block;position:relative;container:VWh0dG_billing-trigger/inline-size}@container VWh0dG_billing-trigger (width<=280px){.VWh0dG_trigger{gap:6px;padding:8px 10px}.VWh0dG_triggerSpark{display:none}}@container VWh0dG_billing-trigger (width<=230px){.VWh0dG_triggerSub{display:none}.VWh0dG_triggerMeta{letter-spacing:0}}@container VWh0dG_billing-trigger (width<=120px){.VWh0dG_triggerIcon,.VWh0dG_triggerSpark,.VWh0dG_triggerSub,.VWh0dG_triggerMeta{display:none}.VWh0dG_trigger{justify-content:center;padding:8px 6px}}.VWh0dG_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-2) 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;pointer-events:none;z-index:10;border-radius:14px;flex-direction:column;gap:5px;padding:10px 12px;transition:opacity .16s,transform .16s;display:flex;position:absolute;bottom:calc(100% + 8px);left:0;right:0;overflow:hidden;transform:translateY(4px)}.VWh0dG_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 VWh0dG_subscriptionGoldFlow;position:absolute;top:0;left:0;right:0}.VWh0dG_triggerWrap:hover .VWh0dG_triggerPop,.VWh0dG_triggerWrap:focus-within .VWh0dG_triggerPop{opacity:1;transform:translateY(0)}.VWh0dG_triggerPopRow{white-space:nowrap;justify-content:space-between;align-items:baseline;gap:12px;display:flex}.VWh0dG_triggerPopLabel{letter-spacing:.01em;color:var(--dsw-alias-label-tertiary);white-space:nowrap;flex:none;font-size:10.5px;line-height:16px}.VWh0dG_triggerPopValue{min-width:0;color:var(--dsw-alias-label-primary);font-variant-numeric:tabular-nums;justify-content:flex-end;align-items:baseline;gap:8px;font-size:12.5px;font-weight:600;line-height:17px;display:inline-flex}.VWh0dG_triggerPopName{text-overflow:ellipsis;white-space:nowrap;max-width:110px;color:var(--dsw-alias-label-secondary);font-size:12px;font-weight:500;overflow:hidden}.VWh0dG_triggerPopTitle{color:var(--dsw-alias-label-primary);white-space:nowrap;align-items:baseline;gap:8px;font-size:12px;font-weight:700;display:flex}.VWh0dG_triggerPopTitleMonth{color:var(--dsw-alias-label-tertiary);font-size:11px;font-weight:500}.VWh0dG_triggerPopStrong{color:var(--dsw-alias-label-primary);margin-left:8px;font-size:12.5px;font-weight:700}.VWh0dG_triggerPopAlert{color:var(--dsw-static-red-500);white-space:nowrap;font-size:11px;line-height:16px}.VWh0dG_triggerPopValueStack{flex-direction:column;align-items:flex-end;gap:2px;display:flex}.VWh0dG_triggerPopMuted{color:var(--dsw-alias-label-tertiary);font-weight:500}.VWh0dG_triggerPopHead{justify-content:space-between;align-items:baseline;gap:10px;display:flex}.VWh0dG_triggerPopUpdated{color:var(--dsw-alias-label-tertiary);white-space:nowrap;font-size:10px}.VWh0dG_triggerPopMetrics{grid-template-columns:1fr 1fr;gap:7px 12px;display:grid}.VWh0dG_triggerPopMetric{flex-direction:column;align-items:flex-start;gap:1px;display:flex}.VWh0dG_triggerPopMetricLabel{color:var(--dsw-alias-label-tertiary);white-space:nowrap;font-size:10px}.VWh0dG_triggerPopMetricValue{color:var(--dsw-alias-label-primary);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:14px;font-weight:700;line-height:18px}.VWh0dG_triggerPopMetricHighlight{color:var(--dsw-static-amber-500)}.VWh0dG_triggerPopFoot{border-top:1px solid color-mix(in srgb, var(--dsw-alias-border-l1) 70%, transparent);flex-direction:column;gap:4px;padding-top:6px;display:flex}.VWh0dG_triggerPopFootTitle{text-align:center;letter-spacing:.05em;color:var(--dsw-alias-label-tertiary);border-bottom:1px solid color-mix(in srgb, var(--dsw-alias-border-l1) 70%, transparent);padding-bottom:4px;font-size:10px;font-weight:600}.VWh0dG_triggerPopFootNotes{flex-direction:column;gap:1px;min-width:0;display:flex}.VWh0dG_triggerPopFootNote{align-items:baseline;gap:4px;min-width:0;display:flex}.VWh0dG_triggerPopFootName{color:var(--dsw-alias-label-tertiary);white-space:nowrap;text-overflow:ellipsis;font-size:10px;overflow:hidden}.VWh0dG_triggerPopBadge{white-space:nowrap;border-radius:5px;flex:none;padding:1px 6px;font-size:9.5px;font-weight:600;line-height:14px}.VWh0dG_triggerPopBadgeDirect{background:color-mix(in srgb, var(--dsw-alias-label-primary) 12%, transparent);color:var(--dsw-alias-label-primary)}.VWh0dG_triggerPopBadgeSub{background:color-mix(in srgb, var(--dsw-static-amber-500) 18%, transparent);color:var(--dsw-static-amber-500)}.VWh0dG_triggerPopFootStrong{color:var(--dsw-alias-label-secondary);font-weight:600}.VWh0dG_triggerPopFootStatus{color:var(--dsw-alias-label-primary);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:14px;font-weight:700;line-height:18px}.VWh0dG_triggerPopFootStatusLow{color:var(--dsw-static-red-500)}.VWh0dG_triggerPopOpenBtn{pointer-events:auto;border:1px solid color-mix(in srgb, var(--dsw-alias-border-l1) 80%, transparent);color:var(--dsw-alias-label-primary);background:color-mix(in srgb, var(--dsw-alias-bg-layer-3) 70%, transparent);cursor:pointer;border-radius:999px;flex:none;padding:5px 11px;font-size:11px;font-weight:600;transition:border-color .16s,background-color .16s}.VWh0dG_triggerPopOpenBtn:hover{border-color:var(--dsw-static-blue-500);background:color-mix(in srgb, var(--dsw-static-blue-500) 12%, var(--dsw-alias-bg-layer-3))}.VWh0dG_triggerPopBars{border-top:1px solid var(--dsw-alias-border-l1);align-items:flex-end;gap:4px;height:22px;margin-top:4px;padding-top:8px;display:flex}.VWh0dG_triggerPopBar{background:var(--dsw-static-blue-500);border-radius:2px;flex:1;transition:height .2s}.VWh0dG_dashboardModal{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-1);width:min(760px,100vw - 48px);max-height:min(760px,88vh);box-shadow:var(--dsw-shadow-lv3);animation:.18s ease-out VWh0dG_dashboardIn}@keyframes VWh0dG_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)}.VWh0dG_dashboard{flex-direction:column;width:100%;max-height:min(760px,88vh);display:flex}.VWh0dG_dashboardHead{border-bottom:1px solid var(--dsw-alias-border-l1);justify-content:space-between;align-items:flex-start;gap:12px;padding:20px 24px 14px;display:flex}.VWh0dG_dashboardTitle{color:var(--dsw-alias-label-primary);margin:0;font-size:17px;font-weight:600;line-height:24px}.VWh0dG_dashboardSubtitle{color:var(--dsw-alias-label-caption);margin:3px 0 0;font-size:12px;line-height:17px}.VWh0dG_closeButton{width:30px;height:30px;color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:none;border-radius:8px;flex:none;justify-content:center;align-items:center;transition:background-color .14s;display:inline-flex}.VWh0dG_closeButton:hover{background:var(--dsw-alias-interactive-bg-hover)}.VWh0dG_closeButton svg{stroke-width:2px;width:16px;height:16px}.VWh0dG_dashboardBody{flex-direction:column;gap:14px;padding:16px 24px 24px;display:flex;overflow-y:auto}.VWh0dG_tabNav{border-bottom:1px solid var(--dsw-alias-border-l1);align-items:center;gap:4px;padding:10px 24px;display:flex}.VWh0dG_tabButton{color:var(--dsw-alias-label-tertiary);cursor:pointer;background:0 0;border:none;border-radius:999px;padding:5px 14px;font-size:12.5px;font-weight:500;line-height:18px;transition:background-color .16s,color .16s,box-shadow .16s}.VWh0dG_tabButton:hover,.VWh0dG_tabButton:focus-visible{color:var(--dsw-alias-label-primary);background:var(--dsw-alias-interactive-bg-hover);outline:none}.VWh0dG_tabButtonActive,.VWh0dG_tabButtonActive:hover,.VWh0dG_tabButtonActive:focus-visible{background:var(--dsw-static-blue-500);color:var(--dsw-static-neutral-bluish-00);font-weight:600}.VWh0dG_tabPanel{flex-direction:column;gap:14px;animation:.14s ease-out VWh0dG_tabPanelIn;display:flex}@keyframes VWh0dG_tabPanelIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}.VWh0dG_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}.VWh0dG_reconcileIcon{color:var(--dsw-alias-label-tertiary);flex:none;margin-top:1px;display:inline-flex}.VWh0dG_reconcileText{flex:1}.VWh0dG_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}.VWh0dG_reconcileDismiss:hover{color:var(--dsw-alias-label-primary);background:color-mix(in srgb, var(--dsw-alias-label-primary) 8%, transparent)}.VWh0dG_hero{border:1px solid var(--dsw-alias-border-l1);background:linear-gradient(180deg, var(--dsw-alias-bg-layer-2), var(--dsw-alias-bg-layer-1));box-shadow:inset 0 1px 0 color-mix(in srgb, var(--dsw-static-neutral-bluish-00) 30%, transparent);border-radius:16px;flex-direction:column;gap:18px;padding:22px 24px;display:flex;position:relative;overflow:hidden}.VWh0dG_heroTop{justify-content:space-between;align-items:center;gap:24px;display:flex}.VWh0dG_heroMain{flex-direction:column;gap:2px;min-width:0;display:flex}.VWh0dG_heroLabel{color:var(--dsw-alias-label-tertiary);text-transform:uppercase;letter-spacing:.08em;white-space:nowrap;font-size:11px;line-height:16px}.VWh0dG_heroReadout{align-items:baseline;gap:4px;display:flex}.VWh0dG_heroCurrency{letter-spacing:-.01em;color:var(--dsw-alias-label-secondary);font-variant-numeric:tabular-nums;font-size:20px;font-weight:600;line-height:30px}.VWh0dG_heroValue{letter-spacing:-.03em;font-variant-numeric:tabular-nums;white-space:nowrap;color:var(--dsw-alias-label-primary);font-size:56px;font-weight:700;line-height:64px}.VWh0dG_heroMeta{color:var(--dsw-alias-label-caption);white-space:nowrap;margin-top:4px;font-size:12px;line-height:17px}.VWh0dG_heroGauge{flex:none;width:96px;height:96px;position:relative}.VWh0dG_heroGaugeSvg{width:100%;height:100%;display:block;transform:rotate(-90deg)}.VWh0dG_heroGaugeTrack{fill:none;stroke:var(--dsw-alias-bg-module-platform);stroke-width:9px}.VWh0dG_heroGaugeArc{fill:none;stroke:var(--dsw-static-blue-500);stroke-width:9px;stroke-linecap:round;transition:stroke-dasharray .26s}.VWh0dG_heroGaugeArcOver{stroke:var(--dsw-static-red-500)}.VWh0dG_heroGaugeCenter{flex-direction:column;justify-content:center;align-items:center;gap:1px;display:flex;position:absolute;inset:0}.VWh0dG_heroGaugePct{letter-spacing:-.02em;font-variant-numeric:tabular-nums;color:var(--dsw-alias-label-primary);font-size:18px;font-weight:700;line-height:22px}.VWh0dG_heroGaugePctOver{color:var(--dsw-static-red-500)}.VWh0dG_heroGaugeLabel{color:var(--dsw-alias-label-tertiary);font-size:10px;line-height:14px}.VWh0dG_heroSide{border-top:1px solid var(--dsw-alias-border-l1);align-items:stretch;padding-top:14px;display:flex}.VWh0dG_heroSideItem{flex-direction:column;flex:1;gap:3px;min-width:0;padding-left:16px;display:flex}.VWh0dG_heroSideItem:first-child{padding-left:0}.VWh0dG_heroSideLabel{color:var(--dsw-alias-label-tertiary);white-space:nowrap;font-size:11px;line-height:15px}.VWh0dG_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:18px;font-weight:600;line-height:24px;display:inline-flex}.VWh0dG_heroSideSpacer{flex:1;display:block}.VWh0dG_delta{align-items:center;gap:2px;margin-left:4px;font-size:11px;font-weight:600;line-height:17px;display:inline-flex}.VWh0dG_deltaUp{color:var(--dsw-static-green-500)}.VWh0dG_deltaDown{color:var(--dsw-static-red-500)}.VWh0dG_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}.VWh0dG_kpiGrid{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;display:grid}.VWh0dG_kpiTile{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-1);border-radius:14px;flex-direction:column;gap:3px;padding:14px 15px;transition:border-color .16s;display:flex;position:relative;overflow:hidden}.VWh0dG_kpiTile:hover{border-color:var(--dsw-alias-border-l2)}.VWh0dG_kpiLabel{color:var(--dsw-alias-label-tertiary);font-size:11px;line-height:15px}.VWh0dG_kpiValue{color:var(--dsw-alias-label-primary);font-variant-numeric:tabular-nums;letter-spacing:-.01em;font-size:22px;font-weight:600;line-height:28px}.VWh0dG_kpiGreen{color:var(--dsw-static-green-500)}.VWh0dG_kpiDetail{color:var(--dsw-alias-label-caption);white-space:nowrap;text-overflow:ellipsis;font-size:11px;line-height:15px;overflow:hidden}.VWh0dG_panel{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-1);border-radius:16px;flex-direction:column;gap:10px;padding:16px 18px;transition:border-color .16s;display:flex}.VWh0dG_panelHead{justify-content:space-between;align-items:baseline;gap:10px;display:flex}.VWh0dG_panelTitle{letter-spacing:-.005em;color:var(--dsw-alias-label-primary);margin:0;font-size:14px;font-weight:600;line-height:20px}.VWh0dG_panelHint{color:var(--dsw-alias-label-caption);white-space:nowrap;font-size:11px;line-height:16px}.VWh0dG_pricingTip{color:var(--dsw-alias-label-caption);margin:0 0 2px;font-size:11px;line-height:16px}.VWh0dG_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}.VWh0dG_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}.VWh0dG_rangeButtonActive{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary);font-weight:600}.VWh0dG_exportBar{justify-content:flex-end;align-items:center;gap:8px;display:flex}.VWh0dG_exportLabel{color:var(--dsw-alias-label-caption);font-size:11px;line-height:16px}.VWh0dG_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}.VWh0dG_exportButton:hover,.VWh0dG_exportButton:focus-visible{border-color:var(--dsw-alias-border-l2);color:var(--dsw-alias-label-primary);outline:none}.VWh0dG_shareTrack{background:var(--dsw-alias-bg-module-platform);border-radius:999px;height:10px;display:flex;overflow:hidden}.VWh0dG_shareSeg{height:100%;transition:width .2s}.VWh0dG_shareSegPeak{background:var(--dsw-static-blue-500)}.VWh0dG_shareSegOff{background:color-mix(in srgb, var(--dsw-static-blue-500) 25%, var(--dsw-alias-bg-module-platform))}.VWh0dG_shareSegUser{background:var(--dsw-static-blue-500)}.VWh0dG_shareSegAssistant{background:var(--dsw-static-green-500)}.VWh0dG_shareSegTool{background:var(--dsw-static-amber-500)}.VWh0dG_shareLegend{align-items:center;gap:16px;display:flex}.VWh0dG_shareItem{color:var(--dsw-alias-label-secondary);align-items:baseline;gap:6px;font-size:12px;line-height:17px;display:inline-flex}.VWh0dG_bucketCost{align-items:baseline;gap:3px;display:inline-flex}.VWh0dG_bucketOfficial{color:var(--dsw-static-blue-500);font-weight:600}.VWh0dG_bucketSep{color:var(--dsw-alias-label-dimmed)}.VWh0dG_bucketThird{color:var(--dsw-alias-label-secondary)}.VWh0dG_bucketSummary{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;display:grid}.VWh0dG_bucketStat{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-2);border-radius:12px;flex-direction:column;gap:4px;padding:12px 14px;display:flex}.VWh0dG_bucketStatLabel{color:var(--dsw-alias-label-tertiary);text-transform:uppercase;letter-spacing:.05em;font-size:11px;line-height:15px}.VWh0dG_bucketStatValue{color:var(--dsw-alias-label-primary);font-variant-numeric:tabular-nums;letter-spacing:-.01em;font-size:20px;font-weight:700;line-height:26px}.VWh0dG_bucketStatSub{color:var(--dsw-alias-label-caption);font-variant-numeric:tabular-nums;font-size:11px;line-height:16px}.VWh0dG_shareDot{border-radius:50%;flex:none;align-self:center;width:8px;height:8px}.VWh0dG_shareValue{color:var(--dsw-alias-label-primary);font-variant-numeric:tabular-nums;font-weight:600}.VWh0dG_budget{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-1);border-radius:14px;flex-direction:column;gap:8px;padding:12px 16px;display:flex}.VWh0dG_budgetHead{justify-content:space-between;align-items:baseline;gap:10px;display:flex}.VWh0dG_budgetLabel{color:var(--dsw-alias-label-primary);font-size:13px;font-weight:600}.VWh0dG_budgetValue{color:var(--dsw-alias-label-secondary);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:12px;line-height:17px}.VWh0dG_budgetControls{align-items:center;gap:8px;min-width:0;display:inline-flex}.VWh0dG_budgetInputWrap{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-1);border-radius:6px;align-items:center;gap:2px;padding:2px 6px;display:inline-flex}.VWh0dG_budgetInputWrap:focus-within{border-color:var(--dsw-alias-border-l3)}.VWh0dG_budgetUnit{color:var(--dsw-alias-label-tertiary);font-size:11px;line-height:16px}.VWh0dG_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}.VWh0dG_budgetInput:focus-visible{outline:none}.VWh0dG_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}.VWh0dG_switchOn{border-color:var(--dsw-alias-border-l1);background:var(--dsw-alias-label-primary)}.VWh0dG_switchKnob{background:var(--dsw-static-neutral-bluish-00);border-radius:50%;width:11px;height:11px;transition:transform .16s;position:absolute;top:2px;left:2px}.VWh0dG_switchOn .VWh0dG_switchKnob{transform:translate(13px)}.VWh0dG_budgetTrack{background:var(--dsw-alias-bg-module-platform);border-radius:999px;height:6px;overflow:hidden}.VWh0dG_budgetFill{background:var(--dsw-static-blue-500);border-radius:999px;height:100%;transition:width .2s}.VWh0dG_budgetFillWarn{background:var(--dsw-static-amber-500)}.VWh0dG_budgetFillOver{background:var(--dsw-static-red-500);animation:1.6s ease-in-out infinite VWh0dG_budgetOverPulse}@keyframes VWh0dG_budgetOverPulse{50%{opacity:.55}}.VWh0dG_chartWrap{width:100%;position:relative}.VWh0dG_chartSvg{width:100%;height:auto;display:block}.VWh0dG_chartEmpty{height:140px;color:var(--dsw-alias-label-caption);justify-content:center;align-items:center;font-size:13px;display:flex}.VWh0dG_emptyRow{text-align:center;color:var(--dsw-alias-label-caption);padding:28px 0;font-size:13px}.VWh0dG_chartGrid{stroke:var(--dsw-alias-border-l1);stroke-width:1px}.VWh0dG_chartAxisLabel{fill:var(--dsw-alias-label-tertiary);font-size:10px}.VWh0dG_chartBar{fill:var(--dsw-static-blue-500);opacity:.7}.VWh0dG_chartBar:hover{opacity:1}.VWh0dG_chartStack{stroke:var(--dsw-alias-bg-layer-1);stroke-width:.75px}.VWh0dG_chartStack:hover{opacity:.9}.VWh0dG_chartLine{stroke:var(--dsw-static-blue-500);stroke-width:2px;stroke-linecap:round;stroke-linejoin:round}.VWh0dG_chartCrosshair{stroke:var(--dsw-alias-label-dimmed);stroke-width:1px;stroke-dasharray:3 3}.VWh0dG_chartDot{fill:var(--dsw-static-neutral-bluish-00);stroke:var(--dsw-static-blue-500);stroke-width:2px}.VWh0dG_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))}.VWh0dG_chartTooltipDate{color:var(--dsw-alias-label-primary);margin-bottom:3px;font-size:11px;font-weight:600}.VWh0dG_chartTooltipRow{color:var(--dsw-alias-label-secondary);align-items:center;gap:5px;font-size:11px;line-height:17px;display:flex}.VWh0dG_chartTooltipRow strong{color:var(--dsw-alias-label-primary);font-variant-numeric:tabular-nums;font-weight:600}.VWh0dG_chartBarPlaceholder{fill:color-mix(in srgb, var(--dsw-alias-label-secondary) 30%, transparent)}.VWh0dG_chartLegendLine{background:var(--dsw-static-blue-500);border-radius:2px;width:10px;height:3px;display:inline-block}.VWh0dG_chartLegendBar{background:var(--dsw-static-blue-500);opacity:.5;border-radius:2px;width:7px;height:7px;display:inline-block}.VWh0dG_chartTooltipSwatch{border-radius:3px;flex:none;width:8px;height:8px;display:inline-block}.VWh0dG_chartLegend{color:var(--dsw-alias-label-tertiary);justify-content:flex-end;gap:14px;margin-top:2px;font-size:11px;display:flex}.VWh0dG_chartLegend span{align-items:center;gap:5px;display:inline-flex}.VWh0dG_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}.VWh0dG_modelTable,.VWh0dG_pricingTable{border-collapse:collapse;width:100%;font-size:12.5px}.VWh0dG_modelTable th,.VWh0dG_modelTable td,.VWh0dG_pricingTable th,.VWh0dG_pricingTable td{border-bottom:1px solid var(--dsw-alias-border-l1);text-align:left;white-space:nowrap;padding:9px 12px}.VWh0dG_modelTable tbody tr:last-child td,.VWh0dG_pricingTable tbody tr:last-child td{border-bottom:0}.VWh0dG_modelTable thead th,.VWh0dG_pricingTable thead th{color:var(--dsw-alias-label-tertiary);text-transform:uppercase;letter-spacing:.05em;background:0 0;font-size:11px;font-weight:600}.VWh0dG_modelTable tbody tr,.VWh0dG_pricingTable tbody tr{transition:background-color .12s}.VWh0dG_modelTable tbody tr:hover,.VWh0dG_pricingTable tbody tr:hover{background:0 0}.VWh0dG_numCol{text-align:right;font-variant-numeric:tabular-nums}.VWh0dG_costCol{color:var(--dsw-alias-label-primary);font-weight:600}.VWh0dG_na{color:var(--dsw-alias-label-dimmed)}.VWh0dG_modelCell{align-items:center;gap:8px;display:inline-flex}.VWh0dG_modelDot{border-radius:50%;flex:none;width:9px;height:9px}.VWh0dG_modelName{color:var(--dsw-alias-label-primary);font-weight:500;line-height:16px;display:block}.VWh0dG_modelProvider{color:var(--dsw-alias-label-caption);font-size:10.5px;line-height:14px;display:block}.VWh0dG_pricingToggle{cursor:pointer;text-align:left;background:0 0;border:none;justify-content:space-between;align-items:center;gap:10px;width:100%;padding:0;display:flex}.VWh0dG_pricingToggle:hover .VWh0dG_panelTitle,.VWh0dG_pricingToggle:focus-visible .VWh0dG_panelTitle{color:var(--dsw-alias-label-primary)}.VWh0dG_rateBadge{vertical-align:1px;white-space:nowrap;border-radius:999px;align-items:center;margin-left:6px;padding:1px 6px;font-size:10px;font-weight:500;line-height:14px;display:inline-flex}.VWh0dG_rateBadgeLive{color:var(--dsw-static-green-500);background:var(--dsw-alias-bg-layer-2)}.VWh0dG_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}.VWh0dG_siteRowName{align-items:center;gap:8px;min-width:0;display:inline-flex}.VWh0dG_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}.VWh0dG_siteKindSite{color:var(--dsw-static-blue-500);background:color-mix(in srgb, var(--dsw-static-blue-500) 14%, transparent)}.VWh0dG_siteKindDirect{color:var(--dsw-static-green-500);background:color-mix(in srgb, var(--dsw-static-green-500) 14%, transparent)}.VWh0dG_siteKindUnknown{color:var(--dsw-static-red-500);background:color-mix(in srgb, var(--dsw-static-red-500) 14%, transparent)}.VWh0dG_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}.VWh0dG_siteRowMeta{flex:none;align-items:center;gap:10px;display:inline-flex}.VWh0dG_siteRowCost{color:var(--dsw-alias-label-primary);font-variant-numeric:tabular-nums;font-size:12.5px;font-weight:700;line-height:18px}.VWh0dG_siteRowCalls{color:var(--dsw-alias-label-secondary);font-variant-numeric:tabular-nums;font-size:11.5px;line-height:17px}.VWh0dG_siteRowCallsLow{color:var(--dsw-static-red-500)}.VWh0dG_rateBadgeBuiltin{color:var(--dsw-alias-label-tertiary);background:var(--dsw-alias-bg-layer-2)}.VWh0dG_pricingToggleText{align-items:baseline;gap:10px;min-width:0;display:flex}.VWh0dG_pricingChevron{width:16px;height:16px;color:var(--dsw-alias-label-tertiary);flex:none;transition:transform .16s}.VWh0dG_pricingChevronOpen{transform:rotate(180deg)}.VWh0dG_bandPrice{align-items:baseline;gap:6px;display:inline-flex}.VWh0dG_bandPriceOff{color:var(--dsw-alias-label-caption)}.VWh0dG_bandPriceOff:before{content:\"/\";color:var(--dsw-alias-label-dimmed);margin-right:4px}.VWh0dG_bandTag{color:var(--dsw-alias-label-secondary);flex-direction:column;gap:1px;font-size:10.5px;line-height:14px;display:inline-flex}.VWh0dG_bandTagOff{color:var(--dsw-static-green-500);font-weight:600}.VWh0dG_bandTag>span:first-child{color:var(--dsw-alias-label-primary);font-weight:500}.VWh0dG_flatTag{color:var(--dsw-alias-label-caption);font-size:10.5px;line-height:14px}.VWh0dG_healthDot{border-radius:50%;flex:none;width:8px;height:8px;display:inline-block}.VWh0dG_healthOk{background:var(--dsw-static-green-500)}.VWh0dG_healthBad{background:var(--dsw-static-red-500)}.VWh0dG_healthIdle{background:var(--dsw-static-neutral-bluish-400)}.VWh0dG_dashboardRight{align-items:center;gap:8px;min-width:0;display:flex}.VWh0dG_healthBadge{white-space:nowrap;border-radius:999px;align-items:center;gap:6px;padding:3px 9px;font-size:11px;line-height:16px;display:inline-flex}.VWh0dG_healthBadgeOk{color:var(--dsw-static-green-500);background:var(--dsw-alias-bg-layer-2)}.VWh0dG_healthBadgeBad{color:var(--dsw-static-red-500);background:var(--dsw-alias-bg-layer-2)}.VWh0dG_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}.VWh0dG_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}.VWh0dG_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}.VWh0dG_liveCostBar{color:var(--dsw-static-neutral-400);font-variant-numeric:tabular-nums;align-items:center;gap:6px;font-size:11px;line-height:16px;display:inline-flex}.VWh0dG_liveCostItem{white-space:nowrap}.VWh0dG_liveCostSep{color:var(--dsw-static-neutral-300)}.VWh0dG_liveTierPeak{color:var(--dsw-static-blue-500);font-weight:600}.VWh0dG_liveTierOff{color:var(--dsw-static-green-500);font-weight:600}.VWh0dG_liveQuotaWarn{color:var(--dsw-static-amber-500);font-weight:600}.VWh0dG_liveQuotaCrit{color:var(--dsw-static-red-500);font-weight:600}.VWh0dG_balanceCell{align-items:center;gap:6px;display:inline-flex;position:relative}.VWh0dG_balanceDays{color:var(--dsw-alias-label-caption);white-space:nowrap;font-size:10.5px;line-height:14px}.VWh0dG_balanceDaysLow{color:var(--dsw-static-red-500);font-weight:600}.VWh0dG_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}.VWh0dG_balanceDaysBadge:hover{border-color:var(--dsw-alias-label-secondary);background:color-mix(in srgb, var(--dsw-alias-label-caption) 18%, transparent)}.VWh0dG_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)}.VWh0dG_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}.VWh0dG_balanceDetailHead{justify-content:space-between;align-items:center;gap:12px;display:flex}.VWh0dG_balanceDetailTitle{color:var(--dsw-alias-label-primary);font-size:12px;font-weight:600}.VWh0dG_balanceDetailClose{cursor:pointer;color:var(--dsw-alias-label-caption);background:0 0;border:none;font-size:14px;line-height:1}.VWh0dG_balanceDetailClose:hover{color:var(--dsw-alias-label-primary)}.VWh0dG_balanceDetailGrid{flex-direction:column;gap:4px;display:inline-flex}.VWh0dG_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}.VWh0dG_balanceDetailLabel{color:var(--dsw-alias-label-caption)}.VWh0dG_balanceDetailValue{color:var(--dsw-alias-label-primary);font-weight:500}body[data-zine-mode] .VWh0dG_trigger,body[data-zine-mode] .VWh0dG_triggerPop,body[data-zine-mode] .VWh0dG_railButton{display:none}body[data-zine-mode] .VWh0dG_dashboardHead{background:#000;border-bottom:2px solid #e8ff00}body[data-zine-mode] .VWh0dG_headTitleRow{align-items:center;gap:8px;margin-top:4px;display:flex}body[data-zine-mode] .VWh0dG_dashboardTitle{color:#e8ff00;letter-spacing:.04em;text-transform:uppercase;text-shadow:0 0 8px #e8ff0066;font-weight:900}body[data-zine-mode] .VWh0dG_dashboardSubtitle{color:#c9d98a;letter-spacing:.08em;text-transform:uppercase;font-size:10px}body[data-zine-mode] .VWh0dG_closeButton{color:#0a0a05;background:#ff2d95;border:1.5px solid #ff2d95;border-radius:0;box-shadow:0 0 10px #ff2d9573}body[data-zine-mode] .VWh0dG_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] .VWh0dG_heroLabel{color:#c9d98a;letter-spacing:.12em;text-transform:uppercase;font-size:10px;font-weight:900}body[data-zine-mode] .VWh0dG_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] .VWh0dG_heroMeta{color:#c9d98a;letter-spacing:.06em;text-transform:uppercase;font-size:10.5px}body[data-zine-mode] .VWh0dG_heroSideLabel{color:#c9d98a;letter-spacing:.1em;text-transform:uppercase;font-size:10px;font-weight:900}body[data-zine-mode] .VWh0dG_heroSideValue{color:#e8ff00;text-shadow:0 0 6px #e8ff0059}body[data-zine-mode] .VWh0dG_delta{font-weight:900}body[data-zine-mode] .VWh0dG_deltaUp{color:#ff2d95}body[data-zine-mode] .VWh0dG_deltaDown{color:#c9d98a}body[data-zine-mode] .VWh0dG_tabNav{background:#000;border-bottom:2px solid #e8ff00}body[data-zine-mode] .VWh0dG_tabButton{color:#c9d98a;letter-spacing:.08em;text-transform:uppercase;border-radius:0;font-size:10.5px;font-weight:900}body[data-zine-mode] .VWh0dG_tabButton:hover,body[data-zine-mode] .VWh0dG_tabButton:focus-visible{color:#e8ff00;background:#e8ff001f}body[data-zine-mode] .VWh0dG_tabButtonActive,body[data-zine-mode] .VWh0dG_tabButtonActive:hover,body[data-zine-mode] .VWh0dG_tabButtonActive:focus-visible{color:#0a0a05;background:#e8ff00;box-shadow:0 0 10px #e8ff0073}body[data-zine-mode] .VWh0dG_panel{background:#000;border:2px solid #e8ff00;border-radius:0}body[data-zine-mode] .VWh0dG_trendPanel{position:relative}body[data-zine-mode] .VWh0dG_panelTitle{color:#e8ff00;letter-spacing:.06em;text-transform:uppercase;text-shadow:0 0 6px #e8ff0066;font-weight:900}body[data-zine-mode] .VWh0dG_panelHint{color:#c9d98a;letter-spacing:.08em;text-transform:uppercase;font-size:10px;font-weight:900}body[data-zine-mode] .VWh0dG_modelTableScroll{background:#000;border:1.5px solid #e8ff0080;border-radius:0}.VWh0dG_currencyToggle{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-2);border-radius:6px;align-items:center;gap:2px;margin-right:8px;padding:2px;display:inline-flex}.VWh0dG_currencyButton{color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:0;border-radius:4px;padding:4px 7px;font-size:11px;font-weight:700;line-height:1}.VWh0dG_currencyButtonActive{background:var(--dsw-alias-bg-layer-1);color:var(--dsw-alias-label-primary)}.VWh0dG_subscriptionGrid{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:10px;margin-top:10px;display:grid}.VWh0dG_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}.VWh0dG_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 VWh0dG_subscriptionGoldFlow;position:absolute;top:0;left:0;right:0}@keyframes VWh0dG_subscriptionGoldFlow{0%{background-position:200% 0}to{background-position:-200% 0}}.VWh0dG_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}.VWh0dG_subscriptionHead{flex-wrap:wrap;align-items:baseline;gap:6px;margin-bottom:8px;display:flex}.VWh0dG_subscriptionName{font-size:13px;font-weight:700}.VWh0dG_subscriptionPlan{color:var(--dsw-alias-label-secondary);font-size:11px}.VWh0dG_subscriptionPlan[data-kind=code],.VWh0dG_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}.VWh0dG_subscriptionTier{color:var(--dsw-alias-label-secondary);margin-left:6px}.VWh0dG_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}.VWh0dG_subscriptionStatus{color:var(--dsw-alias-label-secondary);margin-bottom:6px;font-size:11px}.VWh0dG_subscriptionWindow{align-items:center;gap:10px;margin-top:8px;font-size:11px;display:flex}.VWh0dG_subscriptionWindowLabel{color:var(--dsw-alias-label-secondary);flex:0 0 44px}.VWh0dG_subscriptionTrack{background:var(--dsw-alias-bg-layer-3);border-radius:3px;flex:1;height:6px;overflow:hidden}.VWh0dG_subscriptionFill{background:var(--dsw-static-blue-500);border-radius:3px;height:100%;transition:width .2s;display:block}.VWh0dG_subscriptionFillWarn{background:var(--dsw-static-amber-500)}.VWh0dG_subscriptionFillOver{background:var(--dsw-static-red-500)}.VWh0dG_subscriptionMeta{flex-direction:column;flex:none;align-items:flex-end;gap:2px;display:flex}.VWh0dG_subscriptionPct{text-align:right;font-variant-numeric:tabular-nums;flex:none;min-width:52px}.VWh0dG_subscriptionExhausted{color:var(--dsw-static-red-500);min-width:52px;font-weight:600}.VWh0dG_subscriptionReset{color:var(--dsw-alias-label-caption);white-space:nowrap;flex:none;font-size:10px}.VWh0dG_providerGroupList{flex-direction:column;gap:10px;display:flex}.VWh0dG_providerGroup{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-1);border-radius:12px;padding:12px 14px}.VWh0dG_providerGroupHead{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.VWh0dG_providerGroupTitle{align-items:center;gap:7px;min-width:0;display:inline-flex}.VWh0dG_providerGroupName{color:var(--dsw-alias-label-primary);font-size:13px;font-weight:600;line-height:18px}.VWh0dG_providerGroupMeta{flex:none;align-items:center;gap:10px;display:inline-flex}.VWh0dG_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}.VWh0dG_providerGroupBalance{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}.VWh0dG_providerGroupBalanceLabel{color:var(--dsw-alias-label-caption);font-size:11px;line-height:17px}.VWh0dG_roundsFlagBadge{color:var(--dsw-static-neutral-bluish-00);background:var(--dsw-static-red-500);border-radius:999px;margin-left:8px;padding:1px 7px;font-size:10px;font-weight:800}.VWh0dG_rounds{margin-top:10px}.VWh0dG_roundsBars{align-items:flex-end;gap:3px;height:124px;padding:16px 2px 0;display:flex;overflow-x:auto}.VWh0dG_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}.VWh0dG_roundsBarColPeak{background:color-mix(in srgb, var(--dsw-static-amber-500) 16%, transparent)}.VWh0dG_roundsBarColOff{background:var(--dsw-alias-bg-module-platform)}.VWh0dG_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%)}.VWh0dG_roundsBarWrap{flex:1;align-items:flex-end;min-height:0;display:flex}.VWh0dG_roundsBar{background:var(--dsw-static-blue-500);border-radius:2px 2px 0 0;width:100%;min-height:2px;position:relative}.VWh0dG_roundsBarFlagged{background:var(--dsw-static-red-500);border-radius:2px 2px 0 0;width:100%;min-height:2px;position:relative}.VWh0dG_roundsFlagMark{background:var(--dsw-static-red-500);border-radius:50%;width:7px;height:7px;position:absolute;top:-3px;right:-3px}.VWh0dG_roundsAxis{color:var(--dsw-alias-label-secondary);justify-content:space-between;margin-top:6px;font-size:10px;display:flex}.VWh0dG_roundsEmpty{color:var(--dsw-alias-label-secondary);margin-top:10px;font-size:12px}.VWh0dG_heatmap{margin-top:10px}.VWh0dG_heatmapGrid{grid-template-columns:repeat(7,minmax(0,1fr));gap:8px;display:grid}.VWh0dG_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}.VWh0dG_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}.VWh0dG_heatmapCell[data-level=\"0\"],.VWh0dG_heatmapCell[data-level=\"1\"],.VWh0dG_heatmapCell[data-level=\"2\"]{color:var(--dsw-alias-label-primary)}.VWh0dG_heatmapCell[data-level=\"3\"],.VWh0dG_heatmapCell[data-level=\"4\"]{color:var(--dsw-static-neutral-bluish-00)}.VWh0dG_heatmapFooter{color:var(--dsw-alias-label-secondary);align-items:center;gap:8px;margin-top:10px;font-size:10px;display:flex}.VWh0dG_heatmapLegend{gap:3px;display:inline-flex}.VWh0dG_heatmapLegend i{border-radius:4px;width:14px;height:14px;display:block}.VWh0dG_heatmapHover{font-variant-numeric:tabular-nums;margin-left:auto}.VWh0dG_heatmapRangeSwitch{gap:4px;margin-left:auto;display:inline-flex}.VWh0dG_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}.VWh0dG_heatmapRangeButtonActive{color:var(--dsw-alias-text-primary);border-color:currentColor;font-weight:600}.VWh0dG_heatmapYear{flex-direction:column;gap:6px;display:flex}.VWh0dG_heatmapYearBody{align-items:flex-start;gap:6px;display:flex}.VWh0dG_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}.VWh0dG_heatmapYearWeekday{white-space:nowrap;text-align:right;height:11px}.VWh0dG_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}.VWh0dG_heatmapYearMonth{white-space:nowrap;overflow:visible}.VWh0dG_heatmapYearScroll{padding-bottom:2px;overflow-x:auto}.VWh0dG_heatmapYearGrid{grid-template-rows:repeat(7,11px);grid-auto-flow:column;gap:3px;min-width:max-content;display:grid}.VWh0dG_heatmapYearCell{cursor:pointer;border:0;border-radius:2px;width:11px;height:11px;padding:0}.VWh0dG_triggerPopSubscription{width:auto;left:0;right:0}.VWh0dG_floatSub{flex-direction:column;gap:6px;min-width:0;display:flex}.VWh0dG_floatSubHead{flex-wrap:wrap;align-items:baseline;gap:6px;min-width:0;display:flex}.VWh0dG_floatSubName{color:var(--dsw-alias-label-primary);font-size:12px;font-weight:700}.VWh0dG_floatSubPlan{color:var(--dsw-alias-label-secondary);font-size:10px}.VWh0dG_floatSub .VWh0dG_subscriptionWindow{flex-wrap:wrap;gap:4px 10px}.VWh0dG_floatSub .VWh0dG_subscriptionWindowLabel{flex:none}.VWh0dG_floatSub .VWh0dG_subscriptionMeta{min-width:0;max-width:100%}.VWh0dG_floatSub .VWh0dG_subscriptionPct{min-width:0}.VWh0dG_floatSub .VWh0dG_subscriptionReset{white-space:normal;overflow-wrap:anywhere}.VWh0dG_triggerPopEmpty{color:var(--dsw-alias-label-tertiary);padding:2px 0;font-size:11px;line-height:1.5}.VWh0dG_triggerPopSwitcher{justify-content:flex-end;align-items:center;gap:8px;margin-top:2px;display:flex}.VWh0dG_triggerPopSwitchBtn{color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:0;border-radius:6px;padding:2px 4px;font-size:14px;line-height:1}.VWh0dG_triggerPopSwitchBtn:hover{color:var(--dsw-alias-label-primary);background:color-mix(in srgb, var(--dsw-alias-border-l1) 45%, transparent)}.VWh0dG_triggerPopSwitchCount{color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;font-size:10px}.VWh0dG_floatModeRow{gap:8px;margin-bottom:8px;display:flex}.VWh0dG_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);cursor:pointer;border-radius:10px;flex:1;padding:7px 10px;font-size:12px}.VWh0dG_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)}.VWh0dG_floatTargets{flex-wrap:wrap;gap:6px;margin-bottom:8px;display:flex}.VWh0dG_floatTarget{color:var(--dsw-alias-label-secondary);cursor:pointer;align-items:center;gap:5px;font-size:12px;display:inline-flex}.VWh0dG_floatTargetLabel{color:var(--dsw-alias-label-secondary)}.VWh0dG_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}.VWh0dG_pluginInfo{flex-direction:column;gap:8px;margin-top:10px;display:flex}.VWh0dG_pluginInfoRow{align-items:baseline;gap:12px;font-size:12px;display:flex}.VWh0dG_pluginInfoLabel{color:var(--dsw-alias-label-secondary);flex:0 0 72px}.VWh0dG_pluginInfoValue{color:var(--dsw-alias-label-primary);word-break:break-all}.VWh0dG_pluginInfoLink{color:var(--dsw-static-blue-500);word-break:break-all;text-decoration:none}.VWh0dG_pluginInfoLink:hover{text-decoration:underline}.VWh0dG_tokenPanel{flex-direction:column;gap:14px;display:flex}.VWh0dG_tokenModelBar{background:var(--dsw-alias-bg-layer-2);border-radius:999px;height:8px;overflow:hidden}.VWh0dG_tokenModelParts{height:100%;display:flex}.VWh0dG_tokenModelPartIn{background:var(--dsw-static-blue-500)}.VWh0dG_tokenModelPartOut{background:var(--dsw-static-amber-500)}.VWh0dG_tokenModelShareRow{align-items:center;gap:6px;display:inline-flex}@media (width<=640px){.VWh0dG_kpiGrid{grid-template-columns:repeat(2,minmax(0,1fr))}.VWh0dG_hero{gap:14px}.VWh0dG_heroTop{flex-direction:column;align-items:flex-start;gap:12px}.VWh0dG_heroGauge{width:72px;height:72px}.VWh0dG_heroSide{gap:12px}.VWh0dG_heroSideSpacer{display:none}}.VWh0dG_peakAlert{z-index:2000;border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-1);border-radius:12px;align-items:center;gap:12px;min-width:300px;max-width:460px;padding:10px 12px;animation:.2s VWh0dG_peakAlertIn;display:flex;position:fixed;box-shadow:0 4px 16px #00000014}.VWh0dG_peakAlertCorner{bottom:18px;right:18px}.VWh0dG_peakAlertCenter{top:20%;left:50%;transform:translate(-50%)}.VWh0dG_peakAlertTag{letter-spacing:.01em;color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-bg-layer-3);white-space:nowrap;border-radius:999px;flex:none;align-items:center;gap:6px;padding:3px 9px;font-size:11px;font-weight:650;display:inline-flex}.VWh0dG_peakAlertTag:before{content:\"\";background:currentColor;border-radius:50%;width:6px;height:6px}.VWh0dG_peakAlertPeak .VWh0dG_peakAlertTag{color:var(--dsw-static-amber-500)}.VWh0dG_peakAlertOff .VWh0dG_peakAlertTag{color:var(--dsw-static-blue-500)}.VWh0dG_peakAlertCountdown{font-variant-numeric:tabular-nums;color:var(--dsw-alias-label-primary);flex:none;font-size:18px;font-weight:700;line-height:1}.VWh0dG_peakAlertText{min-width:0;color:var(--dsw-alias-label-secondary);flex:1;font-size:12px;line-height:18px}.VWh0dG_peakAlertClose{width:20px;height:20px;color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:0;border-radius:6px;flex:none;justify-content:center;align-items:center;font-size:15px;line-height:1;transition:background-color .14s,color .14s;display:inline-flex}.VWh0dG_peakAlertClose:hover{color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-layer-2)}@keyframes VWh0dG_peakAlertIn{0%{opacity:0}to{opacity:1}}.VWh0dG_peakAlertPanel{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-1);border-radius:16px;flex-direction:column;gap:10px;padding:14px 16px;display:flex}.VWh0dG_peakAlertPanelHead{justify-content:space-between;align-items:center;gap:10px;display:flex}.VWh0dG_peakAlertPanelLabel{color:var(--dsw-alias-label-primary);font-size:13px;font-weight:600}.VWh0dG_peakAlertPanelBody{flex-wrap:wrap;align-items:center;gap:12px 16px;display:flex}.VWh0dG_peakAlertField{color:var(--dsw-alias-label-secondary);align-items:center;gap:8px;font-size:12px;display:inline-flex}.VWh0dG_peakAlertNum{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-2);width:56px;color:var(--dsw-alias-label-primary);font-variant-numeric:tabular-nums;border-radius:6px;padding:4px 6px}.VWh0dG_peakAlertSelect{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-2);color:var(--dsw-alias-label-primary);border-radius:6px;padding:4px 6px;font-size:12px}.VWh0dG_peakAlertCheck{color:var(--dsw-alias-label-secondary);align-items:center;gap:6px;font-size:12px;display:inline-flex}.VWh0dG_peakAlertPreview{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-2);color:var(--dsw-alias-label-primary);cursor:pointer;border-radius:6px;padding:5px 10px;font-size:12px}.VWh0dG_peakAlertPreview:hover{background:var(--dsw-alias-bg-layer-3)}.VWh0dG_settingsHead{flex-direction:column;gap:4px;margin-bottom:2px;display:flex}.VWh0dG_settingsTitle{letter-spacing:-.005em;color:var(--dsw-alias-label-primary);margin:0;font-size:15px;font-weight:650;line-height:22px}.VWh0dG_settingsHint{color:var(--dsw-alias-label-caption);margin:0;font-size:11px;line-height:16px}.VWh0dG_budgetHint,.VWh0dG_peakAlertHint{color:var(--dsw-alias-label-caption);margin:6px 0 0;font-size:11px;line-height:16px}";
63
+ const css = ".VWh0dG_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}.VWh0dG_railButton:hover,.VWh0dG_railButton:focus-visible{border-color:var(--dsw-static-blue-500);color:var(--dsw-static-blue-500);outline:none}.VWh0dG_railButton svg{stroke-width:2px;width:18px;height:18px}.VWh0dG_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}.VWh0dG_trigger:hover,.VWh0dG_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)}.VWh0dG_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}.VWh0dG_triggerIcon svg{stroke-width:2px;width:16px;height:16px}.VWh0dG_triggerMain{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.VWh0dG_triggerPrimary{align-items:baseline;gap:5px;min-width:0;display:inline-flex}.VWh0dG_triggerLabel{color:var(--dsw-alias-label-tertiary);white-space:nowrap;text-overflow:ellipsis;min-width:0;font-size:11px;line-height:15px;overflow:hidden}.VWh0dG_triggerYen{color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;font-size:12px;font-weight:600;line-height:16px}.VWh0dG_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}.VWh0dG_triggerSub{color:var(--dsw-alias-label-tertiary);white-space:nowrap;text-overflow:ellipsis;font-size:10px;line-height:14px;overflow:hidden}.VWh0dG_triggerSpark{flex:none;align-items:flex-end;gap:2px;height:20px;display:flex}.VWh0dG_triggerSparkBar,.VWh0dG_triggerSparkHot{background:var(--dsw-static-blue-500);opacity:.6;border-radius:1px 1px 0 0;width:3px}.VWh0dG_triggerSparkHot{opacity:1}.VWh0dG_triggerWrap{flex:auto;width:100%;min-width:0;display:block;position:relative;container:VWh0dG_billing-trigger/inline-size}@container VWh0dG_billing-trigger (width<=200px){.VWh0dG_trigger{gap:6px;padding:8px 10px}.VWh0dG_triggerSpark{display:none}}@container VWh0dG_billing-trigger (width<=170px){.VWh0dG_triggerSub,.VWh0dG_triggerLabel{display:none}}@container VWh0dG_billing-trigger (width<=110px){.VWh0dG_triggerIcon,.VWh0dG_triggerSpark,.VWh0dG_triggerSub,.VWh0dG_triggerLabel{display:none}.VWh0dG_trigger{justify-content:center;padding:8px 6px}}.VWh0dG_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-2) 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;pointer-events:none;z-index:10;border-radius:14px;flex-direction:column;gap:5px;padding:10px 12px;transition:opacity .16s,transform .16s;display:flex;position:absolute;bottom:calc(100% + 8px);left:0;right:0;overflow:hidden;transform:translateY(4px)}.VWh0dG_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 VWh0dG_subscriptionGoldFlow;position:absolute;top:0;left:0;right:0}.VWh0dG_triggerWrap:hover .VWh0dG_triggerPop,.VWh0dG_triggerWrap:focus-within .VWh0dG_triggerPop{opacity:1;transform:translateY(0)}.VWh0dG_popHead{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.VWh0dG_popTitle{color:var(--dsw-alias-label-primary);font-size:13px;font-weight:700;line-height:18px}.VWh0dG_metricGrid{grid-template-columns:repeat(3,1fr);gap:10px 8px;display:grid}.VWh0dG_metricCell{flex-direction:column;gap:2px;min-width:0;display:flex}.VWh0dG_metricLabel{color:var(--dsw-alias-label-tertiary);font-size:10px;line-height:14px}.VWh0dG_metricValue{color:var(--dsw-alias-label-primary);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:12px;font-weight:700;line-height:16px}.VWh0dG_metricValuePrimary{color:var(--dsw-static-amber-500)}.VWh0dG_metricValueSuccess{color:var(--dsw-static-green-500)}.VWh0dG_popModel{border-top:1px solid var(--dsw-alias-border-l1);flex-direction:column;gap:6px;padding-top:10px;display:flex}.VWh0dG_popModelLabel{color:var(--dsw-alias-label-tertiary);font-size:10px;line-height:14px}.VWh0dG_popModelRow{align-items:center;gap:8px;min-width:0;display:flex}.VWh0dG_popDot{border-radius:999px;flex:none;width:6px;height:6px}.VWh0dG_popDotDirect{background:var(--dsw-static-green-500)}.VWh0dG_popDotSub{background:var(--dsw-static-amber-500)}.VWh0dG_popDotNeutral{background:var(--dsw-alias-label-tertiary)}.VWh0dG_popTagPrimary,.VWh0dG_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}.VWh0dG_popTagPrimary{background:color-mix(in srgb, var(--dsw-static-blue-500) 14%, transparent);color:var(--dsw-static-blue-500)}.VWh0dG_popTagSub{background:color-mix(in srgb, var(--dsw-static-amber-500) 18%, transparent);color:var(--dsw-static-amber-500)}.VWh0dG_popModelName{color:var(--dsw-alias-label-secondary);text-overflow:ellipsis;white-space:nowrap;font-size:11px;font-weight:500;line-height:16px;overflow:hidden}.VWh0dG_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}.VWh0dG_popModelStatusLow{color:var(--dsw-static-red-500)}.VWh0dG_triggerPopRow{white-space:nowrap;justify-content:space-between;align-items:baseline;gap:12px;display:flex}.VWh0dG_triggerPopLabel{letter-spacing:.01em;color:var(--dsw-alias-label-tertiary);white-space:nowrap;flex:none;font-size:10.5px;line-height:16px}.VWh0dG_triggerPopValue{min-width:0;color:var(--dsw-alias-label-primary);font-variant-numeric:tabular-nums;justify-content:flex-end;align-items:baseline;gap:8px;font-size:12.5px;font-weight:600;line-height:17px;display:inline-flex}.VWh0dG_triggerPopName{text-overflow:ellipsis;white-space:nowrap;max-width:110px;color:var(--dsw-alias-label-secondary);font-size:12px;font-weight:500;overflow:hidden}.VWh0dG_triggerPopTitle{color:var(--dsw-alias-label-primary);white-space:nowrap;align-items:baseline;gap:8px;font-size:12px;font-weight:700;display:flex}.VWh0dG_triggerPopTitleMonth{color:var(--dsw-alias-label-tertiary);font-size:11px;font-weight:500}.VWh0dG_triggerPopStrong{color:var(--dsw-alias-label-primary);margin-left:8px;font-size:12.5px;font-weight:700}.VWh0dG_triggerPopAlert{color:var(--dsw-static-red-500);white-space:nowrap;font-size:11px;line-height:16px}.VWh0dG_triggerPopValueStack{flex-direction:column;align-items:flex-end;gap:2px;display:flex}.VWh0dG_triggerPopMuted{color:var(--dsw-alias-label-tertiary);font-weight:500}.VWh0dG_triggerPopHead{justify-content:space-between;align-items:baseline;gap:10px;display:flex}.VWh0dG_triggerPopUpdated{color:var(--dsw-alias-label-tertiary);white-space:nowrap;font-size:10px}.VWh0dG_triggerPopMetrics{grid-template-columns:1fr 1fr;gap:7px 12px;display:grid}.VWh0dG_triggerPopMetric{flex-direction:column;align-items:flex-start;gap:1px;display:flex}.VWh0dG_triggerPopMetricLabel{color:var(--dsw-alias-label-tertiary);white-space:nowrap;font-size:10px}.VWh0dG_triggerPopMetricValue{color:var(--dsw-alias-label-primary);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:14px;font-weight:700;line-height:18px}.VWh0dG_triggerPopMetricHighlight{color:var(--dsw-static-amber-500)}.VWh0dG_triggerPopFoot{border-top:1px solid color-mix(in srgb, var(--dsw-alias-border-l1) 70%, transparent);flex-direction:column;gap:4px;padding-top:6px;display:flex}.VWh0dG_triggerPopFootTitle{text-align:center;letter-spacing:.05em;color:var(--dsw-alias-label-tertiary);border-bottom:1px solid color-mix(in srgb, var(--dsw-alias-border-l1) 70%, transparent);padding-bottom:4px;font-size:10px;font-weight:600}.VWh0dG_triggerPopFootNotes{flex-direction:column;gap:1px;min-width:0;display:flex}.VWh0dG_triggerPopFootNote{align-items:baseline;gap:4px;min-width:0;display:flex}.VWh0dG_triggerPopFootName{color:var(--dsw-alias-label-tertiary);white-space:nowrap;text-overflow:ellipsis;font-size:10px;overflow:hidden}.VWh0dG_triggerPopBadge{white-space:nowrap;border-radius:5px;flex:none;padding:1px 6px;font-size:9.5px;font-weight:600;line-height:14px}.VWh0dG_triggerPopBadgeDirect{background:color-mix(in srgb, var(--dsw-alias-label-primary) 12%, transparent);color:var(--dsw-alias-label-primary)}.VWh0dG_triggerPopBadgeSub{background:color-mix(in srgb, var(--dsw-static-amber-500) 18%, transparent);color:var(--dsw-static-amber-500)}.VWh0dG_triggerPopFootStrong{color:var(--dsw-alias-label-secondary);font-weight:600}.VWh0dG_triggerPopFootStatus{color:var(--dsw-alias-label-primary);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:14px;font-weight:700;line-height:18px}.VWh0dG_triggerPopFootStatusLow{color:var(--dsw-static-red-500)}.VWh0dG_triggerPopOpenBtn{pointer-events:auto;border:1px solid color-mix(in srgb, var(--dsw-alias-border-l1) 80%, transparent);color:var(--dsw-alias-label-primary);background:color-mix(in srgb, var(--dsw-alias-bg-layer-3) 70%, transparent);cursor:pointer;border-radius:999px;flex:none;padding:5px 11px;font-size:11px;font-weight:600;transition:border-color .16s,background-color .16s}.VWh0dG_triggerPopOpenBtn:hover{border-color:var(--dsw-static-blue-500);background:color-mix(in srgb, var(--dsw-static-blue-500) 12%, var(--dsw-alias-bg-layer-3))}.VWh0dG_triggerPopBars{border-top:1px solid var(--dsw-alias-border-l1);align-items:flex-end;gap:4px;height:22px;margin-top:4px;padding-top:8px;display:flex}.VWh0dG_triggerPopBar{background:var(--dsw-static-blue-500);border-radius:2px;flex:1;transition:height .2s}.VWh0dG_dashboardModal{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-1);border-radius:16px;width:min(760px,100vw - 48px);max-height:min(760px,88vh);animation:.18s ease-out VWh0dG_dashboardIn;box-shadow:0 12px 32px -12px #0000002e,0 2px 8px #0000000f}@keyframes VWh0dG_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)}.VWh0dG_dashboard{flex-direction:column;width:100%;max-height:min(760px,88vh);display:flex}.VWh0dG_dashboardHead{border-bottom:1px solid var(--dsw-alias-border-l1);justify-content:space-between;align-items:center;gap:12px;padding:20px 24px;display:flex}.VWh0dG_dashboardTitle{color:var(--dsw-alias-label-primary);margin:0;font-size:16px;font-weight:600;line-height:24px}.VWh0dG_dashboardSubtitle{color:var(--dsw-alias-label-caption);margin:2px 0 0;font-size:11px;line-height:16px}.VWh0dG_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}.VWh0dG_closeButton:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.VWh0dG_closeButton svg{stroke-width:2px;width:16px;height:16px}.VWh0dG_dashboardBody{flex-direction:column;gap:14px;padding:16px 24px 24px;display:flex;overflow-y:auto}.VWh0dG_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:12px 24px;font-size:11px;line-height:16px;display:flex}.VWh0dG_tabNav{border-bottom:1px solid var(--dsw-alias-border-l1);align-items:center;gap:4px;padding:0 24px;display:flex}.VWh0dG_tabButton{color:var(--dsw-alias-label-tertiary);cursor:pointer;background:0 0;border:none;border-radius:8px;margin:8px 0;padding:6px 12px;font-size:13px;font-weight:500;line-height:20px;transition:background-color .16s,color .16s}.VWh0dG_tabButton:hover,.VWh0dG_tabButton:focus-visible{color:var(--dsw-alias-label-primary);background:color-mix(in srgb, var(--dsw-alias-bg-layer-3) 62%, transparent);outline:none}.VWh0dG_tabButtonActive,.VWh0dG_tabButtonActive:hover,.VWh0dG_tabButtonActive:focus-visible{background:var(--dsw-alias-bg-layer-3);color:var(--dsw-alias-label-primary);font-weight:600}.VWh0dG_tabPanel{flex-direction:column;gap:14px;animation:.14s ease-out VWh0dG_tabPanelIn;display:flex}@keyframes VWh0dG_tabPanelIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}.VWh0dG_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}.VWh0dG_reconcileIcon{color:var(--dsw-alias-label-tertiary);flex:none;margin-top:1px;display:inline-flex}.VWh0dG_reconcileText{flex:1}.VWh0dG_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}.VWh0dG_reconcileDismiss:hover{color:var(--dsw-alias-label-primary);background:color-mix(in srgb, var(--dsw-alias-label-primary) 8%, transparent)}.VWh0dG_hero{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-2);border-radius:12px;flex-direction:column;gap:18px;padding:24px;display:flex;position:relative;overflow:hidden}.VWh0dG_heroTop{justify-content:space-between;align-items:center;gap:24px;display:flex}.VWh0dG_heroMain{flex-direction:column;gap:2px;min-width:0;display:flex}.VWh0dG_heroLabel{color:var(--dsw-alias-label-tertiary);white-space:nowrap;font-size:11px;line-height:16px}.VWh0dG_heroReadout{align-items:baseline;gap:4px;display:flex}.VWh0dG_heroCurrency{letter-spacing:-.01em;color:var(--dsw-alias-label-secondary);font-variant-numeric:tabular-nums;font-size:22px;font-weight:600;line-height:28px}.VWh0dG_heroValue{letter-spacing:-.02em;font-variant-numeric:tabular-nums;white-space:nowrap;color:var(--dsw-alias-label-primary);font-size:40px;font-weight:700;line-height:48px}.VWh0dG_heroMeta{color:var(--dsw-alias-label-caption);white-space:nowrap;margin-top:4px;font-size:12px;line-height:17px}.VWh0dG_heroGauge{flex:none;width:96px;height:96px;position:relative}.VWh0dG_heroGaugeSvg{width:100%;height:100%;display:block;transform:rotate(-90deg)}.VWh0dG_heroGaugeTrack{fill:none;stroke:var(--dsw-alias-bg-module-platform);stroke-width:9px}.VWh0dG_heroGaugeArc{fill:none;stroke:var(--dsw-static-blue-500);stroke-width:9px;stroke-linecap:round;transition:stroke-dasharray .26s}.VWh0dG_heroGaugeArcOver{stroke:var(--dsw-static-red-500)}.VWh0dG_heroGaugeCenter{flex-direction:column;justify-content:center;align-items:center;gap:1px;display:flex;position:absolute;inset:0}.VWh0dG_heroGaugePct{letter-spacing:-.02em;font-variant-numeric:tabular-nums;color:var(--dsw-alias-label-primary);font-size:18px;font-weight:700;line-height:22px}.VWh0dG_heroGaugePctOver{color:var(--dsw-static-red-500)}.VWh0dG_heroGaugeLabel{color:var(--dsw-alias-label-tertiary);font-size:10px;line-height:14px}.VWh0dG_heroBudget{border-top:1px solid var(--dsw-alias-border-l1);align-items:center;gap:14px;padding-top:14px;display:flex}.VWh0dG_heroBudgetLabel{color:var(--dsw-alias-label-secondary);white-space:nowrap;flex:none;font-size:11px;line-height:16px}.VWh0dG_heroBudgetTrack{background:var(--dsw-alias-border-l1);border-radius:999px;flex:1;min-width:0;height:6px;overflow:hidden}.VWh0dG_heroBudgetFill{background:var(--dsw-static-blue-500);border-radius:999px;height:100%;transition:width .22s}.VWh0dG_heroBudgetFillOver{background:var(--dsw-static-red-500)}.VWh0dG_heroBudgetValue{color:var(--dsw-alias-label-secondary);font-variant-numeric:tabular-nums;white-space:nowrap;flex:none;font-size:11px;line-height:16px}.VWh0dG_heroSide{border-top:1px solid var(--dsw-alias-border-l1);align-items:stretch;padding-top:14px;display:flex}.VWh0dG_heroSideItem{border-left:1px solid var(--dsw-alias-border-l1);flex-direction:column;flex:1;gap:3px;min-width:0;padding-left:16px;display:flex}.VWh0dG_heroSideItem:first-child{border-left:none;padding-left:0}.VWh0dG_heroSideLabel{color:var(--dsw-alias-label-tertiary);white-space:nowrap;font-size:11px;line-height:15px}.VWh0dG_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:18px;font-weight:600;line-height:24px;display:inline-flex}.VWh0dG_heroSideSpacer{flex:1;display:block}.VWh0dG_delta{align-items:center;gap:2px;margin-left:4px;font-size:11px;font-weight:600;line-height:17px;display:inline-flex}.VWh0dG_deltaUp{color:var(--dsw-static-green-500)}.VWh0dG_deltaDown{color:var(--dsw-static-red-500)}.VWh0dG_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}.VWh0dG_kpiGrid{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;display:grid}.VWh0dG_kpiTile{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-2);border-radius:12px;flex-direction:column;gap:3px;padding:16px;transition:border-color .16s;display:flex;position:relative;overflow:hidden}.VWh0dG_kpiTile:hover{border-color:var(--dsw-alias-border-l2)}.VWh0dG_kpiLabel{color:var(--dsw-alias-label-tertiary);font-size:11px;line-height:15px}.VWh0dG_kpiValue{color:var(--dsw-alias-label-primary);font-variant-numeric:tabular-nums;letter-spacing:-.01em;font-size:24px;font-weight:600;line-height:32px}.VWh0dG_kpiGreen{color:var(--dsw-static-green-500)}.VWh0dG_kpiDetail{color:var(--dsw-alias-label-caption);white-space:nowrap;text-overflow:ellipsis;font-size:11px;line-height:15px;overflow:hidden}.VWh0dG_panel{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-2);border-radius:12px;flex-direction:column;gap:10px;padding:16px 18px;transition:border-color .16s;display:flex}.VWh0dG_panelHead{justify-content:space-between;align-items:baseline;gap:10px;display:flex}.VWh0dG_panelTitle{letter-spacing:-.005em;color:var(--dsw-alias-label-primary);margin:0;font-size:14px;font-weight:600;line-height:20px}.VWh0dG_panelHint{color:var(--dsw-alias-label-caption);white-space:nowrap;font-size:11px;line-height:16px}.VWh0dG_pricingTip{color:var(--dsw-alias-label-caption);margin:0 0 2px;font-size:11px;line-height:16px}.VWh0dG_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}.VWh0dG_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}.VWh0dG_rangeButtonActive{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary);font-weight:600}.VWh0dG_exportBar{justify-content:flex-end;align-items:center;gap:8px;display:flex}.VWh0dG_exportLabel{color:var(--dsw-alias-label-caption);font-size:11px;line-height:16px}.VWh0dG_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}.VWh0dG_exportButton:hover,.VWh0dG_exportButton:focus-visible{border-color:var(--dsw-alias-border-l2);color:var(--dsw-alias-label-primary);outline:none}.VWh0dG_shareTrack{background:var(--dsw-alias-bg-module-platform);border-radius:999px;height:10px;display:flex;overflow:hidden}.VWh0dG_shareSeg{height:100%;transition:width .2s}.VWh0dG_shareSegPeak{background:var(--dsw-static-blue-500)}.VWh0dG_shareSegOff{background:color-mix(in srgb, var(--dsw-static-blue-500) 25%, var(--dsw-alias-bg-module-platform))}.VWh0dG_shareSegUser{background:var(--dsw-static-blue-500)}.VWh0dG_shareSegAssistant{background:var(--dsw-static-green-500)}.VWh0dG_shareSegTool{background:var(--dsw-static-amber-500)}.VWh0dG_shareLegend{align-items:center;gap:16px;display:flex}.VWh0dG_shareItem{color:var(--dsw-alias-label-secondary);align-items:baseline;gap:6px;font-size:12px;line-height:17px;display:inline-flex}.VWh0dG_bucketCost{align-items:baseline;gap:3px;display:inline-flex}.VWh0dG_bucketOfficial{color:var(--dsw-static-blue-500);font-weight:600}.VWh0dG_bucketSep{color:var(--dsw-alias-label-dimmed)}.VWh0dG_bucketThird{color:var(--dsw-alias-label-secondary)}.VWh0dG_bucketSummary{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;display:grid}.VWh0dG_bucketStat{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-2);border-radius:12px;flex-direction:column;gap:4px;padding:12px 14px;display:flex}.VWh0dG_bucketStatLabel{color:var(--dsw-alias-label-tertiary);text-transform:uppercase;letter-spacing:.05em;font-size:11px;line-height:15px}.VWh0dG_bucketStatValue{color:var(--dsw-alias-label-primary);font-variant-numeric:tabular-nums;letter-spacing:-.01em;font-size:20px;font-weight:700;line-height:26px}.VWh0dG_bucketStatSub{color:var(--dsw-alias-label-caption);font-variant-numeric:tabular-nums;font-size:11px;line-height:16px}.VWh0dG_shareDot{border-radius:50%;flex:none;align-self:center;width:8px;height:8px}.VWh0dG_shareValue{color:var(--dsw-alias-label-primary);font-variant-numeric:tabular-nums;font-weight:600}.VWh0dG_budget{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-1);border-radius:14px;flex-direction:column;gap:8px;padding:12px 16px;display:flex}.VWh0dG_budgetHead{justify-content:space-between;align-items:baseline;gap:10px;display:flex}.VWh0dG_budgetLabel{color:var(--dsw-alias-label-primary);font-size:13px;font-weight:600}.VWh0dG_budgetValue{color:var(--dsw-alias-label-secondary);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:12px;line-height:17px}.VWh0dG_budgetControls{align-items:center;gap:8px;min-width:0;display:inline-flex}.VWh0dG_budgetInputWrap{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-1);border-radius:6px;align-items:center;gap:2px;padding:2px 6px;display:inline-flex}.VWh0dG_budgetInputWrap:focus-within{border-color:var(--dsw-alias-border-l3)}.VWh0dG_budgetUnit{color:var(--dsw-alias-label-tertiary);font-size:11px;line-height:16px}.VWh0dG_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}.VWh0dG_budgetInput:focus-visible{outline:none}.VWh0dG_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}.VWh0dG_switchOn{border-color:var(--dsw-alias-border-l1);background:var(--dsw-alias-label-primary)}.VWh0dG_switchKnob{background:var(--dsw-static-neutral-bluish-00);border-radius:50%;width:11px;height:11px;transition:transform .16s;position:absolute;top:2px;left:2px}.VWh0dG_switchOn .VWh0dG_switchKnob{transform:translate(13px)}.VWh0dG_budgetTrack{background:var(--dsw-alias-bg-module-platform);border-radius:999px;height:6px;overflow:hidden}.VWh0dG_budgetFill{background:var(--dsw-static-blue-500);border-radius:999px;height:100%;transition:width .2s}.VWh0dG_budgetFillWarn{background:var(--dsw-static-amber-500)}.VWh0dG_budgetFillOver{background:var(--dsw-static-red-500);animation:1.6s ease-in-out infinite VWh0dG_budgetOverPulse}@keyframes VWh0dG_budgetOverPulse{50%{opacity:.55}}.VWh0dG_chartWrap{width:100%;position:relative}.VWh0dG_chartSvg{width:100%;height:auto;display:block}.VWh0dG_chartEmpty{height:140px;color:var(--dsw-alias-label-caption);justify-content:center;align-items:center;font-size:13px;display:flex}.VWh0dG_emptyRow{text-align:center;color:var(--dsw-alias-label-caption);padding:28px 0;font-size:13px}.VWh0dG_chartGrid{stroke:var(--dsw-alias-border-l1);stroke-width:1px}.VWh0dG_chartAxisLabel{fill:var(--dsw-alias-label-tertiary);font-size:10px}.VWh0dG_chartBar{fill:var(--dsw-static-blue-500);opacity:.7}.VWh0dG_chartBar:hover{opacity:1}.VWh0dG_chartStack{stroke:var(--dsw-alias-bg-layer-1);stroke-width:.75px}.VWh0dG_chartStack:hover{opacity:.9}.VWh0dG_chartLine{stroke:var(--dsw-static-blue-500);stroke-width:2px;stroke-linecap:round;stroke-linejoin:round}.VWh0dG_chartCrosshair{stroke:var(--dsw-alias-label-dimmed);stroke-width:1px;stroke-dasharray:3 3}.VWh0dG_chartDot{fill:var(--dsw-static-neutral-bluish-00);stroke:var(--dsw-static-blue-500);stroke-width:2px}.VWh0dG_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))}.VWh0dG_chartTooltipDate{color:var(--dsw-alias-label-primary);margin-bottom:3px;font-size:11px;font-weight:600}.VWh0dG_chartTooltipRow{color:var(--dsw-alias-label-secondary);align-items:center;gap:5px;font-size:11px;line-height:17px;display:flex}.VWh0dG_chartTooltipRow strong{color:var(--dsw-alias-label-primary);font-variant-numeric:tabular-nums;font-weight:600}.VWh0dG_chartBarPlaceholder{fill:color-mix(in srgb, var(--dsw-alias-label-secondary) 30%, transparent)}.VWh0dG_chartLegendLine{background:var(--dsw-static-blue-500);border-radius:2px;width:10px;height:3px;display:inline-block}.VWh0dG_chartLegendBar{background:var(--dsw-static-blue-500);opacity:.5;border-radius:2px;width:7px;height:7px;display:inline-block}.VWh0dG_chartTooltipSwatch{border-radius:3px;flex:none;width:8px;height:8px;display:inline-block}.VWh0dG_chartLegend{color:var(--dsw-alias-label-tertiary);justify-content:flex-end;gap:14px;margin-top:2px;font-size:11px;display:flex}.VWh0dG_chartLegend span{align-items:center;gap:5px;display:inline-flex}.VWh0dG_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}.VWh0dG_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}.VWh0dG_ubAlertLeft{align-items:center;gap:8px;display:inline-flex}.VWh0dG_ubRate{color:var(--dsw-alias-label-primary);font-variant-numeric:tabular-nums;font-weight:600}.VWh0dG_ubAlertNote{color:var(--dsw-alias-label-secondary);margin:0}.VWh0dG_ubTag,.VWh0dG_ubTagSuccess,.VWh0dG_ubTagNeutral,.VWh0dG_ubTagAlert{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}.VWh0dG_ubTagSuccess{background:color-mix(in srgb, var(--dsw-static-green-500) 14%, transparent);color:var(--dsw-static-green-500)}.VWh0dG_ubTagNeutral{background:var(--dsw-alias-bg-layer-3);color:var(--dsw-alias-label-secondary)}.VWh0dG_ubTagAlert{background:color-mix(in srgb, var(--dsw-static-amber-500) 16%, transparent);color:var(--dsw-static-amber-500)}.VWh0dG_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}.VWh0dG_ubCardHead{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.VWh0dG_ubCardTitle{color:var(--dsw-alias-label-primary);margin:0;font-size:13px;font-weight:600;line-height:18px}.VWh0dG_ubCardSub{color:var(--dsw-alias-label-tertiary);font-size:11px;line-height:16px}.VWh0dG_ubTablewrap{border:1px solid var(--dsw-alias-border-l1);border-radius:10px;overflow:auto}.VWh0dG_ubTable{border-collapse:collapse;white-space:nowrap;width:100%;font-size:12.5px}.VWh0dG_ubTable th,.VWh0dG_ubTable td{border-bottom:1px solid var(--dsw-alias-border-l1);text-align:left;padding:9px 12px}.VWh0dG_ubTable tbody tr:last-child td{border-bottom:0}.VWh0dG_ubTable thead th{color:var(--dsw-alias-label-tertiary);text-transform:uppercase;letter-spacing:.05em;font-size:11px;font-weight:600}.VWh0dG_ubModel{align-items:center;gap:8px;display:inline-flex}.VWh0dG_ubModelDot{border-radius:50%;flex:none;width:9px;height:9px}.VWh0dG_ubModelName{color:var(--dsw-alias-label-primary);align-items:center;gap:6px;font-weight:500;display:inline-flex}.VWh0dG_ubPricepair{flex-wrap:wrap;gap:6px;display:inline-flex}.VWh0dG_ubChipPeak,.VWh0dG_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}.VWh0dG_ubChipLabel{font-size:10px;font-weight:600}.VWh0dG_ubChipPeak{background:color-mix(in srgb, var(--dsw-static-blue-500) 14%, transparent);color:var(--dsw-static-blue-500)}.VWh0dG_ubChipOff{background:color-mix(in srgb, var(--dsw-static-green-500) 14%, transparent);color:var(--dsw-static-green-500)}.VWh0dG_ubNotes{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.VWh0dG_ubNotesItem{align-items:baseline;gap:10px;display:flex}.VWh0dG_ubNotesTerm{color:var(--dsw-alias-label-primary);flex:0 0 72px;font-size:12px;font-weight:500}.VWh0dG_ubNotesDesc{min-width:0;color:var(--dsw-alias-label-secondary);flex:1;font-size:12px;line-height:17px}.VWh0dG_ubCardControlGroup{flex-wrap:wrap;align-items:center;gap:8px;display:inline-flex}.VWh0dG_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}.VWh0dG_ubStatGrid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.VWh0dG_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}.VWh0dG_ubStatLabel{color:var(--dsw-alias-label-tertiary);font-size:11px;line-height:16px}.VWh0dG_ubStatValue{color:var(--dsw-alias-label-primary);font-variant-numeric:tabular-nums;letter-spacing:-.01em;font-size:22px;font-weight:700;line-height:28px}.VWh0dG_ubStatDetail{color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;font-size:11px;line-height:16px}.VWh0dG_rowlist{flex-direction:column;gap:4px;margin:0;padding:0;list-style:none;display:flex}.VWh0dG_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}.VWh0dG_rowline:hover{background:color-mix(in srgb, var(--dsw-alias-bg-layer-3) 60%, transparent);border-color:var(--dsw-alias-border-l1)}.VWh0dG_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}.VWh0dG_rowlineRight{font-variant-numeric:tabular-nums;flex:none;align-items:baseline;gap:8px;display:inline-flex}.VWh0dG_rowlineMuted{color:var(--dsw-alias-label-tertiary);font-size:11px;line-height:16px}.VWh0dG_rowlineChev{color:var(--dsw-alias-label-tertiary);font-size:14px}.VWh0dG_rowlineDrillWrap{padding-left:12px}.VWh0dG_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}.VWh0dG_modelTable,.VWh0dG_pricingTable{border-collapse:collapse;width:100%;font-size:12.5px}.VWh0dG_modelTable th,.VWh0dG_modelTable td,.VWh0dG_pricingTable th,.VWh0dG_pricingTable td{border-bottom:1px solid var(--dsw-alias-border-l1);text-align:left;white-space:nowrap;padding:9px 12px}.VWh0dG_modelTable tbody tr:last-child td,.VWh0dG_pricingTable tbody tr:last-child td{border-bottom:0}.VWh0dG_modelTable thead th,.VWh0dG_pricingTable thead th{color:var(--dsw-alias-label-tertiary);text-transform:uppercase;letter-spacing:.05em;background:0 0;font-size:11px;font-weight:600}.VWh0dG_modelTable tbody tr,.VWh0dG_pricingTable tbody tr{transition:background-color .12s}.VWh0dG_modelTable tbody tr:hover,.VWh0dG_pricingTable tbody tr:hover{background:0 0}.VWh0dG_numCol{text-align:right;font-variant-numeric:tabular-nums}.VWh0dG_costCol{color:var(--dsw-alias-label-primary);font-weight:600}.VWh0dG_na{color:var(--dsw-alias-label-dimmed)}.VWh0dG_modelCell{align-items:center;gap:8px;display:inline-flex}.VWh0dG_modelDot{border-radius:50%;flex:none;width:9px;height:9px}.VWh0dG_modelName{color:var(--dsw-alias-label-primary);font-weight:500;line-height:16px;display:block}.VWh0dG_modelProvider{color:var(--dsw-alias-label-caption);font-size:10.5px;line-height:14px;display:block}.VWh0dG_pricingToggle{cursor:pointer;text-align:left;background:0 0;border:none;justify-content:space-between;align-items:center;gap:10px;width:100%;padding:0;display:flex}.VWh0dG_pricingToggle:hover .VWh0dG_panelTitle,.VWh0dG_pricingToggle:focus-visible .VWh0dG_panelTitle{color:var(--dsw-alias-label-primary)}.VWh0dG_rateBadge{vertical-align:1px;white-space:nowrap;border-radius:999px;align-items:center;margin-left:6px;padding:1px 6px;font-size:10px;font-weight:500;line-height:14px;display:inline-flex}.VWh0dG_rateBadgeLive{color:var(--dsw-static-green-500);background:var(--dsw-alias-bg-layer-2)}.VWh0dG_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}.VWh0dG_siteRowName{align-items:center;gap:8px;min-width:0;display:inline-flex}.VWh0dG_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}.VWh0dG_siteKindSite{color:var(--dsw-static-blue-500);background:color-mix(in srgb, var(--dsw-static-blue-500) 14%, transparent)}.VWh0dG_siteKindDirect{color:var(--dsw-static-green-500);background:color-mix(in srgb, var(--dsw-static-green-500) 14%, transparent)}.VWh0dG_siteKindUnknown{color:var(--dsw-static-red-500);background:color-mix(in srgb, var(--dsw-static-red-500) 14%, transparent)}.VWh0dG_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}.VWh0dG_siteRowMeta{flex:none;align-items:center;gap:10px;display:inline-flex}.VWh0dG_siteRowCost{color:var(--dsw-alias-label-primary);font-variant-numeric:tabular-nums;font-size:12.5px;font-weight:700;line-height:18px}.VWh0dG_siteRowCalls{color:var(--dsw-alias-label-secondary);font-variant-numeric:tabular-nums;font-size:11.5px;line-height:17px}.VWh0dG_siteRowCallsLow{color:var(--dsw-static-red-500)}.VWh0dG_rateBadgeBuiltin{color:var(--dsw-alias-label-tertiary);background:var(--dsw-alias-bg-layer-2)}.VWh0dG_pricingToggleText{align-items:baseline;gap:10px;min-width:0;display:flex}.VWh0dG_pricingChevron{width:16px;height:16px;color:var(--dsw-alias-label-tertiary);flex:none;transition:transform .16s}.VWh0dG_pricingChevronOpen{transform:rotate(180deg)}.VWh0dG_bandPrice{align-items:baseline;gap:6px;display:inline-flex}.VWh0dG_bandPriceOff{color:var(--dsw-alias-label-caption)}.VWh0dG_bandPriceOff:before{content:\"/\";color:var(--dsw-alias-label-dimmed);margin-right:4px}.VWh0dG_bandTag{color:var(--dsw-alias-label-secondary);flex-direction:column;gap:1px;font-size:10.5px;line-height:14px;display:inline-flex}.VWh0dG_bandTagOff{color:var(--dsw-static-green-500);font-weight:600}.VWh0dG_bandTag>span:first-child{color:var(--dsw-alias-label-primary);font-weight:500}.VWh0dG_flatTag{color:var(--dsw-alias-label-caption);font-size:10.5px;line-height:14px}.VWh0dG_healthDot{border-radius:50%;flex:none;width:8px;height:8px;display:inline-block}.VWh0dG_healthOk{background:var(--dsw-static-green-500)}.VWh0dG_healthBad{background:var(--dsw-static-red-500)}.VWh0dG_healthIdle{background:var(--dsw-static-neutral-bluish-400)}.VWh0dG_dashboardRight{align-items:center;gap:8px;min-width:0;display:flex}.VWh0dG_healthBadge{white-space:nowrap;border-radius:999px;align-items:center;gap:6px;padding:3px 9px;font-size:11px;line-height:16px;display:inline-flex}.VWh0dG_healthBadgeOk{color:var(--dsw-static-green-500);background:var(--dsw-alias-bg-layer-2)}.VWh0dG_healthBadgeBad{color:var(--dsw-static-red-500);background:var(--dsw-alias-bg-layer-2)}.VWh0dG_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}.VWh0dG_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}.VWh0dG_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}.VWh0dG_feeBar{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-2);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}.VWh0dG_feeCount{color:var(--dsw-alias-label-primary);font-weight:600}.VWh0dG_feeSuffix{color:var(--dsw-alias-label-tertiary)}.VWh0dG_feeItem{color:var(--dsw-alias-label-secondary);white-space:nowrap}.VWh0dG_feeNum{color:var(--dsw-alias-label-primary)}.VWh0dG_feeSep{color:var(--dsw-alias-label-tertiary)}.VWh0dG_feeChipPrimary,.VWh0dG_feeChipOff,.VWh0dG_feeChipAlert,.VWh0dG_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}.VWh0dG_feeChipPrimary{background:color-mix(in srgb, var(--dsw-static-blue-500) 14%, transparent);color:var(--dsw-static-blue-500)}.VWh0dG_feeChipOff{background:color-mix(in srgb, var(--dsw-static-green-500) 14%, transparent);color:var(--dsw-static-green-500)}.VWh0dG_feeChipAlert{background:color-mix(in srgb, var(--dsw-static-amber-500) 16%, transparent);color:var(--dsw-static-amber-500)}.VWh0dG_feeChipError{background:color-mix(in srgb, var(--dsw-static-red-500) 14%, transparent);color:var(--dsw-static-red-500)}.VWh0dG_balanceCell{align-items:center;gap:6px;display:inline-flex;position:relative}.VWh0dG_balanceDays{color:var(--dsw-alias-label-caption);white-space:nowrap;font-size:10.5px;line-height:14px}.VWh0dG_balanceDaysLow{color:var(--dsw-static-red-500);font-weight:600}.VWh0dG_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}.VWh0dG_balanceDaysBadge:hover{border-color:var(--dsw-alias-label-secondary);background:color-mix(in srgb, var(--dsw-alias-label-caption) 18%, transparent)}.VWh0dG_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)}.VWh0dG_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}.VWh0dG_balanceDetailHead{justify-content:space-between;align-items:center;gap:12px;display:flex}.VWh0dG_balanceDetailTitle{color:var(--dsw-alias-label-primary);font-size:12px;font-weight:600}.VWh0dG_balanceDetailClose{cursor:pointer;color:var(--dsw-alias-label-caption);background:0 0;border:none;font-size:14px;line-height:1}.VWh0dG_balanceDetailClose:hover{color:var(--dsw-alias-label-primary)}.VWh0dG_balanceDetailGrid{flex-direction:column;gap:4px;display:inline-flex}.VWh0dG_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}.VWh0dG_balanceDetailLabel{color:var(--dsw-alias-label-caption)}.VWh0dG_balanceDetailValue{color:var(--dsw-alias-label-primary);font-weight:500}body[data-zine-mode] .VWh0dG_trigger,body[data-zine-mode] .VWh0dG_triggerPop,body[data-zine-mode] .VWh0dG_railButton{display:none}body[data-zine-mode] .VWh0dG_dashboardHead{background:#000;border-bottom:2px solid #e8ff00}body[data-zine-mode] .VWh0dG_headTitleRow{align-items:center;gap:8px;margin-top:4px;display:flex}body[data-zine-mode] .VWh0dG_dashboardTitle{color:#e8ff00;letter-spacing:.04em;text-transform:uppercase;text-shadow:0 0 8px #e8ff0066;font-weight:900}body[data-zine-mode] .VWh0dG_dashboardSubtitle{color:#c9d98a;letter-spacing:.08em;text-transform:uppercase;font-size:10px}body[data-zine-mode] .VWh0dG_closeButton{color:#0a0a05;background:#ff2d95;border:1.5px solid #ff2d95;border-radius:0;box-shadow:0 0 10px #ff2d9573}body[data-zine-mode] .VWh0dG_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] .VWh0dG_heroLabel{color:#c9d98a;letter-spacing:.12em;text-transform:uppercase;font-size:10px;font-weight:900}body[data-zine-mode] .VWh0dG_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] .VWh0dG_heroMeta{color:#c9d98a;letter-spacing:.06em;text-transform:uppercase;font-size:10.5px}body[data-zine-mode] .VWh0dG_heroSideLabel{color:#c9d98a;letter-spacing:.1em;text-transform:uppercase;font-size:10px;font-weight:900}body[data-zine-mode] .VWh0dG_heroSideValue{color:#e8ff00;text-shadow:0 0 6px #e8ff0059}body[data-zine-mode] .VWh0dG_delta{font-weight:900}body[data-zine-mode] .VWh0dG_deltaUp{color:#ff2d95}body[data-zine-mode] .VWh0dG_deltaDown{color:#c9d98a}body[data-zine-mode] .VWh0dG_tabNav{background:#000;border-bottom:2px solid #e8ff00}body[data-zine-mode] .VWh0dG_tabButton{color:#c9d98a;letter-spacing:.08em;text-transform:uppercase;border-radius:0;font-size:10.5px;font-weight:900}body[data-zine-mode] .VWh0dG_tabButton:hover,body[data-zine-mode] .VWh0dG_tabButton:focus-visible{color:#e8ff00;background:#e8ff001f}body[data-zine-mode] .VWh0dG_tabButtonActive,body[data-zine-mode] .VWh0dG_tabButtonActive:hover,body[data-zine-mode] .VWh0dG_tabButtonActive:focus-visible{color:#0a0a05;background:#e8ff00;box-shadow:0 0 10px #e8ff0073}body[data-zine-mode] .VWh0dG_panel{background:#000;border:2px solid #e8ff00;border-radius:0}body[data-zine-mode] .VWh0dG_trendPanel{position:relative}body[data-zine-mode] .VWh0dG_panelTitle{color:#e8ff00;letter-spacing:.06em;text-transform:uppercase;text-shadow:0 0 6px #e8ff0066;font-weight:900}body[data-zine-mode] .VWh0dG_panelHint{color:#c9d98a;letter-spacing:.08em;text-transform:uppercase;font-size:10px;font-weight:900}body[data-zine-mode] .VWh0dG_modelTableScroll{background:#000;border:1.5px solid #e8ff0080;border-radius:0}.VWh0dG_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}.VWh0dG_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}.VWh0dG_currencyButtonActive{background:var(--dsw-alias-bg-layer-2);color:var(--dsw-alias-label-primary)}.VWh0dG_subscriptionGrid{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:10px;margin-top:10px;display:grid}.VWh0dG_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}.VWh0dG_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 VWh0dG_subscriptionGoldFlow;position:absolute;top:0;left:0;right:0}@keyframes VWh0dG_subscriptionGoldFlow{0%{background-position:200% 0}to{background-position:-200% 0}}.VWh0dG_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}.VWh0dG_subscriptionHead{flex-wrap:wrap;align-items:baseline;gap:6px;margin-bottom:8px;display:flex}.VWh0dG_subscriptionName{font-size:13px;font-weight:700}.VWh0dG_subscriptionPlan{color:var(--dsw-alias-label-secondary);font-size:11px}.VWh0dG_subscriptionPlan[data-kind=code],.VWh0dG_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}.VWh0dG_subscriptionTier{color:var(--dsw-alias-label-secondary);margin-left:6px}.VWh0dG_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}.VWh0dG_subscriptionStatus{color:var(--dsw-alias-label-secondary);margin-bottom:6px;font-size:11px}.VWh0dG_subscriptionWindow{align-items:center;gap:10px;margin-top:8px;font-size:11px;display:flex}.VWh0dG_subscriptionWindowLabel{color:var(--dsw-alias-label-secondary);flex:0 0 44px}.VWh0dG_subscriptionTrack{background:var(--dsw-alias-bg-layer-3);border-radius:3px;flex:1;height:6px;overflow:hidden}.VWh0dG_subscriptionFill{background:var(--dsw-static-blue-500);border-radius:3px;height:100%;transition:width .2s;display:block}.VWh0dG_subscriptionFillWarn{background:var(--dsw-static-amber-500)}.VWh0dG_subscriptionFillOver{background:var(--dsw-static-red-500)}.VWh0dG_subscriptionMeta{flex-direction:column;flex:none;align-items:flex-end;gap:2px;display:flex}.VWh0dG_subscriptionPct{text-align:right;font-variant-numeric:tabular-nums;flex:none;min-width:52px}.VWh0dG_subscriptionExhausted{color:var(--dsw-static-red-500);min-width:52px;font-weight:600}.VWh0dG_subscriptionReset{color:var(--dsw-alias-label-caption);white-space:nowrap;flex:none;font-size:10px}.VWh0dG_providerGroupList{flex-direction:column;gap:10px;display:flex}.VWh0dG_providerGroup{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-1);border-radius:12px;padding:12px 14px}.VWh0dG_providerGroupHead{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.VWh0dG_providerGroupTitle{align-items:center;gap:7px;min-width:0;display:inline-flex}.VWh0dG_providerGroupName{color:var(--dsw-alias-label-primary);font-size:13px;font-weight:600;line-height:18px}.VWh0dG_providerGroupMeta{flex:none;align-items:center;gap:10px;display:inline-flex}.VWh0dG_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}.VWh0dG_providerGroupBalance{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}.VWh0dG_providerGroupBalanceLabel{color:var(--dsw-alias-label-caption);font-size:11px;line-height:17px}.VWh0dG_roundsFlagBadge{color:var(--dsw-static-neutral-bluish-00);background:var(--dsw-static-red-500);border-radius:999px;margin-left:8px;padding:1px 7px;font-size:10px;font-weight:800}.VWh0dG_rounds{margin-top:10px}.VWh0dG_roundsBars{align-items:flex-end;gap:3px;height:124px;padding:16px 2px 0;display:flex;overflow-x:auto}.VWh0dG_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}.VWh0dG_roundsBarColPeak{background:color-mix(in srgb, var(--dsw-static-amber-500) 16%, transparent)}.VWh0dG_roundsBarColOff{background:var(--dsw-alias-bg-module-platform)}.VWh0dG_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%)}.VWh0dG_roundsBarWrap{flex:1;align-items:flex-end;min-height:0;display:flex}.VWh0dG_roundsBar{background:var(--dsw-static-blue-500);border-radius:2px 2px 0 0;width:100%;min-height:2px;position:relative}.VWh0dG_roundsBarFlagged{background:var(--dsw-static-red-500);border-radius:2px 2px 0 0;width:100%;min-height:2px;position:relative}.VWh0dG_roundsFlagMark{background:var(--dsw-static-red-500);border-radius:50%;width:7px;height:7px;position:absolute;top:-3px;right:-3px}.VWh0dG_roundsAxis{color:var(--dsw-alias-label-secondary);justify-content:space-between;margin-top:6px;font-size:10px;display:flex}.VWh0dG_roundsEmpty{color:var(--dsw-alias-label-secondary);margin-top:10px;font-size:12px}.VWh0dG_heatmap{margin-top:10px}.VWh0dG_heatmapGrid{grid-template-columns:repeat(7,minmax(0,1fr));gap:8px;display:grid}.VWh0dG_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}.VWh0dG_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}.VWh0dG_heatmapCell[data-level=\"0\"],.VWh0dG_heatmapCell[data-level=\"1\"],.VWh0dG_heatmapCell[data-level=\"2\"]{color:var(--dsw-alias-label-primary)}.VWh0dG_heatmapCell[data-level=\"3\"],.VWh0dG_heatmapCell[data-level=\"4\"]{color:var(--dsw-static-neutral-bluish-00)}.VWh0dG_heatmapFooter{color:var(--dsw-alias-label-secondary);align-items:center;gap:8px;margin-top:10px;font-size:10px;display:flex}.VWh0dG_heatmapLegend{gap:3px;display:inline-flex}.VWh0dG_heatmapLegend i{border-radius:4px;width:14px;height:14px;display:block}.VWh0dG_heatmapHover{font-variant-numeric:tabular-nums;margin-left:auto}.VWh0dG_heatmapRangeSwitch{gap:4px;margin-left:auto;display:inline-flex}.VWh0dG_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}.VWh0dG_heatmapRangeButtonActive{color:var(--dsw-alias-text-primary);border-color:currentColor;font-weight:600}.VWh0dG_heatmapYear{flex-direction:column;gap:6px;display:flex}.VWh0dG_heatmapYearBody{align-items:flex-start;gap:6px;display:flex}.VWh0dG_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}.VWh0dG_heatmapYearWeekday{white-space:nowrap;text-align:right;height:11px}.VWh0dG_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}.VWh0dG_heatmapYearMonth{white-space:nowrap;overflow:visible}.VWh0dG_heatmapYearScroll{padding-bottom:2px;overflow-x:auto}.VWh0dG_heatmapYearGrid{grid-template-rows:repeat(7,11px);grid-auto-flow:column;gap:3px;min-width:max-content;display:grid}.VWh0dG_heatmapYearCell{cursor:pointer;border:0;border-radius:2px;width:11px;height:11px;padding:0}.VWh0dG_triggerPopSubscription{width:auto;left:0;right:0}.VWh0dG_floatSub{flex-direction:column;gap:6px;min-width:0;display:flex}.VWh0dG_floatSubHead{flex-wrap:wrap;align-items:baseline;gap:6px;min-width:0;display:flex}.VWh0dG_floatSubName{color:var(--dsw-alias-label-primary);font-size:12px;font-weight:700}.VWh0dG_floatSubPlan{color:var(--dsw-alias-label-secondary);font-size:10px}.VWh0dG_floatSub .VWh0dG_subscriptionWindow{flex-wrap:wrap;gap:4px 10px}.VWh0dG_floatSub .VWh0dG_subscriptionWindowLabel{flex:none}.VWh0dG_floatSub .VWh0dG_subscriptionMeta{min-width:0;max-width:100%}.VWh0dG_floatSub .VWh0dG_subscriptionPct{min-width:0}.VWh0dG_floatSub .VWh0dG_subscriptionReset{white-space:normal;overflow-wrap:anywhere}.VWh0dG_triggerPopEmpty{color:var(--dsw-alias-label-tertiary);padding:2px 0;font-size:11px;line-height:1.5}.VWh0dG_triggerPopSwitcher{justify-content:flex-end;align-items:center;gap:8px;margin-top:2px;display:flex}.VWh0dG_triggerPopSwitchBtn{color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:0;border-radius:6px;padding:2px 4px;font-size:14px;line-height:1}.VWh0dG_triggerPopSwitchBtn:hover{color:var(--dsw-alias-label-primary);background:color-mix(in srgb, var(--dsw-alias-border-l1) 45%, transparent)}.VWh0dG_triggerPopSwitchCount{color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;font-size:10px}.VWh0dG_floatModeRow{gap:8px;margin-bottom:8px;display:flex}.VWh0dG_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}.VWh0dG_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)}.VWh0dG_floatTargets{flex-wrap:wrap;gap:6px;margin-bottom:8px;display:flex}.VWh0dG_floatTarget{color:var(--dsw-alias-label-secondary);cursor:pointer;align-items:center;gap:5px;font-size:12px;display:inline-flex}.VWh0dG_floatTargetLabel{color:var(--dsw-alias-label-secondary)}.VWh0dG_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}.VWh0dG_plgHead{align-items:flex-start;gap:12px;display:flex}.VWh0dG_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}.VWh0dG_plgTitle{flex-direction:column;gap:4px;min-width:0;display:flex}.VWh0dG_plgNameRow{align-items:center;gap:8px;display:flex}.VWh0dG_plgName{color:var(--dsw-alias-label-primary);margin:0;font-size:13px;font-weight:600;line-height:18px}.VWh0dG_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}.VWh0dG_plgDesc{color:var(--dsw-alias-label-secondary);margin:0;font-size:11px;line-height:16px}.VWh0dG_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}.VWh0dG_plgItem{flex-direction:column;gap:2px;min-width:0;display:flex}.VWh0dG_plgLabel{color:var(--dsw-alias-label-tertiary);font-size:10px;line-height:14px}.VWh0dG_plgVal{color:var(--dsw-alias-label-primary);word-break:break-all;font-size:12px;line-height:17px}.VWh0dG_plgLink{color:var(--dsw-static-blue-500);word-break:break-all;font-size:12px;line-height:17px;text-decoration:none}.VWh0dG_plgLink:hover{text-decoration:underline}.VWh0dG_pluginInfo{flex-direction:column;gap:8px;margin-top:10px;display:flex}.VWh0dG_pluginInfoRow{align-items:baseline;gap:12px;font-size:12px;display:flex}.VWh0dG_pluginInfoLabel{color:var(--dsw-alias-label-secondary);flex:0 0 72px}.VWh0dG_pluginInfoValue{color:var(--dsw-alias-label-primary);word-break:break-all}.VWh0dG_pluginInfoLink{color:var(--dsw-static-blue-500);word-break:break-all;text-decoration:none}.VWh0dG_pluginInfoLink:hover{text-decoration:underline}.VWh0dG_tokenPanel{flex-direction:column;gap:14px;display:flex}.VWh0dG_tokenModelBar{background:var(--dsw-alias-bg-layer-2);border-radius:999px;height:8px;overflow:hidden}.VWh0dG_tokenModelParts{height:100%;display:flex}.VWh0dG_tokenModelPartIn{background:var(--dsw-static-blue-500)}.VWh0dG_tokenModelPartOut{background:var(--dsw-static-amber-500)}.VWh0dG_tokenModelShareRow{align-items:center;gap:6px;display:inline-flex}@media (width<=640px){.VWh0dG_kpiGrid{grid-template-columns:repeat(2,minmax(0,1fr))}.VWh0dG_hero{gap:14px}.VWh0dG_heroTop{flex-direction:column;align-items:flex-start;gap:12px}.VWh0dG_heroGauge{width:72px;height:72px}.VWh0dG_heroSide{gap:12px}.VWh0dG_heroSideSpacer{display:none}}.VWh0dG_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 VWh0dG_peakAlertIn;display:flex;position:fixed;box-shadow:0 4px 16px #00000014}.VWh0dG_peakCardCorner{bottom:18px;right:18px}.VWh0dG_peakCardCenter{top:20%;left:50%;transform:translate(-50%)}.VWh0dG_peakCardPeak{color:var(--dsw-static-blue-500)}.VWh0dG_peakCardOff{color:var(--dsw-static-green-500)}.VWh0dG_peakHead{justify-content:space-between;align-items:center;gap:8px;display:flex}.VWh0dG_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}.VWh0dG_peakTagPrimary{background:var(--dsw-alias-bg-layer-3);color:var(--dsw-static-blue-500)}.VWh0dG_peakTagSuccess{background:var(--dsw-alias-bg-layer-3);color:var(--dsw-static-green-500)}.VWh0dG_peakDot{border-radius:999px;flex:none;width:6px;height:6px}.VWh0dG_peakDotPrimary{background:var(--dsw-static-blue-500)}.VWh0dG_peakDotSuccess{background:var(--dsw-static-green-500)}.VWh0dG_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}.VWh0dG_peakClose:hover{color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-layer-2)}.VWh0dG_peakCount{font-variant-numeric:tabular-nums;font-size:28px;font-weight:700;line-height:34px}.VWh0dG_peakCountPrimary{color:var(--dsw-static-blue-500)}.VWh0dG_peakCountSuccess{color:var(--dsw-static-green-500)}.VWh0dG_peakDesc{color:var(--dsw-alias-label-secondary);margin:0;font-size:12px;line-height:18px}@keyframes VWh0dG_peakAlertIn{0%{opacity:0}to{opacity:1}}.VWh0dG_peakAlertPanel{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-1);border-radius:16px;flex-direction:column;gap:10px;padding:14px 16px;display:flex}.VWh0dG_peakAlertPanelHead{justify-content:space-between;align-items:center;gap:10px;display:flex}.VWh0dG_peakAlertPanelLabel{color:var(--dsw-alias-label-primary);font-size:13px;font-weight:600}.VWh0dG_peakAlertPanelBody{flex-wrap:wrap;align-items:center;gap:12px 16px;display:flex}.VWh0dG_peakAlertField{color:var(--dsw-alias-label-secondary);align-items:center;gap:8px;font-size:12px;display:inline-flex}.VWh0dG_peakAlertNum{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-2);width:56px;color:var(--dsw-alias-label-primary);font-variant-numeric:tabular-nums;border-radius:6px;padding:4px 6px}.VWh0dG_peakAlertSelect{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-2);color:var(--dsw-alias-label-primary);border-radius:6px;padding:4px 6px;font-size:12px}.VWh0dG_peakAlertCheck{color:var(--dsw-alias-label-secondary);align-items:center;gap:6px;font-size:12px;display:inline-flex}.VWh0dG_peakAlertPreview{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-2);color:var(--dsw-alias-label-primary);cursor:pointer;border-radius:6px;padding:5px 10px;font-size:12px}.VWh0dG_peakAlertPreview:hover{background:var(--dsw-alias-bg-layer-3)}.VWh0dG_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}.VWh0dG_setCardHead{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.VWh0dG_setCardMeta{flex-direction:column;gap:4px;min-width:0;display:flex}.VWh0dG_setCardTitle{color:var(--dsw-alias-label-primary);margin:0;font-size:13px;font-weight:600;line-height:18px}.VWh0dG_setCardDesc{color:var(--dsw-alias-label-secondary);margin:0;font-size:11px;line-height:16px}.VWh0dG_ctlCol{flex-direction:column;gap:10px;padding-top:2px;display:flex}.VWh0dG_ctlRow{align-items:center;gap:12px;min-height:28px;display:flex}.VWh0dG_ctlRowStretch{display:flex}.VWh0dG_ctlLabel{color:var(--dsw-alias-label-secondary);flex:0 0 96px;font-size:11px;line-height:16px}.VWh0dG_ctlGroup{flex-wrap:wrap;align-items:center;gap:8px;display:inline-flex}.VWh0dG_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}.VWh0dG_rdo input{opacity:0;pointer-events:none;position:absolute}.VWh0dG_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}.VWh0dG_rdo input:checked+.VWh0dG_rdoDot{border-color:var(--dsw-static-blue-500)}.VWh0dG_rdo input:checked+.VWh0dG_rdoDot:after{content:\"\";background:var(--dsw-static-blue-500);border-radius:50%;position:absolute;inset:3px}.VWh0dG_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}.VWh0dG_affix{color:var(--dsw-alias-label-tertiary);font-size:11px;line-height:16px}.VWh0dG_sel{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-1);color:var(--dsw-alias-label-primary);border-radius:6px;padding:3px 8px;font-size:12px;line-height:16px}.VWh0dG_prog{background:var(--dsw-alias-bg-module-platform);border-radius:999px;flex:1;min-width:0;height:6px;overflow:hidden}.VWh0dG_progFill{background:var(--dsw-static-blue-500);border-radius:999px;height:100%;transition:width .2s}.VWh0dG_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}.VWh0dG_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))}.VWh0dG_settingsHead{flex-direction:column;gap:4px;margin-bottom:2px;display:flex}.VWh0dG_settingsTitle{letter-spacing:-.005em;color:var(--dsw-alias-label-primary);margin:0;font-size:15px;font-weight:650;line-height:22px}.VWh0dG_settingsHint{color:var(--dsw-alias-label-caption);margin:0;font-size:11px;line-height:16px}.VWh0dG_budgetHint,.VWh0dG_peakAlertHint{color:var(--dsw-alias-label-caption);margin:6px 0 0;font-size:11px;line-height:16px}";
64
64
  const tagId = "@kenz1117/dsh-ui-usage-billing/UsageBilling.module.css";
65
65
  if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId) + "]") === null) {
66
66
  const tag = document.createElement("style");
@@ -70,347 +70,456 @@ window.__ModuleLoader__.load({
70
70
  document.head.appendChild(tag);
71
71
  }
72
72
  var UsageBilling_module_css_default = {
73
- "shareSegUser": "VWh0dG_shareSegUser",
74
- "budgetFillWarn": "VWh0dG_budgetFillWarn",
75
- "chartTooltipRow": "VWh0dG_chartTooltipRow",
76
- "rateBadgeLive": "VWh0dG_rateBadgeLive",
77
- "siteKindUnknown": "VWh0dG_siteKindUnknown",
78
- "triggerSub": "VWh0dG_triggerSub",
79
- "subscriptionFillWarn": "VWh0dG_subscriptionFillWarn",
80
- "roundsFlagMark": "VWh0dG_roundsFlagMark",
81
- "floatTargets": "VWh0dG_floatTargets",
82
- "bucketStatLabel": "VWh0dG_bucketStatLabel",
83
- "providerGroupName": "VWh0dG_providerGroupName",
84
- "floatModeBtn": "VWh0dG_floatModeBtn",
85
- "floatSub": "VWh0dG_floatSub",
86
- "budgetFillOver": "VWh0dG_budgetFillOver",
87
- "numCol": "VWh0dG_numCol",
88
- "tokenModelPartOut": "VWh0dG_tokenModelPartOut",
73
+ "tabPanel": "VWh0dG_tabPanel",
74
+ "tabButton": "VWh0dG_tabButton",
75
+ "subscriptionReset": "VWh0dG_subscriptionReset",
76
+ "triggerPopTitleMonth": "VWh0dG_triggerPopTitleMonth",
77
+ "peakAlertPanelLabel": "VWh0dG_peakAlertPanelLabel",
78
+ "triggerPopStrong": "VWh0dG_triggerPopStrong",
79
+ "peakDotSuccess": "VWh0dG_peakDotSuccess",
80
+ "subscriptionPlan": "VWh0dG_subscriptionPlan",
81
+ "triggerPopMetricLabel": "VWh0dG_triggerPopMetricLabel",
82
+ "rowlineChev": "VWh0dG_rowlineChev",
83
+ "peakCardOff": "VWh0dG_peakCardOff",
84
+ "ubStatLabel": "VWh0dG_ubStatLabel",
85
+ "peakAlertCheck": "VWh0dG_peakAlertCheck",
86
+ "triggerIcon": "VWh0dG_triggerIcon",
87
+ "heatmapCell": "VWh0dG_heatmapCell",
88
+ "ubCardTitle": "VWh0dG_ubCardTitle",
89
+ "currencyButtonActive": "VWh0dG_currencyButtonActive",
90
+ "shareItem": "VWh0dG_shareItem",
91
+ "rounds": "VWh0dG_rounds",
92
+ "heatmapFooter": "VWh0dG_heatmapFooter",
93
+ "roundsBarLabel": "VWh0dG_roundsBarLabel",
94
+ "progFill": "VWh0dG_progFill",
95
+ "healthBad": "VWh0dG_healthBad",
96
+ "trigger": "VWh0dG_trigger",
97
+ "chartTooltip": "VWh0dG_chartTooltip",
98
+ "subscriptionFill": "VWh0dG_subscriptionFill",
99
+ "pluginInfoLink": "VWh0dG_pluginInfoLink",
100
+ "peakCardCorner": "VWh0dG_peakCardCorner",
101
+ "peakAlertPanelHead": "VWh0dG_peakAlertPanelHead",
102
+ "triggerPopBadgeDirect": "VWh0dG_triggerPopBadgeDirect",
103
+ "peakTagPrimary": "VWh0dG_peakTagPrimary",
104
+ "peakAlertPanelBody": "VWh0dG_peakAlertPanelBody",
105
+ "currencyToggle": "VWh0dG_currencyToggle",
106
+ "bucketStat": "VWh0dG_bucketStat",
107
+ "rowlist": "VWh0dG_rowlist",
89
108
  "rangeToggle": "VWh0dG_rangeToggle",
90
- "peakAlertPreview": "VWh0dG_peakAlertPreview",
91
- "chartStack": "VWh0dG_chartStack",
92
- "triggerSparkHot": "VWh0dG_triggerSparkHot",
93
- "budgetFill": "VWh0dG_budgetFill",
94
- "liveTierOff": "VWh0dG_liveTierOff",
95
- "roundsAxis": "VWh0dG_roundsAxis",
109
+ "setCardMeta": "VWh0dG_setCardMeta",
110
+ "bucketStatLabel": "VWh0dG_bucketStatLabel",
111
+ "costCol": "VWh0dG_costCol",
112
+ "chartSvg": "VWh0dG_chartSvg",
113
+ "triggerPopMetric": "VWh0dG_triggerPopMetric",
114
+ "rowlineDrillWrap": "VWh0dG_rowlineDrillWrap",
115
+ "popTagSub": "VWh0dG_popTagSub",
116
+ "ubTable": "VWh0dG_ubTable",
117
+ "heatmapYearScroll": "VWh0dG_heatmapYearScroll",
118
+ "heroGaugePctOver": "VWh0dG_heroGaugePctOver",
119
+ "tokenModelShareRow": "VWh0dG_tokenModelShareRow",
120
+ "peakDesc": "VWh0dG_peakDesc",
121
+ "subscriptionTier": "VWh0dG_subscriptionTier",
122
+ "providerGroup": "VWh0dG_providerGroup",
123
+ "rowlineDrill": "VWh0dG_rowlineDrill",
124
+ "feeBar": "VWh0dG_feeBar",
125
+ "budgetControls": "VWh0dG_budgetControls",
126
+ "heatmapYearCell": "VWh0dG_heatmapYearCell",
127
+ "plgNameRow": "VWh0dG_plgNameRow",
128
+ "bucketCost": "VWh0dG_bucketCost",
129
+ "triggerPopName": "VWh0dG_triggerPopName",
130
+ "popModelName": "VWh0dG_popModelName",
131
+ "unpricedHint": "VWh0dG_unpricedHint",
132
+ "bandTag": "VWh0dG_bandTag",
133
+ "peakDotPrimary": "VWh0dG_peakDotPrimary",
134
+ "setCardDesc": "VWh0dG_setCardDesc",
135
+ "balanceDetailValue": "VWh0dG_balanceDetailValue",
136
+ "triggerYen": "VWh0dG_triggerYen",
137
+ "heroGaugeArcOver": "VWh0dG_heroGaugeArcOver",
138
+ "heatmapYearMonths": "VWh0dG_heatmapYearMonths",
96
139
  "subscriptionWindow": "VWh0dG_subscriptionWindow",
97
- "pricingChevronOpen": "VWh0dG_pricingChevronOpen",
98
- "balanceDaysBadgeLow": "VWh0dG_balanceDaysBadgeLow",
99
- "triggerPopMetricValue": "VWh0dG_triggerPopMetricValue",
100
- "triggerPopBadgeDirect": "VWh0dG_triggerPopBadgeDirect",
101
- "roundsBarColPeak": "VWh0dG_roundsBarColPeak",
102
- "roundsBarColOff": "VWh0dG_roundsBarColOff",
103
- "peakAlertCenter": "VWh0dG_peakAlertCenter",
140
+ "floatTarget": "VWh0dG_floatTarget",
141
+ "prog": "VWh0dG_prog",
142
+ "ubModel": "VWh0dG_ubModel",
143
+ "popTagPrimary": "VWh0dG_popTagPrimary",
144
+ "triggerPopBars": "VWh0dG_triggerPopBars",
145
+ "heroSideItem": "VWh0dG_heroSideItem",
146
+ "providerGroupBadge": "VWh0dG_providerGroupBadge",
147
+ "deltaDown": "VWh0dG_deltaDown",
148
+ "triggerPopBadgeSub": "VWh0dG_triggerPopBadgeSub",
104
149
  "triggerPopMetricHighlight": "VWh0dG_triggerPopMetricHighlight",
105
- "modelTable": "VWh0dG_modelTable",
106
- "pluginInfoLabel": "VWh0dG_pluginInfoLabel",
107
- "heroGauge": "VWh0dG_heroGauge",
108
- "triggerPopValueStack": "VWh0dG_triggerPopValueStack",
109
- "triggerPopSwitchBtn": "VWh0dG_triggerPopSwitchBtn",
110
- "shareSeg": "VWh0dG_shareSeg",
111
- "billing-trigger": "VWh0dG_billing-trigger",
112
- "deltaUp": "VWh0dG_deltaUp",
113
- "heroTop": "VWh0dG_heroTop",
114
- "budgetInputWrap": "VWh0dG_budgetInputWrap",
115
- "balanceDetailGrid": "VWh0dG_balanceDetailGrid",
116
- "peakAlertPanelLabel": "VWh0dG_peakAlertPanelLabel",
150
+ "floatModeRow": "VWh0dG_floatModeRow",
151
+ "popHead": "VWh0dG_popHead",
152
+ "pricingTable": "VWh0dG_pricingTable",
153
+ "panel": "VWh0dG_panel",
117
154
  "budgetValue": "VWh0dG_budgetValue",
118
- "healthBadgeOk": "VWh0dG_healthBadgeOk",
119
- "triggerPopBadge": "VWh0dG_triggerPopBadge",
120
- "liveCostItem": "VWh0dG_liveCostItem",
121
- "kpiLabel": "VWh0dG_kpiLabel",
155
+ "peakAlertPanel": "VWh0dG_peakAlertPanel",
156
+ "reconcileIcon": "VWh0dG_reconcileIcon",
122
157
  "siteRowCost": "VWh0dG_siteRowCost",
123
- "roundsEmpty": "VWh0dG_roundsEmpty",
124
- "peakAlertOff": "VWh0dG_peakAlertOff",
125
- "subscriptionFillOver": "VWh0dG_subscriptionFillOver",
126
- "panel": "VWh0dG_panel",
127
- "heroGaugeCenter": "VWh0dG_heroGaugeCenter",
158
+ "staleNotice": "VWh0dG_staleNotice",
159
+ "peakTagSuccess": "VWh0dG_peakTagSuccess",
160
+ "popDotNeutral": "VWh0dG_popDotNeutral",
161
+ "triggerPopFootStrong": "VWh0dG_triggerPopFootStrong",
162
+ "rateBadgeLive": "VWh0dG_rateBadgeLive",
163
+ "metricCell": "VWh0dG_metricCell",
164
+ "siteKindSite": "VWh0dG_siteKindSite",
165
+ "hero": "VWh0dG_hero",
166
+ "ubTagSuccess": "VWh0dG_ubTagSuccess",
167
+ "ctlRow": "VWh0dG_ctlRow",
168
+ "ctlCol": "VWh0dG_ctlCol",
169
+ "rdo": "VWh0dG_rdo",
170
+ "budgetOverPulse": "VWh0dG_budgetOverPulse",
171
+ "plgTag": "VWh0dG_plgTag",
172
+ "heroSideSpacer": "VWh0dG_heroSideSpacer",
128
173
  "chartBarPlaceholder": "VWh0dG_chartBarPlaceholder",
129
- "heroReadout": "VWh0dG_heroReadout",
130
- "modelProvider": "VWh0dG_modelProvider",
131
- "subscriptionGrid": "VWh0dG_subscriptionGrid",
132
- "roundsBarLabel": "VWh0dG_roundsBarLabel",
133
- "heatmapYear": "VWh0dG_heatmapYear",
134
- "triggerPopFootNote": "VWh0dG_triggerPopFootNote",
135
- "triggerPopFoot": "VWh0dG_triggerPopFoot",
136
- "heatmap": "VWh0dG_heatmap",
137
- "roundsFlagBadge": "VWh0dG_roundsFlagBadge",
174
+ "rangeButtonActive": "VWh0dG_rangeButtonActive",
175
+ "rowlineName": "VWh0dG_rowlineName",
176
+ "peakAlertHint": "VWh0dG_peakAlertHint",
177
+ "switchKnob": "VWh0dG_switchKnob",
178
+ "siteKindTag": "VWh0dG_siteKindTag",
138
179
  "tokenModelPartIn": "VWh0dG_tokenModelPartIn",
139
- "heroSideSpacer": "VWh0dG_heroSideSpacer",
140
- "triggerWrap": "VWh0dG_triggerWrap",
141
- "shareSegPeak": "VWh0dG_shareSegPeak",
142
- "tabPanel": "VWh0dG_tabPanel",
143
- "tabButton": "VWh0dG_tabButton",
144
- "triggerPopMetrics": "VWh0dG_triggerPopMetrics",
145
- "triggerPopHead": "VWh0dG_triggerPopHead",
146
- "currencyToggle": "VWh0dG_currencyToggle",
180
+ "healthOk": "VWh0dG_healthOk",
181
+ "tabButtonActive": "VWh0dG_tabButtonActive",
182
+ "bucketStatValue": "VWh0dG_bucketStatValue",
183
+ "heatmapYear": "VWh0dG_heatmapYear",
184
+ "kpiTile": "VWh0dG_kpiTile",
185
+ "dashboard": "VWh0dG_dashboard",
186
+ "providerGroupBalanceLabel": "VWh0dG_providerGroupBalanceLabel",
187
+ "ctlLabel": "VWh0dG_ctlLabel",
188
+ "balanceDetailLabel": "VWh0dG_balanceDetailLabel",
189
+ "pricingToggleText": "VWh0dG_pricingToggleText",
190
+ "popModel": "VWh0dG_popModel",
191
+ "roundsFlagMark": "VWh0dG_roundsFlagMark",
192
+ "plgLabel": "VWh0dG_plgLabel",
193
+ "chartTooltipSwatch": "VWh0dG_chartTooltipSwatch",
194
+ "modelTable": "VWh0dG_modelTable",
147
195
  "bucketOfficial": "VWh0dG_bucketOfficial",
196
+ "sel": "VWh0dG_sel",
197
+ "siteRowCallsLow": "VWh0dG_siteRowCallsLow",
198
+ "uncataloguedTag": "VWh0dG_uncataloguedTag",
199
+ "heroBudgetLabel": "VWh0dG_heroBudgetLabel",
200
+ "heroGaugeTrack": "VWh0dG_heroGaugeTrack",
201
+ "popTitle": "VWh0dG_popTitle",
202
+ "popModelStatusLow": "VWh0dG_popModelStatusLow",
203
+ "triggerPopValue": "VWh0dG_triggerPopValue",
204
+ "triggerPopMetrics": "VWh0dG_triggerPopMetrics",
205
+ "panelTitle": "VWh0dG_panelTitle",
206
+ "ubModelName": "VWh0dG_ubModelName",
207
+ "pricingTip": "VWh0dG_pricingTip",
208
+ "balanceDaysLow": "VWh0dG_balanceDaysLow",
209
+ "siteRow": "VWh0dG_siteRow",
210
+ "setCard": "VWh0dG_setCard",
211
+ "subscriptionExhausted": "VWh0dG_subscriptionExhausted",
212
+ "heatmapYearBody": "VWh0dG_heatmapYearBody",
213
+ "balanceDetailHead": "VWh0dG_balanceDetailHead",
214
+ "tableScroll": "VWh0dG_tableScroll",
215
+ "delta": "VWh0dG_delta",
216
+ "tokenModelPartOut": "VWh0dG_tokenModelPartOut",
217
+ "healthIdle": "VWh0dG_healthIdle",
148
218
  "settingsTitle": "VWh0dG_settingsTitle",
149
- "railButton": "VWh0dG_railButton",
150
- "providerGroupTitle": "VWh0dG_providerGroupTitle",
151
- "kpiGrid": "VWh0dG_kpiGrid",
152
- "reconcileDismiss": "VWh0dG_reconcileDismiss",
153
- "healthBad": "VWh0dG_healthBad",
154
- "budgetOverPulse": "VWh0dG_budgetOverPulse",
155
- "triggerPopFootTitle": "VWh0dG_triggerPopFootTitle",
156
- "siteKindTag": "VWh0dG_siteKindTag",
157
- "triggerPopSwitcher": "VWh0dG_triggerPopSwitcher",
158
- "triggerAmount": "VWh0dG_triggerAmount",
159
- "currencyButtonActive": "VWh0dG_currencyButtonActive",
160
- "providerGroupBalanceLabel": "VWh0dG_providerGroupBalanceLabel",
161
- "budgetLabel": "VWh0dG_budgetLabel",
162
- "heatmapRangeButton": "VWh0dG_heatmapRangeButton",
163
- "bucketStat": "VWh0dG_bucketStat",
164
- "tabButtonActive": "VWh0dG_tabButtonActive",
219
+ "heatmapGrid": "VWh0dG_heatmapGrid",
220
+ "headTitleRow": "VWh0dG_headTitleRow",
221
+ "kpiLabel": "VWh0dG_kpiLabel",
222
+ "peakCountSuccess": "VWh0dG_peakCountSuccess",
165
223
  "peakAlertSelect": "VWh0dG_peakAlertSelect",
166
- "triggerPopStrong": "VWh0dG_triggerPopStrong",
167
- "emptyRow": "VWh0dG_emptyRow",
168
- "liveCostBar": "VWh0dG_liveCostBar",
169
- "reconcileIcon": "VWh0dG_reconcileIcon",
170
- "planTag": "VWh0dG_planTag",
171
- "liveTierPeak": "VWh0dG_liveTierPeak",
172
- "subscriptionTier": "VWh0dG_subscriptionTier",
173
- "deltaDown": "VWh0dG_deltaDown",
174
- "chartLine": "VWh0dG_chartLine",
175
- "subscriptionGoldFlow": "VWh0dG_subscriptionGoldFlow",
176
- "na": "VWh0dG_na",
177
- "modelDot": "VWh0dG_modelDot",
178
- "triggerPopFootNotes": "VWh0dG_triggerPopFootNotes",
179
- "heroGaugeSvg": "VWh0dG_heroGaugeSvg",
180
- "bucketThird": "VWh0dG_bucketThird",
181
- "heatmapYearWeekdays": "VWh0dG_heatmapYearWeekdays",
182
- "heroSideValue": "VWh0dG_heroSideValue",
183
- "triggerPopAlert": "VWh0dG_triggerPopAlert",
224
+ "exportButton": "VWh0dG_exportButton",
225
+ "heroBudgetTrack": "VWh0dG_heroBudgetTrack",
226
+ "shareSeg": "VWh0dG_shareSeg",
227
+ "triggerWrap": "VWh0dG_triggerWrap",
228
+ "heroMain": "VWh0dG_heroMain",
229
+ "roundsEmpty": "VWh0dG_roundsEmpty",
230
+ "ubPricepair": "VWh0dG_ubPricepair",
231
+ "subscriptionFillOver": "VWh0dG_subscriptionFillOver",
232
+ "popModelStatus": "VWh0dG_popModelStatus",
233
+ "setCardHead": "VWh0dG_setCardHead",
184
234
  "heroLabel": "VWh0dG_heroLabel",
185
- "triggerPopMuted": "VWh0dG_triggerPopMuted",
186
- "switch": "VWh0dG_switch",
187
- "chartLegendLine": "VWh0dG_chartLegendLine",
188
- "balanceDaysLow": "VWh0dG_balanceDaysLow",
189
- "floatModeRow": "VWh0dG_floatModeRow",
190
- "floatModeBtnOn": "VWh0dG_floatModeBtnOn",
191
- "heatmapGrid": "VWh0dG_heatmapGrid",
235
+ "heroTop": "VWh0dG_heroTop",
236
+ "heroValue": "VWh0dG_heroValue",
237
+ "roundsFlagBadge": "VWh0dG_roundsFlagBadge",
238
+ "roundsBarColPeak": "VWh0dG_roundsBarColPeak",
239
+ "heroBudgetFillOver": "VWh0dG_heroBudgetFillOver",
240
+ "budgetFillOver": "VWh0dG_budgetFillOver",
241
+ "plgGrid": "VWh0dG_plgGrid",
242
+ "ubAlertLeft": "VWh0dG_ubAlertLeft",
192
243
  "providerGroupList": "VWh0dG_providerGroupList",
193
- "heroGaugeTrack": "VWh0dG_heroGaugeTrack",
194
- "heroGaugePctOver": "VWh0dG_heroGaugePctOver",
195
- "chartBar": "VWh0dG_chartBar",
196
- "pricingTip": "VWh0dG_pricingTip",
197
- "siteRowName": "VWh0dG_siteRowName",
198
- "bandTagOff": "VWh0dG_bandTagOff",
199
- "balanceDetailRow": "VWh0dG_balanceDetailRow",
200
- "subscriptionExhausted": "VWh0dG_subscriptionExhausted",
244
+ "peakClose": "VWh0dG_peakClose",
245
+ "subscriptionGoldFlow": "VWh0dG_subscriptionGoldFlow",
246
+ "heroGaugeCenter": "VWh0dG_heroGaugeCenter",
247
+ "chartLegend": "VWh0dG_chartLegend",
248
+ "ubStatValue": "VWh0dG_ubStatValue",
249
+ "roundsBarCol": "VWh0dG_roundsBarCol",
250
+ "bucketSummary": "VWh0dG_bucketSummary",
201
251
  "bandPriceOff": "VWh0dG_bandPriceOff",
202
- "triggerPopFootStatusLow": "VWh0dG_triggerPopFootStatusLow",
203
- "exportLabel": "VWh0dG_exportLabel",
204
252
  "currencyButton": "VWh0dG_currencyButton",
205
- "heatmapRangeButtonActive": "VWh0dG_heatmapRangeButtonActive",
206
- "peakAlertHint": "VWh0dG_peakAlertHint",
207
- "triggerSparkBar": "VWh0dG_triggerSparkBar",
208
- "tokenPanel": "VWh0dG_tokenPanel",
209
- "providerGroupBadge": "VWh0dG_providerGroupBadge",
210
- "chartDot": "VWh0dG_chartDot",
211
- "exportBar": "VWh0dG_exportBar",
212
- "chartLegendBar": "VWh0dG_chartLegendBar",
213
- "siteKindDirect": "VWh0dG_siteKindDirect",
214
- "budget": "VWh0dG_budget",
215
- "estimatedTag": "VWh0dG_estimatedTag",
216
- "kpiGreen": "VWh0dG_kpiGreen",
253
+ "kpiDetail": "VWh0dG_kpiDetail",
254
+ "panelHint": "VWh0dG_panelHint",
255
+ "ubModelDot": "VWh0dG_ubModelDot",
256
+ "providerGroupName": "VWh0dG_providerGroupName",
217
257
  "heatmapYearMonth": "VWh0dG_heatmapYearMonth",
218
- "heroGaugePct": "VWh0dG_heroGaugePct",
219
- "triggerRow": "VWh0dG_triggerRow",
220
- "peakAlertPanelBody": "VWh0dG_peakAlertPanelBody",
258
+ "settingsHead": "VWh0dG_settingsHead",
259
+ "subscriptionAuto": "VWh0dG_subscriptionAuto",
260
+ "providerGroupTitle": "VWh0dG_providerGroupTitle",
261
+ "ubChipLabel": "VWh0dG_ubChipLabel",
262
+ "ubStatGrid": "VWh0dG_ubStatGrid",
263
+ "rateBadgeBuiltin": "VWh0dG_rateBadgeBuiltin",
264
+ "healthBadgeOk": "VWh0dG_healthBadgeOk",
221
265
  "roundsBars": "VWh0dG_roundsBars",
222
- "balanceDetailLabel": "VWh0dG_balanceDetailLabel",
223
- "shareDot": "VWh0dG_shareDot",
224
- "chartTooltipSwatch": "VWh0dG_chartTooltipSwatch",
225
- "heatmapYearMonths": "VWh0dG_heatmapYearMonths",
226
- "heroGaugeArcOver": "VWh0dG_heroGaugeArcOver",
227
- "healthBadge": "VWh0dG_healthBadge",
228
- "budgetHint": "VWh0dG_budgetHint",
229
- "dashboardBody": "VWh0dG_dashboardBody",
230
- "rangeButtonActive": "VWh0dG_rangeButtonActive",
231
- "reconcileNotice": "VWh0dG_reconcileNotice",
266
+ "peakCardPeak": "VWh0dG_peakCardPeak",
267
+ "triggerSparkHot": "VWh0dG_triggerSparkHot",
268
+ "triggerPopTitle": "VWh0dG_triggerPopTitle",
269
+ "pluginInfoLabel": "VWh0dG_pluginInfoLabel",
270
+ "triggerPopSubscription": "VWh0dG_triggerPopSubscription",
271
+ "triggerPopSwitchBtn": "VWh0dG_triggerPopSwitchBtn",
272
+ "heroGaugeSvg": "VWh0dG_heroGaugeSvg",
273
+ "budgetFill": "VWh0dG_budgetFill",
274
+ "heatmapRangeSwitch": "VWh0dG_heatmapRangeSwitch",
275
+ "settingsHint": "VWh0dG_settingsHint",
276
+ "feeChipError": "VWh0dG_feeChipError",
277
+ "plgDesc": "VWh0dG_plgDesc",
278
+ "estimatedTag": "VWh0dG_estimatedTag",
279
+ "roundsBarFlagged": "VWh0dG_roundsBarFlagged",
280
+ "floatModeBtn": "VWh0dG_floatModeBtn",
281
+ "heatmapHover": "VWh0dG_heatmapHover",
282
+ "heroSideValue": "VWh0dG_heroSideValue",
283
+ "railButton": "VWh0dG_railButton",
284
+ "feeCount": "VWh0dG_feeCount",
232
285
  "budgetTrack": "VWh0dG_budgetTrack",
233
- "chartCrosshair": "VWh0dG_chartCrosshair",
286
+ "bandTagOff": "VWh0dG_bandTagOff",
287
+ "dashboardBody": "VWh0dG_dashboardBody",
288
+ "shareLegend": "VWh0dG_shareLegend",
289
+ "balanceDetailTitle": "VWh0dG_balanceDetailTitle",
290
+ "peakCountPrimary": "VWh0dG_peakCountPrimary",
291
+ "peakAlertPreview": "VWh0dG_peakAlertPreview",
292
+ "heatmapYearWeekday": "VWh0dG_heatmapYearWeekday",
293
+ "heroGauge": "VWh0dG_heroGauge",
234
294
  "heroGaugeLabel": "VWh0dG_heroGaugeLabel",
235
- "chartAxisLabel": "VWh0dG_chartAxisLabel",
236
- "shareSegOff": "VWh0dG_shareSegOff",
237
- "chartTooltip": "VWh0dG_chartTooltip",
238
- "chartGrid": "VWh0dG_chartGrid",
239
- "heatmapCellEmpty": "VWh0dG_heatmapCellEmpty",
240
- "healthBadgeBad": "VWh0dG_healthBadgeBad",
241
- "triggerIcon": "VWh0dG_triggerIcon",
242
- "kpiTile": "VWh0dG_kpiTile",
243
- "heatmapFooter": "VWh0dG_heatmapFooter",
244
- "heatmapYearScroll": "VWh0dG_heatmapYearScroll",
245
- "floatTargetLabel": "VWh0dG_floatTargetLabel",
246
- "peakAlertIn": "VWh0dG_peakAlertIn",
247
- "costCol": "VWh0dG_costCol",
248
- "headTitleRow": "VWh0dG_headTitleRow",
249
- "switchKnob": "VWh0dG_switchKnob",
250
- "triggerPopTitle": "VWh0dG_triggerPopTitle",
251
- "bucketCost": "VWh0dG_bucketCost",
295
+ "plgHead": "VWh0dG_plgHead",
296
+ "ubStatDetail": "VWh0dG_ubStatDetail",
297
+ "ubNotes": "VWh0dG_ubNotes",
298
+ "triggerPop": "VWh0dG_triggerPop",
299
+ "ubAlertNote": "VWh0dG_ubAlertNote",
300
+ "heroBudgetValue": "VWh0dG_heroBudgetValue",
252
301
  "providerGroupBalance": "VWh0dG_providerGroupBalance",
253
- "shareItem": "VWh0dG_shareItem",
254
- "siteRowCallsLow": "VWh0dG_siteRowCallsLow",
255
- "heatmapHover": "VWh0dG_heatmapHover",
256
- "subscriptionPct": "VWh0dG_subscriptionPct",
257
- "peakAlertPeak": "VWh0dG_peakAlertPeak",
258
- "hero": "VWh0dG_hero",
259
- "closeButton": "VWh0dG_closeButton",
260
- "bucketSep": "VWh0dG_bucketSep",
261
- "roundsBar": "VWh0dG_roundsBar",
262
- "heroCurrency": "VWh0dG_heroCurrency",
263
- "chartWrap": "VWh0dG_chartWrap",
264
- "delta": "VWh0dG_delta",
265
- "pricingToggle": "VWh0dG_pricingToggle",
266
- "subscriptionHead": "VWh0dG_subscriptionHead",
267
- "roundsBarCol": "VWh0dG_roundsBarCol",
268
- "heroValue": "VWh0dG_heroValue",
269
- "siteRowTitle": "VWh0dG_siteRowTitle",
270
- "healthOk": "VWh0dG_healthOk",
271
- "dashboardHead": "VWh0dG_dashboardHead",
272
- "heroMeta": "VWh0dG_heroMeta",
273
- "liveCostSep": "VWh0dG_liveCostSep",
274
- "pluginInfoLink": "VWh0dG_pluginInfoLink",
302
+ "btn": "VWh0dG_btn",
303
+ "dashboardSubtitle": "VWh0dG_dashboardSubtitle",
304
+ "popDot": "VWh0dG_popDot",
305
+ "ubTagNeutral": "VWh0dG_ubTagNeutral",
275
306
  "tokenModelParts": "VWh0dG_tokenModelParts",
276
- "chartSvg": "VWh0dG_chartSvg",
277
- "liveQuotaCrit": "VWh0dG_liveQuotaCrit",
278
- "balanceDetailValue": "VWh0dG_balanceDetailValue",
279
- "rateBadgeBuiltin": "VWh0dG_rateBadgeBuiltin",
280
- "balanceDetailTitle": "VWh0dG_balanceDetailTitle",
281
- "heroSideItem": "VWh0dG_heroSideItem",
282
- "exportButton": "VWh0dG_exportButton",
283
- "shareSegAssistant": "VWh0dG_shareSegAssistant",
284
- "chartLegend": "VWh0dG_chartLegend",
285
- "subscriptionWindowLabel": "VWh0dG_subscriptionWindowLabel",
286
- "tabNav": "VWh0dG_tabNav",
287
- "peakAlertCorner": "VWh0dG_peakAlertCorner",
288
- "heroSideLabel": "VWh0dG_heroSideLabel",
289
- "pluginInfo": "VWh0dG_pluginInfo",
290
- "dashboard": "VWh0dG_dashboard",
291
- "heatmapYearBody": "VWh0dG_heatmapYearBody",
292
- "flatTag": "VWh0dG_flatTag",
293
- "modelName": "VWh0dG_modelName",
294
- "dashboardModal": "VWh0dG_dashboardModal",
307
+ "triggerPopHead": "VWh0dG_triggerPopHead",
308
+ "siteRowName": "VWh0dG_siteRowName",
309
+ "triggerPopMuted": "VWh0dG_triggerPopMuted",
310
+ "subscriptionPct": "VWh0dG_subscriptionPct",
311
+ "modelTableScroll": "VWh0dG_modelTableScroll",
312
+ "peakHead": "VWh0dG_peakHead",
313
+ "feeChipPrimary": "VWh0dG_feeChipPrimary",
314
+ "plgItem": "VWh0dG_plgItem",
315
+ "shareValue": "VWh0dG_shareValue",
316
+ "peakAlertIn": "VWh0dG_peakAlertIn",
295
317
  "providerGroupMeta": "VWh0dG_providerGroupMeta",
318
+ "triggerPopEmpty": "VWh0dG_triggerPopEmpty",
319
+ "ubCardControlGroup": "VWh0dG_ubCardControlGroup",
320
+ "triggerPopFootNote": "VWh0dG_triggerPopFootNote",
321
+ "shareSegPeak": "VWh0dG_shareSegPeak",
322
+ "rateBadge": "VWh0dG_rateBadge",
296
323
  "triggerPopLabel": "VWh0dG_triggerPopLabel",
297
- "triggerPopValue": "VWh0dG_triggerPopValue",
298
- "kpiDetail": "VWh0dG_kpiDetail",
299
- "balanceDays": "VWh0dG_balanceDays",
300
- "subscriptionPlan": "VWh0dG_subscriptionPlan",
301
- "bucketStatValue": "VWh0dG_bucketStatValue",
324
+ "ubTagAlert": "VWh0dG_ubTagAlert",
325
+ "pricingChevronOpen": "VWh0dG_pricingChevronOpen",
302
326
  "tabPanelIn": "VWh0dG_tabPanelIn",
303
- "chartEmpty": "VWh0dG_chartEmpty",
304
- "triggerPopBars": "VWh0dG_triggerPopBars",
305
- "switchOn": "VWh0dG_switchOn",
306
- "shareLegend": "VWh0dG_shareLegend",
307
- "shareSegTool": "VWh0dG_shareSegTool",
327
+ "siteKindDirect": "VWh0dG_siteKindDirect",
328
+ "dashboardRight": "VWh0dG_dashboardRight",
329
+ "floatModeBtnOn": "VWh0dG_floatModeBtnOn",
330
+ "rowlineRight": "VWh0dG_rowlineRight",
331
+ "ubTag": "VWh0dG_ubTag",
332
+ "siteRowCalls": "VWh0dG_siteRowCalls",
333
+ "feeItem": "VWh0dG_feeItem",
334
+ "heatmapRangeButtonActive": "VWh0dG_heatmapRangeButtonActive",
335
+ "feeNum": "VWh0dG_feeNum",
336
+ "heatmap": "VWh0dG_heatmap",
337
+ "dashboardHead": "VWh0dG_dashboardHead",
338
+ "ubStatCard": "VWh0dG_ubStatCard",
339
+ "triggerPopOpenBtn": "VWh0dG_triggerPopOpenBtn",
340
+ "subscriptionHead": "VWh0dG_subscriptionHead",
341
+ "budgetHint": "VWh0dG_budgetHint",
342
+ "bucketStatSub": "VWh0dG_bucketStatSub",
343
+ "ubCardHead": "VWh0dG_ubCardHead",
308
344
  "chartTooltipDate": "VWh0dG_chartTooltipDate",
309
- "triggerPopMetric": "VWh0dG_triggerPopMetric",
310
- "triggerPopEmpty": "VWh0dG_triggerPopEmpty",
345
+ "chartDot": "VWh0dG_chartDot",
346
+ "plgLink": "VWh0dG_plgLink",
347
+ "floatSub": "VWh0dG_floatSub",
348
+ "heroReadout": "VWh0dG_heroReadout",
349
+ "rowline": "VWh0dG_rowline",
350
+ "triggerLabel": "VWh0dG_triggerLabel",
351
+ "triggerPopMetricValue": "VWh0dG_triggerPopMetricValue",
352
+ "heatmapYearGrid": "VWh0dG_heatmapYearGrid",
353
+ "kpiGrid": "VWh0dG_kpiGrid",
354
+ "shareSegTool": "VWh0dG_shareSegTool",
355
+ "providerGroupHead": "VWh0dG_providerGroupHead",
356
+ "na": "VWh0dG_na",
357
+ "subscriptionGrid": "VWh0dG_subscriptionGrid",
358
+ "roundsBarColOff": "VWh0dG_roundsBarColOff",
359
+ "triggerPopValueStack": "VWh0dG_triggerPopValueStack",
360
+ "triggerPopBar": "VWh0dG_triggerPopBar",
361
+ "heatmapYearWeekdays": "VWh0dG_heatmapYearWeekdays",
362
+ "popDotSub": "VWh0dG_popDotSub",
363
+ "switchOn": "VWh0dG_switchOn",
364
+ "balanceDetailRow": "VWh0dG_balanceDetailRow",
365
+ "tokenModelBar": "VWh0dG_tokenModelBar",
366
+ "triggerMain": "VWh0dG_triggerMain",
367
+ "popModelRow": "VWh0dG_popModelRow",
368
+ "triggerPopUpdated": "VWh0dG_triggerPopUpdated",
369
+ "feeChipAlert": "VWh0dG_feeChipAlert",
370
+ "healthDot": "VWh0dG_healthDot",
371
+ "plgName": "VWh0dG_plgName",
311
372
  "triggerSpark": "VWh0dG_triggerSpark",
312
- "shareTrack": "VWh0dG_shareTrack",
313
- "trendPanel": "VWh0dG_trendPanel",
314
- "heatmapCell": "VWh0dG_heatmapCell",
315
- "siteKindSite": "VWh0dG_siteKindSite",
316
- "rounds": "VWh0dG_rounds",
373
+ "siteKindUnknown": "VWh0dG_siteKindUnknown",
374
+ "subscriptionFillWarn": "VWh0dG_subscriptionFillWarn",
375
+ "plgIcon": "VWh0dG_plgIcon",
376
+ "budget": "VWh0dG_budget",
377
+ "subscriptionTrack": "VWh0dG_subscriptionTrack",
378
+ "feeSuffix": "VWh0dG_feeSuffix",
379
+ "chartEmpty": "VWh0dG_chartEmpty",
380
+ "ubCard": "VWh0dG_ubCard",
317
381
  "floatSubName": "VWh0dG_floatSubName",
318
- "uncataloguedTag": "VWh0dG_uncataloguedTag",
382
+ "chartAxisLabel": "VWh0dG_chartAxisLabel",
383
+ "roundsAxis": "VWh0dG_roundsAxis",
384
+ "planTag": "VWh0dG_planTag",
385
+ "triggerSparkBar": "VWh0dG_triggerSparkBar",
386
+ "flatTag": "VWh0dG_flatTag",
387
+ "metricGrid": "VWh0dG_metricGrid",
388
+ "chartLine": "VWh0dG_chartLine",
389
+ "affix": "VWh0dG_affix",
390
+ "metricLabel": "VWh0dG_metricLabel",
391
+ "modelDot": "VWh0dG_modelDot",
392
+ "shareSegAssistant": "VWh0dG_shareSegAssistant",
393
+ "heroSideLabel": "VWh0dG_heroSideLabel",
394
+ "ubCardSub": "VWh0dG_ubCardSub",
395
+ "peakCard": "VWh0dG_peakCard",
396
+ "heroGaugeArc": "VWh0dG_heroGaugeArc",
397
+ "rowlineMuted": "VWh0dG_rowlineMuted",
398
+ "heatmapLegend": "VWh0dG_heatmapLegend",
399
+ "peakCount": "VWh0dG_peakCount",
400
+ "siteRowTitle": "VWh0dG_siteRowTitle",
401
+ "dashboardModal": "VWh0dG_dashboardModal",
402
+ "triggerMetric": "VWh0dG_triggerMetric",
403
+ "modalFooter": "VWh0dG_modalFooter",
404
+ "budgetHead": "VWh0dG_budgetHead",
405
+ "ctlGroup": "VWh0dG_ctlGroup",
406
+ "triggerPopFootStatus": "VWh0dG_triggerPopFootStatus",
407
+ "panelHead": "VWh0dG_panelHead",
408
+ "ubTagError": "VWh0dG_ubTagError",
409
+ "heatmapCellEmpty": "VWh0dG_heatmapCellEmpty",
410
+ "popModelLabel": "VWh0dG_popModelLabel",
411
+ "balanceDaysBadge": "VWh0dG_balanceDaysBadge",
412
+ "metricValueSuccess": "VWh0dG_metricValueSuccess",
413
+ "subscriptionMeta": "VWh0dG_subscriptionMeta",
414
+ "pricingChevron": "VWh0dG_pricingChevron",
415
+ "pluginInfo": "VWh0dG_pluginInfo",
416
+ "tabNav": "VWh0dG_tabNav",
417
+ "reconcileNotice": "VWh0dG_reconcileNotice",
418
+ "exportLabel": "VWh0dG_exportLabel",
419
+ "budgetInputWrap": "VWh0dG_budgetInputWrap",
420
+ "exportBar": "VWh0dG_exportBar",
421
+ "ubAlert": "VWh0dG_ubAlert",
422
+ "reconcileText": "VWh0dG_reconcileText",
423
+ "setCardTitle": "VWh0dG_setCardTitle",
424
+ "billing-trigger": "VWh0dG_billing-trigger",
425
+ "popDotDirect": "VWh0dG_popDotDirect",
426
+ "metricValue": "VWh0dG_metricValue",
427
+ "heroSide": "VWh0dG_heroSide",
428
+ "shareSegOff": "VWh0dG_shareSegOff",
429
+ "healthBadge": "VWh0dG_healthBadge",
430
+ "floatTargets": "VWh0dG_floatTargets",
431
+ "kpiValue": "VWh0dG_kpiValue",
432
+ "pricingToggle": "VWh0dG_pricingToggle",
433
+ "pluginInfoValue": "VWh0dG_pluginInfoValue",
434
+ "rangeButton": "VWh0dG_rangeButton",
435
+ "peakDot": "VWh0dG_peakDot",
436
+ "chartBar": "VWh0dG_chartBar",
437
+ "kpiGreen": "VWh0dG_kpiGreen",
438
+ "budgetFillWarn": "VWh0dG_budgetFillWarn",
439
+ "dashboardIn": "VWh0dG_dashboardIn",
440
+ "trendPanel": "VWh0dG_trendPanel",
441
+ "emptyRow": "VWh0dG_emptyRow",
442
+ "feeChipOff": "VWh0dG_feeChipOff",
443
+ "peakAlertField": "VWh0dG_peakAlertField",
444
+ "switch": "VWh0dG_switch",
445
+ "chartCrosshair": "VWh0dG_chartCrosshair",
446
+ "peakCardCenter": "VWh0dG_peakCardCenter",
447
+ "balanceDetailPop": "VWh0dG_balanceDetailPop",
448
+ "numCol": "VWh0dG_numCol",
449
+ "deltaUp": "VWh0dG_deltaUp",
450
+ "heroCurrency": "VWh0dG_heroCurrency",
451
+ "inp": "VWh0dG_inp",
452
+ "heatmapRangeButton": "VWh0dG_heatmapRangeButton",
453
+ "balanceDaysBadgeLow": "VWh0dG_balanceDaysBadgeLow",
454
+ "chartTooltipRow": "VWh0dG_chartTooltipRow",
455
+ "bandPrice": "VWh0dG_bandPrice",
456
+ "triggerSub": "VWh0dG_triggerSub",
457
+ "triggerPopFoot": "VWh0dG_triggerPopFoot",
458
+ "heroBudgetFill": "VWh0dG_heroBudgetFill",
459
+ "budgetLabel": "VWh0dG_budgetLabel",
460
+ "bucketSep": "VWh0dG_bucketSep",
319
461
  "budgetUnit": "VWh0dG_budgetUnit",
320
- "tokenModelShareRow": "VWh0dG_tokenModelShareRow",
321
- "peakAlertPanelHead": "VWh0dG_peakAlertPanelHead",
322
- "panelHead": "VWh0dG_panelHead",
323
- "triggerPopTitleMonth": "VWh0dG_triggerPopTitleMonth",
324
- "budgetControls": "VWh0dG_budgetControls",
462
+ "reconcileDismiss": "VWh0dG_reconcileDismiss",
463
+ "subscriptionName": "VWh0dG_subscriptionName",
464
+ "modelCell": "VWh0dG_modelCell",
465
+ "chartWrap": "VWh0dG_chartWrap",
466
+ "shareDot": "VWh0dG_shareDot",
467
+ "peakTag": "VWh0dG_peakTag",
468
+ "chartLegendBar": "VWh0dG_chartLegendBar",
469
+ "shareSegUser": "VWh0dG_shareSegUser",
470
+ "ubChipOff": "VWh0dG_ubChipOff",
471
+ "heroMeta": "VWh0dG_heroMeta",
472
+ "bucketThird": "VWh0dG_bucketThird",
473
+ "triggerPopFootNotes": "VWh0dG_triggerPopFootNotes",
474
+ "ubTablewrap": "VWh0dG_ubTablewrap",
475
+ "modelProvider": "VWh0dG_modelProvider",
476
+ "chartStack": "VWh0dG_chartStack",
477
+ "ubChipPeak": "VWh0dG_ubChipPeak",
478
+ "triggerPopAlert": "VWh0dG_triggerPopAlert",
479
+ "roundsBar": "VWh0dG_roundsBar",
480
+ "ubNotesDesc": "VWh0dG_ubNotesDesc",
325
481
  "balanceCell": "VWh0dG_balanceCell",
326
- "unpricedHint": "VWh0dG_unpricedHint",
327
- "healthIdle": "VWh0dG_healthIdle",
328
- "settingsHead": "VWh0dG_settingsHead",
329
- "balanceDaysBadge": "VWh0dG_balanceDaysBadge",
330
- "siteRowCalls": "VWh0dG_siteRowCalls",
331
- "triggerPopBadgeSub": "VWh0dG_triggerPopBadgeSub",
482
+ "triggerPopFootStatusLow": "VWh0dG_triggerPopFootStatusLow",
483
+ "roundsBarWrap": "VWh0dG_roundsBarWrap",
484
+ "chartGrid": "VWh0dG_chartGrid",
485
+ "feeSep": "VWh0dG_feeSep",
332
486
  "triggerPopSwitchCount": "VWh0dG_triggerPopSwitchCount",
333
- "dashboardRight": "VWh0dG_dashboardRight",
334
- "heatmapRangeSwitch": "VWh0dG_heatmapRangeSwitch",
335
- "triggerPopFootStatus": "VWh0dG_triggerPopFootStatus",
336
- "budgetHead": "VWh0dG_budgetHead",
337
- "peakAlertNum": "VWh0dG_peakAlertNum",
338
- "peakAlertField": "VWh0dG_peakAlertField",
339
- "triggerPopName": "VWh0dG_triggerPopName",
340
- "subscriptionReset": "VWh0dG_subscriptionReset",
341
- "pricingTable": "VWh0dG_pricingTable",
342
- "heroSide": "VWh0dG_heroSide",
343
- "bandPrice": "VWh0dG_bandPrice",
344
- "peakAlert": "VWh0dG_peakAlert",
345
- "balanceDetailClose": "VWh0dG_balanceDetailClose",
346
- "settingsHint": "VWh0dG_settingsHint",
487
+ "subscriptionWindowLabel": "VWh0dG_subscriptionWindowLabel",
488
+ "plgTitle": "VWh0dG_plgTitle",
489
+ "subscriptionStatus": "VWh0dG_subscriptionStatus",
490
+ "triggerPopSwitcher": "VWh0dG_triggerPopSwitcher",
491
+ "metricValuePrimary": "VWh0dG_metricValuePrimary",
492
+ "heroBudget": "VWh0dG_heroBudget",
493
+ "ubRate": "VWh0dG_ubRate",
494
+ "ubNotesItem": "VWh0dG_ubNotesItem",
495
+ "floatTargetLabel": "VWh0dG_floatTargetLabel",
347
496
  "pluginInfoRow": "VWh0dG_pluginInfoRow",
348
- "subscriptionCard": "VWh0dG_subscriptionCard",
349
- "balanceDetailHead": "VWh0dG_balanceDetailHead",
350
- "reconcileText": "VWh0dG_reconcileText",
351
- "dashboardSubtitle": "VWh0dG_dashboardSubtitle",
352
- "triggerPopRow": "VWh0dG_triggerPopRow",
353
- "budgetInput": "VWh0dG_budgetInput",
497
+ "dashboardTitle": "VWh0dG_dashboardTitle",
498
+ "heroGaugePct": "VWh0dG_heroGaugePct",
499
+ "chartLegendLine": "VWh0dG_chartLegendLine",
354
500
  "siteRowMeta": "VWh0dG_siteRowMeta",
355
- "pricingToggleText": "VWh0dG_pricingToggleText",
356
- "subscriptionAuto": "VWh0dG_subscriptionAuto",
357
- "providerGroupHead": "VWh0dG_providerGroupHead",
358
- "roundsBarFlagged": "VWh0dG_roundsBarFlagged",
359
- "floatTarget": "VWh0dG_floatTarget",
360
- "liveQuotaWarn": "VWh0dG_liveQuotaWarn",
361
- "triggerPop": "VWh0dG_triggerPop",
362
- "triggerPopUpdated": "VWh0dG_triggerPopUpdated",
363
- "triggerPopOpenBtn": "VWh0dG_triggerPopOpenBtn",
364
- "panelHint": "VWh0dG_panelHint",
365
- "triggerPopFootStrong": "VWh0dG_triggerPopFootStrong",
366
- "kpiValue": "VWh0dG_kpiValue",
367
- "subscriptionName": "VWh0dG_subscriptionName",
368
- "peakAlertPanel": "VWh0dG_peakAlertPanel",
369
- "modelTableScroll": "VWh0dG_modelTableScroll",
370
- "bandTag": "VWh0dG_bandTag",
371
- "providerGroup": "VWh0dG_providerGroup",
372
- "pluginInfoValue": "VWh0dG_pluginInfoValue",
373
- "subscriptionFill": "VWh0dG_subscriptionFill",
374
- "heatmapYearCell": "VWh0dG_heatmapYearCell",
375
- "peakAlertCheck": "VWh0dG_peakAlertCheck",
376
- "staleNotice": "VWh0dG_staleNotice",
501
+ "closeButton": "VWh0dG_closeButton",
502
+ "balanceDays": "VWh0dG_balanceDays",
377
503
  "floatSubHead": "VWh0dG_floatSubHead",
378
- "peakAlertCountdown": "VWh0dG_peakAlertCountdown",
379
- "subscriptionStatus": "VWh0dG_subscriptionStatus",
380
- "heatmapLegend": "VWh0dG_heatmapLegend",
381
- "heatmapYearWeekday": "VWh0dG_heatmapYearWeekday",
382
- "peakAlertClose": "VWh0dG_peakAlertClose",
383
- "triggerPopSubscription": "VWh0dG_triggerPopSubscription",
384
- "dashboardIn": "VWh0dG_dashboardIn",
385
- "pricingChevron": "VWh0dG_pricingChevron",
386
- "trigger": "VWh0dG_trigger",
387
- "triggerPopBar": "VWh0dG_triggerPopBar",
388
- "panelTitle": "VWh0dG_panelTitle",
389
- "siteRow": "VWh0dG_siteRow",
390
- "dashboardTitle": "VWh0dG_dashboardTitle",
391
- "heroMain": "VWh0dG_heroMain",
392
- "rangeButton": "VWh0dG_rangeButton",
393
- "healthDot": "VWh0dG_healthDot",
394
- "bucketStatSub": "VWh0dG_bucketStatSub",
395
- "shareValue": "VWh0dG_shareValue",
396
- "subscriptionMeta": "VWh0dG_subscriptionMeta",
397
- "roundsBarWrap": "VWh0dG_roundsBarWrap",
398
- "heatmapYearGrid": "VWh0dG_heatmapYearGrid",
504
+ "budgetInput": "VWh0dG_budgetInput",
505
+ "triggerPrimary": "VWh0dG_triggerPrimary",
506
+ "triggerPopFootTitle": "VWh0dG_triggerPopFootTitle",
507
+ "subscriptionCard": "VWh0dG_subscriptionCard",
508
+ "peakAlertNum": "VWh0dG_peakAlertNum",
509
+ "ctlRowStretch": "VWh0dG_ctlRowStretch",
510
+ "triggerPopRow": "VWh0dG_triggerPopRow",
511
+ "healthBadgeBad": "VWh0dG_healthBadgeBad",
512
+ "ubNotesTerm": "VWh0dG_ubNotesTerm",
513
+ "tokenPanel": "VWh0dG_tokenPanel",
514
+ "plgVal": "VWh0dG_plgVal",
515
+ "balanceDetailClose": "VWh0dG_balanceDetailClose",
516
+ "modelName": "VWh0dG_modelName",
517
+ "triggerPopBadge": "VWh0dG_triggerPopBadge",
399
518
  "floatSubPlan": "VWh0dG_floatSubPlan",
400
- "triggerBody": "VWh0dG_triggerBody",
401
- "tableScroll": "VWh0dG_tableScroll",
402
- "triggerPopMetricLabel": "VWh0dG_triggerPopMetricLabel",
403
- "peakAlertTag": "VWh0dG_peakAlertTag",
404
- "modelCell": "VWh0dG_modelCell",
405
- "tokenModelBar": "VWh0dG_tokenModelBar",
406
- "triggerMeta": "VWh0dG_triggerMeta",
407
- "rateBadge": "VWh0dG_rateBadge",
408
- "balanceDetailPop": "VWh0dG_balanceDetailPop",
409
- "peakAlertText": "VWh0dG_peakAlertText",
410
- "heroGaugeArc": "VWh0dG_heroGaugeArc",
411
- "subscriptionTrack": "VWh0dG_subscriptionTrack",
412
- "triggerPopFootName": "VWh0dG_triggerPopFootName",
413
- "bucketSummary": "VWh0dG_bucketSummary"
519
+ "rdoDot": "VWh0dG_rdoDot",
520
+ "shareTrack": "VWh0dG_shareTrack",
521
+ "balanceDetailGrid": "VWh0dG_balanceDetailGrid",
522
+ "triggerPopFootName": "VWh0dG_triggerPopFootName"
414
523
  };
415
524
  //#endregion
416
525
  //#region src/client/plan-knowledge.ts
@@ -961,6 +1070,30 @@ window.__ModuleLoader__.load({
961
1070
  output: 8.4
962
1071
  }
963
1072
  },
1073
+ {
1074
+ key: "minimax-m2.7",
1075
+ name: "MiniMax-M2.7",
1076
+ provider: "MiniMax",
1077
+ colorVar: "dsw-static-amber-400",
1078
+ price: {
1079
+ currency: "CNY",
1080
+ input: 2.1,
1081
+ cacheHit: .42,
1082
+ output: 8.4
1083
+ }
1084
+ },
1085
+ {
1086
+ key: "minimax-m2.7-highspeed",
1087
+ name: "MiniMax-M2.7-highspeed",
1088
+ provider: "MiniMax",
1089
+ colorVar: "dsw-static-amber-500",
1090
+ price: {
1091
+ currency: "CNY",
1092
+ input: 4.2,
1093
+ cacheHit: .42,
1094
+ output: 16.8
1095
+ }
1096
+ },
964
1097
  {
965
1098
  key: "ernie",
966
1099
  name: "ERNIE-5.1",
@@ -1214,7 +1347,13 @@ window.__ModuleLoader__.load({
1214
1347
  "kimi-k3": "kimi-k3",
1215
1348
  "minimax-m1": "minimax",
1216
1349
  "minimax-m2": "minimax",
1217
- "minimax-m3": "minimax"
1350
+ "minimax-m3": "minimax",
1351
+ "minimax-m2.7": "minimax-m2.7",
1352
+ "minimax-m2.7-highspeed": "minimax-m2.7-highspeed",
1353
+ "minimax-m2.7-high-speed": "minimax-m2.7-highspeed",
1354
+ "minimax-m2-7": "minimax-m2.7",
1355
+ "minimax-m2-7-highspeed": "minimax-m2.7-highspeed",
1356
+ "minimax-m2-7-high-speed": "minimax-m2.7-highspeed"
1218
1357
  };
1219
1358
  /**
1220
1359
  * 模型 id 归一化:小写、去括号附注(如 `gpt5.6 luna(go)` 只看主体)、再去所有
@@ -2027,61 +2166,58 @@ window.__ModuleLoader__.load({
2027
2166
  //#endregion
2028
2167
  //#region src/client/PluginInfoCard.tsx
2029
2168
  /**
2030
- * PluginInfoCard: 「设置 → 插件信息」卡——展示头像/作者、GitHub 仓库、版本号、
2031
- * 许可证等插件元信息。版本号来自服务端 usage-stats 的 `pluginVersion`(读自
2032
- * 包 package.json),其余元信息静态来自 `plugin-info.ts`。无版本号时显示 em dash。
2169
+ * PluginInfoCard: 「设置 → 插件信息」卡——图标 + 插件名/版本 tag + 描述,下接
2170
+ * 元信息网格(作者 / 仓库 / npm / 许可证)。版本号来自服务端 usage-stats 的
2171
+ * `pluginVersion`(读自包 package.json),其余元信息静态来自 `plugin-info.ts`。
2172
+ * 无版本号时显示 em dash。
2033
2173
  */
2034
2174
  /** 信息卡 props:locale 函数 + 版本号(服务端下发,可为空)。 */
2035
2175
  function PluginInfoCard({ t, version }) {
2036
2176
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("section", {
2037
- className: UsageBilling_module_css_default.panel,
2177
+ className: UsageBilling_module_css_default.setCard,
2038
2178
  "data-testid": "billing-plugin-info",
2039
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
2040
- className: UsageBilling_module_css_default.panelHead,
2041
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("h3", {
2042
- className: UsageBilling_module_css_default.panelTitle,
2043
- children: t("billing.pluginInfo")
2044
- })
2045
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
2046
- className: UsageBilling_module_css_default.pluginInfo,
2047
- children: [
2048
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
2049
- className: UsageBilling_module_css_default.pluginInfoRow,
2050
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
2051
- className: UsageBilling_module_css_default.pluginInfoLabel,
2052
- children: t("billing.pluginName")
2053
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
2054
- className: UsageBilling_module_css_default.pluginInfoValue,
2179
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
2180
+ className: UsageBilling_module_css_default.plgHead,
2181
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
2182
+ className: UsageBilling_module_css_default.plgIcon,
2183
+ "aria-hidden": "true",
2184
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("svg", {
2185
+ width: "20",
2186
+ height: "20",
2187
+ viewBox: "0 0 24 24",
2188
+ fill: "none",
2189
+ stroke: "currentColor",
2190
+ strokeWidth: "2",
2191
+ strokeLinecap: "round",
2192
+ strokeLinejoin: "round",
2193
+ children: /* @__PURE__ */ (0, react_jsx_runtime.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" })
2194
+ })
2195
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
2196
+ className: UsageBilling_module_css_default.plgTitle,
2197
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
2198
+ className: UsageBilling_module_css_default.plgNameRow,
2199
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("h3", {
2200
+ className: UsageBilling_module_css_default.plgName,
2055
2201
  children: PLUGIN_NAME
2056
- })]
2057
- }),
2058
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
2059
- className: UsageBilling_module_css_default.pluginInfoRow,
2060
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
2061
- className: UsageBilling_module_css_default.pluginInfoLabel,
2062
- children: t("billing.pluginDescription")
2063
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
2064
- className: UsageBilling_module_css_default.pluginInfoValue,
2065
- children: PLUGIN_DESCRIPTION
2066
- })]
2067
- }),
2068
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
2069
- className: UsageBilling_module_css_default.pluginInfoRow,
2070
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
2071
- className: UsageBilling_module_css_default.pluginInfoLabel,
2072
- children: t("billing.pluginVersion")
2073
2202
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
2074
- className: UsageBilling_module_css_default.pluginInfoValue,
2203
+ className: UsageBilling_module_css_default.plgTag,
2075
2204
  children: version === void 0 ? "—" : `v${version}`
2076
2205
  })]
2077
- }),
2206
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
2207
+ className: UsageBilling_module_css_default.plgDesc,
2208
+ children: PLUGIN_DESCRIPTION
2209
+ })]
2210
+ })]
2211
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
2212
+ className: UsageBilling_module_css_default.plgGrid,
2213
+ children: [
2078
2214
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
2079
- className: UsageBilling_module_css_default.pluginInfoRow,
2215
+ className: UsageBilling_module_css_default.plgItem,
2080
2216
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
2081
- className: UsageBilling_module_css_default.pluginInfoLabel,
2217
+ className: UsageBilling_module_css_default.plgLabel,
2082
2218
  children: t("billing.pluginAuthor")
2083
2219
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("a", {
2084
- className: UsageBilling_module_css_default.pluginInfoLink,
2220
+ className: UsageBilling_module_css_default.plgLink,
2085
2221
  href: `https://github.com/${PLUGIN_AUTHOR_HANDLE}`,
2086
2222
  target: "_blank",
2087
2223
  rel: "noreferrer",
@@ -2094,25 +2230,25 @@ window.__ModuleLoader__.load({
2094
2230
  })]
2095
2231
  }),
2096
2232
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
2097
- className: UsageBilling_module_css_default.pluginInfoRow,
2233
+ className: UsageBilling_module_css_default.plgItem,
2098
2234
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
2099
- className: UsageBilling_module_css_default.pluginInfoLabel,
2235
+ className: UsageBilling_module_css_default.plgLabel,
2100
2236
  children: t("billing.pluginRepository")
2101
2237
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("a", {
2102
- className: UsageBilling_module_css_default.pluginInfoLink,
2238
+ className: UsageBilling_module_css_default.plgLink,
2103
2239
  href: PLUGIN_REPOSITORY,
2104
2240
  target: "_blank",
2105
2241
  rel: "noreferrer",
2106
- children: PLUGIN_REPOSITORY
2242
+ children: "GitHub"
2107
2243
  })]
2108
2244
  }),
2109
2245
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
2110
- className: UsageBilling_module_css_default.pluginInfoRow,
2246
+ className: UsageBilling_module_css_default.plgItem,
2111
2247
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
2112
- className: UsageBilling_module_css_default.pluginInfoLabel,
2248
+ className: UsageBilling_module_css_default.plgLabel,
2113
2249
  children: t("billing.pluginNpm")
2114
2250
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("a", {
2115
- className: UsageBilling_module_css_default.pluginInfoLink,
2251
+ className: UsageBilling_module_css_default.plgLink,
2116
2252
  href: PLUGIN_NPM_URL,
2117
2253
  target: "_blank",
2118
2254
  rel: "noreferrer",
@@ -2120,12 +2256,12 @@ window.__ModuleLoader__.load({
2120
2256
  })]
2121
2257
  }),
2122
2258
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
2123
- className: UsageBilling_module_css_default.pluginInfoRow,
2259
+ className: UsageBilling_module_css_default.plgItem,
2124
2260
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
2125
- className: UsageBilling_module_css_default.pluginInfoLabel,
2261
+ className: UsageBilling_module_css_default.plgLabel,
2126
2262
  children: t("billing.pluginLicense")
2127
2263
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
2128
- className: UsageBilling_module_css_default.pluginInfoValue,
2264
+ className: UsageBilling_module_css_default.plgVal,
2129
2265
  children: "MIT"
2130
2266
  })]
2131
2267
  })
@@ -3193,7 +3329,10 @@ window.__ModuleLoader__.load({
3193
3329
  "billing.trendMetricTokens": "Token",
3194
3330
  "billing.trendEmpty": "暂无趋势数据",
3195
3331
  "billing.budget": "本月预算",
3332
+ "billing.budgetAmount": "预算金额",
3333
+ "billing.budgetSummary": "本月已用 {used} / {total};达到 80% 时提醒,达到 100% 时红色脉冲警示",
3196
3334
  "billing.sessions": "会话明细",
3335
+ "billing.sessionTitle": "标题",
3197
3336
  "billing.project": "项目",
3198
3337
  "billing.lastActive": "最后活跃",
3199
3338
  "billing.sessionOverflow": "仅显示花费前 {limit} 个,共 {total} 个会话",
@@ -3216,12 +3355,23 @@ window.__ModuleLoader__.load({
3216
3355
  "billing.band": "时段",
3217
3356
  "billing.openDashboard": "打开计费仪表盘",
3218
3357
  "billing.close": "关闭",
3358
+ "billing.footer": "每 30s 自动轮询 · 仅统计本机 dsh 会话",
3359
+ "billing.footerCredit": "dsh-ui-usage-billing {version} · MIT",
3219
3360
  "billing.lastUpdated": "数据更新于",
3220
3361
  "billing.noData": "暂无计费数据",
3221
3362
  "billing.todayRate": "今日汇率",
3222
3363
  "billing.rateLive": "实时",
3223
3364
  "billing.rateBuiltin": "内置",
3224
3365
  "billing.pricingTip": "DeepSeek 模型自北京时间 2026-08-23(周日)00:00 起:工作日高峰 9-12 / 14-18(×2),周末(周六 / 周日)全天低谷价;双价单元格按峰 / 谷展示,费用按调用时刻计。",
3366
+ "billing.pricingUnit": "单位:人民币 / 每百万 Token",
3367
+ "billing.pricingNotes": "计价说明",
3368
+ "billing.ubPeak": "峰",
3369
+ "billing.ubOff": "谷",
3370
+ "billing.peakBand": "峰谷分带",
3371
+ "billing.pricingSource": "数据来源",
3372
+ "billing.noteCache": "命中部分按缓存价计费,显著降低成本。",
3373
+ "billing.noteBand": "高峰与空闲时段单价不同,空闲约半价。",
3374
+ "billing.noteSource": "价格来自实时汇率 + 模型定价目录,未收录模型按 0 计并提示。",
3225
3375
  "billing.balance": "余额",
3226
3376
  "billing.balanceUnconfigured": "未配置",
3227
3377
  "billing.balanceUnauthorized": "密钥无效",
@@ -3248,8 +3398,10 @@ window.__ModuleLoader__.load({
3248
3398
  "billing.subscriptionNoApi": "该厂商暂未提供用量查询接口",
3249
3399
  "billing.floatWindow": "模型用量悬浮窗",
3250
3400
  "billing.floatModeCombined": "综合",
3251
- "billing.floatModeSubscription": "指定订阅卡",
3252
- "billing.floatWindowHint": "悬浮在左下角计费卡上的用量速览;综合=当前样式,指定订阅卡=每次展示一张订阅额度卡(可切换)。",
3401
+ "billing.floatModeSubscription": "订阅卡",
3402
+ "billing.floatMode": "展示模式",
3403
+ "billing.floatTargets": "订阅目标",
3404
+ "billing.floatWindowHint": "悬浮在左下角计费卡上的用量速览;综合=当前样式,订阅卡=每次展示一张订阅额度卡(可切换)。",
3253
3405
  "billing.floatNoTargets": "未指定订阅通道,请在设置中勾选要展示的订阅。",
3254
3406
  "billing.floatNoTargetsHint": "暂无可选的订阅通道。",
3255
3407
  "billing.floatPrev": "上一张订阅",
@@ -3262,12 +3414,17 @@ window.__ModuleLoader__.load({
3262
3414
  "billing.currencyUsd": "美元",
3263
3415
  "billing.heatmap": "用量热力图",
3264
3416
  "billing.rounds": "每轮费用",
3417
+ "billing.roundsHint": "最近 {count} 轮 · 柱顶为金额 · 底色为峰谷时段",
3265
3418
  "billing.anomaly": "成本突增",
3266
3419
  "billing.workspaces": "工作区统计",
3420
+ "billing.workspacesHint": "点击行下钻项目成本前 5 会话",
3267
3421
  "billing.plan": "套餐",
3268
3422
  "billing.remaining": "剩余",
3269
3423
  "billing.unknownModel": "未定价",
3270
3424
  "billing.model": "模型",
3425
+ "billing.thModel": "模型名称",
3426
+ "billing.thInputMiss": "输入缓存未命中",
3427
+ "billing.thInputHit": "输入缓存命中",
3271
3428
  "billing.currentRound": "当前",
3272
3429
  "billing.costAbbr": "费用",
3273
3430
  "billing.tabOverview": "概览",
@@ -3280,8 +3437,8 @@ window.__ModuleLoader__.load({
3280
3437
  "billing.settingsHint": "管理与计费相关的偏好",
3281
3438
  "billing.budgetHint": "设置月度上限,用于本月预计与超支分段提醒",
3282
3439
  "billing.peakAlertHint": "在切档前弹窗提醒,可选同步系统通知",
3283
- "billing.peakAlertDescPeak": "高峰价生效,不急的调用可稍候",
3284
- "billing.peakAlertDescOff": "价格减半省钱窗口已开启",
3440
+ "billing.peakAlertDescPeak": "即将进入高峰时段,价格将上调,请提前安排长任务",
3441
+ "billing.peakAlertDescOff": "即将进入平价时段,价格减半,适合运行大批量任务",
3285
3442
  "billing.export": "导出",
3286
3443
  "billing.exportCsvDay": "按日 CSV",
3287
3444
  "billing.exportCsvSession": "按会话 CSV",
@@ -3304,6 +3461,8 @@ window.__ModuleLoader__.load({
3304
3461
  "billing.peakAlertTitleOff": "即将进入平价",
3305
3462
  "billing.peakAlert": "峰谷切换提醒",
3306
3463
  "billing.peakAlertLeadMin": "提前量(分钟)",
3464
+ "billing.peakAlertPos": "位置",
3465
+ "billing.peakAlertMode": "提醒模式",
3307
3466
  "billing.peakAlertPosCorner": "右下角",
3308
3467
  "billing.peakAlertPosCenter": "屏幕居中",
3309
3468
  "billing.peakAlertModePeak": "仅进入峰时",
@@ -3369,10 +3528,10 @@ window.__ModuleLoader__.load({
3369
3528
  "billing.balanceDaysLong": "约可撑",
3370
3529
  "billing.balanceDaysUnit": "天",
3371
3530
  "billing.popTodayModel": "主力消耗模型余额",
3531
+ "billing.popTitle": "用量速览",
3372
3532
  "billing.popNoConsumption": "暂无消耗",
3373
3533
  "billing.popQuotaAlert": "额度提醒",
3374
3534
  "billing.popRiskNone": "余额与配额正常",
3375
- "billing.popTitle": "用量与预测",
3376
3535
  "billing.popDirectLead": "直联",
3377
3536
  "billing.popSubLead": "订阅",
3378
3537
  "billing.popBalanceNormal": "余额正常",
@@ -3421,7 +3580,10 @@ window.__ModuleLoader__.load({
3421
3580
  "billing.trendMetricTokens": "Tokens",
3422
3581
  "billing.trendEmpty": "No trend data yet",
3423
3582
  "billing.budget": "Monthly budget",
3583
+ "billing.budgetAmount": "Budget amount",
3584
+ "billing.budgetSummary": "Used {used} / {total} this month; warn at 80%, pulse red at 100%",
3424
3585
  "billing.sessions": "Sessions",
3586
+ "billing.sessionTitle": "Title",
3425
3587
  "billing.project": "Project",
3426
3588
  "billing.lastActive": "Last active",
3427
3589
  "billing.sessionOverflow": "Top {limit} of {total} sessions by cost",
@@ -3444,12 +3606,23 @@ window.__ModuleLoader__.load({
3444
3606
  "billing.band": "Band",
3445
3607
  "billing.openDashboard": "Open billing dashboard",
3446
3608
  "billing.close": "Close",
3609
+ "billing.footer": "Polls every 30s · local dsh sessions only",
3610
+ "billing.footerCredit": "dsh-ui-usage-billing {version} · MIT",
3447
3611
  "billing.lastUpdated": "Updated",
3448
3612
  "billing.noData": "No billing data yet",
3449
3613
  "billing.todayRate": "Today rate",
3450
3614
  "billing.rateLive": "Live",
3451
3615
  "billing.rateBuiltin": "Built-in",
3452
3616
  "billing.pricingTip": "DeepSeek models: from 2026-08-23 (Sun) 00:00 Beijing, weekdays peak 9-12 / 14-18 (×2), weekends (Sat/Sun) all-day off-peak; cells show peak/off-peak price, billed at call time.",
3617
+ "billing.pricingUnit": "Unit: CNY / per 1M tokens",
3618
+ "billing.pricingNotes": "Pricing notes",
3619
+ "billing.ubPeak": "Peak",
3620
+ "billing.ubOff": "Off",
3621
+ "billing.peakBand": "Peak/off-peak band",
3622
+ "billing.pricingSource": "Data source",
3623
+ "billing.noteCache": "Cache hits are billed at the cache rate, cutting cost.",
3624
+ "billing.noteBand": "Peak and off-peak prices differ; off-peak is roughly half price.",
3625
+ "billing.noteSource": "Prices come from the live rate + model catalog; unlisted models count as 0 and are flagged.",
3453
3626
  "billing.balance": "Balance",
3454
3627
  "billing.balanceUnconfigured": "Not set",
3455
3628
  "billing.balanceUnauthorized": "Bad key",
@@ -3476,7 +3649,9 @@ window.__ModuleLoader__.load({
3476
3649
  "billing.subscriptionNoApi": "Provider does not offer a usage API",
3477
3650
  "billing.floatWindow": "Model usage popover",
3478
3651
  "billing.floatModeCombined": "Combined",
3479
- "billing.floatModeSubscription": "Subscription cards",
3652
+ "billing.floatModeSubscription": "Subscription card",
3653
+ "billing.floatMode": "Display mode",
3654
+ "billing.floatTargets": "Targets",
3480
3655
  "billing.floatWindowHint": "Usage summary floating on the footer card; Combined=current style, Subscription cards=one quota card at a time (switchable).",
3481
3656
  "billing.floatNoTargets": "No subscription selected — pick some in Settings.",
3482
3657
  "billing.floatNoTargetsHint": "No subscription channel available.",
@@ -3490,12 +3665,17 @@ window.__ModuleLoader__.load({
3490
3665
  "billing.currencyUsd": "USD",
3491
3666
  "billing.heatmap": "Usage heatmap",
3492
3667
  "billing.rounds": "Cost per turn",
3668
+ "billing.roundsHint": "Last {count} rounds · bar tops show amount · fill = peak/off-peak",
3493
3669
  "billing.anomaly": "Cost spike",
3494
3670
  "billing.workspaces": "Workspaces",
3671
+ "billing.workspacesHint": "Click a row to drill into its top-5 sessions",
3495
3672
  "billing.plan": "Plan",
3496
3673
  "billing.remaining": "Left",
3497
3674
  "billing.unknownModel": "Unpriced",
3498
3675
  "billing.model": "Model",
3676
+ "billing.thModel": "Model name",
3677
+ "billing.thInputMiss": "Input (cache miss)",
3678
+ "billing.thInputHit": "Input (cache hit)",
3499
3679
  "billing.currentRound": "current",
3500
3680
  "billing.costAbbr": "cost",
3501
3681
  "billing.tabOverview": "Overview",
@@ -3508,8 +3688,8 @@ window.__ModuleLoader__.load({
3508
3688
  "billing.settingsHint": "Manage billing-related preferences",
3509
3689
  "billing.budgetHint": "Set a monthly cap for projections and tier alerts",
3510
3690
  "billing.peakAlertHint": "Alert before a tier switch, optionally via system notification",
3511
- "billing.peakAlertDescPeak": "Peak pricing active — non-urgent calls can wait",
3512
- "billing.peakAlertDescOff": "Off-peak savings window is on",
3691
+ "billing.peakAlertDescPeak": "About to enter peak hours — prices rise, plan long tasks ahead",
3692
+ "billing.peakAlertDescOff": "About to enter off-peak hours — price halves, ideal for large batches",
3513
3693
  "billing.export": "Export",
3514
3694
  "billing.exportCsvDay": "Daily CSV",
3515
3695
  "billing.exportCsvSession": "Sessions CSV",
@@ -3532,6 +3712,8 @@ window.__ModuleLoader__.load({
3532
3712
  "billing.peakAlertTitleOff": "Off-peak incoming",
3533
3713
  "billing.peakAlert": "Peak/off-peak alert",
3534
3714
  "billing.peakAlertLeadMin": "Lead time (min)",
3715
+ "billing.peakAlertPos": "Position",
3716
+ "billing.peakAlertMode": "Remind mode",
3535
3717
  "billing.peakAlertPosCorner": "Bottom-right",
3536
3718
  "billing.peakAlertPosCenter": "Center",
3537
3719
  "billing.peakAlertModePeak": "Entering peak only",
@@ -3597,10 +3779,10 @@ window.__ModuleLoader__.load({
3597
3779
  "billing.balanceDaysLong": "~days left",
3598
3780
  "billing.balanceDaysUnit": "days",
3599
3781
  "billing.popTodayModel": "Main model balance",
3782
+ "billing.popTitle": "Usage overview",
3600
3783
  "billing.popNoConsumption": "No usage yet",
3601
3784
  "billing.popQuotaAlert": "Quota alerts",
3602
3785
  "billing.popRiskNone": "Balances & quotas OK",
3603
- "billing.popTitle": "Usage & forecast",
3604
3786
  "billing.popDirectLead": "Direct",
3605
3787
  "billing.popSubLead": "Subscription",
3606
3788
  "billing.popBalanceNormal": "balance ok",
@@ -3726,8 +3908,8 @@ window.__ModuleLoader__.load({
3726
3908
  //#region src/client/PeakAlertBanner.tsx
3727
3909
  /**
3728
3910
  * 峰谷切换提醒浮层:切档前状态条(右下角或居中)。用 `position: fixed` 即可在
3729
- * 任意宿主容器内覆盖整个视口,因此不需要 portal。布局为「档位徽标 + 大号等宽
3730
- * 倒计时 + 一句说明 + 关闭」,克制冷调、无重力阴影。渲染是受控的:父组件把命中
3911
+ * 任意宿主容器内覆盖整个视口,因此不需要 portal。布局按设计 peak-card:头部
3912
+ * (档位 tag + 关闭)→ 大号等宽倒计时 → 一句说明。渲染是受控的:父组件把命中
3731
3913
  * (hit)与偏好传入,显示剩余分钟并在切换后消失。
3732
3914
  */
3733
3915
  /** 渲染一个切档前提醒状态条。 */
@@ -3749,29 +3931,35 @@ window.__ModuleLoader__.load({
3749
3931
  const entering = hit.entering;
3750
3932
  const tag = entering === "peak" ? t("billing.tierPeak") : t("billing.tierOff");
3751
3933
  const desc = entering === "peak" ? t("billing.peakAlertDescPeak") : t("billing.peakAlertDescOff");
3934
+ const isPeak = entering === "peak";
3752
3935
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
3753
- className: clsx(UsageBilling_module_css_default.peakAlert, entering === "peak" ? UsageBilling_module_css_default.peakAlertPeak : UsageBilling_module_css_default.peakAlertOff, config.position === "center" ? UsageBilling_module_css_default.peakAlertCenter : UsageBilling_module_css_default.peakAlertCorner),
3936
+ className: clsx(UsageBilling_module_css_default.peakCard, isPeak ? UsageBilling_module_css_default.peakCardPeak : UsageBilling_module_css_default.peakCardOff, config.position === "center" ? UsageBilling_module_css_default.peakCardCenter : UsageBilling_module_css_default.peakCardCorner),
3754
3937
  "data-testid": "billing-peak-alert",
3755
3938
  role: "alert",
3756
3939
  children: [
3757
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
3758
- className: UsageBilling_module_css_default.peakAlertTag,
3759
- children: tag
3940
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
3941
+ className: UsageBilling_module_css_default.peakHead,
3942
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
3943
+ className: clsx(UsageBilling_module_css_default.peakTag, isPeak ? UsageBilling_module_css_default.peakTagPrimary : UsageBilling_module_css_default.peakTagSuccess),
3944
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
3945
+ className: clsx(UsageBilling_module_css_default.peakDot, isPeak ? UsageBilling_module_css_default.peakDotPrimary : UsageBilling_module_css_default.peakDotSuccess),
3946
+ "aria-hidden": "true"
3947
+ }), tag]
3948
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
3949
+ type: "button",
3950
+ className: UsageBilling_module_css_default.peakClose,
3951
+ onClick: onDismiss,
3952
+ "aria-label": t("billing.close"),
3953
+ children: "×"
3954
+ })]
3760
3955
  }),
3761
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
3762
- className: UsageBilling_module_css_default.peakAlertCountdown,
3763
- children: [minutes, "m"]
3956
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
3957
+ className: clsx(UsageBilling_module_css_default.peakCount, isPeak ? UsageBilling_module_css_default.peakCountPrimary : UsageBilling_module_css_default.peakCountSuccess),
3958
+ children: [minutes, "min"]
3764
3959
  }),
3765
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
3766
- className: UsageBilling_module_css_default.peakAlertText,
3960
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
3961
+ className: UsageBilling_module_css_default.peakDesc,
3767
3962
  children: desc
3768
- }),
3769
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
3770
- type: "button",
3771
- className: UsageBilling_module_css_default.peakAlertClose,
3772
- onClick: onDismiss,
3773
- "aria-label": t("billing.close"),
3774
- children: "×"
3775
3963
  })
3776
3964
  ]
3777
3965
  });
@@ -4387,16 +4575,24 @@ window.__ModuleLoader__.load({
4387
4575
  children: cardIcon
4388
4576
  }),
4389
4577
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
4390
- className: UsageBilling_module_css_default.triggerBody,
4578
+ className: UsageBilling_module_css_default.triggerMain,
4391
4579
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
4392
- className: UsageBilling_module_css_default.triggerRow,
4393
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
4394
- className: UsageBilling_module_css_default.triggerMeta,
4395
- children: t("billing.triggerMonth")
4396
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
4397
- className: UsageBilling_module_css_default.triggerAmount,
4398
- children: formatMoney(monthCost)
4399
- })]
4580
+ className: UsageBilling_module_css_default.triggerPrimary,
4581
+ children: [
4582
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
4583
+ className: UsageBilling_module_css_default.triggerLabel,
4584
+ children: t("billing.triggerMonth")
4585
+ }),
4586
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
4587
+ className: UsageBilling_module_css_default.triggerYen,
4588
+ "aria-hidden": "true",
4589
+ children: formatMoney(monthCost).charAt(0)
4590
+ }),
4591
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
4592
+ className: UsageBilling_module_css_default.triggerMetric,
4593
+ children: formatMoney(monthCost).slice(1)
4594
+ })
4595
+ ]
4400
4596
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
4401
4597
  className: UsageBilling_module_css_default.triggerSub,
4402
4598
  "data-testid": "billing-trigger-today",
@@ -4447,154 +4643,171 @@ window.__ModuleLoader__.load({
4447
4643
  className: UsageBilling_module_css_default.subscriptionWindow,
4448
4644
  children: [
4449
4645
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
4450
- className: UsageBilling_module_css_default.subscriptionWindowLabel,
4451
- children: subscriptionWindowLabel(window.kind, t)
4646
+ className: UsageBilling_module_css_default.subscriptionWindowLabel,
4647
+ children: subscriptionWindowLabel(window.kind, t)
4648
+ }),
4649
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
4650
+ className: UsageBilling_module_css_default.subscriptionTrack,
4651
+ "aria-hidden": "true",
4652
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
4653
+ className: clsx(UsageBilling_module_css_default.subscriptionFill, used >= 100 && UsageBilling_module_css_default.subscriptionFillOver, used >= 80 && used < 100 && UsageBilling_module_css_default.subscriptionFillWarn),
4654
+ style: { width: `${used}%` }
4655
+ })
4656
+ }),
4657
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
4658
+ className: UsageBilling_module_css_default.subscriptionMeta,
4659
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
4660
+ className: clsx(UsageBilling_module_css_default.subscriptionPct, exhausted && UsageBilling_module_css_default.subscriptionExhausted),
4661
+ children: exhausted ? t("billing.subscriptionExhausted") : t("billing.subscriptionRemaining").replace("{pct}", String(window.remainingPercent))
4662
+ }), window.resetsAt !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
4663
+ className: UsageBilling_module_css_default.subscriptionReset,
4664
+ children: t("billing.subscriptionReset").replace("{date}", `${localDayStamp(new Date(window.resetsAt).getTime())} ${formatClock(new Date(window.resetsAt).getTime())}`)
4665
+ })]
4666
+ })
4667
+ ]
4668
+ }, window.kind);
4669
+ })())]
4670
+ }), targetSubs.length > 1 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
4671
+ className: UsageBilling_module_css_default.triggerPopSwitcher,
4672
+ "data-testid": "billing-float-switcher",
4673
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
4674
+ className: UsageBilling_module_css_default.triggerPopSwitchCount,
4675
+ children: [
4676
+ effectiveSubIndex + 1,
4677
+ "/",
4678
+ targetSubs.length
4679
+ ]
4680
+ })
4681
+ })] }) }) : /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [
4682
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
4683
+ className: UsageBilling_module_css_default.popHead,
4684
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
4685
+ className: UsageBilling_module_css_default.popTitle,
4686
+ children: t("billing.popTitle")
4687
+ })
4688
+ }),
4689
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
4690
+ className: UsageBilling_module_css_default.metricGrid,
4691
+ children: [
4692
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
4693
+ className: UsageBilling_module_css_default.metricCell,
4694
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
4695
+ className: UsageBilling_module_css_default.metricLabel,
4696
+ children: t("billing.monthCost")
4697
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
4698
+ className: clsx(UsageBilling_module_css_default.metricValue, UsageBilling_module_css_default.metricValuePrimary),
4699
+ children: formatMoney(monthCost)
4700
+ })]
4701
+ }),
4702
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
4703
+ className: UsageBilling_module_css_default.metricCell,
4704
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
4705
+ className: UsageBilling_module_css_default.metricLabel,
4706
+ children: t("billing.tokenTotal")
4707
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
4708
+ className: UsageBilling_module_css_default.metricValue,
4709
+ children: formatTokens(dash.totalToken)
4710
+ })]
4711
+ }),
4712
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
4713
+ className: UsageBilling_module_css_default.metricCell,
4714
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
4715
+ className: UsageBilling_module_css_default.metricLabel,
4716
+ children: t("billing.input")
4717
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
4718
+ className: UsageBilling_module_css_default.metricValue,
4719
+ children: formatTokens(dash.input)
4720
+ })]
4721
+ }),
4722
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
4723
+ className: UsageBilling_module_css_default.metricCell,
4724
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
4725
+ className: UsageBilling_module_css_default.metricLabel,
4726
+ children: t("billing.output")
4727
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
4728
+ className: UsageBilling_module_css_default.metricValue,
4729
+ children: formatTokens(dash.output)
4730
+ })]
4731
+ }),
4732
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
4733
+ className: UsageBilling_module_css_default.metricCell,
4734
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
4735
+ className: UsageBilling_module_css_default.metricLabel,
4736
+ children: t("billing.cacheHit")
4737
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
4738
+ className: clsx(UsageBilling_module_css_default.metricValue, UsageBilling_module_css_default.metricValueSuccess),
4739
+ children: formatTokens(dash.cacheRead)
4740
+ })]
4741
+ }),
4742
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
4743
+ className: UsageBilling_module_css_default.metricCell,
4744
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
4745
+ className: UsageBilling_module_css_default.metricLabel,
4746
+ children: t("billing.calls")
4747
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
4748
+ className: UsageBilling_module_css_default.metricValue,
4749
+ children: dash.calls.toLocaleString()
4750
+ })]
4751
+ })
4752
+ ]
4753
+ }),
4754
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
4755
+ className: UsageBilling_module_css_default.popModel,
4756
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
4757
+ className: UsageBilling_module_css_default.popModelLabel,
4758
+ children: t("billing.popTodayModel")
4759
+ }), vendorStatus.direct !== void 0 || vendorStatus.sub !== void 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [vendorStatus.direct !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
4760
+ className: UsageBilling_module_css_default.popModelRow,
4761
+ children: [
4762
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
4763
+ className: clsx(UsageBilling_module_css_default.popDot, UsageBilling_module_css_default.popDotDirect),
4764
+ "aria-hidden": "true"
4765
+ }),
4766
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
4767
+ className: UsageBilling_module_css_default.popTagPrimary,
4768
+ children: t("billing.popDirectLead")
4769
+ }),
4770
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
4771
+ className: UsageBilling_module_css_default.popModelName,
4772
+ children: vendorStatus.direct.name
4773
+ }),
4774
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
4775
+ className: clsx(UsageBilling_module_css_default.popModelStatus, vendorStatus.direct.low && UsageBilling_module_css_default.popModelStatusLow),
4776
+ children: vendorStatus.direct.text
4777
+ })
4778
+ ]
4779
+ }), vendorStatus.sub !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
4780
+ className: UsageBilling_module_css_default.popModelRow,
4781
+ children: [
4782
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
4783
+ className: clsx(UsageBilling_module_css_default.popDot, UsageBilling_module_css_default.popDotSub),
4784
+ "aria-hidden": "true"
4785
+ }),
4786
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
4787
+ className: UsageBilling_module_css_default.popTagSub,
4788
+ children: t("billing.popSubLead")
4452
4789
  }),
4453
4790
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
4454
- className: UsageBilling_module_css_default.subscriptionTrack,
4455
- "aria-hidden": "true",
4456
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
4457
- className: clsx(UsageBilling_module_css_default.subscriptionFill, used >= 100 && UsageBilling_module_css_default.subscriptionFillOver, used >= 80 && used < 100 && UsageBilling_module_css_default.subscriptionFillWarn),
4458
- style: { width: `${used}%` }
4459
- })
4791
+ className: UsageBilling_module_css_default.popModelName,
4792
+ children: vendorStatus.sub.name
4460
4793
  }),
4461
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
4462
- className: UsageBilling_module_css_default.subscriptionMeta,
4463
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
4464
- className: clsx(UsageBilling_module_css_default.subscriptionPct, exhausted && UsageBilling_module_css_default.subscriptionExhausted),
4465
- children: exhausted ? t("billing.subscriptionExhausted") : t("billing.subscriptionRemaining").replace("{pct}", String(window.remainingPercent))
4466
- }), window.resetsAt !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
4467
- className: UsageBilling_module_css_default.subscriptionReset,
4468
- children: t("billing.subscriptionReset").replace("{date}", `${localDayStamp(new Date(window.resetsAt).getTime())} ${formatClock(new Date(window.resetsAt).getTime())}`)
4469
- })]
4794
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
4795
+ className: clsx(UsageBilling_module_css_default.popModelStatus, vendorStatus.sub.low && UsageBilling_module_css_default.popModelStatusLow),
4796
+ children: vendorStatus.sub.text
4470
4797
  })
4471
4798
  ]
4472
- }, window.kind);
4473
- })())]
4474
- }), targetSubs.length > 1 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
4475
- className: UsageBilling_module_css_default.triggerPopSwitcher,
4476
- "data-testid": "billing-float-switcher",
4477
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
4478
- className: UsageBilling_module_css_default.triggerPopSwitchCount,
4479
- children: [
4480
- effectiveSubIndex + 1,
4481
- "/",
4482
- targetSubs.length
4483
- ]
4484
- })
4485
- })] }) }) : /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
4486
- className: UsageBilling_module_css_default.triggerPopMetrics,
4487
- children: [
4488
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
4489
- className: UsageBilling_module_css_default.triggerPopMetric,
4490
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
4491
- className: UsageBilling_module_css_default.triggerPopMetricLabel,
4492
- children: t("billing.monthCost")
4493
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
4494
- className: clsx(UsageBilling_module_css_default.triggerPopMetricValue, UsageBilling_module_css_default.triggerPopMetricHighlight),
4495
- children: formatMoney(monthCost)
4496
- })]
4497
- }),
4498
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
4499
- className: UsageBilling_module_css_default.triggerPopMetric,
4500
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
4501
- className: UsageBilling_module_css_default.triggerPopMetricLabel,
4502
- children: t("billing.tokenTotal")
4503
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
4504
- className: UsageBilling_module_css_default.triggerPopMetricValue,
4505
- children: formatTokens(dash.totalToken)
4506
- })]
4507
- }),
4508
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
4509
- className: UsageBilling_module_css_default.triggerPopMetric,
4510
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
4511
- className: UsageBilling_module_css_default.triggerPopMetricLabel,
4512
- children: t("billing.input")
4513
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
4514
- className: UsageBilling_module_css_default.triggerPopMetricValue,
4515
- children: formatTokens(dash.input)
4516
- })]
4517
- }),
4518
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
4519
- className: UsageBilling_module_css_default.triggerPopMetric,
4520
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
4521
- className: UsageBilling_module_css_default.triggerPopMetricLabel,
4522
- children: t("billing.output")
4523
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
4524
- className: UsageBilling_module_css_default.triggerPopMetricValue,
4525
- children: formatTokens(dash.output)
4526
- })]
4527
- }),
4528
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
4529
- className: UsageBilling_module_css_default.triggerPopMetric,
4530
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
4531
- className: UsageBilling_module_css_default.triggerPopMetricLabel,
4532
- children: t("billing.cacheHit")
4533
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
4534
- className: UsageBilling_module_css_default.triggerPopMetricValue,
4535
- children: formatTokens(dash.cacheRead)
4536
- })]
4537
- }),
4538
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
4539
- className: UsageBilling_module_css_default.triggerPopMetric,
4799
+ })] }) : /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
4800
+ className: UsageBilling_module_css_default.popModelRow,
4540
4801
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
4541
- className: UsageBilling_module_css_default.triggerPopMetricLabel,
4542
- children: t("billing.calls")
4802
+ className: clsx(UsageBilling_module_css_default.popDot, UsageBilling_module_css_default.popDotNeutral),
4803
+ "aria-hidden": "true"
4543
4804
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
4544
- className: UsageBilling_module_css_default.triggerPopMetricValue,
4545
- children: dash.calls.toLocaleString()
4546
- })]
4547
- })
4548
- ]
4549
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
4550
- className: UsageBilling_module_css_default.triggerPopFoot,
4551
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
4552
- className: UsageBilling_module_css_default.triggerPopFootTitle,
4553
- children: t("billing.popTodayModel")
4554
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
4555
- className: UsageBilling_module_css_default.triggerPopFootNotes,
4556
- children: [
4557
- vendorStatus.direct !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
4558
- className: UsageBilling_module_css_default.triggerPopFootNote,
4559
- children: [
4560
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
4561
- className: clsx(UsageBilling_module_css_default.triggerPopBadge, UsageBilling_module_css_default.triggerPopBadgeDirect),
4562
- children: t("billing.popDirectLead")
4563
- }),
4564
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
4565
- className: UsageBilling_module_css_default.triggerPopFootName,
4566
- children: vendorStatus.direct.name
4567
- }),
4568
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
4569
- className: clsx(UsageBilling_module_css_default.triggerPopFootStatus, vendorStatus.direct.low && UsageBilling_module_css_default.triggerPopFootStatusLow),
4570
- children: vendorStatus.direct.text
4571
- })
4572
- ]
4573
- }),
4574
- vendorStatus.sub !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
4575
- className: UsageBilling_module_css_default.triggerPopFootNote,
4576
- children: [
4577
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
4578
- className: clsx(UsageBilling_module_css_default.triggerPopBadge, UsageBilling_module_css_default.triggerPopBadgeSub),
4579
- children: t("billing.popSubLead")
4580
- }),
4581
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
4582
- className: UsageBilling_module_css_default.triggerPopFootName,
4583
- children: vendorStatus.sub.name
4584
- }),
4585
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
4586
- className: clsx(UsageBilling_module_css_default.triggerPopFootStatus, vendorStatus.sub.low && UsageBilling_module_css_default.triggerPopFootStatusLow),
4587
- children: vendorStatus.sub.text
4588
- })
4589
- ]
4590
- }),
4591
- vendorStatus.direct === void 0 && vendorStatus.sub === void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
4592
- className: UsageBilling_module_css_default.triggerPopFootNote,
4805
+ className: UsageBilling_module_css_default.popModelStatus,
4593
4806
  children: t("billing.popNoConsumption")
4594
- })
4595
- ]
4596
- })]
4597
- })] })
4807
+ })]
4808
+ })]
4809
+ })
4810
+ ] })
4598
4811
  })]
4599
4812
  });
4600
4813
  }
@@ -4820,6 +5033,7 @@ window.__ModuleLoader__.load({
4820
5033
  yearCost,
4821
5034
  t
4822
5035
  ]);
5036
+ const heroBudgetPct = budgetEnabled && budgetAmount > 0 ? monthCost / budgetAmount * 100 : 0;
4823
5037
  const trendDates = (0, react.useMemo)(() => {
4824
5038
  const out = [];
4825
5039
  for (let offset = trendDays - 1; offset >= 0; offset -= 1) {
@@ -5017,7 +5231,7 @@ window.__ModuleLoader__.load({
5017
5231
  onClick: () => {
5018
5232
  onCurrency(unit);
5019
5233
  },
5020
- children: unit === "cny" ? "¥" : "$"
5234
+ children: unit === "cny" ? "¥ CNY" : "$ USD"
5021
5235
  }, unit))
5022
5236
  }),
5023
5237
  health.checked && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
@@ -5128,20 +5342,31 @@ window.__ModuleLoader__.load({
5128
5342
  className: UsageBilling_module_css_default.heroTop,
5129
5343
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
5130
5344
  className: UsageBilling_module_css_default.heroMain,
5131
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
5132
- className: UsageBilling_module_css_default.heroLabel,
5133
- children: t("billing.monthCost")
5134
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
5135
- className: UsageBilling_module_css_default.heroReadout,
5136
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
5137
- className: UsageBilling_module_css_default.heroCurrency,
5138
- "aria-hidden": "true",
5139
- children: currency === "usd" ? "$" : "¥"
5140
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
5141
- className: UsageBilling_module_css_default.heroValue,
5142
- children: money(monthCost).slice(1)
5143
- })]
5144
- })]
5345
+ children: [
5346
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
5347
+ className: UsageBilling_module_css_default.heroLabel,
5348
+ children: t("billing.monthCost")
5349
+ }),
5350
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
5351
+ className: UsageBilling_module_css_default.heroReadout,
5352
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
5353
+ className: UsageBilling_module_css_default.heroCurrency,
5354
+ "aria-hidden": "true",
5355
+ children: currency === "usd" ? "$" : "¥"
5356
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
5357
+ className: UsageBilling_module_css_default.heroValue,
5358
+ children: money(monthCost).slice(1)
5359
+ })]
5360
+ }),
5361
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
5362
+ className: UsageBilling_module_css_default.heroMeta,
5363
+ children: [
5364
+ total.calls.toLocaleString(),
5365
+ " ",
5366
+ t("billing.calls")
5367
+ ]
5368
+ })
5369
+ ]
5145
5370
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
5146
5371
  className: UsageBilling_module_css_default.heroGauge,
5147
5372
  "data-testid": "billing-hero-gauge",
@@ -5173,6 +5398,39 @@ window.__ModuleLoader__.load({
5173
5398
  })]
5174
5399
  })]
5175
5400
  }),
5401
+ budgetEnabled && budgetAmount > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
5402
+ className: UsageBilling_module_css_default.heroBudget,
5403
+ "data-testid": "billing-hero-budget",
5404
+ children: [
5405
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
5406
+ className: UsageBilling_module_css_default.heroBudgetLabel,
5407
+ children: t("billing.budget")
5408
+ }),
5409
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
5410
+ className: UsageBilling_module_css_default.heroBudgetTrack,
5411
+ role: "progressbar",
5412
+ "aria-valuenow": Math.min(heroBudgetPct, 100),
5413
+ "aria-valuemin": 0,
5414
+ "aria-valuemax": 100,
5415
+ "aria-label": t("billing.budget"),
5416
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
5417
+ className: clsx(UsageBilling_module_css_default.heroBudgetFill, heroBudgetPct >= 100 && UsageBilling_module_css_default.heroBudgetFillOver),
5418
+ style: { width: `${Math.min(heroBudgetPct, 100)}%` }
5419
+ })
5420
+ }),
5421
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
5422
+ className: UsageBilling_module_css_default.heroBudgetValue,
5423
+ children: [
5424
+ money(monthCost),
5425
+ " / ",
5426
+ money(budgetAmount),
5427
+ " · ",
5428
+ heroBudgetPct.toFixed(1),
5429
+ "%"
5430
+ ]
5431
+ })
5432
+ ]
5433
+ }),
5176
5434
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
5177
5435
  className: UsageBilling_module_css_default.heroSide,
5178
5436
  children: [
@@ -5375,136 +5633,134 @@ window.__ModuleLoader__.load({
5375
5633
  className: UsageBilling_module_css_default.tabPanel,
5376
5634
  "data-testid": "billing-tab-panel-settings",
5377
5635
  children: [
5378
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
5379
- className: UsageBilling_module_css_default.settingsHead,
5380
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("h3", {
5381
- className: UsageBilling_module_css_default.settingsTitle,
5382
- children: t("billing.settingsHead")
5383
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
5384
- className: UsageBilling_module_css_default.settingsHint,
5385
- children: t("billing.settingsHint")
5386
- })]
5387
- }),
5388
5636
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("section", {
5389
- className: UsageBilling_module_css_default.budget,
5637
+ className: UsageBilling_module_css_default.setCard,
5390
5638
  "data-testid": "billing-budget",
5391
- children: [
5392
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
5393
- className: UsageBilling_module_css_default.budgetHead,
5394
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
5395
- className: UsageBilling_module_css_default.budgetLabel,
5639
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
5640
+ className: UsageBilling_module_css_default.setCardHead,
5641
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
5642
+ className: UsageBilling_module_css_default.setCardMeta,
5643
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("h3", {
5644
+ className: UsageBilling_module_css_default.setCardTitle,
5396
5645
  children: t("billing.budget")
5397
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
5398
- className: UsageBilling_module_css_default.budgetControls,
5399
- children: [
5400
- budgetEnabled && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
5401
- className: UsageBilling_module_css_default.budgetInputWrap,
5402
- "data-testid": "billing-budget-input-wrap",
5403
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
5404
- className: UsageBilling_module_css_default.budgetUnit,
5405
- "aria-hidden": "true",
5406
- children: "¥"
5407
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
5408
- className: UsageBilling_module_css_default.budgetInput,
5409
- "data-testid": "billing-budget-input",
5410
- type: "number",
5411
- min: 0,
5412
- step: 1,
5413
- value: budgetAmount === 0 ? "" : budgetAmount,
5414
- placeholder: stats.budget !== void 0 ? String(stats.budget) : "0",
5415
- "aria-label": `${t("billing.budget")}(${currency === "usd" ? "USD" : "CNY"})`,
5416
- title: `${t("billing.budget")}(${currency === "usd" ? "USD" : "CNY"})`,
5417
- onChange: (e) => {
5418
- onBudgetAmount(e.target.valueAsNumber);
5419
- }
5420
- })]
5421
- }),
5422
- budgetEnabled && budgetAmount > 0 && (() => {
5423
- const pct = monthCost / budgetAmount * 100;
5424
- return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
5425
- className: UsageBilling_module_css_default.budgetValue,
5426
- "data-testid": "billing-budget-value",
5427
- children: [
5428
- money(monthCost),
5429
- " / ",
5430
- money(budgetAmount),
5431
- " · ",
5432
- pct.toFixed(1),
5433
- "%"
5434
- ]
5435
- });
5436
- })(),
5437
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
5438
- type: "button",
5439
- role: "switch",
5440
- "aria-checked": budgetEnabled,
5646
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
5647
+ className: UsageBilling_module_css_default.setCardDesc,
5648
+ children: t("billing.budgetHint")
5649
+ })]
5650
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
5651
+ type: "button",
5652
+ role: "switch",
5653
+ "aria-checked": budgetEnabled,
5654
+ "aria-label": t("billing.budget"),
5655
+ "data-testid": "billing-budget-toggle",
5656
+ className: clsx(UsageBilling_module_css_default.switch, budgetEnabled && UsageBilling_module_css_default.switchOn),
5657
+ onClick: onToggleBudget,
5658
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { className: UsageBilling_module_css_default.switchKnob })
5659
+ })]
5660
+ }), budgetEnabled && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
5661
+ className: UsageBilling_module_css_default.ctlCol,
5662
+ children: [
5663
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
5664
+ className: UsageBilling_module_css_default.ctlRow,
5665
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
5666
+ className: UsageBilling_module_css_default.ctlLabel,
5667
+ children: t("billing.budgetAmount")
5668
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
5669
+ className: UsageBilling_module_css_default.inp,
5670
+ "data-testid": "billing-budget-input-wrap",
5671
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
5672
+ className: UsageBilling_module_css_default.affix,
5673
+ "aria-hidden": "true",
5674
+ children: "¥"
5675
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
5676
+ className: UsageBilling_module_css_default.budgetInput,
5677
+ "data-testid": "billing-budget-input",
5678
+ type: "number",
5679
+ min: 0,
5680
+ step: 1,
5681
+ value: budgetAmount === 0 ? "" : budgetAmount,
5682
+ placeholder: stats.budget !== void 0 ? String(stats.budget) : "0",
5683
+ "aria-label": `${t("billing.budget")}(${currency === "usd" ? "USD" : "CNY"})`,
5684
+ title: `${t("billing.budget")}(${currency === "usd" ? "USD" : "CNY"})`,
5685
+ onChange: (e) => {
5686
+ onBudgetAmount(e.target.valueAsNumber);
5687
+ }
5688
+ })]
5689
+ })]
5690
+ }),
5691
+ budgetAmount > 0 && (() => {
5692
+ const pct = monthCost / budgetAmount * 100;
5693
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
5694
+ className: UsageBilling_module_css_default.ctlRowStretch,
5695
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
5696
+ className: UsageBilling_module_css_default.prog,
5697
+ role: "progressbar",
5698
+ "aria-valuenow": Math.min(pct, 100),
5699
+ "aria-valuemin": 0,
5700
+ "aria-valuemax": 100,
5441
5701
  "aria-label": t("billing.budget"),
5442
- "data-testid": "billing-budget-toggle",
5443
- className: clsx(UsageBilling_module_css_default.switch, budgetEnabled && UsageBilling_module_css_default.switchOn),
5444
- onClick: onToggleBudget,
5445
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { className: UsageBilling_module_css_default.switchKnob })
5702
+ "data-testid": "billing-budget-track",
5703
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
5704
+ className: clsx(UsageBilling_module_css_default.progFill, pct >= 100 && UsageBilling_module_css_default.budgetFillOver, pct >= 80 && pct < 100 && UsageBilling_module_css_default.budgetFillWarn),
5705
+ style: { width: `${Math.min(pct, 100)}%` }
5706
+ })
5446
5707
  })
5447
- ]
5448
- })]
5449
- }),
5450
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
5451
- className: UsageBilling_module_css_default.budgetHint,
5452
- children: t("billing.budgetHint")
5453
- }),
5454
- budgetEnabled && budgetAmount > 0 && (() => {
5455
- const pct = monthCost / budgetAmount * 100;
5456
- return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
5457
- className: UsageBilling_module_css_default.budgetTrack,
5458
- "data-testid": "billing-budget-track",
5459
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
5460
- className: clsx(UsageBilling_module_css_default.budgetFill, pct >= 100 && UsageBilling_module_css_default.budgetFillOver, pct >= 80 && pct < 100 && UsageBilling_module_css_default.budgetFillWarn),
5461
- style: { width: `${Math.min(pct, 100)}%` }
5462
- })
5463
- });
5464
- })()
5465
- ]
5708
+ });
5709
+ })(),
5710
+ budgetAmount > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
5711
+ className: UsageBilling_module_css_default.setCardDesc,
5712
+ "data-testid": "billing-budget-value",
5713
+ children: t("billing.budgetSummary").replace("{used}", money(monthCost)).replace("{total}", money(budgetAmount))
5714
+ })
5715
+ ]
5716
+ })]
5466
5717
  }),
5467
5718
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("section", {
5468
- className: UsageBilling_module_css_default.peakAlertPanel,
5719
+ className: UsageBilling_module_css_default.setCard,
5469
5720
  "data-testid": "billing-peak-alert-settings",
5470
- children: [
5471
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
5472
- className: UsageBilling_module_css_default.peakAlertPanelHead,
5473
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
5474
- className: UsageBilling_module_css_default.peakAlertPanelLabel,
5721
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
5722
+ className: UsageBilling_module_css_default.setCardHead,
5723
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
5724
+ className: UsageBilling_module_css_default.setCardMeta,
5725
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("h3", {
5726
+ className: UsageBilling_module_css_default.setCardTitle,
5475
5727
  children: t("billing.peakAlert")
5476
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
5477
- type: "button",
5478
- role: "switch",
5479
- "aria-checked": peakConfig.enabled,
5480
- "aria-label": t("billing.peakAlert"),
5481
- "data-testid": "billing-peak-alert-toggle",
5482
- className: clsx(UsageBilling_module_css_default.switch, peakConfig.enabled && UsageBilling_module_css_default.switchOn),
5483
- onClick: () => {
5484
- onPeakConfig({
5485
- ...peakConfig,
5486
- enabled: !peakConfig.enabled
5487
- });
5488
- },
5489
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { className: UsageBilling_module_css_default.switchKnob })
5728
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
5729
+ className: UsageBilling_module_css_default.setCardDesc,
5730
+ children: t("billing.peakAlertHint")
5490
5731
  })]
5491
- }),
5492
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
5493
- className: UsageBilling_module_css_default.peakAlertHint,
5494
- children: t("billing.peakAlertHint")
5495
- }),
5496
- peakConfig.enabled && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
5497
- className: UsageBilling_module_css_default.peakAlertPanelBody,
5498
- children: [
5499
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
5500
- className: UsageBilling_module_css_default.peakAlertField,
5501
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: t("billing.peakAlertLeadMin") }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
5732
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
5733
+ type: "button",
5734
+ role: "switch",
5735
+ "aria-checked": peakConfig.enabled,
5736
+ "aria-label": t("billing.peakAlert"),
5737
+ "data-testid": "billing-peak-alert-toggle",
5738
+ className: clsx(UsageBilling_module_css_default.switch, peakConfig.enabled && UsageBilling_module_css_default.switchOn),
5739
+ onClick: () => {
5740
+ onPeakConfig({
5741
+ ...peakConfig,
5742
+ enabled: !peakConfig.enabled
5743
+ });
5744
+ },
5745
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { className: UsageBilling_module_css_default.switchKnob })
5746
+ })]
5747
+ }), peakConfig.enabled && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
5748
+ className: UsageBilling_module_css_default.ctlCol,
5749
+ children: [
5750
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
5751
+ className: UsageBilling_module_css_default.ctlRow,
5752
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
5753
+ className: UsageBilling_module_css_default.ctlLabel,
5754
+ children: t("billing.peakAlertLeadMin")
5755
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
5756
+ className: UsageBilling_module_css_default.inp,
5757
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
5502
5758
  type: "number",
5503
5759
  min: 1,
5504
5760
  max: 30,
5505
5761
  step: 1,
5506
5762
  value: peakConfig.leadMin,
5507
- className: UsageBilling_module_css_default.peakAlertNum,
5763
+ className: UsageBilling_module_css_default.budgetInput,
5508
5764
  "aria-label": t("billing.peakAlertLeadMin"),
5509
5765
  onChange: (e) => {
5510
5766
  const v = Number(e.target.valueAsNumber);
@@ -5513,169 +5769,205 @@ window.__ModuleLoader__.load({
5513
5769
  leadMin: Number.isFinite(v) ? Math.min(30, Math.max(1, Math.round(v))) : peakConfig.leadMin
5514
5770
  });
5515
5771
  }
5516
- })]
5517
- }),
5518
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
5519
- className: UsageBilling_module_css_default.peakAlertField,
5520
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: t("billing.peakAlertPosCorner") }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("select", {
5521
- value: peakConfig.position,
5522
- className: UsageBilling_module_css_default.peakAlertSelect,
5523
- onChange: (e) => {
5524
- onPeakConfig({
5525
- ...peakConfig,
5526
- position: e.target.value === "center" ? "center" : "bottom-right"
5527
- });
5528
- },
5529
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("option", {
5530
- value: "bottom-right",
5531
- children: t("billing.peakAlertPosCorner")
5532
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("option", {
5533
- value: "center",
5534
- children: t("billing.peakAlertPosCenter")
5535
- })]
5536
- })]
5537
- }),
5538
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
5539
- className: UsageBilling_module_css_default.peakAlertField,
5540
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: t("billing.peakAlert") }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("select", {
5541
- value: peakConfig.mode,
5542
- className: UsageBilling_module_css_default.peakAlertSelect,
5543
- onChange: (e) => {
5544
- const m = e.target.value;
5545
- onPeakConfig({
5546
- ...peakConfig,
5547
- mode: m === "peak" || m === "offPeak" ? m : "both"
5548
- });
5549
- },
5772
+ })
5773
+ })]
5774
+ }),
5775
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
5776
+ className: UsageBilling_module_css_default.ctlRow,
5777
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
5778
+ className: UsageBilling_module_css_default.ctlLabel,
5779
+ children: t("billing.peakAlertPos")
5780
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
5781
+ className: UsageBilling_module_css_default.ctlGroup,
5782
+ role: "radiogroup",
5783
+ "aria-label": t("billing.peakAlertPos"),
5784
+ children: ["bottom-right", "center"].map((pos) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
5785
+ className: UsageBilling_module_css_default.rdo,
5550
5786
  children: [
5551
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("option", {
5552
- value: "both",
5553
- children: t("billing.peakAlertModeBoth")
5787
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
5788
+ type: "radio",
5789
+ name: "peak-pos",
5790
+ checked: peakConfig.position === pos,
5791
+ onChange: () => onPeakConfig({
5792
+ ...peakConfig,
5793
+ position: pos
5794
+ })
5554
5795
  }),
5555
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("option", {
5556
- value: "peak",
5557
- children: t("billing.peakAlertModePeak")
5796
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
5797
+ className: UsageBilling_module_css_default.rdoDot,
5798
+ "aria-hidden": "true"
5558
5799
  }),
5559
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("option", {
5560
- value: "offPeak",
5561
- children: t("billing.peakAlertModeOff")
5562
- })
5800
+ pos === "bottom-right" ? t("billing.peakAlertPosCorner") : t("billing.peakAlertPosCenter")
5563
5801
  ]
5564
- })]
5565
- }),
5566
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
5567
- className: UsageBilling_module_css_default.peakAlertCheck,
5568
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
5569
- type: "checkbox",
5570
- checked: peakConfig.webNotify,
5571
- onChange: (e) => {
5572
- onPeakConfig({
5573
- ...peakConfig,
5574
- webNotify: e.target.checked
5575
- });
5576
- }
5577
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: t("billing.peakAlertWebNotify") })]
5578
- }),
5579
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
5802
+ }, pos))
5803
+ })]
5804
+ }),
5805
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
5806
+ className: UsageBilling_module_css_default.ctlRow,
5807
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
5808
+ className: UsageBilling_module_css_default.ctlLabel,
5809
+ children: t("billing.peakAlertMode")
5810
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
5811
+ className: UsageBilling_module_css_default.ctlGroup,
5812
+ role: "radiogroup",
5813
+ "aria-label": t("billing.peakAlertMode"),
5814
+ children: [
5815
+ "both",
5816
+ "peak",
5817
+ "offPeak"
5818
+ ].map((m) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
5819
+ className: UsageBilling_module_css_default.rdo,
5820
+ children: [
5821
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
5822
+ type: "radio",
5823
+ name: "peak-mode",
5824
+ checked: peakConfig.mode === m,
5825
+ onChange: () => onPeakConfig({
5826
+ ...peakConfig,
5827
+ mode: m
5828
+ })
5829
+ }),
5830
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
5831
+ className: UsageBilling_module_css_default.rdoDot,
5832
+ "aria-hidden": "true"
5833
+ }),
5834
+ m === "both" ? t("billing.peakAlertModeBoth") : m === "peak" ? t("billing.peakAlertModePeak") : t("billing.peakAlertModeOff")
5835
+ ]
5836
+ }, m))
5837
+ })]
5838
+ }),
5839
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
5840
+ className: UsageBilling_module_css_default.ctlRow,
5841
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
5842
+ className: UsageBilling_module_css_default.ctlLabel,
5843
+ children: t("billing.peakAlertWebNotify")
5844
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
5845
+ type: "checkbox",
5846
+ checked: peakConfig.webNotify,
5847
+ "aria-label": t("billing.peakAlertWebNotify"),
5848
+ onChange: (e) => {
5849
+ onPeakConfig({
5850
+ ...peakConfig,
5851
+ webNotify: e.target.checked
5852
+ });
5853
+ }
5854
+ })]
5855
+ }),
5856
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
5857
+ className: UsageBilling_module_css_default.ctlRow,
5858
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
5580
5859
  type: "button",
5581
- className: UsageBilling_module_css_default.peakAlertPreview,
5860
+ className: UsageBilling_module_css_default.btn,
5582
5861
  onClick: onPreviewPeak,
5583
5862
  children: t("billing.peakAlertPreview")
5584
5863
  })
5585
- ]
5586
- })
5587
- ]
5588
- }),
5589
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("section", {
5590
- className: UsageBilling_module_css_default.budget,
5591
- "data-testid": "billing-usage-stats-tool-setting",
5592
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
5593
- className: UsageBilling_module_css_default.budgetHead,
5594
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
5595
- className: UsageBilling_module_css_default.budgetLabel,
5596
- children: t("billing.usageStatsTool")
5597
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
5598
- className: UsageBilling_module_css_default.budgetControls,
5599
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
5600
- type: "button",
5601
- role: "switch",
5602
- "aria-checked": usageStatsEnabled,
5603
- "aria-label": t("billing.usageStatsTool"),
5604
- "data-testid": "billing-usage-stats-tool-toggle",
5605
- className: clsx(UsageBilling_module_css_default.switch, usageStatsEnabled && UsageBilling_module_css_default.switchOn),
5606
- onClick: toggleUsageStats,
5607
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { className: UsageBilling_module_css_default.switchKnob })
5608
5864
  })
5609
- })]
5610
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
5611
- className: UsageBilling_module_css_default.budgetHint,
5612
- children: t("billing.usageStatsToolHint")
5865
+ ]
5613
5866
  })]
5614
5867
  }),
5615
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("section", {
5616
- className: UsageBilling_module_css_default.budget,
5617
- "data-testid": "billing-float-setting",
5618
- children: [
5619
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
5620
- className: UsageBilling_module_css_default.budgetHead,
5621
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
5622
- className: UsageBilling_module_css_default.budgetLabel,
5623
- children: t("billing.floatWindow")
5624
- })
5625
- }),
5626
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
5627
- className: UsageBilling_module_css_default.floatModeRow,
5628
- "data-testid": "billing-float-mode",
5629
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
5630
- type: "button",
5631
- className: clsx(UsageBilling_module_css_default.floatModeBtn, floatPrefs.mode === "combined" && UsageBilling_module_css_default.floatModeBtnOn),
5632
- "data-testid": "billing-float-mode-combined",
5633
- onClick: () => onFloatPrefs({
5634
- mode: "combined",
5635
- targets: floatPrefs.targets
5636
- }),
5637
- children: t("billing.floatModeCombined")
5638
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
5639
- type: "button",
5640
- className: clsx(UsageBilling_module_css_default.floatModeBtn, floatPrefs.mode === "subscription" && UsageBilling_module_css_default.floatModeBtnOn),
5641
- "data-testid": "billing-float-mode-subscription",
5642
- onClick: () => onFloatPrefs({
5643
- mode: "subscription",
5644
- targets: floatPrefs.targets
5645
- }),
5646
- children: t("billing.floatModeSubscription")
5868
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("section", {
5869
+ className: UsageBilling_module_css_default.setCard,
5870
+ "data-testid": "billing-usage-stats-tool-setting",
5871
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
5872
+ className: UsageBilling_module_css_default.setCardHead,
5873
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
5874
+ className: UsageBilling_module_css_default.setCardMeta,
5875
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("h3", {
5876
+ className: UsageBilling_module_css_default.setCardTitle,
5877
+ children: t("billing.usageStatsTool")
5878
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
5879
+ className: UsageBilling_module_css_default.setCardDesc,
5880
+ children: t("billing.usageStatsToolHint")
5647
5881
  })]
5648
- }),
5649
- floatPrefs.mode === "subscription" && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
5650
- className: UsageBilling_module_css_default.floatTargets,
5651
- "data-testid": "billing-float-targets",
5652
- children: [subscriptionOptions.map((option) => {
5653
- const on = floatPrefs.targets.includes(option.id);
5654
- return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
5655
- className: UsageBilling_module_css_default.floatTarget,
5656
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
5657
- type: "checkbox",
5658
- checked: on,
5659
- "data-testid": `billing-float-target-${option.id}`,
5660
- onChange: () => onFloatPrefs({
5661
- mode: "subscription",
5662
- targets: on ? floatPrefs.targets.filter((id) => id !== option.id) : [...floatPrefs.targets, option.id]
5663
- })
5664
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
5665
- className: UsageBilling_module_css_default.floatTargetLabel,
5666
- children: option.label
5667
- })]
5668
- }, option.id);
5669
- }), subscriptionOptions.length === 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
5670
- className: UsageBilling_module_css_default.budgetHint,
5671
- children: t("billing.floatNoTargetsHint")
5882
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
5883
+ type: "button",
5884
+ role: "switch",
5885
+ "aria-checked": usageStatsEnabled,
5886
+ "aria-label": t("billing.usageStatsTool"),
5887
+ "data-testid": "billing-usage-stats-tool-toggle",
5888
+ className: clsx(UsageBilling_module_css_default.switch, usageStatsEnabled && UsageBilling_module_css_default.switchOn),
5889
+ onClick: toggleUsageStats,
5890
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { className: UsageBilling_module_css_default.switchKnob })
5891
+ })]
5892
+ })
5893
+ }),
5894
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("section", {
5895
+ className: UsageBilling_module_css_default.setCard,
5896
+ "data-testid": "billing-float-setting",
5897
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
5898
+ className: UsageBilling_module_css_default.setCardHead,
5899
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
5900
+ className: UsageBilling_module_css_default.setCardMeta,
5901
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("h3", {
5902
+ className: UsageBilling_module_css_default.setCardTitle,
5903
+ children: t("billing.floatWindow")
5904
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
5905
+ className: UsageBilling_module_css_default.setCardDesc,
5906
+ children: t("billing.floatWindowHint")
5672
5907
  })]
5673
- }),
5674
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
5675
- className: UsageBilling_module_css_default.budgetHint,
5676
- children: t("billing.floatWindowHint")
5677
5908
  })
5678
- ]
5909
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
5910
+ className: UsageBilling_module_css_default.ctlCol,
5911
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
5912
+ className: UsageBilling_module_css_default.ctlRow,
5913
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
5914
+ className: UsageBilling_module_css_default.ctlLabel,
5915
+ children: t("billing.floatMode")
5916
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
5917
+ className: UsageBilling_module_css_default.ctlGroup,
5918
+ "data-testid": "billing-float-mode",
5919
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
5920
+ type: "button",
5921
+ className: clsx(UsageBilling_module_css_default.floatModeBtn, floatPrefs.mode === "combined" && UsageBilling_module_css_default.floatModeBtnOn),
5922
+ "data-testid": "billing-float-mode-combined",
5923
+ onClick: () => onFloatPrefs({
5924
+ mode: "combined",
5925
+ targets: floatPrefs.targets
5926
+ }),
5927
+ children: t("billing.floatModeCombined")
5928
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
5929
+ type: "button",
5930
+ className: clsx(UsageBilling_module_css_default.floatModeBtn, floatPrefs.mode === "subscription" && UsageBilling_module_css_default.floatModeBtnOn),
5931
+ "data-testid": "billing-float-mode-subscription",
5932
+ onClick: () => onFloatPrefs({
5933
+ mode: "subscription",
5934
+ targets: floatPrefs.targets
5935
+ }),
5936
+ children: t("billing.floatModeSubscription")
5937
+ })]
5938
+ })]
5939
+ }), floatPrefs.mode === "subscription" && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
5940
+ className: UsageBilling_module_css_default.ctlRow,
5941
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
5942
+ className: UsageBilling_module_css_default.ctlLabel,
5943
+ children: t("billing.floatTargets")
5944
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
5945
+ className: UsageBilling_module_css_default.ctlGroup,
5946
+ "data-testid": "billing-float-targets",
5947
+ children: [subscriptionOptions.map((option) => {
5948
+ const on = floatPrefs.targets.includes(option.id);
5949
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
5950
+ className: UsageBilling_module_css_default.floatTarget,
5951
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
5952
+ type: "checkbox",
5953
+ checked: on,
5954
+ "data-testid": `billing-float-target-${option.id}`,
5955
+ onChange: () => onFloatPrefs({
5956
+ mode: "subscription",
5957
+ targets: on ? floatPrefs.targets.filter((id) => id !== option.id) : [...floatPrefs.targets, option.id]
5958
+ })
5959
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
5960
+ className: UsageBilling_module_css_default.floatTargetLabel,
5961
+ children: option.label
5962
+ })]
5963
+ }, option.id);
5964
+ }), subscriptionOptions.length === 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
5965
+ className: UsageBilling_module_css_default.setCardDesc,
5966
+ children: t("billing.floatNoTargetsHint")
5967
+ })]
5968
+ })]
5969
+ })]
5970
+ })]
5679
5971
  }),
5680
5972
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)(PluginInfoCard, {
5681
5973
  t,
@@ -5688,48 +5980,50 @@ window.__ModuleLoader__.load({
5688
5980
  "data-testid": "billing-tab-panel-trends",
5689
5981
  children: [
5690
5982
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("section", {
5691
- className: clsx(UsageBilling_module_css_default.panel, UsageBilling_module_css_default.trendPanel),
5983
+ className: clsx(UsageBilling_module_css_default.ubCard, UsageBilling_module_css_default.trendPanel),
5692
5984
  "data-testid": "billing-panel-trend",
5693
5985
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
5694
- className: UsageBilling_module_css_default.panelHead,
5986
+ className: UsageBilling_module_css_default.ubCardHead,
5695
5987
  children: [
5696
5988
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("h3", {
5697
- className: UsageBilling_module_css_default.panelTitle,
5989
+ className: UsageBilling_module_css_default.ubCardTitle,
5698
5990
  children: t("billing.trend")
5699
5991
  }),
5700
5992
  renderSlot("billing.dashboard.decor", { position: "trend" }),
5701
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
5702
- className: UsageBilling_module_css_default.rangeToggle,
5703
- role: "group",
5704
- "aria-label": t("billing.trend"),
5705
- children: [7, 30].map((days) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
5706
- type: "button",
5707
- className: clsx(UsageBilling_module_css_default.rangeButton, trendDays === days && UsageBilling_module_css_default.rangeButtonActive),
5708
- "aria-pressed": trendDays === days,
5709
- "data-testid": `billing-trend-${days}d`,
5710
- onClick: () => {
5711
- setTrendDays(days);
5712
- },
5713
- children: days === 7 ? t("billing.trend7d") : t("billing.trend30d")
5714
- }, days))
5715
- }),
5716
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
5717
- className: UsageBilling_module_css_default.rangeToggle,
5718
- role: "group",
5719
- "aria-label": t("billing.trendMetric"),
5720
- children: ["cost", "tokens"].map((m) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
5721
- type: "button",
5722
- className: clsx(UsageBilling_module_css_default.rangeButton, trendMetric === m && UsageBilling_module_css_default.rangeButtonActive),
5723
- "aria-pressed": trendMetric === m,
5724
- "data-testid": `billing-trend-metric-${m}`,
5725
- onClick: () => {
5726
- setTrendMetric(m);
5727
- },
5728
- children: m === "cost" ? t("billing.trendMetricCost") : t("billing.trendMetricTokens")
5729
- }, m))
5993
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
5994
+ className: UsageBilling_module_css_default.ubCardControlGroup,
5995
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
5996
+ className: UsageBilling_module_css_default.rangeToggle,
5997
+ role: "group",
5998
+ "aria-label": t("billing.trend"),
5999
+ children: [7, 30].map((days) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
6000
+ type: "button",
6001
+ className: clsx(UsageBilling_module_css_default.rangeButton, trendDays === days && UsageBilling_module_css_default.rangeButtonActive),
6002
+ "aria-pressed": trendDays === days,
6003
+ "data-testid": `billing-trend-${days}d`,
6004
+ onClick: () => {
6005
+ setTrendDays(days);
6006
+ },
6007
+ children: days === 7 ? t("billing.trend7d") : t("billing.trend30d")
6008
+ }, days))
6009
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
6010
+ className: UsageBilling_module_css_default.rangeToggle,
6011
+ role: "group",
6012
+ "aria-label": t("billing.trendMetric"),
6013
+ children: ["cost", "tokens"].map((m) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
6014
+ type: "button",
6015
+ className: clsx(UsageBilling_module_css_default.rangeButton, trendMetric === m && UsageBilling_module_css_default.rangeButtonActive),
6016
+ "aria-pressed": trendMetric === m,
6017
+ "data-testid": `billing-trend-metric-${m}`,
6018
+ onClick: () => {
6019
+ setTrendMetric(m);
6020
+ },
6021
+ children: m === "cost" ? t("billing.trendMetricCost") : t("billing.trendMetricTokens")
6022
+ }, m))
6023
+ })]
5730
6024
  }),
5731
6025
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
5732
- className: UsageBilling_module_css_default.panelHint,
6026
+ className: UsageBilling_module_css_default.ubCardSub,
5733
6027
  children: latestDate
5734
6028
  })
5735
6029
  ]
@@ -5741,44 +6035,51 @@ window.__ModuleLoader__.load({
5741
6035
  })]
5742
6036
  }),
5743
6037
  turns.length > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("section", {
5744
- className: UsageBilling_module_css_default.panel,
6038
+ className: UsageBilling_module_css_default.ubCard,
5745
6039
  "data-testid": "billing-panel-rounds",
5746
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
5747
- className: UsageBilling_module_css_default.panelHead,
5748
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("h3", {
5749
- className: UsageBilling_module_css_default.panelTitle,
5750
- children: t("billing.rounds")
5751
- }), roundFlags.length > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
5752
- className: UsageBilling_module_css_default.roundsFlagBadge,
5753
- "data-testid": "billing-rounds-flag-count",
5754
- children: [
5755
- roundFlags.length,
5756
- " ",
5757
- t("billing.anomaly")
5758
- ]
5759
- })]
5760
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(RoundCostChart, {
5761
- rounds: turns,
5762
- flags: roundFlags,
5763
- currency,
5764
- t
5765
- })]
6040
+ children: [
6041
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
6042
+ className: UsageBilling_module_css_default.ubCardHead,
6043
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("h3", {
6044
+ className: UsageBilling_module_css_default.ubCardTitle,
6045
+ children: t("billing.rounds")
6046
+ }), roundFlags.length > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
6047
+ className: UsageBilling_module_css_default.ubTagError,
6048
+ "data-testid": "billing-rounds-flag-count",
6049
+ children: [
6050
+ roundFlags.length,
6051
+ " ",
6052
+ t("billing.anomaly")
6053
+ ]
6054
+ })]
6055
+ }),
6056
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
6057
+ className: UsageBilling_module_css_default.ubCardSub,
6058
+ children: t("billing.roundsHint").replace("{count}", String(turns.length))
6059
+ }),
6060
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(RoundCostChart, {
6061
+ rounds: turns,
6062
+ flags: roundFlags,
6063
+ currency,
6064
+ t
6065
+ })
6066
+ ]
5766
6067
  }),
5767
6068
  turns.length > 0 && (() => {
5768
6069
  const shareTotal = peakShare.peak + peakShare.offPeak;
5769
6070
  if (shareTotal <= 0) return null;
5770
6071
  const peakPct = peakShare.peak / shareTotal * 100;
5771
6072
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("section", {
5772
- className: UsageBilling_module_css_default.panel,
6073
+ className: UsageBilling_module_css_default.ubCard,
5773
6074
  "data-testid": "billing-panel-share",
5774
6075
  children: [
5775
6076
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
5776
- className: UsageBilling_module_css_default.panelHead,
6077
+ className: UsageBilling_module_css_default.ubCardHead,
5777
6078
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("h3", {
5778
- className: UsageBilling_module_css_default.panelTitle,
6079
+ className: UsageBilling_module_css_default.ubCardTitle,
5779
6080
  children: t("billing.peakShare")
5780
6081
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
5781
- className: UsageBilling_module_css_default.panelHint,
6082
+ className: UsageBilling_module_css_default.ubCardSub,
5782
6083
  children: t("billing.peakShareHint").replace("{count}", String(turns.length))
5783
6084
  })]
5784
6085
  }),
@@ -6288,182 +6589,151 @@ window.__ModuleLoader__.load({
6288
6589
  })
6289
6590
  ]
6290
6591
  }),
6291
- bucketSummary !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("section", {
6292
- className: UsageBilling_module_css_default.panel,
6293
- "data-testid": "billing-panel-buckets",
6294
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
6295
- className: UsageBilling_module_css_default.panelHead,
6296
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("h3", {
6297
- className: UsageBilling_module_css_default.panelTitle,
6298
- children: [
6299
- t("billing.official"),
6300
- " / ",
6301
- t("billing.thirdParty")
6302
- ]
6303
- })
6304
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
6305
- className: UsageBilling_module_css_default.bucketSummary,
6592
+ bucketSummary !== void 0 && (() => {
6593
+ const totalCost = bucketSummary.officialCost + bucketSummary.thirdCost;
6594
+ const officialPct = totalCost > 0 ? bucketSummary.officialCost / totalCost * 100 : 0;
6595
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
6596
+ className: UsageBilling_module_css_default.ubStatGrid,
6597
+ "data-testid": "billing-panel-buckets",
6306
6598
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
6307
- className: UsageBilling_module_css_default.bucketStat,
6599
+ className: UsageBilling_module_css_default.ubStatCard,
6308
6600
  children: [
6309
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
6310
- className: UsageBilling_module_css_default.bucketStatLabel,
6311
- children: t("billing.official")
6601
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
6602
+ className: UsageBilling_module_css_default.ubStatLabel,
6603
+ children: [t("billing.official"), "(=DeepSeek 直连)"]
6312
6604
  }),
6313
6605
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
6314
- className: UsageBilling_module_css_default.bucketStatValue,
6606
+ className: UsageBilling_module_css_default.ubStatValue,
6315
6607
  children: money(bucketSummary.officialCost)
6316
6608
  }),
6317
6609
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
6318
- className: UsageBilling_module_css_default.bucketStatSub,
6610
+ className: UsageBilling_module_css_default.ubStatDetail,
6319
6611
  children: [
6320
6612
  bucketSummary.officialCalls,
6321
6613
  " ",
6322
- t("billing.calls")
6614
+ t("billing.calls"),
6615
+ " · ",
6616
+ officialPct.toFixed(1),
6617
+ "%"
6323
6618
  ]
6324
6619
  })
6325
6620
  ]
6326
6621
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
6327
- className: UsageBilling_module_css_default.bucketStat,
6622
+ className: UsageBilling_module_css_default.ubStatCard,
6328
6623
  children: [
6329
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
6330
- className: UsageBilling_module_css_default.bucketStatLabel,
6331
- children: t("billing.thirdParty")
6624
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
6625
+ className: UsageBilling_module_css_default.ubStatLabel,
6626
+ children: [t("billing.thirdParty"), "(中转)"]
6332
6627
  }),
6333
6628
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
6334
- className: UsageBilling_module_css_default.bucketStatValue,
6629
+ className: UsageBilling_module_css_default.ubStatValue,
6335
6630
  children: money(bucketSummary.thirdCost)
6336
6631
  }),
6337
6632
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
6338
- className: UsageBilling_module_css_default.bucketStatSub,
6633
+ className: UsageBilling_module_css_default.ubStatDetail,
6339
6634
  children: [
6340
6635
  bucketSummary.thirdCalls,
6341
6636
  " ",
6342
- t("billing.calls")
6637
+ t("billing.calls"),
6638
+ " · ",
6639
+ (100 - officialPct).toFixed(1),
6640
+ "%"
6343
6641
  ]
6344
6642
  })
6345
6643
  ]
6346
6644
  })]
6347
- })]
6348
- }),
6645
+ });
6646
+ })(),
6349
6647
  stats.byWorkspace !== void 0 && stats.byWorkspace.length > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("section", {
6350
- className: UsageBilling_module_css_default.panel,
6648
+ className: UsageBilling_module_css_default.ubCard,
6351
6649
  "data-testid": "billing-panel-workspaces",
6352
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
6353
- className: UsageBilling_module_css_default.panelHead,
6354
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("h3", {
6355
- className: UsageBilling_module_css_default.panelTitle,
6650
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
6651
+ className: UsageBilling_module_css_default.ubCardHead,
6652
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("h3", {
6653
+ className: UsageBilling_module_css_default.ubCardTitle,
6356
6654
  children: t("billing.workspaces")
6357
- })
6358
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
6359
- className: UsageBilling_module_css_default.tableScroll,
6360
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("table", {
6361
- className: UsageBilling_module_css_default.modelTable,
6362
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("thead", { children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("tr", { children: [
6363
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("th", { children: t("billing.project") }),
6364
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("th", {
6365
- className: UsageBilling_module_css_default.numCol,
6366
- children: t("billing.calls")
6367
- }),
6368
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("th", {
6369
- className: UsageBilling_module_css_default.numCol,
6370
- children: t("billing.inputTokens")
6371
- }),
6372
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("th", {
6373
- className: UsageBilling_module_css_default.numCol,
6374
- children: t("billing.outputTokens")
6375
- }),
6376
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("th", {
6377
- className: UsageBilling_module_css_default.numCol,
6378
- children: t("billing.actual")
6379
- }),
6380
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("th", {
6381
- className: UsageBilling_module_css_default.numCol,
6382
- children: t("billing.lastActive")
6383
- })
6384
- ] }) }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("tbody", { children: stats.byWorkspace.map((row) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("tr", {
6385
- onClick: () => {
6386
- setExpandedProject(expandedProject === row.name ? void 0 : row.name);
6387
- },
6388
- style: { cursor: "pointer" },
6655
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
6656
+ className: UsageBilling_module_css_default.ubCardSub,
6657
+ children: t("billing.workspacesHint")
6658
+ })]
6659
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("ul", {
6660
+ className: UsageBilling_module_css_default.rowlist,
6661
+ children: stats.byWorkspace.map((row) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("li", { children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
6662
+ type: "button",
6663
+ className: UsageBilling_module_css_default.rowline,
6664
+ "data-testid": `billing-workspace-${row.name}`,
6665
+ onClick: () => {
6666
+ setExpandedProject(expandedProject === row.name ? void 0 : row.name);
6667
+ },
6668
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
6669
+ className: UsageBilling_module_css_default.rowlineName,
6670
+ children: row.name
6671
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
6672
+ className: UsageBilling_module_css_default.rowlineRight,
6389
6673
  children: [
6390
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("td", { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
6391
- className: UsageBilling_module_css_default.modelName,
6392
- children: row.name
6393
- }) }),
6394
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("td", {
6395
- className: UsageBilling_module_css_default.numCol,
6396
- children: row.calls.toLocaleString()
6397
- }),
6398
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("td", {
6399
- className: UsageBilling_module_css_default.numCol,
6400
- children: formatTokens(row.input)
6401
- }),
6402
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("td", {
6403
- className: UsageBilling_module_css_default.numCol,
6404
- children: formatTokens(row.output)
6405
- }),
6406
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("td", {
6407
- className: UsageBilling_module_css_default.numCol,
6674
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
6675
+ className: UsageBilling_module_css_default.num,
6408
6676
  children: money(row.cost)
6409
6677
  }),
6410
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("td", {
6411
- className: UsageBilling_module_css_default.numCol,
6412
- children: row.lastActive > 0 ? `${localDayStamp(row.lastActive)}` : "—"
6678
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
6679
+ className: UsageBilling_module_css_default.rowlineMuted,
6680
+ children: [
6681
+ row.calls,
6682
+ " ",
6683
+ t("billing.calls")
6684
+ ]
6685
+ }),
6686
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
6687
+ className: UsageBilling_module_css_default.rowlineChev,
6688
+ "aria-hidden": "true",
6689
+ children: "›"
6413
6690
  })
6414
6691
  ]
6415
- }), expandedProject === row.name && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("tr", { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("td", {
6416
- colSpan: 6,
6417
- style: { padding: "0" },
6418
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("table", {
6419
- className: UsageBilling_module_css_default.modelTable,
6420
- style: {
6421
- margin: 0,
6422
- border: "none",
6423
- background: "var(--dsw-alias-bg-layer-1)"
6424
- },
6425
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("tbody", { children: stats.bySession?.filter((s) => projectName(s.cwd) === row.name).slice(0, 5).map((s) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("tr", { children: [
6426
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("td", { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
6427
- className: UsageBilling_module_css_default.modelName,
6428
- children: s.title ?? s.id.slice(0, 8)
6429
- }) }),
6430
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("td", {
6431
- className: UsageBilling_module_css_default.numCol,
6432
- children: s.calls.toLocaleString()
6433
- }),
6434
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("td", {
6435
- className: UsageBilling_module_css_default.numCol,
6436
- children: money(s.cost)
6437
- }),
6438
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("td", {
6439
- className: UsageBilling_module_css_default.numCol,
6440
- children: localDayStamp(s.lastActive)
6441
- })
6442
- ] }, s.id)) })
6443
- })
6444
- }) })] }, row.name)) })]
6445
- })
6692
+ })]
6693
+ }) }), expandedProject === row.name && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("li", {
6694
+ className: UsageBilling_module_css_default.rowlineDrillWrap,
6695
+ children: stats.bySession?.filter((s) => projectName(s.cwd) === row.name).slice(0, 5).map((s) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
6696
+ className: UsageBilling_module_css_default.rowlineDrill,
6697
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
6698
+ className: UsageBilling_module_css_default.rowlineName,
6699
+ children: s.title ?? s.id.slice(0, 8)
6700
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
6701
+ className: UsageBilling_module_css_default.rowlineRight,
6702
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
6703
+ className: UsageBilling_module_css_default.num,
6704
+ children: money(s.cost)
6705
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
6706
+ className: UsageBilling_module_css_default.rowlineMuted,
6707
+ children: [
6708
+ s.calls,
6709
+ " ",
6710
+ t("billing.calls")
6711
+ ]
6712
+ })]
6713
+ })]
6714
+ }, s.id))
6715
+ })] }, row.name))
6446
6716
  })]
6447
6717
  }),
6448
6718
  stats.bySession !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("section", {
6449
- className: UsageBilling_module_css_default.panel,
6719
+ className: UsageBilling_module_css_default.ubCard,
6450
6720
  "data-testid": "billing-panel-sessions",
6451
6721
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
6452
- className: UsageBilling_module_css_default.panelHead,
6722
+ className: UsageBilling_module_css_default.ubCardHead,
6453
6723
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("h3", {
6454
- className: UsageBilling_module_css_default.panelTitle,
6724
+ className: UsageBilling_module_css_default.ubCardTitle,
6455
6725
  children: t("billing.sessions")
6456
6726
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
6457
- className: UsageBilling_module_css_default.panelHint,
6727
+ className: UsageBilling_module_css_default.ubCardSub,
6458
6728
  children: stats.bySession.length > SESSION_DISPLAY_LIMIT ? t("billing.sessionOverflow").replace("{limit}", String(SESSION_DISPLAY_LIMIT)).replace("{total}", String(stats.bySession.length)) : `${stats.bySession.length}`
6459
6729
  })]
6460
6730
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
6461
- className: UsageBilling_module_css_default.tableScroll,
6731
+ className: UsageBilling_module_css_default.ubTablewrap,
6462
6732
  "data-testid": "billing-sessions-table",
6463
6733
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("table", {
6464
- className: UsageBilling_module_css_default.modelTable,
6734
+ className: UsageBilling_module_css_default.ubTable,
6465
6735
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("thead", { children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("tr", { children: [
6466
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("th", { children: t("billing.sessions") }),
6736
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("th", { children: t("billing.sessionTitle") }),
6467
6737
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("th", { children: t("billing.project") }),
6468
6738
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("th", {
6469
6739
  className: UsageBilling_module_css_default.numCol,
@@ -6535,136 +6805,202 @@ window.__ModuleLoader__.load({
6535
6805
  })]
6536
6806
  })]
6537
6807
  }),
6538
- tab === "pricing" && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
6808
+ tab === "pricing" && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
6539
6809
  className: UsageBilling_module_css_default.tabPanel,
6540
6810
  "data-testid": "billing-tab-panel-pricing",
6541
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("section", {
6542
- className: UsageBilling_module_css_default.panel,
6543
- "data-testid": "billing-panel-pricing",
6544
- children: [
6545
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
6546
- className: UsageBilling_module_css_default.panelHead,
6547
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("h3", {
6548
- className: UsageBilling_module_css_default.panelTitle,
6549
- children: t("billing.pricing")
6550
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
6551
- className: UsageBilling_module_css_default.panelHint,
6811
+ children: [
6812
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
6813
+ className: UsageBilling_module_css_default.ubAlert,
6814
+ role: "note",
6815
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
6816
+ className: UsageBilling_module_css_default.ubAlertLeft,
6817
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
6818
+ className: UsageBilling_module_css_default.ubRate,
6819
+ "data-testid": "billing-rate",
6552
6820
  children: [
6553
6821
  t("billing.todayRate"),
6554
6822
  " 1 USD = ",
6555
- formatMoney(rateInfo.rate),
6556
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
6557
- className: clsx(UsageBilling_module_css_default.rateBadge, rateInfo.live ? UsageBilling_module_css_default.rateBadgeLive : UsageBilling_module_css_default.rateBadgeBuiltin),
6558
- children: rateInfo.live ? t("billing.rateLive") : t("billing.rateBuiltin")
6559
- })
6823
+ formatMoney(rateInfo.rate)
6560
6824
  ]
6825
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
6826
+ className: clsx(UsageBilling_module_css_default.ubTag, rateInfo.live ? UsageBilling_module_css_default.ubTagSuccess : UsageBilling_module_css_default.ubTagNeutral),
6827
+ children: rateInfo.live ? t("billing.rateLive") : t("billing.rateBuiltin")
6561
6828
  })]
6562
- }),
6563
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
6564
- className: UsageBilling_module_css_default.pricingTip,
6829
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
6830
+ className: UsageBilling_module_css_default.ubAlertNote,
6565
6831
  children: t("billing.pricingTip")
6566
- }),
6567
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
6568
- className: UsageBilling_module_css_default.tableScroll,
6832
+ })]
6833
+ }),
6834
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("section", {
6835
+ className: UsageBilling_module_css_default.ubCard,
6836
+ "data-testid": "billing-panel-pricing",
6837
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
6838
+ className: UsageBilling_module_css_default.ubCardHead,
6839
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("h3", {
6840
+ className: UsageBilling_module_css_default.ubCardTitle,
6841
+ children: t("billing.pricing")
6842
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
6843
+ className: UsageBilling_module_css_default.ubCardSub,
6844
+ children: t("billing.pricingUnit")
6845
+ })]
6846
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
6847
+ className: UsageBilling_module_css_default.ubTablewrap,
6569
6848
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("table", {
6570
- className: UsageBilling_module_css_default.pricingTable,
6849
+ className: UsageBilling_module_css_default.ubTable,
6571
6850
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("thead", { children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("tr", { children: [
6572
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("th", { children: "Model" }),
6851
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("th", { children: t("billing.thModel") }),
6573
6852
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("th", {
6574
6853
  className: UsageBilling_module_css_default.numCol,
6575
- children: t("billing.input")
6854
+ children: t("billing.thInputMiss")
6576
6855
  }),
6577
6856
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("th", {
6578
6857
  className: UsageBilling_module_css_default.numCol,
6579
- children: t("billing.cacheHit")
6858
+ children: t("billing.thInputHit")
6580
6859
  }),
6581
6860
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("th", {
6582
6861
  className: UsageBilling_module_css_default.numCol,
6583
6862
  children: t("billing.output")
6584
6863
  }),
6585
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("th", { children: t("billing.band") })
6864
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("th", {
6865
+ className: UsageBilling_module_css_default.numCol,
6866
+ children: t("billing.band")
6867
+ })
6586
6868
  ] }) }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("tbody", { children: catalogEntries().map((entry) => {
6587
6869
  const hasPrice = entry.price.input > 0 || entry.price.output > 0;
6588
6870
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("tr", { children: [
6589
6871
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("td", { children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
6590
- className: UsageBilling_module_css_default.modelCell,
6872
+ className: UsageBilling_module_css_default.ubModel,
6591
6873
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
6592
- className: UsageBilling_module_css_default.modelDot,
6593
- style: { background: resolveToken(entry.colorVar) }
6594
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
6595
- className: UsageBilling_module_css_default.modelName,
6874
+ className: UsageBilling_module_css_default.ubModelDot,
6875
+ style: { background: resolveToken(entry.colorVar) },
6876
+ "aria-hidden": "true"
6877
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
6878
+ className: UsageBilling_module_css_default.ubModelName,
6596
6879
  children: [entry.name, entry.uncatalogued && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
6597
- className: UsageBilling_module_css_default.uncataloguedTag,
6880
+ className: UsageBilling_module_css_default.ubTagAlert,
6598
6881
  "data-testid": "billing-price-uncatalogued",
6599
6882
  children: t("billing.uncatalogued")
6600
6883
  })]
6601
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
6602
- className: UsageBilling_module_css_default.modelProvider,
6603
- children: providerName(entry.provider)
6604
- })] })]
6884
+ })]
6605
6885
  }) }),
6606
6886
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("td", {
6607
6887
  className: UsageBilling_module_css_default.numCol,
6608
- children: hasPrice ? entry.price.offPeak !== void 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
6609
- className: UsageBilling_module_css_default.bandPrice,
6610
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: unitMoney(entry.price.input, entry.price.currency) }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
6611
- className: UsageBilling_module_css_default.bandPriceOff,
6612
- children: unitMoney(entry.price.offPeak.input, entry.price.currency)
6613
- })]
6614
- }) : unitMoney(entry.price.input, entry.price.currency) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
6888
+ children: hasPrice ? unitMoney(entry.price.input, entry.price.currency) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
6615
6889
  className: UsageBilling_module_css_default.na,
6616
6890
  children: "—"
6617
6891
  })
6618
6892
  }),
6619
6893
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("td", {
6620
6894
  className: UsageBilling_module_css_default.numCol,
6621
- children: hasPrice ? entry.price.offPeak !== void 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
6622
- className: UsageBilling_module_css_default.bandPrice,
6623
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: unitMoney(entry.price.cacheHit, entry.price.currency) }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
6624
- className: UsageBilling_module_css_default.bandPriceOff,
6625
- children: unitMoney(entry.price.offPeak.cacheHit, entry.price.currency)
6626
- })]
6627
- }) : unitMoney(entry.price.cacheHit, entry.price.currency) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
6895
+ children: hasPrice ? unitMoney(entry.price.cacheHit, entry.price.currency) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
6628
6896
  className: UsageBilling_module_css_default.na,
6629
6897
  children: "—"
6630
6898
  })
6631
6899
  }),
6632
6900
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("td", {
6633
6901
  className: UsageBilling_module_css_default.numCol,
6634
- children: hasPrice ? entry.price.offPeak !== void 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
6635
- className: UsageBilling_module_css_default.bandPrice,
6636
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: unitMoney(entry.price.output, entry.price.currency) }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
6637
- className: UsageBilling_module_css_default.bandPriceOff,
6638
- children: unitMoney(entry.price.offPeak.output, entry.price.currency)
6639
- })]
6640
- }) : unitMoney(entry.price.output, entry.price.currency) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
6902
+ children: hasPrice ? unitMoney(entry.price.output, entry.price.currency) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
6641
6903
  className: UsageBilling_module_css_default.na,
6642
6904
  children: "—"
6643
6905
  })
6644
6906
  }),
6645
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("td", { children: entry.price.offPeak !== void 0 && entry.peakHours !== void 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
6646
- className: UsageBilling_module_css_default.bandTag,
6647
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", { children: [
6648
- t("billing.peak"),
6649
- " ",
6650
- entry.peakHours
6651
- ] }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
6652
- className: UsageBilling_module_css_default.bandTagOff,
6653
- children: [t("billing.offPeak"), " 50%"]
6654
- })]
6655
- }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
6656
- className: UsageBilling_module_css_default.flatTag,
6657
- children: t("billing.flat")
6658
- }) })
6907
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("td", {
6908
+ className: UsageBilling_module_css_default.numCol,
6909
+ children: hasPrice && entry.price.offPeak !== void 0 && entry.peakHours !== void 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
6910
+ className: UsageBilling_module_css_default.ubPricepair,
6911
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
6912
+ className: UsageBilling_module_css_default.ubChipPeak,
6913
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
6914
+ className: UsageBilling_module_css_default.ubChipLabel,
6915
+ children: t("billing.ubPeak")
6916
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
6917
+ className: UsageBilling_module_css_default.num,
6918
+ children: [
6919
+ unitMoney(entry.price.input, entry.price.currency),
6920
+ " / ",
6921
+ unitMoney(entry.price.output, entry.price.currency)
6922
+ ]
6923
+ })]
6924
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
6925
+ className: UsageBilling_module_css_default.ubChipOff,
6926
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
6927
+ className: UsageBilling_module_css_default.ubChipLabel,
6928
+ children: t("billing.ubOff")
6929
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
6930
+ className: UsageBilling_module_css_default.num,
6931
+ children: [
6932
+ unitMoney(entry.price.offPeak.input, entry.price.currency),
6933
+ " / ",
6934
+ unitMoney(entry.price.offPeak.output, entry.price.currency)
6935
+ ]
6936
+ })]
6937
+ })]
6938
+ }) : hasPrice ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
6939
+ className: UsageBilling_module_css_default.flatTag,
6940
+ children: t("billing.flat")
6941
+ }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
6942
+ className: UsageBilling_module_css_default.na,
6943
+ children: "—"
6944
+ })
6945
+ })
6659
6946
  ] }, entry.key);
6660
6947
  }) })]
6661
6948
  })
6662
- })
6663
- ]
6664
- })
6949
+ })]
6950
+ }),
6951
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("section", {
6952
+ className: UsageBilling_module_css_default.ubCard,
6953
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
6954
+ className: UsageBilling_module_css_default.ubCardHead,
6955
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("h3", {
6956
+ className: UsageBilling_module_css_default.ubCardTitle,
6957
+ children: t("billing.pricingNotes")
6958
+ })
6959
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("ul", {
6960
+ className: UsageBilling_module_css_default.ubNotes,
6961
+ children: [
6962
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("li", {
6963
+ className: UsageBilling_module_css_default.ubNotesItem,
6964
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
6965
+ className: UsageBilling_module_css_default.ubNotesTerm,
6966
+ children: t("billing.cacheHit")
6967
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
6968
+ className: UsageBilling_module_css_default.ubNotesDesc,
6969
+ children: t("billing.noteCache")
6970
+ })]
6971
+ }),
6972
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("li", {
6973
+ className: UsageBilling_module_css_default.ubNotesItem,
6974
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
6975
+ className: UsageBilling_module_css_default.ubNotesTerm,
6976
+ children: t("billing.peakBand")
6977
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
6978
+ className: UsageBilling_module_css_default.ubNotesDesc,
6979
+ children: t("billing.noteBand")
6980
+ })]
6981
+ }),
6982
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("li", {
6983
+ className: UsageBilling_module_css_default.ubNotesItem,
6984
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
6985
+ className: UsageBilling_module_css_default.ubNotesTerm,
6986
+ children: t("billing.pricingSource")
6987
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
6988
+ className: UsageBilling_module_css_default.ubNotesDesc,
6989
+ children: t("billing.noteSource")
6990
+ })]
6991
+ })
6992
+ ]
6993
+ })]
6994
+ })
6995
+ ]
6665
6996
  }),
6666
6997
  renderSlot("billing.dashboard.decor", { position: "footer" })
6667
6998
  ]
6999
+ }),
7000
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("footer", {
7001
+ className: UsageBilling_module_css_default.modalFooter,
7002
+ "data-testid": "billing-footer",
7003
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: t("billing.footer") }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: t("billing.footerCredit").replace("{version}", stats.pluginVersion === void 0 ? "—" : `v${stats.pluginVersion}`) })]
6668
7004
  })
6669
7005
  ]
6670
7006
  })
@@ -7150,57 +7486,66 @@ window.__ModuleLoader__.load({
7150
7486
  const money = (cny) => formatMoney(cny, "cny");
7151
7487
  if (sessionId === void 0) return null;
7152
7488
  const hasCost = sessionCost > 0 || turnCost > 0;
7489
+ const isPeak = tier.tier === "peak";
7153
7490
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
7154
- className: UsageBilling_module_css_default.liveCostBar,
7491
+ className: UsageBilling_module_css_default.feeBar,
7155
7492
  "data-testid": "billing-live-cost-bar",
7156
7493
  children: [
7157
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
7158
- className: tier.tier === "peak" ? UsageBilling_module_css_default.liveTierPeak : UsageBilling_module_css_default.liveTierOff,
7494
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
7495
+ className: isPeak ? UsageBilling_module_css_default.feeChipPrimary : UsageBilling_module_css_default.feeChipOff,
7159
7496
  "data-testid": "billing-live-tier",
7160
- children: [
7161
- tier.tier === "peak" ? t("billing.tierPeak") : t("billing.tierOff"),
7162
- " · ",
7163
- formatSwitchCountdown(tier.nextSwitchInMs),
7164
- " ",
7165
- tier.tier === "peak" ? t("billing.tierToOff") : t("billing.tierToPeak")
7166
- ]
7497
+ children: isPeak ? t("billing.tierPeak") : t("billing.tierOff")
7498
+ }),
7499
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
7500
+ className: UsageBilling_module_css_default.feeCount,
7501
+ children: formatSwitchCountdown(tier.nextSwitchInMs)
7502
+ }),
7503
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
7504
+ className: UsageBilling_module_css_default.feeSuffix,
7505
+ children: isPeak ? t("billing.tierToOff") : t("billing.tierToPeak")
7167
7506
  }),
7168
7507
  hasCost && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [
7169
7508
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
7170
- className: UsageBilling_module_css_default.liveCostSep,
7509
+ className: UsageBilling_module_css_default.feeSep,
7171
7510
  "aria-hidden": "true",
7172
7511
  children: "·"
7173
7512
  }),
7174
7513
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
7175
- className: UsageBilling_module_css_default.liveCostItem,
7514
+ className: UsageBilling_module_css_default.feeItem,
7176
7515
  "data-testid": "billing-live-turn",
7177
7516
  children: [
7178
7517
  t("billing.liveTurn"),
7179
7518
  " ",
7180
- money(turnCost)
7519
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
7520
+ className: UsageBilling_module_css_default.feeNum,
7521
+ children: money(turnCost)
7522
+ })
7181
7523
  ]
7182
7524
  }),
7183
7525
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
7184
- className: UsageBilling_module_css_default.liveCostSep,
7526
+ className: UsageBilling_module_css_default.feeSep,
7185
7527
  "aria-hidden": "true",
7186
7528
  children: "·"
7187
7529
  }),
7188
7530
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
7189
- className: UsageBilling_module_css_default.liveCostItem,
7531
+ className: UsageBilling_module_css_default.feeItem,
7190
7532
  "data-testid": "billing-live-session",
7191
7533
  children: [
7192
7534
  t("billing.liveSession"),
7193
7535
  " ",
7194
- money(sessionCost)
7536
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
7537
+ className: UsageBilling_module_css_default.feeNum,
7538
+ children: money(sessionCost)
7539
+ })
7195
7540
  ]
7196
7541
  })
7197
7542
  ] }),
7198
7543
  chips.map((chip) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
7199
- className: UsageBilling_module_css_default.liveCostSep,
7544
+ className: UsageBilling_module_css_default.feeSep,
7200
7545
  "aria-hidden": "true",
7201
7546
  children: "·"
7202
7547
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
7203
- className: chip.pct <= 10 ? UsageBilling_module_css_default.liveQuotaCrit : UsageBilling_module_css_default.liveQuotaWarn,
7548
+ className: chip.pct <= 10 ? UsageBilling_module_css_default.feeChipError : UsageBilling_module_css_default.feeChipAlert,
7204
7549
  "data-testid": "billing-live-quota",
7205
7550
  children: [
7206
7551
  chip.name,