/* ─────────────────────────────────────────────────────────────
 * studio.css —— 在原有设计系统（styles.css）之上新增的组件
 * 只补充新交互需要的类，不改动原文件中已有的任何规则。
 * ───────────────────────────────────────────────────────────── */

/* 模态切换：让两个 tab 等宽，更贴合「二选一」的语义 */
.mode-seg {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 4px;
  margin-bottom: var(--gutter);
}

.mode-seg .seg-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  min-height: 34px;
}

.mode-seg .count-badge {
  font-variant-numeric: tabular-nums;
  opacity: .75;
}

/* 模型能力徽标行 */
.caps {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-top: 8px;
  min-height: 20px;
}

.cap {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 2px 8px;
  font-size: var(--fs-micro);
  line-height: 1.6;
  border-radius: var(--r-pill);
  border: 1px solid var(--line);
  color: var(--text-dim, #a0a0aa);
  background: var(--seg-bg);
  white-space: nowrap;
}

.cap[data-on="1"] {
  color: var(--accent-text);
  border-color: var(--accent-line);
  background: var(--accent-soft);
}

.cap .cap-n {
  font-variant-numeric: tabular-nums;
  opacity: .8;
}

/* 参数字段：动态网格 */
#paramGrid,
#advGrid {
  align-items: end;
}

#paramGrid:empty,
#advGrid:empty,
#mediaSlots:empty {
  display: none;
}

/* 参考素材槽位 */
.media-slot {
  margin-bottom: 12px;
}

.media-slot .slot-list {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-top: 6px;
}

.slot-item {
  position: relative;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  max-width: 100%;
  padding: 3px 26px 3px 8px;
  font-size: var(--fs-xs);
  border-radius: var(--r-sm);
  border: 1px solid var(--line);
  background: var(--seg-bg);
  color: var(--text-dim, #a0a0aa);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.slot-item img {
  width: 22px;
  height: 22px;
  object-fit: cover;
  border-radius: 3px;
  flex: none;
}

.slot-item .slot-x {
  position: absolute;
  right: 4px;
  top: 50%;
  transform: translateY(-50%);
  width: 16px;
  height: 16px;
  border: 0;
  border-radius: 50%;
  background: transparent;
  color: inherit;
  cursor: pointer;
  font-size: 13px;
  line-height: 1;
  opacity: .6;
}

.slot-item .slot-x:hover {
  opacity: 1;
  color: var(--danger-text);
  background: var(--danger-soft);
}

.slot-limit {
  font-size: var(--fs-micro);
  color: var(--text-dim, #8b8b95);
  font-variant-numeric: tabular-nums;
}

/* 提交栏：成本预估 + 生成按钮 */
.composer-foot {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  flex-wrap: wrap;
}

.cost-row {
  display: flex;
  align-items: center;
  gap: 8px;
  min-width: 0;
  flex-wrap: wrap;
}

.cost-chip {
  display: inline-flex;
  align-items: baseline;
  gap: 6px;
  padding: 4px 10px;
  border-radius: var(--r-pill);
  border: 1px solid var(--line);
  background: var(--seg-bg);
  font-variant-numeric: tabular-nums;
}

.cost-chip[data-state="loading"] .cost-value {
  opacity: .45;
}

.cost-chip[data-state="ready"] {
  border-color: var(--accent-line);
  background: var(--accent-soft);
}

.cost-chip[data-state="ready"] .cost-value {
  color: var(--accent-text);
  font-weight: 600;
}

.cost-chip[data-state="approx"] {
  border-color: var(--line-strong);
  border-style: dashed;
}

.cost-chip[data-state="error"] {
  border-color: var(--danger-line);
  background: var(--danger-soft);
}

.cost-chip[data-state="error"] .cost-value {
  color: var(--danger-text);
}

.cost-label {
  font-size: var(--fs-micro);
  text-transform: uppercase;
  letter-spacing: .04em;
  color: var(--text-dim, #8b8b95);
}

.cost-value {
  font-size: var(--fs-md);
  font-weight: 600;
}

.cost-value .cost-unit {
  font-size: var(--fs-micro);
  font-weight: 400;
  opacity: .7;
  margin-left: 2px;
}

.cost-note {
  font-size: var(--fs-micro);
  color: var(--text-dim, #8b8b95);
}

/* 作品卡片：序号徽标（一次生成多张时用） */
.task-index {
  position: absolute;
  left: 8px;
  top: 8px;
  padding: 1px 6px;
  font-size: var(--fs-micro);
  border-radius: var(--r-xs);
  background: var(--badge-bg);
  color: var(--badge-fg);
  border: 1px solid var(--badge-line);
  font-variant-numeric: tabular-nums;
  z-index: 1;
}

.task-media {
  position: relative;
}

/* 任务卡上的成本标签 */
.task-cost {
  font-variant-numeric: tabular-nums;
  opacity: .85;
}

/* 任务类型标签着色：用左侧色条区分 视频/图片 */
.task[data-kind="video"] {
  border-left: 2px solid var(--accent-line);
}

.task[data-kind="image"] {
  border-left: 2px solid rgba(63, 199, 212, .45);
}

/* 空状态在筛选后仍显示时的文案由 JS 控制 */
.empty[hidden] {
  display: none;
}

/* 顶栏状态：红色表示上游不可用 */
.status-dot[data-state="degraded"] {
  background: var(--danger);
  box-shadow: 0 0 0 3px var(--danger-soft);
}

/* 小屏：提交栏竖排 */
@media (max-width: 560px) {
  .composer-foot {
    flex-direction: column;
    align-items: stretch;
  }

  .cost-row {
    justify-content: space-between;
  }
}

/* 打印/降级：不显示动画 */
@media (prefers-reduced-motion: reduce) {
  .cost-chip,
  .cap {
    transition: none;
  }
}


/* ── 多平台（provider）────────────────────────────────── */
.prov-list{display:flex;flex-direction:column;gap:8px;margin-bottom:6px;max-height:38vh;overflow:auto}
.prov-item{display:flex;gap:10px;align-items:center;padding:9px 11px;border:1px solid rgba(255,255,255,.10);border-radius:10px;background:rgba(255,255,255,.03)}
.prov-item .prov-main{flex:1;min-width:0}
.prov-item .prov-name{font-weight:600;font-size:13px}
.prov-item .prov-sub{font-size:11.5px;opacity:.62;word-break:break-all;margin-top:2px}
.prov-item .prov-tag{font-size:10.5px;padding:2px 7px;border-radius:999px;border:1px solid rgba(255,255,255,.14)}
.prov-item .prov-tag[data-ok="1"]{color:#45b98c;border-color:rgba(69,185,140,.5)}
.prov-item .prov-tag[data-ok="0"]{color:#f0616a;border-color:rgba(240,97,106,.5)}
.prov-empty{font-size:12px;opacity:.6;padding:10px 0}
#provModal input.select{width:100%}
