/**
 * 样式：只用真实存在的 --dsw-* 设计 token，不硬编码颜色（AGENTS.md 硬约束）。
 *
 * 本文件分两部分：
 *
 * 1. `dsh-peakrate-ms-*` —— fork 的模型选择器样式，**取自官方
 *    @deepseek-ai/dsh-client-ui-model-selection（MIT）的 ModelSelect.module.css**，
 *    仅把类名前缀从 `_7KE1Ra_` 改为 `dsh-peakrate-ms-`。
 *    这样做是为了**视觉完全一致**，并复用官方已验证的设计 token
 *    （--dsw-alias-interactive-bg-hover / label-tertiary / border-l3 /
 *      dsh-specific-menu / elevation-prominent 等，比 Theme Inspect 列出的更多）。
 *    上游版本：0.1.5-rc.1。
 *
 * 2. `dsh-peakrate-chip*` 与 `dsh-peakrate-ms-rate*` —— 本插件自己的增量：
 *    composer 工具行的当前模型徽章，以及菜单内每行的倍率徽章。
 */

/* ============ 1) fork 的模型选择器（官方 CSS，类名重命名） ============ */

.dsh-peakrate-ms-root{min-width:0;position:relative}.dsh-peakrate-ms-trigger{min-width:0;max-width:min(360px,45cqw);height:28px;color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:none;border-radius:24px;outline:none;align-items:center;gap:4px;padding:0 4px 0 8px;font-size:13px;font-weight:500;line-height:20px;display:flex}.dsh-peakrate-ms-trigger:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover)}.dsh-peakrate-ms-trigger:focus-visible{box-shadow:0 0 0 2px var(--dsw-alias-border-l3)}.dsh-peakrate-ms-trigger:disabled{color:var(--dsw-alias-label-dimmed);cursor:default}.dsh-peakrate-ms-triggerLabel{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.dsh-peakrate-ms-triggerEffort{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--dsw-alias-label-caption);flex-shrink:1000;overflow:hidden}.dsh-peakrate-ms-triggerIcon{flex:none;display:none}@container (width<=360px){.dsh-peakrate-ms-triggerIcon{display:block}.dsh-peakrate-ms-triggerLabel,.dsh-peakrate-ms-triggerEffort{display:none}}.dsh-peakrate-ms-chevron{color:var(--dsw-alias-label-caption);flex:none;transition:transform .12s}.dsh-peakrate-ms-chevronOpen{transform:rotate(180deg)}.dsh-peakrate-ms-menu{z-index:1100;--dsw-elevation-stroke-color:var(--dsw-alias-border-l1);width:max-content;min-width:min(240px,100vw - 32px);max-width:min(420px,100vw - 32px);max-height:min(360px,100vh - 96px);box-shadow:var(--dsw-elevation-prominent);color:var(--dsw-alias-label-primary);--dsh-scrollbar-thumb:var(--dsw-alias-scrollbar-bg-l2);--dsh-scrollbar-thumb-hover:var(--dsw-alias-scrollbar-hover-l2);border:0;border-radius:var(--dsw-radius-lg);flex-direction:column;padding:4px;display:flex;position:fixed;overflow:hidden}.dsh-peakrate-ms-status,.dsh-peakrate-ms-empty{color:var(--dsw-alias-label-tertiary);padding:10px;font-size:13px;line-height:20px}.dsh-peakrate-ms-error,.dsh-peakrate-ms-warning{background:var(--dsw-alias-interactive-bg-hover-danger);color:var(--dsw-alias-state-error-primary);border-radius:8px;justify-content:space-between;align-items:flex-start;gap:8px;margin-bottom:4px;padding:7px 8px;font-size:12px;line-height:18px;display:flex}.dsh-peakrate-ms-warning{background:var(--dsw-alias-bg-module-platform);color:var(--dsw-alias-state-warn-label)}.dsh-peakrate-ms-retry{color:inherit;font:inherit;cursor:pointer;background:0 0;border:none;flex:none;padding:0;font-weight:600}.dsh-peakrate-ms-groups{min-height:0;overflow-y:auto}.dsh-peakrate-ms-group+.dsh-peakrate-ms-group{margin-top:4px}.dsh-peakrate-ms-groupTitle{z-index:1;background:var(--dsw-specific-menu);color:var(--dsw-alias-label-tertiary);padding:5px 8px 3px;font-size:12px;font-weight:500;line-height:18px;position:sticky;top:0}.dsh-peakrate-ms-option{box-sizing:border-box;width:auto;min-width:100%;min-height:38px;color:inherit;text-align:left;cursor:pointer;background:0 0;border:none;border-radius:10px;outline:none;align-items:center;gap:8px;padding:6px 8px;display:flex}.dsh-peakrate-ms-option:hover:not(:disabled),.dsh-peakrate-ms-option:focus-visible{background:var(--dsw-alias-interactive-bg-hover)}.dsh-peakrate-ms-selected{background:0 0}.dsh-peakrate-ms-option:disabled{color:var(--dsw-alias-label-dimmed);cursor:default}.dsh-peakrate-ms-optionCopy{flex-direction:column;flex:1;min-width:0;display:flex}.dsh-peakrate-ms-modelName{color:inherit;text-overflow:ellipsis;white-space:nowrap;font-size:14px;font-weight:500;line-height:20px;overflow:hidden}.dsh-peakrate-ms-check{color:var(--dsw-alias-label-primary);flex:0 0 18px;place-items:center;display:grid}.dsh-peakrate-ms-cell{box-sizing:border-box;width:auto;min-width:100%;height:40px;color:var(--dsw-alias-label-primary);cursor:pointer;text-align:left;background:0 0;border:none;border-radius:10px;align-items:center;gap:8px;padding:0 10px;font-size:14px;line-height:22px;display:flex}.dsh-peakrate-ms-cell:hover{background:var(--dsw-alias-interactive-bg-hover)}.dsh-peakrate-ms-cellLabel{white-space:nowrap;flex:none}.dsh-peakrate-ms-cellValue{text-overflow:ellipsis;white-space:nowrap;text-align:right;min-width:0;color:var(--dsw-alias-label-tertiary);flex:auto;overflow:hidden}.dsh-peakrate-ms-cellChevron{color:var(--dsw-alias-label-tertiary);flex:none}

/* ============ 2) 本插件增量 ============ */

/* 菜单内每行的倍率徽章 */
.dsh-peakrate-ms-rate {
  flex: none;
  display: inline-flex;
  align-items: center;
  gap: 3px;
  font-size: 12px;
  line-height: 18px;
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
  padding: 1px 6px;
  border-radius: 6px;
  margin-right: 2px;
}

.dsh-peakrate-ms-rateCountdown {
  color: var(--dsw-alias-label-tertiary);
}

/* composer 工具行的当前模型徽章（追加式，免开菜单） */
.dsh-peakrate-chip {
  display: inline-flex;
  align-items: center;
  gap: 2px;
  font-size: 13px;
  line-height: 22px;
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
  padding: 0 8px;
  border-radius: 24px;
  cursor: default;
  user-select: none;
}

.dsh-peakrate-peak {
  color: var(--dsw-alias-state-warn-label);
  background: var(--dsw-alias-interactive-bg-hover);
}

/* 谷时：**绿色**（便宜 = 好）。配色语义统一为：
 *   颜色 = 贵/便宜（峰橙 / 谷绿），图标 = 是哪个时段态（折线上扬/下探、星芒）。
 * 活动态复用同一绿色，靠星芒图标与文案（`Campaign`）区分。 */
.dsh-peakrate-offPeak {
  color: var(--dsw-alias-state-success-primary);
  background: var(--dsw-alias-interactive-bg-hover);
}

.dsh-peakrate-chip-badge {
  display: inline-flex;
  align-items: center;
  gap: 3px;
  font-weight: 500;
}

/* 倍率图标：与文字基线对齐 */
.dsh-peakrate-chip-badge svg,
.dsh-peakrate-ms-rate svg {
  flex: none;
}

.dsh-peakrate-chip-countdown {
  color: var(--dsw-alias-label-tertiary);
}

/* ============ 3) 设置页「模型峰谷倍率」 ============ */

.dsh-peakrate-settings {
  padding: 4px 2px 24px;
}

.dsh-peakrate-settings-title {
  margin: 0 0 6px;
  font-size: 15px;
  font-weight: 600;
  color: var(--dsw-alias-label-primary);
}

.dsh-peakrate-settings-desc,
.dsh-peakrate-settings-muted {
  color: var(--dsw-alias-label-tertiary);
  font-size: 13px;
  line-height: 20px;
}

.dsh-peakrate-settings-desc {
  margin: 0 0 14px;
}

.dsh-peakrate-settings-h {
  margin: 18px 0 8px;
  font-size: 13px;
  font-weight: 600;
  color: var(--dsw-alias-label-secondary);
}

/* 「完全没有命中」的告警条 */
.dsh-peakrate-settings-alert {
  background: var(--dsw-alias-interactive-bg-hover-danger);
  color: var(--dsw-alias-state-error-primary);
  border-radius: 10px;
  padding: 10px 12px;
  font-size: 13px;
  line-height: 20px;
  margin-bottom: 8px;
}

.dsh-peakrate-settings-alert ul {
  margin: 6px 0 0;
  padding-left: 18px;
}

.dsh-peakrate-settings-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 13px;
  color: var(--dsw-alias-label-primary);
}

.dsh-peakrate-settings-table th {
  text-align: left;
  font-weight: 500;
  color: var(--dsw-alias-label-tertiary);
  padding: 4px 8px 6px 0;
  border-bottom: 1px solid var(--dsw-alias-border-l2);
}

.dsh-peakrate-settings-table td {
  padding: 5px 8px 5px 0;
  vertical-align: middle;
  border-bottom: 1px solid var(--dsw-alias-border-l1);
}

/* 有意不映射的 provider 行：弱化显示 */
.dsh-peakrate-settings-skip td {
  color: var(--dsw-alias-label-dimmed);
}

.dsh-peakrate-settings-none {
  color: var(--dsw-alias-label-dimmed);
  font-size: 12px;
}

.dsh-peakrate-settings-code {
  background: var(--dsw-alias-bg-layer-1);
  border: 1px solid var(--dsw-alias-border-l1);
  border-radius: 8px;
  padding: 10px 12px;
  font-size: 12px;
  line-height: 18px;
  color: var(--dsw-alias-label-secondary);
  overflow-x: auto;
  margin: 0;
}

/* 活动态（campaign）：品牌色，与峰/谷区分 */
/* 活动态：
 * - 背景**必须与峰/谷一致**（`--dsw-alias-interactive-bg-hover`）。曾用
 *   `--dsw-alias-bg-layer-2`，实测在 light 主题下解析为纯白 `rgb(255,255,255)`
 *   → 与峰/谷的 rgba(38,49,72,0.06) 明显不一致（用户实测发现）。
 * - 文字用 success 色：与峰（warn 橙）和谷（label 灰）都能区分，且语义上
 *   「限时优惠」偏正面。曾用 `--dsw-alias-brand-primary`，实测是近黑
 *   `rgb(15,17,21)`，与正文无差别。
 */
.dsh-peakrate-campaign {
  color: var(--dsw-alias-state-success-primary);
  background: var(--dsw-alias-interactive-bg-hover);
}


/* 菜单再宽一点，容纳「倍率 + 倒计时 + 方向」而不裁切 */
.dsh-peakrate-ms-menu {
  max-width: min(480px, 100vw - 32px);
}


/* ============ 4) 插件配置卡片 —— 对齐官方 PluginCard ============
 * 数值照搬官方 dsh-client-ui-settings-plugins 的 PluginCard CSS module
 * （实测导出：YyYd_a_card / _header / _headText / _name / _description /
 *   _chevron / _chevronOpen / _body）。不直接复用其哈希类名 —— 换版本就会变。
 */
.dsh-peakrate-card {
  border: 0.5px solid var(--dsw-alias-border-l4);
  background: var(--dsw-alias-bg-layer-3);
  border-radius: 16px;
  list-style: none;
  transition: border-color 0.16s, background 0.16s;
}

.dsh-peakrate-cardOpen {
  background: var(--dsw-alias-bg-layer-2);
  border-color: var(--dsw-alias-label-dimmed);
}

.dsh-peakrate-cardHeader {
  appearance: none;
  width: 100%;
  font: inherit;
  color: inherit;
  text-align: left;
  cursor: pointer;
  background: 0 0;
  border: 0;
  border-radius: 12px;
  align-items: center;
  gap: 12px;
  padding: 14px 16px;
  display: flex;
}

.dsh-peakrate-cardHeadText {
  flex-direction: column;
  flex: 1;
  gap: 4px;
  min-width: 0;
  display: flex;
}

.dsh-peakrate-cardName {
  color: var(--dsw-alias-label-primary);
  font-size: 15px;
  font-weight: 600;
  line-height: 1.4;
}

.dsh-peakrate-cardDesc {
  color: var(--dsw-alias-label-tertiary);
  font-size: 13px;
  line-height: 1.5;
}

.dsh-peakrate-cardChevron {
  color: var(--dsw-alias-label-tertiary);
  flex: none;
  transition: transform 0.16s;
}

.dsh-peakrate-cardChevronOpen {
  transform: rotate(180deg);
}

.dsh-peakrate-cardBody {
  border-top: 0.5px solid var(--dsw-alias-border-l2);
  margin: 0 16px;
  padding-bottom: 8px;
}

/* 覆盖表：provider 一行一汇总，「未收录的模型」列允许换行 */
.dsh-peakrate-settings-count {
  white-space: nowrap;
  font-variant-numeric: tabular-nums;
}

/* 覆盖面板顶部的数据来源行 + 立即刷新按钮 */
.dsh-peakrate-settings-bar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 8px;
}

.dsh-peakrate-settings-refresh {
  flex: none;
  font: inherit;
  font-size: 13px;
  line-height: 22px;
  height: 30px;
  padding: 0 12px;
  border: none;
  border-radius: 16px;
  background: var(--dsw-alias-interactive-bg-hover);
  color: inherit;
  cursor: pointer;
}

.dsh-peakrate-settings-refresh:disabled {
  opacity: 0.6;
  cursor: default;
}

/* ============ 5) 自绘悬停卡片（替代原生 title） ============
 * 复用 .dsh-peakrate-ms-menu 的整体观感（圆角卡片 / 阴影 / 菜单底色），
 * 只覆盖内边距与尺寸约束 —— 详情是纯文本块，不需要菜单的限高与滚动。
 *
 * 2026-09-30 修：**必须自己给 background**。原先注释假设「底色」会从 ms-menu 继承，
 * 但实测官方 `dsh-client-ui-model-selection` 的 menu 规则里**并没有 background**
 * （逐字段核对：z-index / --dsw-elevation-stroke-color / width / min-max-width /
 * max-height / box-shadow / color / 两个滚动条变量，无 background）—— 于是悬停卡
 * 背景透明，压在 composer 文字上完全读不清（用户实测截图）。
 * 取 `--dsw-specific-menu`：这正是官方 **HoverCard 原语**
 * （`dsh-client-ui-primitives/HoverCard.module.css`）用的同一条，也是官方各浮层
 * （chat panel / jobs menu / schedule menu / conversation panel）的通用浮层底。
 * macOS 下该 token 解析为 94% 不透明（light `#f8f9faf0` / dark `#303136f0`），可读。
 * 注意：不改 ms-menu —— 那是 fork 自官方的选择器，保持视觉一致。
 */
.dsh-peakrate-hover {
  background: var(--dsw-specific-menu);
  min-width: min(200px, 100vw - 32px);
  max-width: min(360px, 100vw - 32px);
  max-height: none;
  padding: 10px 12px;
  gap: 2px;
  pointer-events: none; /* 浮层不该截获鼠标，否则会在离开徽章时抖动 */
}

.dsh-peakrate-hover-title {
  color: var(--dsw-alias-label-primary);
  font-size: 13px;
  font-weight: 500;
  line-height: 20px;
}

.dsh-peakrate-hover-line {
  color: var(--dsw-alias-label-tertiary);
  font-size: 12px;
  line-height: 18px;
}
