/* 应用中心（2026-09-21）：上半应用九宫格，下半简道云接入卡片 + 三个对话框。
   色值一律走 tokens.css 的语义 token（UI 门禁 test_no_bare_hex / test_single_root）。 */
[hidden] { display: none !important; }
body { background: var(--canvas); }

.ac-app { max-width: 980px; margin: 0 auto; padding: 26px 18px 70px; }
.ac-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 14px; }
.ac-head h1 { margin: 0 0 4px; font-size: 22px; }
.ac-head p { margin: 0; color: var(--muted); font-size: 13px; max-width: 640px; line-height: 1.6; }
.ac-head nav { display: flex; gap: 8px; flex-shrink: 0; }
.ac-head nav a { color: var(--ink-2); font-size: 12px; text-decoration: none; background: #fff; border: 1px solid var(--line); border-radius: 7px; padding: 5px 11px; }
[data-embedded="1"] .ac-head nav { display: none; }

.ac-section { margin-top: 26px; }
.ac-section h2 { margin: 0 0 12px; font-size: 15px; }
.ac-section-head { display: flex; justify-content: space-between; align-items: center; margin-bottom: 4px; }
.ac-head-actions { display: flex; gap: 8px; align-items: center; }
.ac-section-head h2 { margin: 0; }
.ac-note { margin: 6px 0 14px; color: var(--muted); font-size: 12px; line-height: 1.7; max-width: 720px; }

.ac-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(215px, 1fr)); gap: 12px; }
.ac-empty { color: var(--muted); font-size: 13px; }

/* —— 应用卡 —— */
.ac-card { display: grid; grid-template-columns: 40px 1fr; grid-template-rows: auto auto; column-gap: 12px; align-items: center;
  background: #fff; border: 1px solid var(--line); border-radius: 12px; padding: 14px 15px; text-decoration: none; color: var(--ink); }
.ac-card:hover { border-color: var(--green); }
.ac-icon { grid-row: span 2; width: 40px; height: 40px; border-radius: 10px; background: var(--green-soft); color: var(--green);
  display: inline-flex; align-items: center; justify-content: center; font-size: 17px; font-weight: 600; }
.ac-card b { font-size: 14px; }
.ac-card small { color: var(--muted); font-size: 12px; line-height: 1.5; }

/* —— 接入表卡 —— */
.ac-table-card { background: #fff; border: 1px solid var(--line); border-radius: 12px; padding: 14px 15px; display: flex; flex-direction: column; gap: 8px; }
.ac-table-head { display: flex; align-items: baseline; gap: 8px; flex-wrap: wrap; }
.ac-table-head b { font-size: 14px; }
.ac-table-head code { color: var(--muted); }
/* 标签只标「表的类型」（用户三分法），一律浅底深字的 *-bg/*-fg 成对 token：
   --mint/--amber 是深实心色，当过底色字看不清（2026-09-21 用户截图反馈）。 */
.ac-badge { font-size: 11px; border-radius: 6px; padding: 2px 8px; background: var(--n-100); color: var(--text-secondary); }
.ac-badge.kind-native { background: var(--green-soft); color: var(--green); }
.ac-badge.kind-composite { background: var(--warning-bg); color: var(--warning-fg); }
.ac-badge.kind-local { background: var(--n-100); color: var(--text-secondary); }
.ac-badge.inactive { background: var(--danger-bg); color: var(--danger-fg); }
.ac-flow { font-size: 12px; color: var(--ink-2); }
.ac-stats { color: var(--muted); font-size: 12px; line-height: 1.7; }
.ac-stats strong { color: var(--ink); font-weight: 600; }
.ac-dim { color: var(--muted); font-weight: 400; }
.ac-group { margin: 0 0 20px; }
.ac-group h3 { margin: 0 0 2px; font-size: 14px; color: var(--ink); }
.ac-group-note { margin: 0 0 10px; color: var(--muted); font-size: 12px; line-height: 1.6; }
.ac-table-actions { display: flex; gap: 6px; flex-wrap: wrap; margin-top: auto; }
.ac-table-actions .soft, .ac-table-actions a.soft { font-size: 12px; padding: 5px 11px; text-decoration: none; }

/* —— 对话框 —— */
.ac-dialog { border: 0; border-radius: 14px; padding: 0; width: min(94vw, 540px); }
.ac-dialog-wide { width: min(94vw, 760px); }
.ac-dialog::backdrop { background: var(--n-800); opacity: .45; }
.ac-dialog form, .ac-dialog-wide > div, .ac-dialog-wide > form { padding: 0 22px; }
.ac-dialog form { padding: 20px 22px 22px; display: grid; gap: 12px; }
.ac-dialog-head { display: flex; justify-content: space-between; align-items: center; }
.ac-dialog-head h2 { margin: 0; font-size: 16px; }
.ac-close { border: 0; background: none; font-size: 20px; color: var(--muted); cursor: pointer; }
.ac-dialog label { display: grid; gap: 5px; font-size: 13px; color: var(--ink-2); }
.ac-dialog input, .ac-dialog select { border: 1px solid var(--line); border-radius: 8px; padding: 8px 11px; background: #fff; }
.ac-two { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.ac-kind-pick { border: 1px solid var(--line); border-radius: 10px; padding: 10px 12px; display: grid; gap: 8px; margin: 0; }
.ac-kind-pick legend { font-size: 12px; color: var(--ink-2); padding: 0 4px; }
.ac-kind-pick label { display: grid; grid-template-columns: 16px 1fr; gap: 9px; align-items: start; cursor: pointer; }
.ac-kind-pick input { margin-top: 3px; }
.ac-kind-pick b { font-size: 13px; color: var(--ink); }
.ac-kind-pick small { display: block; color: var(--muted); font-size: 12px; line-height: 1.5; }
.ac-help { margin: 0; color: var(--muted); font-size: 12px; line-height: 1.6; }
.ac-help.ac-fixed { color: var(--warning-fg); background: var(--warning-bg); border: 1px solid var(--warning-border);
  border-radius: 6px; padding: 6px 8px; }   /* 固定钟点同步的表：「对账周期」不起作用 */
.ac-error { margin: 0; color: var(--coral); font-size: 12px; min-height: 1em; }
.ac-ok { margin: 0; font-size: 13px; }
.ac-step { display: grid; gap: 12px; }
.ac-steps-list { margin: 0; padding-left: 20px; font-size: 13px; line-height: 2; }
.ac-steps-list code { background: var(--canvas); border: 1px solid var(--line); border-radius: 6px; padding: 2px 7px; word-break: break-all; }
.ac-copy { font-size: 11px; padding: 2px 8px; }
.ac-fields summary { font-size: 12px; color: var(--ink-2); cursor: pointer; }
#ac-widgets { max-height: 200px; overflow: auto; margin-top: 8px; display: grid; gap: 3px; }
#ac-widgets span { font-size: 12px; color: var(--ink-2); }
#ac-widgets span code { color: var(--muted); }
.ac-dialog-actions { display: flex; justify-content: flex-end; gap: 8px; }

/* —— 数据预览 —— */
#ac-preview-search { display: flex; gap: 8px; margin: 12px 0; }
#ac-preview-search input { flex: 1; border: 1px solid var(--line); border-radius: 8px; padding: 7px 11px; }
.ac-preview-rows { display: grid; gap: 8px; padding-bottom: 22px; max-height: 55vh; overflow: auto; }
.ac-row { border: 1px solid var(--line); border-radius: 9px; }
.ac-row summary { display: flex; gap: 10px; align-items: baseline; padding: 9px 12px; cursor: pointer; font-size: 13px; }
.ac-row summary code { color: var(--muted); font-size: 11px; }
.ac-row summary time { margin-left: auto; color: var(--muted); font-size: 11px; }
.ac-row pre { margin: 0; padding: 10px 12px; border-top: 1px solid var(--line); background: var(--canvas);
  font-size: 11px; line-height: 1.6; overflow: auto; max-height: 260px; }
.ac-kv { width: 100%; border-collapse: collapse; border-top: 1px solid var(--line); font-size: 12px; }
.ac-kv th { text-align: left; white-space: nowrap; vertical-align: top; padding: 6px 12px; color: var(--muted);
  font-weight: 500; width: 1%; border-bottom: 1px solid var(--line); background: var(--canvas); }
.ac-kv td { padding: 6px 12px; color: var(--ink); border-bottom: 1px solid var(--line); word-break: break-all; line-height: 1.55; }
.ac-kv tr:last-child th, .ac-kv tr:last-child td { border-bottom: 0; }
.ac-cell-empty { color: var(--muted); }

@media (max-width: 640px) {
  .ac-head { flex-direction: column; }
  .ac-two { grid-template-columns: 1fr; }
}

/* 一键导入：主按钮 + 一条不抢戏的「逐项设置」出口 */
.ac-quick-actions { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.ac-linkish { border: 0; background: none; color: var(--blue); font-size: 13px; cursor: pointer; padding: 4px 0; }
.ac-linkish:hover { text-decoration: underline; }
#ac-done-quick .ac-fields { margin-top: 10px; }

/* 老板 10-04 可视化：「应用」「数据表」小标题前加图标（shared/viz.css 的 sqv-h），字号沿用本页 */
.ac-section h2.sqv-h { margin: 0 0 12px; }
.ac-section-head h2.sqv-h { margin: 0; }

/* 老板 10-08「备注和更新的标识有点混乱」：每张卡固定五行——标题 / 来源+能不能改 / 这张表是干嘛的 / 几条·几个字段 /
   一行同步状态（绿点 = 正常；只有漏推、补漏失败、待定才出橙红牌子，点这一行看日志）。来源标识：简道云（蓝）/ 本系统为准（灰）。 */
.ac-table-head b { line-height: 1.4; }
.ac-chips { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; }
.ac-src { display: inline-flex; align-items: center; gap: 5px; font-size: 11px; line-height: 20px; padding: 0 8px 0 3px;
  border-radius: 6px; font-weight: 600; white-space: nowrap; vertical-align: middle; }
.ac-src i { font-style: normal; width: 15px; height: 15px; border-radius: 4px; display: inline-flex; align-items: center;
  justify-content: center; font-size: 10px; font-weight: 600; color: var(--text-on-accent); }
.ac-src-jdy { background: var(--info-bg); color: var(--info-fg); }
.ac-src-jdy i { background: var(--info-fg); }
.ac-src-local { background: var(--n-100); color: var(--text-secondary); }
.ac-src-local i { background: var(--text-secondary); }
.ac-sync { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 6px; border: 0; background: none; padding: 0;
  cursor: pointer; text-align: left; font-size: 12px; color: var(--muted); line-height: 1.6; font-family: inherit; }
.ac-sync:hover > span { color: var(--ink); }
.ac-dot { display: inline-block; width: 8px; height: 8px; border-radius: 50%; background: var(--success-fg); margin-right: 6px; vertical-align: 1px; }   /* 点在文字里，一起折行，不会单独站一行 */
.ac-sync.tone-warn .ac-dot { background: var(--warning-fg); }
.ac-sync.tone-bad .ac-dot { background: var(--danger-fg); }
.ac-sync.tone-none .ac-dot { background: var(--n-300); }
.ac-sync .sqv-pill { height: 20px; font-size: 11px; padding: 0 7px; }
.ac-table-actions a.primary { font-size: 12px; padding: 5px 11px; text-decoration: none; color: var(--text-on-accent); }
/* 新建表单 / 改字段（老板 10-08）：字段一行一个，名字 / 类型 / 选项 / 必填 / 编号 / 删 */
.ac-fe { display: grid; gap: 6px; }
.ac-fe-row { display: grid; grid-template-columns: minmax(120px, 1.2fr) 96px 128px minmax(140px, 2fr) 38px 38px 38px 26px; gap: 6px; align-items: center; }   /* 10-17 加「权限分组」一列 */
.ac-fe-head span { font-size: 11px; color: var(--muted); }
.ac-fe-row input[type=text], .ac-fe-row select { width: 100%; box-sizing: border-box; border: 1px solid var(--line); border-radius: 6px; padding: 6px 8px; font-size: 13px; }
.ac-fe-row input[type=text]:disabled { background: var(--canvas); color: var(--muted); }
.ac-fe-row input[type=checkbox], .ac-fe-row input[type=radio] { justify-self: center; }
/* 导入预览：字段行下面一行小字——这一列原来的内容各有多少（老板 10-10，便于定类型） */
.ac-fe-row .ac-fe-src { grid-column: 1 / -1; margin: -3px 0 0; font-size: 11px; color: var(--ink-2); display: flex; gap: 8px; align-items: center; }
.ac-fe-row .ac-fe-src select { width: auto; max-width: 240px; padding: 2px 4px; font-size: 11px; }
.ac-fe-row .ac-fe-src span { color: var(--muted); }
.fs-note { width: 100%; box-sizing: border-box; border: 1px solid var(--line); border-radius: 4px; padding: 3px 6px; font-size: 12px; min-width: 160px; }
.ac-fe-row .ac-fe-stats { grid-column: 1 / -1; margin: -3px 0 2px; font-size: 11px; line-height: 1.4; color: var(--muted); display: flex; gap: 10px; align-items: baseline; }
.ac-fe-row .ac-fe-stats > span { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ac-fe-row .ac-fe-more { flex: none; color: var(--green); text-decoration: none; white-space: nowrap; }
.ac-fe-row .ac-fe-detail { grid-column: 1 / -1; margin: 0 0 8px; padding: 6px 10px 6px 24px; font-size: 12px; line-height: 1.55; color: var(--ink-2); background: var(--canvas); border-radius: 6px; }
.ac-fe-row .ac-fe-detail li { margin: 2px 0; }
.ac-fe-x { border: 0; background: none; color: var(--muted); cursor: pointer; font-size: 16px; }
/* 字段从哪来：自己定 / 上传 Excel / 飞书链接（老板 10-08）；读到的表格给个 5 行小样 */
.ac-src-pick { display: flex; gap: 16px; flex-wrap: wrap; font-size: 13px; color: var(--ink); }
.ac-src-pick label { display: inline-flex; align-items: center; gap: 5px; cursor: pointer; }
.ac-src-box { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.ac-src-box input[type=url] { flex: 1; min-width: 240px; border: 1px solid var(--line); border-radius: 8px; padding: 7px 11px; }
.ac-file-pick { cursor: pointer; font-size: 12px; padding: 5px 11px; }
.ac-preview { display: grid; gap: 6px; border: 1px solid var(--line); border-radius: 10px; padding: 10px 12px; background: var(--canvas); }
.ac-preview-head { display: flex; justify-content: space-between; align-items: center; gap: 10px; font-size: 13px; }
.ac-preview-head label { display: inline-flex; gap: 6px; align-items: center; font-size: 12px; color: var(--ink-2); }
.ac-sample-scroll { overflow-x: auto; }
.ac-sample { border-collapse: collapse; font-size: 12px; width: max-content; min-width: 100%; }
.ac-sample th, .ac-sample td { border-bottom: 1px solid var(--line); padding: 3px 8px; text-align: left; white-space: nowrap; max-width: 180px; overflow: hidden; text-overflow: ellipsis; }
.ac-sample th { color: var(--muted); font-weight: 500; }
.ac-fe-x:hover { color: var(--danger-fg); }
@media (max-width: 640px) { .ac-fe-row { grid-template-columns: 1fr 90px 32px 32px 32px 24px; } .ac-fe-row > :nth-child(3), .ac-fe-row > :nth-child(4) { grid-column: 1 / -1; } }
/* 日志对话框 */
.ac-dialog .ac-log { padding: 20px 22px 22px; display: grid; grid-template-columns: minmax(0, 1fr); gap: 12px; max-height: 86vh; overflow: auto; }
.ac-log-h { margin: 6px 0 0; font-size: 13px; color: var(--ink); }
.ac-log-scroll { overflow-x: auto; }
.ac-log-table { width: 100%; border-collapse: collapse; font-size: 12px; }
.ac-log-table th, .ac-log-table td { padding: 5px 8px; border-bottom: 1px solid var(--line); text-align: right; white-space: nowrap; }
.ac-log-table th:first-child, .ac-log-table td:first-child { text-align: left; }
.ac-log-table thead th { color: var(--muted); font-weight: 500; background: var(--canvas); }
.ac-log-table tbody th { font-weight: 500; color: var(--ink-2); }
.ac-log-table td.ac-run-error { text-align: left; white-space: normal; color: var(--danger-fg); background: var(--danger-bg); }
.ac-warn { color: var(--warning-fg); font-weight: 600; }
.ac-hold { border: 1px solid var(--danger-border); background: var(--danger-bg); border-radius: 10px; padding: 10px 12px;
  display: grid; gap: 6px; font-size: 13px; }
.ac-hold-vals { display: flex; flex-wrap: wrap; gap: 6px 18px; }
.ac-hold .ac-dialog-actions { justify-content: flex-start; }
.ac-log-done summary { font-size: 12px; color: var(--ink-2); cursor: pointer; }
.ac-log-done ul { margin: 6px 0 0; padding-left: 18px; font-size: 12px; line-height: 1.8; color: var(--ink-2); }
@media (max-width: 640px) { .ac-log-table th, .ac-log-table td { padding: 4px 5px; } }
.ac-log .sqv-kpi { min-width: 0; }
.ac-log .sqv-spark { max-width: 100%; height: auto; }

/* 编辑分组对话框（老板 2026-10-08）：上半组的清单，下半每张表归哪组。只用 tokens.css 变量。 */
.ac-grp { display: grid; gap: 6px; }
.ac-grp-row { display: grid; grid-template-columns: 44px minmax(120px, 1fr) minmax(160px, 1.6fr) 28px; gap: 8px; align-items: center; }
.ac-grp-row.ac-grp-head { font-size: 12px; color: var(--text-muted); }
.ac-grp-move { display: flex; gap: 2px; }
.ac-grp-move .ac-linkish[disabled] { opacity: .3; cursor: default; }
.ac-grp-del { color: var(--danger-fg); }
.ac-grp-h { margin: 6px 0 0; font-size: 13px; color: var(--text-secondary); }
.ac-grp-tables { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 6px 14px; max-height: 40vh; overflow: auto; padding: 2px; }
.ac-grp-assign { display: grid; grid-template-columns: minmax(0, 1fr) 150px; gap: 8px; align-items: center; font-size: 13px; }
.ac-grp-assign span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ac-grp-assign select { padding: 5px 8px; }

/* 关联设置（10-08） */
.ac-links { padding: 20px 22px 22px; display: grid; gap: 12px; max-height: 80vh; overflow: auto; }
.ac-link { border: 1px solid var(--line); border-radius: 10px; padding: 12px 14px; display: grid; gap: 10px; }
.ac-link-head { display: flex; align-items: center; gap: 8px; }
.ac-link-type { font-size: 12px; color: var(--ink-2); }
.ac-link-tag { font-size: 12px; padding: 1px 8px; border-radius: 999px; }
.ac-link-tag.guess { background: color-mix(in srgb, var(--amber) 18%, transparent); color: var(--ink); }
.ac-link-tag.ok { background: var(--green-soft); color: var(--green); }
.ac-maps { display: grid; gap: 6px; }
.ac-map { display: grid; grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr) 110px 28px; gap: 6px; align-items: center; }
.ac-map select { min-width: 0; }
.ac-map-arrow, .ac-map-rate { font-size: 12px; color: var(--ink-2); }
.ac-map-del { border: 0; background: none; cursor: pointer; color: var(--ink-2); font-size: 16px; }
.ac-link-actions { display: flex; gap: 8px; justify-content: flex-end; }
.ac-match { display: grid; grid-template-columns: auto minmax(0, 1fr) auto minmax(0, 1fr) auto; gap: 6px; align-items: center; font-size: 13px; }
@media (max-width: 560px) { .ac-map { grid-template-columns: 1fr auto 1fr 28px; } .ac-map-rate { display: none; } .ac-match { grid-template-columns: 1fr; } }

/* —— 10-15 一表一行（老板：「分组多了会很乱」）——
   顶上工具条（搜索 · 按来源筛 · 全部展开 / 收起）+ 一排组名按钮（点了跳过去）；每组标题能点收起；
   每行：表名 + 一句说明 | 来源 | 条数 | 同步状态 | 打开 + 更多。类名 ac-table-card 等沿用（feishu-sync.js 认它们）。 */
.ac-app { max-width: 1180px; }
.ac-note { max-width: none; margin: 6px 0 10px; }
.ac-q-hint { display: inline-flex; width: 16px; height: 16px; border-radius: 50%; align-items: center; justify-content: center;
  font-size: 11px; color: var(--muted); border: 1px solid var(--line); cursor: help; margin-left: 4px; }
.ac-tools { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin: 0 0 8px; }
.ac-q { border: 1px solid var(--line); border-radius: 8px; padding: 6px 11px; width: 220px; font-size: 13px; background: var(--surface); }
.ac-seg { display: inline-flex; gap: 4px; flex-wrap: wrap; }
.ac-seg button, .ac-gnav button { border: 1px solid var(--line); background: var(--surface); border-radius: 999px; padding: 3px 11px;
  font-size: 12px; color: var(--ink-2); cursor: pointer; white-space: nowrap; }
.ac-seg button em, .ac-gnav button em { font-style: normal; color: var(--muted); margin-left: 4px; }
.ac-seg button.on { border-color: var(--green); background: var(--green-soft); color: var(--green); font-weight: 600; }
.ac-seg button:hover, .ac-gnav button:hover { border-color: var(--green); }
.ac-fold-all { margin-left: auto; display: inline-flex; gap: 12px; font-size: 12px; }
.ac-gnav { display: flex; gap: 6px; flex-wrap: wrap; margin: 0 0 14px; }
.ac-gnav button { border-radius: 7px; background: var(--surface-sunken); }

.ac-group { margin: 0 0 12px; background: var(--surface); border: 1px solid var(--line); border-radius: 10px; scroll-margin-top: 70px; }
.ac-ghead { display: flex; align-items: center; gap: 8px; width: 100%; border: 0; background: none; padding: 10px 14px; cursor: pointer;
  text-align: left; color: var(--ink); min-width: 0; }
.ac-ghead b { font-size: 14px; white-space: nowrap; }
.ac-gcount { font-style: normal; font-size: 12px; color: var(--muted); white-space: nowrap; }
.ac-gnote { font-size: 12px; color: var(--muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0; flex: 1; }
.ac-caret { width: 0; height: 0; border-left: 5px solid transparent; border-right: 5px solid transparent; border-top: 6px solid var(--muted);
  transition: transform var(--dur-fast, .15s); flex-shrink: 0; }
.ac-group.is-closed:not(.is-filtering) .ac-caret { transform: rotate(-90deg); }
.ac-group.is-closed:not(.is-filtering) .ac-rows { display: none; }
.ac-rows { border-top: 1px solid var(--line); }

.ac-row.ac-table-card { display: grid; grid-template-columns: minmax(0, 1fr) 150px 150px minmax(0, 330px) 132px; align-items: center; gap: 12px;
  border: 0; border-radius: 0; padding: 8px 14px; background: none; }
.ac-row + .ac-row { border-top: 1px solid var(--border-subtle, var(--line)); }
.ac-row:hover { background: var(--surface-hover); }
.ac-row .ac-table-head b { font-size: 13px; }
.ac-r-title { color: var(--ink); text-decoration: none; }
.ac-r-title:hover b { color: var(--green); text-decoration: underline; }
.ac-r-name { min-width: 0; }
.ac-r-name .ac-flow { font-size: 12px; color: var(--muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ac-r-src .ac-chips { display: flex; gap: 4px; flex-wrap: nowrap; white-space: nowrap; }
.ac-r-num .ac-stats { white-space: nowrap; }
.ac-r-sync { min-width: 0; display: grid; gap: 3px; font-size: 12px; }
.ac-r-sync .ac-sync { font-size: 12px; text-align: left; }
.ac-row .ac-table-actions { margin: 0; flex-wrap: nowrap; justify-content: flex-end; position: relative; }
.ac-row .ac-table-actions .primary { font-size: 12px; padding: 4px 12px; text-decoration: none; }
.ac-row .ac-table-actions > .primary, .ac-row .ac-table-actions > .soft { white-space: nowrap; flex: none; }
.ac-row .ac-table-actions > .soft { padding: 4px 12px; }   /* 「设计」拎到行上（10-15），和「打开」「更多」一样高 */
.ac-row .ac-table-actions > .ac-ph { visibility: hidden; }   /* 没有「设计」的表（合同表、只能看的）占个位，打开 / 更多 上下对齐 */
.ac-table-actions > .ac-ph { display: none; }
.ac-row .ac-table-actions > .ac-ph { display: inline-block; border: 1px solid transparent; font-size: 12px; }
.ac-more { position: relative; }
.ac-more > summary { list-style: none; cursor: pointer; font-size: 12px; color: var(--ink-2); border: 1px solid var(--line); border-radius: 7px;
  padding: 4px 10px; background: var(--surface); white-space: nowrap; }
.ac-more > summary::-webkit-details-marker { display: none; }
.ac-more > summary::after { content: ' ▾'; color: var(--muted); }
.ac-more[open] > summary { border-color: var(--green); }
.ac-menu { position: absolute; right: 0; top: calc(100% + 4px); z-index: 20; background: var(--surface); border: 1px solid var(--line);
  border-radius: 9px; box-shadow: var(--shadow-2, var(--shadow)); padding: 5px; display: grid; gap: 2px; min-width: 130px; }
.ac-menu .soft, .ac-menu a.soft { border: 0; background: none; text-align: left; padding: 6px 10px; border-radius: 6px; font-size: 13px;
  color: var(--ink); text-decoration: none; white-space: nowrap; cursor: pointer; }
.ac-menu .soft:hover { background: var(--surface-hover); }

/* 其他配置入口：一行小链接 */
.ac-apps-strip { margin-top: 30px; }
.ac-apps-strip h2 { font-size: 13px; color: var(--muted); font-weight: 600; margin-bottom: 8px; }
.ac-apps { display: flex; flex-wrap: wrap; gap: 8px; }
.ac-apps .ac-card { display: inline-flex; align-items: center; gap: 7px; padding: 5px 12px 5px 6px; border-radius: 8px; }
.ac-apps .ac-icon { width: 24px; height: 24px; border-radius: 6px; font-size: 12px; grid-row: auto; }
.ac-apps .ac-card b { font-size: 13px; font-weight: 500; }
.ac-apps .ac-card small { display: none; }

@media (max-width: 1000px) {
  .ac-row.ac-table-card { grid-template-columns: minmax(0, 1fr) 150px 120px; }
  .ac-r-src { display: none; }
  .ac-r-sync { grid-column: 1 / 3; }
}
@media (max-width: 640px) {
  .ac-section-head { flex-wrap: wrap; gap: 8px; }
  .ac-section-head h2 { white-space: nowrap; }
  .ac-head-actions { flex-wrap: wrap; }
  .ac-head-actions button { white-space: nowrap; font-size: 12px; padding: 6px 10px; }
  .ac-q { width: 100%; }
  .ac-fold-all { margin-left: 0; }
  .ac-gnote { display: none; }
  .ac-row.ac-table-card { grid-template-columns: minmax(0, 1fr) auto; gap: 6px 10px; }
  .ac-r-num { display: none; }
  .ac-r-sync { grid-column: 1 / -1; grid-row: 2; }
}
.ac-fe-row select[data-k="group"].guess { color: var(--muted); font-style: italic; }   /* 按名字猜的，人还没选过 */
.ac-fe-pg-off { font-size: 11px; color: var(--muted); }

/* 10-18 按岗位先摆「和你有关的」几张（app/table_focus.py），其余收在「还有 N 张」里；搜 / 筛时全部摊开 */
.ac-group.ac-focus { border-color: var(--green); }
.ac-group.ac-focus .ac-ghead b { color: var(--green); }
.ac-rest-toggle { display: flex; align-items: center; gap: 6px; width: 100%; margin: 0 0 12px; padding: 9px 14px; border: 1px dashed var(--line);
  border-radius: 10px; background: var(--surface-sunken); color: var(--ink-2); font-size: 13px; cursor: pointer; text-align: left; white-space: nowrap; }
.ac-rest-toggle:hover { border-color: var(--green); color: var(--green); }
.ac-rest-toggle span { color: var(--green); }
#ac-tables.rest-closed:not(.is-filtering-all) .ac-rest { display: none; }
#ac-tables.is-filtering-all .ac-rest-toggle { display: none; }
/* 「只看自己的」表他名下 0 行：整行淡下去，条数那格写「你名下没有」（悬停看整张几条） */
.ac-row.is-mine-empty { opacity: .55; }
.ac-row.is-mine-empty:hover { opacity: .9; }
.ac-mine0 { color: var(--muted); font-weight: 600; }
