/* ==========================================================================
   fix-v71.css  |  「6」v7.1 前端修复增量（总监截图 8 项退步回归）
   --------------------------------------------------------------------------
   独立成文件以保证在 {% block styles %} 页面样式之后加载（层叠优先），
   同时避免 style.css / deploy.css 突破单文件 300 行上限。
   零硬编码 hex，全部 var(--*)。
   ========================================================================== */

/* ---- 修复2：驾驶舱资源用量四卡 1440px 溢出 ----
   根因：grid 1fr = minmax(auto,1fr)，卡内容 min-content 撑破列宽。
   修复：minmax(0,1fr) + 子项 min-width:0 + 卡内文本 ellipsis。 */
.dk-grid > * { min-width: 0; }
.dk-usage { grid-template-columns: repeat(4, minmax(0, 1fr)); min-width: 0; }
.dk-spark { min-width: 0; max-width: 100%; }
.dk-spark-head { min-width: 0; }
.dk-spark-head svg { flex-shrink: 0; }
.dk-spark-name {
  flex: 1; min-width: 0;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.dk-spark-val { flex-shrink: 0; margin-left: var(--space-2); margin-right: 0; }

/* ---- 修复1（驾驶舱）：空态收窄为一行说明 / 单个紧凑引导卡 ---- */
.dk-tl-note {
  display: flex; align-items: center; gap: var(--space-2); flex-wrap: wrap;
  padding: var(--space-3) var(--space-1);
  font-size: var(--text-sm); color: var(--muted);
}
.dk-tl-note svg { width: 16px; height: 16px; color: var(--meta); flex-shrink: 0; }
.empty-compact { max-width: 440px; padding: var(--space-6) var(--space-4); }
.dk-status .empty-compact { width: 100%; }
.empty-compact .empty-desc { margin-bottom: var(--space-4); }

/* ---- 修复1（首页）：轻量状态行 ---- */
.wb-lite-row {
  display: flex; align-items: center; gap: var(--space-2); flex-wrap: wrap;
  padding: var(--space-3) var(--space-1);
  font-size: var(--text-sm); color: var(--muted);
}
.wb-lite-row svg { width: 16px; height: 16px; color: var(--meta); flex-shrink: 0; }
.wb-lite-row a {
  margin-left: auto; color: var(--accent-text); text-decoration: none; white-space: nowrap;
  transition: color var(--duration-base) var(--ease-standard);
}
.wb-lite-row a:hover { color: var(--fg); text-decoration: underline; }
/* 部署区收窄为状态行后，提交区升为主位（单列全宽） */
.wb-grid.is-stacked { grid-template-columns: 1fr; }
#pubList .gallery { margin: var(--space-3) 0; }
#pubList .list-item + .list-item { border-top: none; }

/* ---- 修复3：仓库页分享三链接 → 一行紧凑条（文件区是第一主内容）---- */
.tri-links.tri-compact {
  display: flex; align-items: center; gap: 12px 14px; flex-wrap: wrap;
  padding: 10px 16px; margin-top: 16px; margin-bottom: 0;
}
.tri-compact .tri-title {
  font-size: 13px; font-weight: 600; color: var(--muted);
  margin: 0; white-space: nowrap; flex-shrink: 0;
}
.tri-compact .tri-strip { display: flex; align-items: center; gap: 8px 18px; flex-wrap: wrap; flex: 1; min-width: 0; }
.tri-compact .tri-cell { display: flex; align-items: center; gap: 6px; min-width: 0; flex: 1; max-width: 360px; }
.tri-compact .tri-k { font-size: 12px; color: var(--muted); flex-shrink: 0; }
.tri-compact .tri-cell input {
  flex: 1; min-width: 0; font-size: 12px; padding: 5px 8px;
  font-family: var(--font-mono); color: var(--muted);
}
.tri-compact .tri-cell .btn-icon { min-height: 28px; width: 28px; flex-shrink: 0; }
.tri-compact .tri-cell a { display: inline-flex; color: var(--primary); flex-shrink: 0; }
.tri-compact .tri-code { margin: 0; font-size: 12px; flex-shrink: 0; }

/* ---- 修复5：原生 file input 裸奔 → 按钮 + 拖放区 ---- */
.sr-file {
  position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}
.file-pick { border-style: dashed; }
.file-pick:hover, .file-pick.is-drag {
  border-color: var(--primary); color: var(--primary); background: var(--panel-2);
}
.sr-file:focus-visible + .file-pick { outline: none; box-shadow: 0 0 0 3px var(--focus-ring); }

/* ---- 修复6：仪表盘行内次级图标按钮（qr/复制/删除）---- */
.btn-icon.sm { min-height: 28px; width: 28px; }
.btn-icon.sm svg { width: 16px; height: 16px; }
.list-item .acts .btn-icon { flex-shrink: 0; }
.act-del { color: var(--muted); }
.act-del:hover, .act-del:active { color: var(--danger-text); background: var(--danger-soft); }

/* v7.1 修复8：贴子列表正文摘要 */
.list-item .excerpt {
  color: var(--text-2);
  font-size: 13px;
  line-height: 1.55;
  margin-top: 4px;
  max-width: 72ch;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

/* ==== v7.1 布局约束修复：子页面可被撑开/缩放，底部导航被顶掉 ==== */

/* 1) 代码块/日志：横向溢出改为块内滚动，绝不撑破页面 */
pre, .code-block, pre code, .paste-body pre {
  max-width: 100%;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
}
pre code, .code-block code { display: block; min-width: 0; }
.code-block { word-break: normal; overflow-wrap: normal; }

/* 2) 富媒体/嵌入：永不超出容器 */
img, video, iframe, table { max-width: 100%; }
.preview-frame { width: 100%; }

/* 3) 文本域：只允许纵向微调，禁止双向拖拽撑爆布局 */
textarea {
  resize: vertical;
  max-width: 100%;
  width: 100%;
  min-height: 44px;
}

/* 4) 移动端防 iOS 聚焦自动放大（<16px 触发）+ 长词撑破 */
@media (max-width: 767px) {
  input, select, textarea { font-size: 16px; }
  input, select, textarea, .btn, .card, .list-item { max-width: 100%; }
  body { overflow-x: hidden; }
  .shell-content { overflow-x: hidden; }
}
