/* app.css — 单页布局:窄栏、系统字体、克制的配色。 */

* { box-sizing: border-box; }

/* 视觉隐藏但保持可 .click():hidden 属性在部分浏览器下不弹文件选择框 */
.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  margin: -1px;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
  border: 0;
}

body {
  margin: 0;
  font-family: -apple-system, BlinkMacSystemFont, "PingFang SC", "Segoe UI", sans-serif;
  color: #1f2328;
  background: #f6f8fa;
}

.wrap { max-width: 720px; margin: 0 auto; padding: 24px 16px 64px; }

.top h1 { font-size: 20px; margin: 0 0 4px; }

.muted { color: #8b949e; font-size: 13px; margin: 0; }

/* 拖放/选择区 */
.drop-zone {
  margin-top: 16px;
  padding: 32px 16px;
  text-align: center;
  border: 1.5px dashed #c9d1d9;
  border-radius: 12px;
  background: #fff;
  cursor: pointer;
  transition: border-color .15s, background .15s;
}
.drop-zone:hover, .drop-zone:focus-visible {
  border-color: #4f6ef7;
  background: #f0f3ff;
  outline: none;
}
.drop-zone.dragging { border-color: #4f6ef7; background: #e8edff; }

/* label 撑满选择区:原生关联 file input,不经 JS 代理点击 */
.drop-hit { display: block; cursor: pointer; }
.drop-title { font-size: 15px; margin: 0 0 6px; }
.drop-hit .muted { margin: 0 0 12px; }

/* 文件夹选择按钮(label[for=picker-dir]) */
.btn-secondary {
  display: inline-block;
  padding: 6px 18px;
  font-size: 13px;
  border: 1px solid #d0d7de;
  border-radius: 6px;
  background: #fff;
  color: #24292f;
  cursor: pointer;
}
.btn-secondary:hover { border-color: #4f6ef7; color: #4f6ef7; }

/* 汇总栏 */
.summary {
  display: flex;
  justify-content: space-between;
  gap: 8px;
  margin: 16px 2px 8px;
  font-size: 13px;
  color: #57606a;
}

/* 文件列表 */
.file-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 10px; }

.file-row {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 12px 14px;
  background: #fff;
  border: 1px solid #eaeef2;
  border-radius: 10px;
}

.file-main { flex: 1; min-width: 0; }

.file-line {
  display: flex;
  align-items: baseline;
  gap: 10px;
  margin-bottom: 8px;
  font-size: 13px;
}

.file-name {
  flex: 1;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-weight: 500;
}

.file-size { color: #57606a; font-variant-numeric: tabular-nums; }

.file-state { color: #4f6ef7; white-space: nowrap; }
.file-state.done { color: #1a7f37; }
.file-state.error { color: #cf222e; }
.file-state.paused { color: #9a6700; }

/* 进度条 */
.bar {
  height: 6px;
  border-radius: 3px;
  background: #eaeef2;
  overflow: hidden;
}
.bar-fill {
  height: 100%;
  width: 0;
  border-radius: 3px;
  background: #4f6ef7;
  transition: width .2s ease;
}
.bar-fill.bar-done { background: #1a7f37; }
.bar-fill.bar-error { background: #cf222e; }

/* 行内按钮 */
.btn-toggle {
  flex: none;
  padding: 5px 14px;
  font-size: 13px;
  border: 1px solid #d0d7de;
  border-radius: 6px;
  background: #fff;
  color: #24292f;
  cursor: pointer;
}
.btn-toggle:hover:not(:disabled) { border-color: #4f6ef7; color: #4f6ef7; }
.btn-toggle:disabled { opacity: .35; cursor: default; }

/* ── 下载页 ── */

/* 验证门禁卡片 */
.gate-card { margin-top: 20px; }
.gate-form {
  display: grid; gap: 12px; justify-items: start;
  padding: 20px; border: 1px solid #d0d7de; border-radius: 10px;
  background: #f6f8fa;
}
.gate-form input {
  width: 220px; padding: 8px 38px 8px 10px; /* 右侧留出眼睛按钮位 */
  font-size: 16px; letter-spacing: 2px; /* 输入体验:逐位分隔 */
  border: 1px solid #d0d7de; border-radius: 6px;
}
.pw-wrap { position: relative; width: 220px; }
.pw-wrap input { width: 100%; }
.pw-toggle {
  position: absolute; right: 5px; top: 50%; transform: translateY(-50%);
  display: grid; place-items: center;
  width: 28px; height: 28px; padding: 0;
  border: none; background: none; cursor: pointer;
  color: #8b949e;
}
.pw-toggle:hover { color: #4f6ef7; }
.pw-toggle svg { width: 18px; height: 18px; }
.pw-toggle svg[hidden] { display: none; } /* hidden 属性对 SVG 不生效,需显式声明 */
.gate-err { color: #cf222e; font-size: 13px; margin: 0; }

/* 面包屑 */
.crumbs { display: flex; flex-wrap: wrap; gap: 6px; margin: 16px 0 10px; font-size: 14px; }
.crumbs a { color: #4f6ef7; text-decoration: none; }
.crumbs a:hover { text-decoration: underline; }
.crumbs span { color: #24292f; font-weight: 600; }

/* 目录条目列表 */
.entry-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 6px; }
.entry-row {
  display: flex; align-items: center; gap: 10px;
  padding: 8px 12px; border: 1px solid #d0d7de; border-radius: 8px;
  background: #fff;
}
.entry-main {
  flex: 1; min-width: 0; display: flex; align-items: center; gap: 10px;
  padding: 0; border: none; background: none; cursor: pointer;
  font: inherit; text-align: left;
}
.entry-main:hover .file-name { color: #4f6ef7; }
.entry-icon { flex: none; }

/* 打包任务区 */
.jobs { margin-top: 20px; display: grid; gap: 10px; }
.job-row {
  display: grid; gap: 8px;
  padding: 10px 12px; border: 1px solid #d0d7de; border-radius: 8px;
  background: #f6f8fa;
}
.job-ops { display: flex; gap: 8px; }
