/* CodeFlow · flat.css — 最后加载。暖中性灰 + 黑色主按钮 + 单一橙色强调; 无渐变、无阴影、少圆角 */
:root {
  --bg: #f6f6f4;
  --bg-soft: #f4f4f2;
  --bg-muted: #ebebe8;
  --card: #ffffff;
  --card-2: #fafaf9;
  --border: #dedcd7;
  --border-soft: #e9e8e4;
  --text: #1c1b19;
  --muted: #6b6963;
  --faint: #a19e97;
  --acc: #1c1b19;
  --acc-hover: #000;
  --acc-soft: #f1f0ed;
  --acc-ring: rgba(28, 27, 25, .18);
  --acc-2: #e8590c;
  --acc-2-soft: #fdf1ea;
  --link: #1c1b19;
  --green: #2f7d4a;
  --green-soft: #eef5f0;
  --purple: #6b5b95;
  --purple-soft: #f2f0f6;
  --danger: #c43c2f;
  --danger-soft: #fbefed;
  --warn: #a66a00;
  --warn-soft: #fbf4e6;
  --radius: 6px;
  --radius-sm: 4px;
  --shadow-sm: none;
  --shadow: 0 8px 24px rgba(28, 27, 25, .10);
  --rail: 236px;
}
body { background: var(--bg); color: var(--text); }
a { color: var(--text); }
a:hover { color: var(--acc-2); text-decoration: none; }
*, *::before, *::after { box-shadow: none; }
.menu, .modal, .palette, .toast { box-shadow: var(--shadow) !important; }

/* ---------- 外壳: 顶栏 + 页内标签带 + 居中内容 ---------- */
body { background: var(--bg); }
.hd { position: sticky; top: 0; z-index: 70; background: #fff; border-bottom: 1px solid var(--border-soft); }
.hd-in { max-width: 1240px; margin: 0 auto; height: 54px; padding: 0 28px; display: flex; align-items: center; gap: 14px; }
.hd-brand { display: flex; align-items: center; gap: 9px; font-weight: 700; font-size: 15px; color: var(--text); flex: none; letter-spacing: -.2px; }
.hd-brand:hover { color: var(--text); }
.hd-mark { width: 20px; height: 20px; border-radius: 4px; background: var(--text); position: relative; flex: none; }
.hd-mark::after { content: ""; position: absolute; inset: 6px; background: var(--acc-2); }
.hd-ctx { display: flex; align-items: center; gap: 8px; min-width: 0; font-size: 15px; }
.hd-ctx a { color: var(--muted); white-space: nowrap; }
.hd-ctx a.b { color: var(--text); font-weight: 650; overflow: hidden; text-overflow: ellipsis; }
.hd-ctx a:hover { color: var(--acc-2); }
.hd-sep { color: #cfccc5; font-weight: 300; font-size: 17px; }
.hd-vis { font-size: 11.5px; color: var(--muted); border: 1px solid var(--border); border-radius: 3px; padding: 0 6px; line-height: 18px; white-space: nowrap; }
.hd-nav { display: flex; gap: 2px; margin-left: 12px; }
.hd-nav-a { height: 32px; padding: 0 12px; display: inline-flex; align-items: center; border-radius: var(--radius-sm); color: var(--muted); font-size: 14px; }
.hd-nav-a:hover { color: var(--text); background: var(--bg-soft); }
.hd-nav-a.active { color: var(--text); font-weight: 600; background: var(--bg-soft); }
.hd-right { margin-left: auto; display: flex; align-items: center; gap: 6px; flex: none; }
.hd-search { display: flex; align-items: center; gap: 8px; height: 32px; width: 220px; padding: 0 8px 0 10px; border: 1px solid var(--border-soft);
  background: var(--bg); border-radius: var(--radius-sm); color: var(--faint); font: 13px var(--sans); cursor: pointer; margin-right: 6px; }
.hd-search:hover { border-color: var(--border); color: var(--muted); }
.hd-search .t { flex: 1; text-align: left; }
.hd-search .kbd { font-size: 11px; border: 1px solid var(--border); border-radius: 3px; padding: 0 5px; background: #fff; color: var(--faint); line-height: 16px; }
.hd-ic { position: relative; width: 32px; height: 32px; display: inline-flex; align-items: center; justify-content: center; border-radius: var(--radius-sm);
  color: var(--muted); border: none; background: none; cursor: pointer; }
.hd-ic:hover { background: var(--bg-soft); color: var(--text); }
.hd-dot { position: absolute; top: 6px; right: 7px; width: 7px; height: 7px; border-radius: 50%; background: var(--acc-2); border: 1.5px solid #fff; }
.hd-user { border: none; background: none; padding: 2px; margin-left: 4px; cursor: pointer; border-radius: 50%; display: flex; }
.hd-right .menu { right: 0; left: auto; }
@media (max-width: 760px) { .hd-in { padding: 0 14px; gap: 10px; } .hd-search { width: 34px; padding: 0 8px; } .hd-search .t, .hd-search .kbd, .hd-name.has-ctx, .hd-vis { display: none; } .hd-nav { margin-left: 0; } }

/* 页内标签带: 整宽白底, 标签 + 右侧操作 */
.ptabs { background: #fff; border-bottom: 1px solid var(--border-soft); }
.ptabs-in { max-width: 1240px; margin: 0 auto; padding: 0 28px; display: flex; align-items: center; gap: 16px; min-height: 46px; }
.ptabs-nav { display: flex; gap: 4px; overflow-x: auto; scrollbar-width: none; flex: 1; min-width: 0; align-self: stretch; }
.ptabs-nav a { display: inline-flex; align-items: center; gap: 6px; padding: 0 12px; color: var(--muted); font-size: 14px; white-space: nowrap;
  border-bottom: 2px solid transparent; margin-bottom: -1px; }
.ptabs-nav a .ic { color: var(--faint); }
.ptabs-nav a:hover { color: var(--text); }
.ptabs-nav a.active { color: var(--acc-2); border-bottom-color: var(--acc-2); font-weight: 600; }
.ptabs-nav a.active .ic { color: var(--acc-2); }
.pill { font-size: 11.5px; line-height: 17px; padding: 0 6px; border-radius: 9px; background: var(--bg-muted); color: var(--muted); font-weight: 500; }
.ptabs .repo-actions { flex: none; display: flex; gap: 6px; }
@media (max-width: 760px) { .ptabs-in { padding: 0 8px; flex-wrap: wrap; } .ptabs .repo-actions { padding-bottom: 8px; } }

/* 内容区 */
.wrap { max-width: 1240px; margin: 0 auto; padding: 24px 28px 64px; }
.wrap.mid { max-width: 920px; }
.wrap.narrow { max-width: 680px; }
@media (max-width: 760px) { .wrap { padding: 18px 14px 48px; } }
.footer { background: transparent; border-top: 1px solid var(--border-soft); }
.footer-inner { max-width: 1240px; margin: 0 auto; padding: 18px 28px; font-size: 12.5px; }
.page-title { font-size: 22px; font-weight: 650; letter-spacing: -.3px; }
.settings-h { font-size: 18px; font-weight: 650; border-bottom: none; padding-bottom: 0; }
.settings-h.sub { font-size: 16px; }
.diff-head { top: 54px; }
.about-desc { margin: 0 0 8px; font-size: 14px; }

/* ---------- 组件压平 ---------- */
.btn { border-radius: var(--radius-sm); background: #fff; border-color: var(--border); font-weight: 500; }
.btn:hover { background: var(--bg-soft); color: var(--text); }
.btn.primary, .btn.green, .btn.dark { background: var(--text); border-color: var(--text); color: #fff; }
.btn.primary:hover, .btn.green:hover, .btn.dark:hover { background: #000; border-color: #000; color: #fff; filter: none; }
.btn.danger { color: var(--danger); }
.btn.danger:hover { background: var(--danger); border-color: var(--danger); color: #fff; }
.btn .count { background: transparent; padding: 0 0 0 2px; }
input, select, textarea { border-radius: var(--radius-sm) !important; border-color: var(--border) !important; background: #fff; }
input:focus, select:focus, textarea:focus { border-color: var(--text) !important; box-shadow: none !important; outline: none; }
.box, .card, .file-box, .flow-card, .side-card, .stat, .repo-tile, .wb-stat, .set-card, .pin-card, .lane-item { border-radius: var(--radius); border-color: var(--border-soft); background: #fff; }
.box-head, .file-box-head, .comment-head, .diff-head, .latest-commit { background: #fff; border-bottom-color: var(--border-soft); }
.box-row:hover, .issue-row:hover { background: var(--bg); }
.badge { border-radius: 3px; background: transparent; font-weight: 500; }
.badge.blue { color: var(--text); border-color: var(--border); background: transparent; }
.badge.yellow { color: var(--warn); border-color: rgba(166,106,0,.35); background: transparent; }
.badge.green { color: var(--green); border-color: rgba(47,125,74,.35); background: transparent; }
.badge.red { color: var(--danger); border-color: rgba(196,60,47,.35); background: transparent; }
.badge.purple { color: var(--purple); border-color: rgba(107,91,149,.35); background: transparent; }
.counter { background: transparent; color: var(--faint); padding: 0; font-weight: 400; }
.chip { background: transparent; border: 1px solid var(--border-soft); border-radius: 3px; }
.avatar { background-color: var(--bg-muted); color: var(--muted); font-weight: 600; }
.avatar.org { border-radius: 4px; }
.repo-ava { background: var(--bg-muted) !important; color: var(--muted); border-radius: 4px; }
.info-box { background: var(--bg-soft); border-color: var(--border-soft); color: var(--muted); }
.info-box .ic { color: var(--faint); }
.ok-box { background: var(--green-soft); border-color: transparent; }
.err-box { border-radius: var(--radius-sm); }
.code-block, .md pre { background: var(--bg-soft); border-color: var(--border-soft); }
.subtabs a.active, .tabs a.active { border-bottom-color: var(--text); }
.settings-nav a.active { background: #fff; outline: 1px solid var(--border-soft); }
.settings-nav a.active::before { display: none; }
.settings-nav a.active .ic { color: var(--acc-2); }
.status-dot.success { background: var(--green); }
.state-pill.open { background: var(--green); }
.repo-tile:hover, .pin-card:hover { border-color: var(--border); box-shadow: none; }
.md a, .link, .link-plain:hover { color: var(--acc-2); }
.token-fresh { background: var(--bg-soft); border-color: var(--border); }
.token-fresh > .flex { color: var(--text); }
.pin-opt:has(input:checked) { border-color: var(--text); background: #fff; }
input.switch:checked { background: var(--text); }
input[type=checkbox], input[type=radio] { accent-color: var(--text); }
.sess-ic.cur { background: var(--bg-muted); color: var(--text); }
.hm-cell { border-radius: 1px; background: #efeeeb; }
.hm-cell.l1 { background: #f6d3bd; } .hm-cell.l2 { background: #f0a676; } .hm-cell.l3 { background: #e8590c; } .hm-cell.l4 { background: #a63d05; }
.feed-ic { border-radius: 4px; }
.feed-ic.k-push, .feed-ic.k-pull, .feed-ic.k-issue { color: var(--muted); } .feed-ic.k-release { color: var(--acc-2); }

/* 落地页 / 工作台: 去掉渐变与装饰 */
.hero, .land-hero, .bento .tint { background: none !important; }
.land-hero h1 .flowtext { background: none !important; -webkit-text-fill-color: currentColor; color: var(--acc-2); }
.land-hero::before, .land-hero::after { display: none !important; }
.fb-bar i { background: var(--acc-2) !important; }
.journey::before { background: var(--border) !important; opacity: 1; }
.bento .ink, .land-end { background: var(--text); }
.brand-mark { background: var(--text) !important; }
.repo-card-head::before { display: none; }

/* 管理后台沿用独立外壳, 但同样压平 */
body.admin-mode .hd, body.admin-mode .footer, body.admin-mode #announce { display: none; }
.adm-side { background: #1c1b19; }
.adm-link.active { background: #fff; color: var(--text); }
.adm-link.active .ic { color: var(--acc-2); }
.adm-content .box, .adm-content .stat { box-shadow: none; }
.astat .ico, [class^="t-"], [class*=" t-"] { background: var(--bg-soft) !important; color: var(--muted) !important; }

/* 工作台: 白底面板 + 中性图标 */
.lane { background: #fff; border: 1px solid var(--border-soft); }
.lane-item { border-color: var(--border-soft); }
.wb-stat .ico, .stat .ico { background: var(--bg-soft) !important; color: var(--muted) !important; }

/* ---------- 个人主页 ---------- */
.pf { background: #fff; }
.pf-in { max-width: 1240px; margin: 0 auto; padding: 28px 28px 24px; display: flex; gap: 22px; align-items: flex-start; }
.pf-in > .avatar { width: 88px; height: 88px; font-size: 34px; flex: none; border-radius: 50%; }
.pf-id { flex: 1; min-width: 0; }
.pf-name { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; }
.pf-name h1 { margin: 0; font-size: 22px; font-weight: 650; letter-spacing: -.3px; }
.pf-login { color: var(--faint); font-size: 14px; }
.pf-status { font-size: 12px; color: var(--muted); border: 1px solid var(--border-soft); border-radius: 10px; padding: 1px 9px; }
.pf-bio { margin: 6px 0 10px; color: var(--muted); font-size: 14px; max-width: 640px; }
.pf-meta { display: flex; flex-wrap: wrap; gap: 6px 18px; font-size: 13px; color: var(--muted); }
.pf-meta > * { display: inline-flex; align-items: center; gap: 5px; color: var(--muted); }
.pf-meta .ic { color: var(--faint); }
.pf-orgs { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 10px; }
.pf-orgs a { display: inline-flex; align-items: center; gap: 6px; font-size: 12.5px; color: var(--muted); border: 1px solid var(--border-soft); border-radius: 12px; padding: 2px 10px 2px 3px; }
.pf-side { display: flex; flex-direction: column; align-items: flex-end; gap: 14px; flex: none; }
.pf-nums { display: flex; }
.pf-num { display: flex; flex-direction: column; align-items: center; padding: 0 18px; border-left: 1px solid var(--border-soft); color: var(--text); }
.pf-num:first-child { border-left: none; }
.pf-num b { font-size: 20px; font-weight: 650; line-height: 1.2; }
.pf-num span { font-size: 12px; color: var(--faint); }
.pf-num:hover b { color: var(--acc-2); }
@media (max-width: 760px) { .pf-in { flex-wrap: wrap; padding: 20px 14px; } .pf-side { width: 100%; align-items: flex-start; } .pf-num { padding: 0 14px 0 0; border: none; } }
.pf-grid { display: grid; grid-template-columns: minmax(0, 1fr) 320px; gap: 20px; align-items: start; }
@media (max-width: 1000px) { .pf-grid { grid-template-columns: 1fr; } }
.pf-sec { background: #fff; border: 1px solid var(--border-soft); border-radius: var(--radius); padding: 16px 18px; margin-bottom: 20px; }
.pf-sec-h { display: flex; align-items: center; justify-content: space-between; margin-bottom: 12px; }
.pf-sec-h h3 { margin: 0; font-size: 14.5px; font-weight: 650; }
.pf-none { padding: 8px 0; }
.pin-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; margin: 0; }
@media (max-width: 760px) { .pin-grid { grid-template-columns: 1fr; } }
.pin-card { display: flex; flex-direction: column; gap: 6px; padding: 12px 14px; border: 1px solid var(--border-soft); border-radius: var(--radius-sm); background: var(--bg); color: var(--text); }
.pin-card:hover { color: var(--text); border-color: var(--border); background: #fff; }
.pin-t { display: flex; align-items: center; gap: 6px; font-weight: 600; font-size: 14px; }
.pin-t .ic { color: var(--faint); }
.pin-desc { margin: 0; font-size: 12.5px; color: var(--muted); display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; min-height: 2.8em; }
.pin-m { display: flex; gap: 12px; font-size: 12px; color: var(--faint); }
.pin-m span { display: inline-flex; align-items: center; gap: 3px; }
.heat { }
.hm-head { display: flex; justify-content: space-between; align-items: center; font-size: 13px; color: var(--muted); margin-bottom: 8px; }
.hm-scroll { overflow-x: auto; padding-bottom: 4px; scrollbar-width: thin; }
.hm-kinds { padding: 8px 0 0; }
.feed { border-left: 1px solid var(--border-soft); margin-left: 10px; }
.feed-item { padding: 4px 0 14px; gap: 10px; font-size: 13.5px; }
.feed-ic { width: 22px; height: 22px; margin-left: -11px; border-radius: 50%; border-color: var(--border-soft); }
.rlist { background: #fff; border: 1px solid var(--border-soft); border-radius: var(--radius); }
.rlist .repo-list-item { padding: 16px 18px; border-bottom: 1px solid var(--border-soft); margin: 0; border-radius: 0; border-left: none; border-right: none; border-top: none; }
.rlist .repo-list-item:last-child { border-bottom: none; }

/* ---------- 工作台 ---------- */
.wb { display: grid; grid-template-columns: 280px minmax(0, 1fr); gap: 24px; align-items: start; }
@media (max-width: 900px) { .wb { grid-template-columns: 1fr; } }
.wb-side { background: #fff; border: 1px solid var(--border-soft); border-radius: var(--radius); padding: 14px; position: sticky; top: 72px; }
.wb-side-h { display: flex; align-items: center; justify-content: space-between; margin-bottom: 10px; }
.wb-side-h h3, .wb-sec-h h3 { margin: 0; font-size: 14.5px; font-weight: 650; display: flex; align-items: center; gap: 8px; }
.wb-filter { width: 100%; height: 30px; font-size: 13px; margin-bottom: 6px; }
.wb-repos { display: flex; flex-direction: column; max-height: 60vh; overflow-y: auto; }
.wb-repo { display: flex; align-items: center; gap: 8px; padding: 6px 4px; border-radius: var(--radius-sm); font-size: 13.5px; color: var(--text); }
.wb-repo:hover { background: var(--bg-soft); color: var(--text); }
.wb-head { margin-bottom: 18px; }
.wb-head h1 { margin: 0 0 6px; font-size: 22px; font-weight: 650; letter-spacing: -.3px; }
.wb-sum { display: flex; gap: 18px; flex-wrap: wrap; font-size: 13.5px; color: var(--muted); align-items: center; }
.wb-sum b { color: var(--text); }
.wb-flag { font-size: 12.5px; padding: 1px 9px; border-radius: 10px; border: 1px solid var(--border); color: var(--muted); }
.wb-flag.ok { color: var(--green); border-color: rgba(47,125,74,.3); }
.wb-flag.bad { color: var(--danger); border-color: rgba(196,60,47,.35); }
.wb-sec { background: #fff; border: 1px solid var(--border-soft); border-radius: var(--radius); margin-bottom: 16px; }
.wb-sec-h { display: flex; align-items: center; justify-content: space-between; padding: 12px 16px; border-bottom: 1px solid var(--border-soft); }
.wb-list { display: flex; flex-direction: column; }
.wb-row { display: flex; align-items: center; gap: 10px; padding: 10px 16px; border-bottom: 1px solid var(--border-soft); color: var(--text); font-size: 13.5px; }
.wb-row:last-child { border-bottom: none; }
.wb-row:hover { background: var(--bg); color: var(--text); }
.wb-row > .ic { color: var(--faint); flex: none; }
.wb-empty { padding: 22px 16px; color: var(--faint); font-size: 13px; }
.tag-s { font-size: 11.5px; border: 1px solid var(--border); border-radius: 3px; padding: 0 5px; color: var(--muted); white-space: nowrap; }
.tag-s.acc { color: var(--acc-2); border-color: rgba(232,89,12,.35); }
.btn.xs { height: 24px; padding: 0 8px; font-size: 12px; gap: 4px; }

/* 热力图: 自适应宽度, 不再横向滚动 */
.hm-scroll { overflow: visible; padding: 0; }
.hm-wrap { width: 100%; gap: 6px; }
.hm-wrap > div:last-child { flex: 1; min-width: 0; }
.hm-days { grid-template-rows: 16px repeat(7, 1fr); padding-bottom: 0; }
.hm-days span { line-height: 1; font-size: 10px; display: flex; align-items: center; }
.hm-grid { display: grid; grid-template-columns: repeat(53, minmax(0, 1fr)); gap: 2px; }
.hm-col { display: grid; grid-template-rows: repeat(7, auto); gap: 2px; }
.hm-cell { display: block; width: 100%; height: auto; aspect-ratio: 1; max-width: 13px; }
.hm-wrap { align-items: stretch; }
.hm-grid { align-items: start; }
.hm-col { grid-template-columns: minmax(0, 1fr); align-self: start; }
.hm-col .hm-cell { align-self: start; }
.hm-days { gap: 2px; grid-template-rows: 14px repeat(7, 1fr); }
.hm-legend .hm-cell { width: 10px; height: 10px; aspect-ratio: auto; }
.hm-col { display: flex; flex-direction: column; gap: 2px; }
.hm-col .hm-cell { width: 100%; height: auto; aspect-ratio: 1 / 1; max-width: none; }
.hm-days { grid-template-rows: 16px repeat(7, 1fr); }
.hm-wrap { align-items: flex-start; }
.hm-days { display: flex; flex-direction: column; gap: 0; padding-top: 16px; }
.hm-days span { height: calc((100% - 0px) / 7); }
.hm-days { align-self: stretch; padding-top: 18px; }
.hm-days span { flex: 1; height: auto; }
.hm-grid { display: flex; gap: 2px; height: auto; }
.hm-grid > .hm-col { flex: 1 1 0; min-width: 0; }
.hm-col .hm-cell.empty { flex: none; height: auto; aspect-ratio: 1 / 1; }
.hm-cell.empty { padding: 0 !important; margin: 0 !important; min-height: 0 !important; border: 0 !important; width: 100% !important; text-align: initial; }

/* ===== 配色 v3: 白底 + 浅灰顶栏 + 橙色主色 + 浅桃色强调 ===== */
:root {
  --bg: #ffffff;
  --bg-soft: #f6f6f7;
  --bg-muted: #eeeef0;
  --border: #e3e3e6;
  --border-soft: #ececef;
  --text: #1f1f22;
  --muted: #5f6066;
  --faint: #9a9ba1;
  --acc-2: #f2601f;
  --acc-2-dark: #d94d10;
  --peach: #fff5ef;
  --peach-line: #fbe2d4;
  --link-2: #2b6be6;
}
body { background: #fff; }
a:hover { color: var(--acc-2); }
.hd { background: var(--bg-soft); border-bottom: 1px solid var(--border-soft); }
.hd-mark { background: var(--acc-2); border-radius: 50%; }
.hd-mark::after { inset: 6px; background: #fff; border-radius: 50%; }
.hd-search { background: #fff; border-color: var(--border); }
.hd-nav-a.active { background: #fff; color: var(--acc-2); }
.ptabs { background: #fff; }
.ptabs-nav a { font-size: 15px; }

/* 按钮: 主按钮橙色 */
.btn.primary, .btn.green, .btn.dark { background: var(--acc-2); border-color: var(--acc-2); color: #fff; }
.btn.primary:hover, .btn.green:hover, .btn.dark:hover { background: var(--acc-2-dark); border-color: var(--acc-2-dark); color: #fff; }
input:focus, select:focus, textarea:focus { border-color: var(--acc-2) !important; }
input.switch:checked { background: var(--acc-2); }
input[type=checkbox], input[type=radio] { accent-color: var(--acc-2); }
.settings-nav a.active { background: var(--peach); outline: none; color: var(--acc-2); }
.rail-link.active, .settings-nav a.active .ic { color: var(--acc-2); }
.subtabs a.active, .tabs a.active { border-bottom-color: var(--acc-2); color: var(--acc-2); }
.more-link, .side-card h4 a, .pf-sec-h a, .wb-sec-h a { color: var(--link-2); }

/* 区块: 去掉外框, 用标题 + 分隔线 */
.pf-sec, .wb-sec, .wb-side, .side-card, .flow-card, .rlist { background: transparent; border: none; border-radius: 0; padding: 0; margin-bottom: 28px; }
.pf-sec-h, .wb-sec-h { padding: 0 0 10px; border-bottom: 1px solid var(--border-soft); margin-bottom: 0; }
.pf-sec-h h3, .wb-sec-h h3, .wb-side-h h3 { font-size: 16px; }
.wb-row { padding: 12px 2px; }
.wb-row:hover { background: transparent; }
.wb-row:hover .grow { color: var(--acc-2); }
.wb-empty { padding: 18px 2px; }
.pf-grid, .wb { gap: 36px; }
.pf-grid > section, .cols > aside { border-left: 1px solid var(--border-soft); padding-left: 28px; }
.wb-side { border-right: 1px solid var(--border-soft); padding-right: 20px; top: 76px; }
.wb-side-h { padding-bottom: 6px; }
.rlist .repo-list-item { padding: 18px 2px; }
.side-card { padding-bottom: 20px; border-bottom: 1px solid var(--border-soft); margin-bottom: 20px; }
.side-card:last-child { border-bottom: none; }
.flow-card { padding-bottom: 20px; border-bottom: 1px solid var(--border-soft); }
.facts > * { background: var(--bg-soft); }

/* 浅桃色卡片: 置顶仓库 / 快捷入口 */
.pin-card { background: var(--peach); border-color: var(--peach-line); }
.pin-card:hover { background: #ffefe5; border-color: #f7cdb6; }
.pin-t span { font-family: var(--mono); font-style: italic; }
.pf-grid .pin-grid { margin-top: 14px; }
.heat { margin-top: 14px; }
.feed { margin-top: 14px; }

/* 文件列表与 README 保留细边框, 白底 */
.file-box, .box { background: #fff; border-color: var(--border); }
.latest-commit, .box-head, .file-box-head { background: var(--bg-soft); }
.avatar { background-color: var(--peach); color: var(--acc-2); }
.repo-ava { background: var(--peach) !important; color: var(--acc-2); }
.status-dot.success { background: #2da44e; }
.wb-flag.ok { color: #1f883d; }
.tag-s.acc { background: var(--peach); }
.hm-cell { background: #f0f0f2; }
.hm-cell.l1 { background: #fdd8c4; } .hm-cell.l2 { background: #f9a57b; } .hm-cell.l3 { background: #f2601f; } .hm-cell.l4 { background: #b8420c; }
.pf { border-bottom: none; }
.footer { background: var(--bg-soft); }

/* ===== 工作台 v2: 标题带 + 标签 + 主列 + 右侧栏 ===== */
.wb-top { background: var(--bg-soft); border-bottom: 1px solid var(--border-soft); }
.wb-top-in { max-width: 1240px; margin: 0 auto; padding: 18px 28px; display: flex; align-items: baseline; gap: 12px; }
.wb-top h1 { margin: 0; font-size: 22px; font-weight: 700; font-style: italic; }
.wb-wrap { padding-top: 0; }
.wb-grid { display: grid; grid-template-columns: minmax(0, 1fr) 320px; gap: 0; align-items: start; }
@media (max-width: 960px) { .wb-grid { grid-template-columns: 1fr; } }
.wb-grid > main { padding: 0 32px 0 0; min-width: 0; }
.wb-tabs { display: flex; gap: 26px; border-bottom: 1px solid var(--border-soft); margin: 0 0 22px; }
.wb-tabs a { padding: 16px 2px 12px; font-size: 16px; color: var(--muted); border-bottom: 2px solid transparent; margin-bottom: -1px; display: inline-flex; gap: 6px; align-items: center; }
.wb-tabs a.active { color: var(--acc-2); border-bottom-color: var(--acc-2); }
.wb-h { margin: 22px 0 12px; font-size: 15px; font-weight: 650; }
.wb-h:first-child { margin-top: 0; }
.wb-quick { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
@media (max-width: 640px) { .wb-quick { grid-template-columns: 1fr; } }
.wb-q { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 20px 22px; border: 1px solid var(--peach-line); background: var(--peach); border-radius: var(--radius); color: var(--text); }
.wb-q:hover { background: #ffefe5; color: var(--text); }
.wb-q b { display: block; font-size: 15px; margin-bottom: 6px; }
.wb-q span { font-size: 13px; color: var(--muted); }
.wb-q .ic { color: var(--acc-2); width: 30px; height: 30px; flex: none; }
.wb-list, .wb-rps { border: 1px solid var(--border-soft); border-radius: var(--radius); background: #fff; }
.wb-row { padding: 12px 16px; border-bottom: 1px solid var(--border-soft); }
.wb-row:last-child { border-bottom: none; }
.wb-rp { display: block; padding: 18px 20px; border-bottom: 1px solid var(--border-soft); color: var(--text); }
.wb-rp:last-child { border-bottom: none; }
.wb-rp:hover { background: var(--bg); color: var(--text); }
.wb-rp-t { display: flex; align-items: center; gap: 8px; font-size: 16px; }
.wb-rp-t .ic { color: var(--faint); }
.mono-i { font-family: var(--mono); font-style: italic; }
.wb-rp-d { margin: 8px 0 10px; color: var(--muted); font-size: 14px; }
.wb-rp-m { display: flex; gap: 16px; font-size: 13px; color: var(--faint); }
.wb-rp-m span { display: inline-flex; align-items: center; gap: 4px; }
.wb-aside { border-left: 1px solid var(--border-soft); padding: 22px 0 0 28px; min-height: 60vh; }
.wb-aside h4 { margin: 0 0 12px; font-size: 15px; font-weight: 650; display: flex; justify-content: space-between; align-items: center; }
.wb-aside h4 a { font-size: 13px; font-weight: 400; color: var(--link-2); }
.wb-nums { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-bottom: 26px; }
.wb-nums a { display: flex; flex-direction: column; gap: 2px; padding: 12px 14px; background: var(--bg-soft); border-radius: var(--radius-sm); color: var(--text); }
.wb-nums a b { font-size: 20px; }
.wb-nums a span { font-size: 12px; color: var(--muted); }
.wb-nums a.bad b { color: var(--danger); }
.wb-mini { display: flex; flex-direction: column; }
.wb-mini a { display: flex; align-items: center; gap: 8px; padding: 8px 0; font-size: 13.5px; color: var(--text); border-bottom: 1px solid var(--border-soft); }
.wb-mini a:last-child { border-bottom: none; }
.wb-mini a:hover { color: var(--acc-2); }

/* ===== 流水线 ===== */
.pl { border: 1px solid var(--border-soft); border-radius: var(--radius); background: #fff; }
.pl-h, .pl-r { display: grid; grid-template-columns: 110px minmax(0, 1fr) 120px 70px 90px; gap: 16px; align-items: center; padding: 12px 18px; }
.pl-h { background: var(--bg-soft); font-size: 12.5px; color: var(--muted); border-bottom: 1px solid var(--border-soft); }
.pl-r { border-bottom: 1px solid var(--border-soft); color: var(--text); }
.pl-r:last-child { border-bottom: none; }
.pl-r:hover { background: var(--bg); color: var(--text); }
.pl-st { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; font-weight: 500; }
.pl-m { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.pl-m b { font-size: 14px; font-weight: 600; }
.pl-sub { font-size: 12.5px; color: var(--faint); }
.pl-g { display: flex; gap: 4px; }
.pl-d, .pl-t { font-size: 13px; color: var(--muted); white-space: nowrap; }
@media (max-width: 760px) { .pl-h { display: none; } .pl-r { grid-template-columns: 1fr auto; } .pl-g, .pl-d { display: none; } }
.pipe-graph { background: #fff; }
.stage-chip.active { border-color: var(--acc-2); box-shadow: none; }
.log-panel { background: #fff; }
.log-panel .ll.sys { color: var(--acc-2); }

/* 字体: 去掉斜体和等宽, 使用正常字体 */
.mono-i, .pin-t span, .hd-ctx a.b { font-family: var(--sans) !important; font-style: normal !important; }
.wb-top h1 { font-style: normal !important; }

/* ---- 安装向导 ---- */
body.install-mode #topbar, body.install-mode #announce, body.install-mode #footer { display: none; }
body.install-mode { background: var(--bg); }
.inst-wrap { max-width: 640px; margin: 48px auto 64px; padding: 0 20px; }
.inst-head { display: flex; align-items: center; gap: 14px; margin-bottom: 24px; }
.inst-head h1 { font-size: 22px; margin: 0 0 2px; }
.inst-head .brand-mark { width: 40px; height: 40px; display: grid; place-items: center; }
.inst-steps { list-style: none; display: flex; gap: 6px; padding: 0; margin: 0 0 18px; }
.inst-steps li { flex: 1; display: flex; align-items: center; gap: 8px; font-size: 13px; color: var(--muted);
  padding: 8px 10px; border-radius: 8px; background: var(--card); border: 1px solid var(--border); }
.inst-steps li .n { width: 20px; height: 20px; border-radius: 50%; display: grid; place-items: center; font-size: 12px;
  background: var(--bg); border: 1px solid var(--border); flex: none; }
.inst-steps li.active { color: var(--text); border-color: var(--acc); }
.inst-steps li.active .n { background: var(--acc); border-color: var(--acc); color: #fff; }
.inst-steps li.done .n { background: var(--green, #1a7f37); border-color: transparent; color: #fff; }
.inst-card { background: var(--card); border: 1px solid var(--border); border-radius: 10px; padding: 22px 24px; display: flex; flex-direction: column; gap: 14px; }
.inst-card h2 { font-size: 17px; margin: 0; }
.inst-card h3 { font-size: 14px; margin: 6px 0 0; }
.inst-card.center { align-items: center; text-align: center; }
.inst-card input:not([type=checkbox]), .inst-card select { width: 100%; }
.inst-row { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.inst-row > * { min-width: 0; }
.inst-check { display: flex; align-items: center; gap: 8px; font-size: 13px; cursor: pointer; }
.inst-actions { display: flex; gap: 8px; align-items: center; margin-top: 4px; }
.inst-actions.center { justify-content: center; }
.inst-env { width: 100%; border-collapse: collapse; font-size: 13px; }
.inst-env td { padding: 7px 6px; border-bottom: 1px solid var(--border); }
.inst-env td:first-child { width: 24px; }
.inst-env td:last-child { max-width: 300px; text-align: right; }
.inst-env .ok { color: var(--green, #1a7f37); } .inst-env .bad { color: var(--red, #cf222e); } .inst-env .warn { color: var(--yellow, #9a6700); }
.inst-types { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; }
.inst-type { display: flex; align-items: center; justify-content: center; gap: 8px; padding: 12px; border-radius: 8px;
  border: 1px solid var(--border); background: var(--bg); color: var(--text); cursor: pointer; font: inherit; }
.inst-type.active { border-color: var(--acc); box-shadow: 0 0 0 1px var(--acc) inset; color: var(--acc); }
.inst-done { width: 56px; height: 56px; border-radius: 50%; display: grid; place-items: center; background: var(--green-soft); color: var(--green, #1a7f37); }
.inst-card .spin { width: 14px; height: 14px; vertical-align: -2px; margin-right: 6px; border-top-color: #fff; }
@media (max-width: 560px) { .inst-row, .inst-types { grid-template-columns: 1fr; } .inst-steps li { font-size: 0; } }
.inst-card h2.inst-sub { font-size: 15px; margin-top: 8px; padding-top: 14px; border-top: 1px solid var(--border); }
.bad-text { color: var(--red, #cf222e); margin-top: 4px; }

/* ---- 分支/标签选择器 ---- */
.ref-select { position: relative; display: inline-block; }
.ref-trigger { display: inline-flex; align-items: center; gap: 7px; height: 32px; max-width: 240px; padding: 0 10px;
  background: var(--card); border: 1px solid var(--border); border-radius: var(--radius); color: var(--text);
  font: 600 13px var(--sans); cursor: pointer; transition: border-color .12s, background .12s; }
.ref-trigger:hover { background: var(--bg-soft); }
.ref-select.open .ref-trigger { border-color: var(--text); box-shadow: 0 0 0 3px var(--acc-ring); }
.ref-trigger .ic { color: var(--muted); flex: none; }
.ref-trigger .ref-name { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ref-pop { position: absolute; left: 0; top: calc(100% + 6px); z-index: 90; width: 300px; display: none;
  background: var(--card); border: 1px solid var(--border-soft); border-radius: 8px; box-shadow: var(--shadow); overflow: hidden; }
.ref-select.open .ref-pop { display: block; animation: pop .12s ease; }
.ref-pop-head { display: flex; align-items: center; justify-content: space-between; padding: 8px 8px 8px 12px; font-size: 13px; border-bottom: 1px solid var(--border-soft); }
.ref-search { position: relative; padding: 8px 10px; }
.ref-search .ic { position: absolute; left: 20px; top: 50%; transform: translateY(-50%); color: var(--faint); pointer-events: none; }
.ref-search input { width: 100%; height: 30px; min-height: 30px; padding-left: 28px; font-size: 13px; }
.ref-tabs { display: flex; gap: 4px; padding: 0 10px; border-bottom: 1px solid var(--border-soft); }
.ref-tabs button { display: inline-flex; align-items: center; gap: 6px; padding: 7px 8px; margin-bottom: -1px; background: none; border: none;
  border-bottom: 2px solid transparent; color: var(--muted); font: 500 13px var(--sans); cursor: pointer; }
.ref-tabs button.active { color: var(--text); border-bottom-color: var(--acc-2); }
.ref-tabs .cnt { font-size: 11px; padding: 0 6px; border-radius: 9px; background: var(--bg-muted); color: var(--muted); }
.ref-list { max-height: 280px; overflow-y: auto; padding: 4px; }
.ref-item { display: flex; align-items: center; gap: 8px; width: 100%; padding: 7px 8px; border: none; background: none;
  border-radius: var(--radius-sm); color: var(--text); font-size: 13px; cursor: pointer; text-align: left; }
.ref-item:hover { background: var(--bg-soft); }
.ref-item.on { font-weight: 600; }
.ref-check { width: 14px; flex: none; color: var(--acc-2); display: inline-flex; }
.ref-item-name { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ref-item .badge { font-size: 11px; line-height: 16px; padding: 0 6px; }
.ref-empty { padding: 18px 10px; text-align: center; color: var(--muted); font-size: 13px; }
.ref-foot { display: flex; align-items: center; justify-content: center; gap: 4px; padding: 9px; font-size: 12.5px;
  color: var(--muted); border-top: 1px solid var(--border-soft); }
.ref-foot:hover { background: var(--bg-soft); color: var(--text); text-decoration: none; }

/* ---- 分享面板 ---- */
.share-menu .menu { padding: 0; min-width: 0; }
.share-pop { width: 380px; padding: 14px; display: flex; flex-direction: column; gap: 12px; }
.share-head { display: flex; flex-direction: column; gap: 2px; }
.share-label { font-size: 12px; font-weight: 600; margin-bottom: 5px; }
.share-row .input-group input { flex: 1; min-width: 0; font-size: 12px; background: var(--bg-soft); }
.share-row .input-group .btn { box-shadow: none; }
.share-foot { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding-top: 10px; margin-top: 2px; border-top: 1px solid var(--border-soft); }
.share-foot .flex { gap: 5px; }
.code-bar .ref-select { flex: none; }

/* ---------- 导入仓库 ---------- */
.imp-tabs { margin-top: 4px; }
.imp-kinds { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin: 4px 0 12px; }
.imp-kinds label.check { margin: 0; padding: 12px; border: 1px solid var(--border); border-radius: 8px; }
.imp-kinds label.check:has(input:checked) { border-color: var(--acc, #2f6feb); background: var(--bg-soft); }
.imp-auth { padding: 12px 14px 4px; border: 1px dashed var(--border); border-radius: 8px; margin-bottom: 8px; }
.imp-pf { display: flex; gap: 6px; flex-wrap: wrap; margin-bottom: 14px; }
label.check.inline { display: inline-flex; align-items: center; gap: 6px; margin: 0; }
label.check.inline input { margin: 0; }
.imp-list { margin-top: 20px; }
.imp-list h3, .imp-jobs h3 { font-size: 15px; margin: 22px 0 10px; }
.imp-bar { display: flex; align-items: center; gap: 12px; margin: 10px 0; flex-wrap: wrap; }
.imp-bar.foot { align-items: flex-end; margin-top: 14px; }
.imp-bar .field { margin: 0; }
.imp-bar .field select { min-width: 160px; }
.imp-sp { flex: 1; }
.imp-bar .imp-filter { width: 240px; max-width: 100%; }
.imp-bar > .small, .imp-bar > span:last-child { white-space: nowrap; }
.imp-rows { border: 1px solid var(--border); border-radius: 8px; overflow: hidden auto; max-height: 460px; background: #fff; }
.imp-row { display: grid; grid-template-columns: 18px minmax(0, 1fr) 14px 200px; align-items: center; gap: 12px; padding: 10px 14px; border-top: 1px solid var(--border); margin: 0; cursor: pointer; }
.imp-job { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: 12px; padding: 10px 14px; border-top: 1px solid var(--border); }
.imp-row:first-child, .imp-job:first-child { border-top: none; }
.imp-row:hover { background: var(--bg-soft); }
.imp-row input[type=checkbox] { margin: 0; width: 16px; height: 16px; }
.imp-info { min-width: 0; }
.imp-title { display: flex; align-items: center; gap: 8px; min-width: 0; }
.imp-fn { font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; }
.imp-badge { display: inline-flex; align-items: center; gap: 3px; flex: none; white-space: nowrap; font-size: 11.5px; line-height: 18px; padding: 0 7px; border-radius: 9px; border: 1px solid var(--border); color: var(--muted); }
.imp-badge.priv { color: #9a6700; border-color: #eac54f; background: #fff8c5; }
.imp-desc { font-size: 12.5px; color: var(--muted); margin-top: 2px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.imp-arrow { color: var(--muted); text-align: center; }
.imp-row .imp-name { width: 100%; height: 30px; padding: 4px 8px; font-size: 13px; margin: 0; }
.imp-time { font-size: 12px; color: var(--muted); white-space: nowrap; }
.imp-sent { opacity: .55; }
.imp-job { cursor: default; }
.imp-st { display: inline-flex; align-items: center; gap: 4px; font-size: 12px; padding: 2px 8px; border-radius: 10px; background: var(--bg-muted); color: var(--muted); flex: none; }
.imp-job.st-running .imp-st svg { animation: rot 1s linear infinite; }
.imp-job.st-done .imp-st { background: #dafbe1; color: #1a7f37; }
.imp-job.st-failed .imp-st { background: #ffebe9; color: #cf222e; }
.imp-err { color: #cf222e; }
@media (max-width: 720px) { .imp-kinds { grid-template-columns: 1fr; } .imp-row { grid-template-columns: 18px minmax(0, 1fr) 120px; } .imp-arrow { display: none; } }
.imp-cta { display: flex; align-items: center; gap: 14px; margin: 14px 0 4px; padding: 14px 16px; border: 1px solid var(--border); border-radius: 10px; background: var(--bg-soft); color: var(--text); transition: border-color .15s, box-shadow .15s; }
.imp-cta:hover { text-decoration: none; border-color: var(--acc, #2f6feb); box-shadow: 0 2px 10px rgba(17,24,39,.06); }
.imp-cta-ic { width: 36px; height: 36px; flex: none; border-radius: 8px; display: grid; place-items: center; background: #fff; border: 1px solid var(--border); color: var(--acc, #2f6feb); }
.imp-cta b { display: block; font-size: 14px; }
.imp-cta small { display: block; color: var(--muted); font-size: 12.5px; margin-top: 2px; }
.imp-cta .btn { flex: none; pointer-events: none; }
.imp-cta:hover .btn { border-color: var(--acc, #2f6feb); color: var(--acc, #2f6feb); }
@media (max-width: 600px) { .imp-cta .btn { display: none; } }

[hidden] { display: none !important; }

/* 访问令牌: 列表不裁剪下拉菜单; 令牌值 + 查看/复制按钮 */
.box.tokens-box { overflow: visible; }
.box.tokens-box > .box-row:first-child { border-top-left-radius: inherit; border-top-right-radius: inherit; }
.box.tokens-box > .box-row:last-child { border-bottom-left-radius: inherit; border-bottom-right-radius: inherit; }
.tokens-box .dropdown .menu { z-index: 50; }
.token-inline { display: inline-flex; align-items: center; gap: 2px; vertical-align: middle; }
.token-inline .mono { word-break: break-all; color: var(--text); user-select: all; margin-right: 2px; }
.token-inline .btn.xs.icon { height: 20px; width: 20px; padding: 0; justify-content: center; color: var(--muted); }
.token-inline .btn.xs.icon:hover { color: var(--text); }

/* ---- 后台 · 备份 ---- */
.bk-tabs { display: flex; gap: 4px; border-bottom: 1px solid var(--border); margin: -4px 0 20px; }
.bk-tabs a { padding: 9px 14px; color: var(--muted); border-bottom: 2px solid transparent; margin-bottom: -1px; font-weight: 500; }
.bk-tabs a:hover { color: var(--text); text-decoration: none; }
.bk-tabs a.active { color: var(--text); border-bottom-color: var(--acc-2, var(--acc)); font-weight: 600; }
.bk-pager { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-top: 14px; flex-wrap: wrap; }
.bk-pager .btn.active { background: var(--text); color: #fff; border-color: var(--text); opacity: 1; }
.bk-stores { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 8px; }
.bk-store { display: flex; gap: 10px; align-items: flex-start; border: 1px solid var(--border); border-radius: 8px; padding: 10px 12px; cursor: pointer; background: #fff; }
.bk-store:has(input:checked) { border-color: var(--acc-2, var(--acc)); background: var(--bg-soft); }
.bk-store input { margin-top: 3px; }
.bk-store span { display: flex; flex-direction: column; min-width: 0; }
.bk-store small { color: var(--muted); font-size: 12px; }
.bk-results { display: flex; flex-direction: column; border: 1px solid var(--border); border-radius: 8px; margin-top: 6px; overflow: hidden; }
.bk-results:empty { display: none; }
.bk-results button { display: flex; align-items: center; gap: 8px; padding: 7px 10px; border: 0; background: #fff; text-align: left; cursor: pointer; font: inherit; }
.bk-results button:hover { background: var(--bg-soft); }
.bk-results button small { margin-left: auto; color: var(--muted); }
.bk-chips { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 10px; max-height: 140px; overflow: auto; }
.bk-chip { display: inline-flex; align-items: center; gap: 4px; padding: 2px 4px 2px 10px; border-radius: 20px; background: var(--bg-soft); border: 1px solid var(--border); font-size: 12.5px; }
.bk-chip button { border: 0; background: none; cursor: pointer; color: var(--muted); display: inline-flex; padding: 2px; border-radius: 50%; }
.bk-chip button:hover { color: var(--danger); background: #fff; }
.bk-tags { display: flex; flex-wrap: wrap; gap: 6px; }
.bk-tags .badge { display: inline-flex; align-items: center; gap: 4px; }
.box.bk-overflow { overflow: visible; }
.bk-plan.off b { color: var(--muted); }
.bk-plan .switch { margin-right: 4px; }
.bk-group { cursor: pointer; user-select: none; }
.bk-group:hover { background: var(--bg-soft); }
.bk-group .bk-caret { transition: transform .15s; color: var(--muted); }
.bk-group.open .bk-caret { transform: rotate(90deg); }
.bk-files { background: var(--bg-soft); border-top: 1px solid var(--border-soft); padding: 4px 12px 10px 44px; }
.bk-files table.list { background: #fff; border: 1px solid var(--border-soft); border-radius: 6px; }
.bk-run { align-items: flex-start; }
.bk-run-main { flex: 1; min-width: 0; }
.bk-progress { height: 6px; border-radius: 6px; background: var(--bg-muted); overflow: hidden; max-width: 420px; }
.bk-progress i { display: block; height: 100%; background: var(--acc-2, var(--acc)); transition: width .4s; }
.bk-errs summary { cursor: pointer; color: var(--danger); }
.storage-type + .storage-type { margin-top: 0; }

/* ---- 组件检测与安装 (pages-deps.js) ---- */
.deps { display: flex; flex-direction: column; gap: 12px; }
.deps-loading { color: var(--muted); font-size: 13px; padding: 10px 0; display: flex; align-items: center; gap: 8px; }
.deps-loading .spin { width: 14px; height: 14px; }
.deps-region { border: 1px solid var(--border-soft); border-radius: 8px; padding: 10px 12px; background: var(--bg-soft); display: flex; flex-direction: column; gap: 6px; }
.deps-region-main { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; font-size: 13px; }
.deps-region-main select { height: 28px; padding: 0 6px; width: auto; }
.deps-probes { display: flex; flex-wrap: wrap; gap: 6px; }
.deps-probe { font-size: 11.5px; padding: 1px 8px; border-radius: 999px; border: 1px solid var(--border-soft); background: #fff; }
.deps-probe.ok { color: var(--green, #1a7f37); }
.deps-probe.bad { color: var(--faint); text-decoration: line-through; }
.deps-list { display: flex; flex-direction: column; }
.deps-row { border-bottom: 1px solid var(--border-soft); padding: 9px 2px; }
.deps-row:last-child { border-bottom: 0; }
.deps-line { display: flex; align-items: center; gap: 10px; min-height: 30px; }
.deps-st { width: 20px; display: inline-grid; place-items: center; flex: none; }
.deps-st.ok { color: var(--green, #1a7f37); }
.deps-st.bad { color: var(--danger); }
.deps-st.warn { color: #9a6700; }
.deps-name { display: flex; flex-direction: column; min-width: 120px; }
.deps-name b { font-size: 13.5px; }
.deps-ver { flex: 1; text-align: right; font-size: 12px; min-width: 0; }
.deps-extra { margin: 6px 0 2px 30px; display: flex; flex-direction: column; gap: 6px; }
.deps-cmd summary { cursor: pointer; font-size: 12.5px; color: var(--acc); }
.deps-cmd-box { position: relative; margin-top: 6px; }
.deps-cmd-box pre { margin: 0; padding: 10px 12px; padding-right: 70px; background: #f6f8fa; border: 1px solid var(--border-soft); border-radius: 6px;
  font: 12px/1.55 "JetBrains Mono", Consolas, monospace; white-space: pre-wrap; word-break: break-all; }
.deps-cmd-box .btn { position: absolute; top: 6px; right: 6px; }
.deps-log { margin: 0; max-height: 320px; overflow: auto; padding: 10px 12px; background: #f6f8fa; border: 1px solid var(--border-soft); border-radius: 6px;
  font: 12px/1.5 "JetBrains Mono", Consolas, monospace; white-space: pre-wrap; word-break: break-all; }
.spin.sm { width: 12px; height: 12px; border-width: 2px; vertical-align: -2px; margin-right: 4px; }
.warn-t { color: #9a6700; }
