/* 企业大脑管理面板 · 绿色系（#1E6B54）· 中文界面 · 响应式（老板可能手机看） */
:root {
  /* ---- Design tokens (2026-09-03 评审批) · 品牌锚 #0b5544 ---- */
  --brand-700: #083d31; --brand: #0b5544; --brand-500: #1e6b54;
  --brand-100: #cfe6dc; --brand-50: #e8f3ee;
  --ok: #1a8a4f; --ok-bg: #e3f6ec;
  --warn: #b7791f; --warn-bg: #fdf6e3;
  --danger: #c0392b; --danger-bg: #fdecea;
  --info: #1d5fa8; --info-bg: #eef4fb;
  --text: #1f2329; --text-2: #4b5563; --muted: #5f6b76;
  --line: #e2e6e4; --bg: #f5f7f6; --card: #ffffff;
  --r-sm: 6px; --r-md: 10px; --r-lg: 14px; --r-full: 999px;
  --shadow-1: 0 1px 3px rgba(16, 40, 32, .06), 0 1px 2px rgba(16, 40, 32, .04);
  --shadow-2: 0 6px 16px rgba(16, 40, 32, .10);
  --shadow-pop: 0 14px 40px rgba(16, 40, 32, .16);
  --topbar-h: 56px;
  /* 兼容别名(历史规则继续生效,值全部指向 token) */
  --green: var(--brand); --green-dark: var(--brand-700);
  --green-light: var(--brand-50); --green-mid: var(--brand-100);
  --border: var(--line); --radius: var(--r-md); --shadow: var(--shadow-1);
}

* { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body {
  font-family: -apple-system, BlinkMacSystemFont, "PingFang SC", "Microsoft YaHei", "Segoe UI", sans-serif;
  margin: 0; background: var(--bg); color: var(--text);
  line-height: 1.6; font-size: 15px;
}
a { color: var(--green); text-decoration: none; }
a:hover { text-decoration: underline; }

/* ---------- 顶栏 ---------- */
header.topbar {
  background: var(--green); color: #fff;
  padding: 0 20px; position: sticky; top: 0; z-index: 20;
  box-shadow: 0 2px 8px rgba(16, 40, 32, .12);
}
.topbar-inner {
  max-width: 1440px; margin: 0 auto; padding: 0 8px;
  display: flex; align-items: center; gap: 14px; min-height: var(--topbar-h); flex-wrap: nowrap;
}
.brand { font-weight: 700; font-size: 17px; color: #fff; display: flex; align-items: center; gap: 8px; }
.brand:hover { text-decoration: none; }
.brand .dot { width: 10px; height: 10px; border-radius: 50%; background: #7fd6b0; display: inline-block; }
nav.mainnav { display: flex; gap: 2px; flex: 1; min-width: 0; flex-wrap: nowrap; overflow-x: auto; scrollbar-width: none; }
nav.mainnav::-webkit-scrollbar { display: none; }
nav.mainnav a {
  color: #d9efe6; padding: 8px 10px; border-radius: 8px; font-size: 13.5px; white-space: nowrap;
}
nav.mainnav a:hover { background: rgba(255, 255, 255, .12); color: #fff; text-decoration: none; }
nav.mainnav a.active { background: rgba(255, 255, 255, .2); color: #fff; font-weight: 600; }
.whoami { display: flex; align-items: center; gap: 10px; font-size: 13px; color: #d9efe6; flex-shrink: 0; }
.whoami .badge { background: rgba(255, 255, 255, .16); padding: 2px 8px; border-radius: 20px; }
.btn-logout {
  background: rgba(255, 255, 255, .14); color: #fff; border: none; cursor: pointer;
  padding: 6px 12px; border-radius: 8px; font-size: 13px;
}
.btn-logout:hover { background: rgba(255, 255, 255, .26); }

/* ---------- 布局 ---------- */
main { max-width: 1200px; margin: 22px auto 60px; padding: 0 16px; }
.page-title { font-size: 22px; font-weight: 700; margin: 4px 0 18px; }
.page-sub { color: var(--muted); font-size: 14px; margin: -12px 0 20px; }

.card {
  background: var(--card); border: 1px solid var(--border); border-radius: var(--radius);
  box-shadow: var(--shadow); padding: 20px; margin-bottom: 18px;
}
.card h2 { font-size: 16px; margin: 0 0 14px; display: flex; align-items: center; gap: 8px; }
.card h2 .hint { font-weight: 400; font-size: 13px; color: var(--muted); }
.grid { display: grid; gap: 16px; }
.grid.cols-2 { grid-template-columns: repeat(2, 1fr); }
.grid.cols-3 { grid-template-columns: repeat(3, 1fr); }
.grid.cols-4 { grid-template-columns: repeat(4, 1fr); }
@media (max-width: 720px) {
  .grid.cols-2, .grid.cols-3, .grid.cols-4 { grid-template-columns: 1fr; }
  .topbar-inner { min-height: 52px; }
  .whoami .who-name { display: none; }
}

/* ---------- 表单控件 ---------- */
label { display: block; font-size: 13px; color: var(--muted); margin: 10px 0 4px; }
input[type=text], input[type=password], input[type=email], input[type=search],
input[type=number], textarea, select {
  width: 100%; padding: 10px 12px; border: 1px solid var(--border); border-radius: 8px;
  font-size: 15px; font-family: inherit; background: #fff; color: var(--text);
}
input:focus, textarea:focus, select:focus {
  outline: none; border-color: var(--green); box-shadow: 0 0 0 3px var(--green-light);
}
textarea { resize: vertical; min-height: 70px; }
.row { display: flex; gap: 10px; flex-wrap: wrap; align-items: flex-end; }
.row > * { flex: 1; min-width: 120px; }
.inline { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.checks { display: flex; gap: 14px; flex-wrap: wrap; margin-top: 6px; }
.checks label { display: inline-flex; align-items: center; gap: 6px; margin: 0; color: var(--text); font-size: 14px; }
.checks input { width: auto; }

.btn {
  background: var(--green); color: #fff; border: none; cursor: pointer;
  padding: 10px 18px; border-radius: 8px; font-size: 15px; font-weight: 600;
  transition: background .15s;
}
.btn:hover { background: var(--green-dark); }
.btn:disabled { opacity: .55; cursor: not-allowed; }
.btn.small { padding: 6px 12px; font-size: 13px; font-weight: 500; }
.btn.ghost { background: #fff; color: var(--green); border: 1px solid var(--green-mid); }
.btn.ghost:hover { background: var(--green-light); }
.btn.danger { background: #fff; color: var(--danger); border: 1px solid #eab3ac; }
.btn.danger:hover { background: var(--danger-bg); }
.btn.warn { background: var(--warn); }
.btn.warn:hover { background: #98650f; }

/* ---------- 表格 ---------- */
.table-wrap { overflow-x: auto; -webkit-overflow-scrolling: touch; }
table { width: 100%; border-collapse: collapse; font-size: 14px; }
th, td { border-bottom: 1px solid var(--border); padding: 10px 12px; text-align: left; vertical-align: middle; }
th { background: var(--green-light); color: var(--green-dark); font-weight: 600; white-space: nowrap; }
tr:hover td { background: #fafcfb; }

/* ---------- 徽章 / 提示块 ---------- */
.tag { display: inline-block; padding: 2px 9px; border-radius: 20px; font-size: 12px; font-weight: 600; }
.tag.green { background: var(--green-light); color: var(--green-dark); }
.tag.gray { background: #eef0ef; color: var(--muted); }
.tag.red { background: var(--danger-bg); color: var(--danger); }
.tag.warn { background: var(--warn-bg); color: var(--warn); }
.tag.blue { background: #e6f0fb; color: #1d5fa8; }
.tag.gold { background: var(--brand); color: #fff; }

.notice { padding: 12px 14px; border-radius: 8px; font-size: 14px; margin: 10px 0; }
.notice.ok { background: var(--green-light); color: var(--green-dark); border: 1px solid var(--green-mid); }
.notice.err { background: var(--danger-bg); color: var(--danger); border: 1px solid #eab3ac; }
.notice.warn { background: var(--warn-bg); color: var(--warn); border: 1px solid #efd9a0; }
.notice.info { background: #eef4fb; color: #1d5fa8; border: 1px solid #cfe0f5; }

/* 一次性令牌明文块 */
.token-plain {
  font-family: "SF Mono", ui-monospace, Menlo, Consolas, monospace;
  background: #10281f; color: #7fd6b0; padding: 12px 14px; border-radius: 8px;
  font-size: 16px; letter-spacing: .5px; word-break: break-all; margin: 8px 0;
  display: flex; justify-content: space-between; align-items: center; gap: 10px;
}
.token-plain button { flex: 0 0 auto; }

/* ---------- 出处卡 / 答案 ---------- */
.answer {
  white-space: pre-line;
  background: var(--green-light); border-left: 4px solid var(--green);
  padding: 16px 18px; border-radius: 8px; white-space: pre-wrap; word-break: break-word;
}
.sources { margin-top: 14px; display: grid; gap: 10px; }
.source-card {
  border: 1px solid var(--border); border-radius: 8px; padding: 10px 12px;
  display: flex; justify-content: space-between; gap: 10px; align-items: center; background: #fff;
}
.source-card .s-title { font-weight: 600; }
.source-card .s-meta { color: var(--muted); font-size: 13px; }

/* ---------- 空态 / 加载态 ---------- */
.empty { text-align: center; color: var(--muted); padding: 28px 10px; font-size: 14px; }
.empty .big { font-size: 30px; display: block; margin-bottom: 6px; opacity: .6; }
.htmx-indicator { opacity: 0; transition: opacity .2s; }
.htmx-request .htmx-indicator, .htmx-request.htmx-indicator { opacity: 1; }
.spinner {
  display: inline-block; width: 15px; height: 15px; border: 2px solid var(--green-mid);
  border-top-color: var(--green); border-radius: 50%; animation: spin .7s linear infinite;
  vertical-align: -2px; margin-right: 6px;
}
@keyframes spin { to { transform: rotate(360deg); } }
.loading-line { color: var(--muted); font-size: 14px; padding: 8px 0; }

/* ---------- 登录页 ---------- */
.login-wrap { max-width: 420px; margin: 8vh auto 0; padding: 0 16px; }
.login-card { background: #fff; border: 1px solid var(--border); border-radius: 14px; box-shadow: var(--shadow); padding: 32px 28px; }
.login-logo { text-align: center; margin-bottom: 6px; }
.login-logo .mark { display: inline-block; width: 48px; height: 48px; line-height: 48px; border-radius: 12px; background: var(--green); color: #fff; font-size: 24px; font-weight: 700; }
.login-title { text-align: center; font-size: 20px; font-weight: 700; margin: 12px 0 2px; }
.login-desc { text-align: center; color: var(--muted); font-size: 13px; margin-bottom: 20px; }

.muted { color: var(--muted); }
.small { font-size: 13px; }
.mt0 { margin-top: 0; } .mb0 { margin-bottom: 0; }
.tabs { display: flex; gap: 6px; border-bottom: 1px solid var(--border); margin-bottom: 16px; flex-wrap: wrap; }
.tabs button {
  background: none; border: none; padding: 10px 14px; cursor: pointer; font-size: 15px;
  color: var(--muted); border-bottom: 2px solid transparent; margin-bottom: -1px;
}
.tabs button.active { color: var(--green); border-bottom-color: var(--green); font-weight: 600; }
/* 「查看」分隔：把只读参考（权限总览/审计）从"做"的三件事里视觉分出去 */
.tabs .tabs-sep { align-self: center; margin: 0 4px 0 14px; padding-left: 14px;
  border-left: 1px solid var(--border); color: var(--muted); font-size: 12px; }
.tabs button.tab-ghost { color: #9aa4a0; font-size: 14px; }
.tabs button.tab-ghost.active { color: var(--green); }
.tab-panel { display: none; }
.tab-panel.active { display: block; }
.quicklinks { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 12px; }
.quicklink {
  border: 1px solid var(--border); border-radius: 10px; padding: 16px; background: #fff;
  display: block; color: var(--text);
}
.quicklink:hover { border-color: var(--green); background: var(--green-light); text-decoration: none; }
.quicklink .ql-icon { font-size: 22px; }
.quicklink .ql-name { font-weight: 600; margin-top: 6px; }
.quicklink .ql-desc { color: var(--muted); font-size: 13px; }
.kv { display: grid; grid-template-columns: auto 1fr; gap: 6px 16px; font-size: 14px; }
.kv dt { color: var(--muted); }
.kv dd { margin: 0; font-weight: 500; }

/* ---------- 权限总览矩阵（谁能看什么） ---------- */
.perm-legend { display: flex; gap: 18px; flex-wrap: wrap; align-items: center; font-size: 13px; color: var(--muted); margin-bottom: 12px; }
table.perm td, table.perm th { text-align: center; white-space: nowrap; }
table.perm th.rowhead, table.perm td.rowhead { text-align: left; white-space: normal; min-width: 200px; }
table.perm td.rowhead .sub { display: block; color: var(--muted); font-weight: 400; font-size: 12px; margin-top: 2px; }
.cell-yes { color: var(--green); font-weight: 700; font-size: 15px; }
.cell-no { color: #c7d0cc; font-size: 14px; }
tr.row-group td { background: var(--green-light); color: var(--green-dark); font-weight: 600; font-size: 12px; letter-spacing: .04em; text-align: left; }
tr.row-exc td { background: #fbf8ee; }
tr.row-exc td.rowhead { border-left: 3px solid var(--warn); }
.perm-foot { margin-top: 16px; padding-top: 14px; border-top: 1px dashed var(--border); }
.headcount-strip { display: flex; gap: 10px; flex-wrap: wrap; margin-bottom: 10px; }
.headcount-strip .hc { background: var(--green-light); color: var(--green-dark); border-radius: 8px; padding: 6px 12px; font-size: 13px; }
.headcount-strip .hc b { font-size: 15px; }

/* ---------- 任务看板 ---------- */
.task-toolbar { display:flex; align-items:center; justify-content:space-between; gap:12px; margin-bottom:12px; flex-wrap:wrap; }
.scope-tabs { display:flex; gap:4px; }
.scope-tab { font-size:13px; color:var(--muted); padding:4px 10px; border-radius:7px; cursor:pointer; user-select:none; }
.scope-tab:hover { background:var(--green-light); color:var(--green-dark); }
.scope-tab.on { background:var(--green-light); color:var(--green-dark); font-weight:600; }
.assign-box { flex:0 0 auto; margin-left:auto; }
.assign-box[open] { flex:1 0 100%; margin-left:0; }
.assign-box summary { list-style:none; display:inline-flex; }
.assign-box summary::-webkit-details-marker { display:none; }
.assign-form { display:flex; flex-wrap:wrap; gap:8px; margin-top:10px; padding:12px; background:var(--green-light); border-radius:var(--radius); }
.assign-form input, .assign-form select { padding:7px 9px; border:1px solid var(--border); border-radius:8px; font-size:13px; }
.assign-form input[name="title"] { flex:1 1 200px; }
.assign-form input[name="detail"] { flex:1 1 100%; }
.task-list { display:flex; flex-direction:column; gap:8px; }
.task-item { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:11px 14px; background:var(--card); border:1px solid var(--border); border-radius:var(--radius); }
.task-item.task-dim { opacity:.55; }
.task-main { min-width:0; flex:1; }
.task-title { display:flex; align-items:center; gap:8px; }
.task-name { font-weight:600; font-size:14px; }
.task-meta { color:var(--muted); margin-top:3px; overflow:hidden; text-overflow:ellipsis; }
.task-actions { display:flex; gap:6px; flex:0 0 auto; }

/* ---------- 安装卡 ---------- */
.install-card { margin-top:18px; }
.install-cols { display:grid; grid-template-columns:1fr 1fr; gap:16px; align-items:start; }
@media(max-width:680px){ .install-cols{ grid-template-columns:1fr } }
.install-way { padding:14px 15px; border:1px solid var(--border); border-radius:10px; background:var(--bg); }
.way-head { font-weight:600; font-size:14px; margin-bottom:4px; }
.way-tag { display:inline-block; font-size:11px; font-weight:700; color:#fff; background:var(--green); border-radius:5px; padding:1px 7px; margin-right:6px; vertical-align:1px; }
.cmd-row { display:flex; align-items:center; gap:10px; background:#0e1b16; border-radius:8px; padding:10px 12px; overflow-x:auto; }
.cmd-row code { color:#7fe0b0; font-family:"SF Mono",Menlo,monospace; font-size:12.5px; white-space:nowrap; }
.install-note { margin-top:14px; padding-top:12px; border-top:1px solid var(--border); line-height:1.7; }
.muted { color:var(--muted); }

/* ---------- 部门花名册（权限总览底部） ---------- */
.roster-block { margin:8px 0 16px; }
.roster-title { font-weight:700; font-size:14px; margin-bottom:10px; }
.roster-dept { display:flex; align-items:baseline; gap:12px; padding:7px 0; border-bottom:1px solid var(--line); }
.roster-dept:last-child { border-bottom:none; }
.roster-dname { flex:0 0 140px; font-weight:600; font-size:13.5px; }
.roster-people { display:flex; flex-wrap:wrap; gap:6px; }
.person { display:inline-block; font-size:12.5px; background:var(--green-light); color:var(--green-dark); padding:2px 10px; border-radius:20px; }
.roster-orphan .roster-dname { color:var(--warn); }
.roster-orphan .person { background:var(--warn-bg); color:var(--warn); }

/* ---------- 员工自助注册（join 页 + 邀请链接展示） ---------- */
.join-identity { margin-top:18px; border:1px solid var(--border); border-radius:10px; overflow:hidden; }
.join-row { display:flex; justify-content:space-between; padding:11px 14px; }
.join-row + .join-row { border-top:1px solid var(--border); }
.join-k { color:var(--muted); font-size:13px; }
.join-v { font-weight:600; }
.invite-box { margin-top:12px; padding:12px 14px; background:var(--green-light); border-radius:10px; }
.invite-h { font-weight:600; font-size:13.5px; margin-bottom:6px; }
.invite-link-row { display:flex; align-items:center; gap:8px; background:#fff; border:1px solid var(--green-mid); border-radius:8px; padding:8px 10px; }
.invite-link-row code { flex:1; font-family:"SF Mono",Menlo,monospace; font-size:12px; color:var(--green-dark); word-break:break-all; }
.token-fallback { margin-top:10px; }
.token-fallback summary { cursor:pointer; font-size:12.5px; color:var(--muted); }

/* ---------- 今日简报（老板/管理员） ---------- */
.brief-card { border-top: 3px solid var(--green); }
.brief-head { display:flex; align-items:flex-start; justify-content:space-between; gap:10px; }
.brief-eyebrow { font-size:11px; font-weight:700; letter-spacing:.14em; color:var(--muted); text-transform:uppercase; }
.brief-greet { font-size:19px; font-weight:700; margin-top:3px; }
.brief-text { margin:10px 0 16px; font-size:14.5px; line-height:1.75; color:var(--text); }
.brief-headline { margin:10px 0 14px; font-size:16px; line-height:1.65; color:var(--green-dark); }
.brief-sections { display:grid; grid-template-columns:1fr 1fr; gap:10px 18px; }
@media (max-width:640px){ .brief-sections { grid-template-columns:1fr; } }
.brief-sec { border:1px solid var(--border); border-radius:10px; padding:10px 12px; background:#fafcfb; }
.brief-sec-title { font-size:13px; font-weight:700; color:var(--green-dark); margin-bottom:5px; }
.brief-sec-lines { margin:0; padding-left:16px; font-size:13.5px; line-height:1.6; color:var(--text); }
.brief-sec-lines li { margin:2px 0; }

/* 状态条降噪(桌面):一切正常时只显「系统运行正常·详情」,告警项才现身 */
@media (min-width: 721px) {
  .status-strip .ss-i { display: none; }
  .status-strip .ss-i:has(.ss-warn) { display: inline; }
  .status-strip .ss-i.ss-warn { display: inline; }
}

/* ---------- 顶栏快捷提问 ---------- */
.topask { display:flex; align-items:center; gap:6px; background:rgba(255,255,255,.14);
  border-radius:8px; padding:5px 10px; min-width:0; flex:0 1 240px; }
.topask:focus-within { background:rgba(255,255,255,.24); }
.topask-ic { font-size:13px; opacity:.85; }
.topask input { background:transparent; border:none; outline:none; color:#fff; font-size:13px; width:auto; flex:1; min-width:0; }
.topask input::placeholder { color:#cfe6dc; }
/* 问答不占导航了（2026-09-13），搜索框是网页上唯一的提问入口：任何宽度都不藏（手机上见下面 720px 那段，单独一行） */

/* ---------- 顶栏头像 + 任务页按人分组 + 邀请卡 ---------- */
.who-link { display:flex; align-items:center; gap:7px; color:#d9efe6; text-decoration:none; }
.who-link:hover { color:#fff; text-decoration:none; }
.avatar { width:26px; height:26px; border-radius:50%; background:rgba(255,255,255,.22);
  color:#fff; font-size:13px; font-weight:700; display:inline-flex; align-items:center; justify-content:center; }
.avatar-ink { background:var(--green-light); color:var(--green-dark); }
img.avatar, .avatar-img { object-fit:cover; padding:0; background:var(--green-light); }
.byp-list { display:flex; flex-direction:column; gap:14px; }
.byp-person { border:1px solid var(--border); border-radius:10px; padding:12px 14px; }
.byp-head { display:flex; align-items:center; gap:9px; }
.byp-name { font-weight:700; font-size:14.5px; }
.byp-count { margin-left:auto; font-size:12.5px; color:var(--muted); }
.byp-count b { color:var(--green-dark); font-size:15px; }
.byp-tasks { margin-top:9px; display:flex; flex-direction:column; gap:6px; }
.byp-task { display:flex; align-items:center; gap:8px; font-size:13.5px; }
.byp-title { font-weight:600; }
.invite-form { display:flex; gap:8px; flex-wrap:wrap; }
.invite-form input[name="name"] { flex:1 1 160px; }
.invite-form select { flex:0 1 140px; width:auto; }
.team-strip { margin-top:12px; padding-top:10px; border-top:1px solid var(--border);
  display:flex; flex-wrap:wrap; gap:6px; align-items:center; }

/* ---------- 右上角身份切换菜单 ---------- */
.who-menu { position:relative; }
.who-menu summary { list-style:none; cursor:pointer; color:#d9efe6; font-size:12px;
  padding:4px 7px; border-radius:6px; user-select:none; }
.who-menu summary::-webkit-details-marker { display:none; }
.who-menu summary:hover, .who-menu[open] summary { background:rgba(255,255,255,.18); color:#fff; }
.who-drop { position:absolute; right:0; top:32px; z-index:50; background:#fff; color:var(--text);
  border:1px solid var(--border); border-radius:12px; box-shadow:0 10px 32px rgba(16,40,32,.16);
  min-width:230px; padding:8px; }
.who-drop-label { font-size:11px; font-weight:700; letter-spacing:.1em; color:var(--muted);
  text-transform:uppercase; padding:4px 8px 6px; }
.who-drop-hint { font-size:12px; color:var(--muted); padding:2px 8px 8px; line-height:1.5; }
.ident-item { display:flex; align-items:center; gap:9px; width:100%; text-align:left;
  padding:8px; border:none; background:none; border-radius:8px; cursor:pointer;
  font-size:13.5px; color:var(--text); text-decoration:none; }
.ident-item:hover { background:var(--green-light); text-decoration:none; }
.ident-n { font-weight:600; }
.ident-d { margin-left:auto; font-size:12px; color:var(--muted); }
.ident-add { color:var(--green-dark); font-weight:600; border-top:1px solid var(--border);
  border-radius:0 0 8px 8px; margin-top:4px; }
.ident-out { color:var(--danger); }

/* ---------- 等你拍板(具体事项列表) ---------- */
.dec-quiet { color:var(--muted); font-size:14px; padding:4px 0; }
.dec-list { display:flex; flex-direction:column; gap:10px; }
.dec-item { display:flex; align-items:center; justify-content:space-between; gap:14px;
  border:1px solid var(--border); border-radius:10px; padding:11px 14px; }
.dec-main { display:flex; flex-direction:column; gap:3px; min-width:0; }
.dec-main .tag { align-self:flex-start; }
.dec-title { font-size:14px; }
.dec-sub { font-size:12.5px; color:var(--muted); }
.dec-actions { display:flex; gap:8px; flex:0 0 auto; }

/* ---------- 团队卡 ---------- */

/* ---------- 公司动态(事件流) ---------- */
.ev-list { display:flex; flex-direction:column; }
.ev-row { display:flex; align-items:baseline; gap:10px; padding:7px 2px; border-bottom:1px dashed var(--border); font-size:13.5px; }
.ev-row:last-child { border-bottom:none; }
.ev-time { flex:0 0 44px; font-family:"SF Mono",Menlo,monospace; font-size:11.5px; color:var(--muted); }
.ev-tag { flex:0 0 auto; font-size:11px; font-weight:700; border-radius:5px; padding:1px 7px; }
.ev-plain { background:#eef0ef; color:var(--muted); }
.ev-green { background:var(--green-light); color:var(--green-dark); }
.ev-warn { background:var(--warn-bg); color:var(--warn); }
.ev-red { background:var(--danger-bg); color:var(--danger); }
.ev-text { min-width:0; }

/* ---------- 团队卡(紧凑版) ---------- */
.team-topline { display:flex; align-items:flex-start; justify-content:space-between; gap:10px; }
.team-tabs { flex-wrap:wrap; row-gap:4px; }
.scope-tab .cnt { display:inline-block; min-width:16px; text-align:center; font-size:11px;
  font-weight:700; background:#eef0ef; color:var(--muted); border-radius:9px; padding:0 5px; margin-left:3px; }
.scope-tab.on .cnt { background:var(--green); color:#fff; }
.dept-manage { position:relative; flex:0 0 auto; }
.dept-manage summary { list-style:none; display:inline-flex; cursor:pointer; }
.dept-manage summary::-webkit-details-marker { display:none; }

.dept-rows { display:flex; flex-direction:column; gap:6px; }
.dept-row { display:flex; align-items:center; gap:10px; padding:4px 0; border-bottom:1px dashed var(--border); }
.dept-row:last-child { border-bottom:none; }
.dept-name { font-weight:600; font-size:13.5px; min-width:64px; }
.member-list { display:flex; flex-direction:column; margin-top:8px; }
.member-row { display:flex; align-items:center; gap:10px; padding:8px 2px; border-bottom:1px solid var(--border); }
.member-row:last-child { border-bottom:none; }
.member-name { font-weight:600; font-size:14px; }
.member-tasks { margin-left:auto; }
.team-empty { color:var(--muted); font-size:13.5px; padding:14px 2px; }
.invite-row { display:flex; align-items:center; gap:10px; margin-top:12px; padding-top:12px;
  border-top:1px solid var(--border); flex-wrap:wrap; }
.ti-label { font-size:12.5px; font-weight:700; color:var(--muted); flex:0 0 auto; }
.invite-row input[name="name"] { flex:0 1 200px; }
.invite-row select { flex:0 1 130px; width:auto; }
.btn:focus-visible, .scope-tab:focus-visible, input:focus-visible, select:focus-visible {
  outline:2px solid var(--green); outline-offset:1px; }

/* ---------- 公司日志增补 ---------- */
.ev-toolbar { display:flex; align-items:center; justify-content:space-between; gap:10px; margin-bottom:6px; }
.ev-day { font-size:11px; font-weight:700; letter-spacing:.1em; color:var(--muted);
  padding:8px 2px 3px; text-transform:uppercase; }

/* ---------- AI native 一句话派活 ---------- */
.nl-assign { display:flex; align-items:center; gap:9px; margin:10px 0 4px;
  background:var(--green-light); border:1px solid var(--green-mid); border-radius:12px; padding:8px 10px 8px 14px; }
.nl-ic { font-size:15px; flex:0 0 auto; }
.nl-assign input { flex:1; border:none; background:transparent; padding:7px 4px; font-size:14px; }
.nl-assign input:focus-visible { outline:none; }
.nl-assign:focus-within { box-shadow:0 0 0 3px rgba(30,107,84,.15); }
.nl-assign .btn { flex:0 0 auto; padding:8px 20px; }

/* ---------- 部门管理:悬浮小面板(不挤布局) ---------- */
.dept-panel { position:absolute; right:0; top:34px; z-index:45; width:400px; max-width:84vw;
  background:var(--card); border:1px solid var(--border); border-radius:12px;
  box-shadow:0 14px 40px rgba(16,40,32,.16); padding:12px 14px;
  display:flex; flex-direction:column; gap:10px; }
.dept-add { display:flex; gap:8px; }
.dept-add input { flex:1; }
.dept-spacer { flex:1; }
.icon-btn { border:1px solid var(--border); background:var(--card); border-radius:7px;
  padding:3px 8px; cursor:pointer; font-size:13px; line-height:1.4; }
.icon-btn:hover { background:var(--green-light); }
.icon-btn.icon-danger:hover { background:var(--danger-bg); }
.rn-form { display:none; flex:1 0 100%; gap:8px; margin-top:7px; }
.rn-form input { flex:1; }
.dept-row { flex-wrap:wrap; }

/* ---------- polish-audit 修复批 ---------- */
/* 层级铁律:普通卡标题降级,要动手的才醒目 */
.card h2 { font-size: 14.5px; font-weight: 600; color: #4b5563; }
.h2-hot { font-size: 16.5px; font-weight: 700; color: var(--text); display:flex; align-items:center; gap:8px; margin:0 0 10px; }
.dec-pill { background: var(--green); color:#fff; font-size:12px; font-weight:700;
  border-radius:20px; padding:1px 9px; }
.dec-hotband { border-left:4px solid var(--green); background:#F4F9F6;
  margin:-20px; padding:18px 20px; border-radius:var(--radius); }
.dec-empty-row { display:flex; align-items:center; gap:12px; margin:-6px 0; }
.dec-empty-row .h2-hot { margin:0; }
/* 简报排版:行长+行距 */
.brief-text { max-width: 42em; line-height: 1.78; }
.brief-text strong { color: var(--green-dark); }
/* 数字表格化对齐 */
body { font-variant-numeric: tabular-nums; }
/* 顶栏对比度(axe serious) */
nav.mainnav a { color: #F0F7F3; }
.whoami { color: #F0F7F3; }
.who-link { color: #F0F7F3; }
.topask input::placeholder { color: #E3F1EA; }
.topask { min-width: 170px; flex: 0 1 300px; }
.topask input { width: 100%; }
.whoami .badge { background: rgba(255,255,255,.22); color: #fff; }
.scope-tab .cnt { color: #4b5563; }
.tag.gray { color: #4b5563; }
/* NL派活框升格为页面主角 */
.nl-assign { background:#fff; border:1.5px solid var(--green); min-height:52px; }
/* 一次性安装引导的一行态 */
.install-slim { font-size:13.5px; color:var(--muted); padding:10px 16px; margin-bottom:18px;
  background:var(--card); border:1px solid var(--border); border-radius:var(--radius); }
.install-slim a { font-weight:600; }
.install-card h2 { display:flex; align-items:center; gap:8px; }
/* 邀请折叠 */
.invite-fold { margin-top:12px; padding-top:12px; border-top:1px solid var(--border); }
.invite-fold summary { list-style:none; display:inline-flex; cursor:pointer; }
.invite-fold summary::-webkit-details-marker { display:none; }
.invite-fold[open] .invite-row { margin-top:10px; padding-top:0; border-top:none; }
/* 图例统计右移 */
.legend-stat { margin-left:auto; color:#9ca3af; }
.perm-legend { display:flex; align-items:center; gap:14px; flex-wrap:wrap; }
.perm-tips { margin:8px 0 0 1.2em; line-height:1.8; }

/* 对比度清零批(axe实测色值): 顶栏active/badge用深底,muted整体加深一档 */
:root { --muted: #5f6b76; }
nav.mainnav a.active { background: rgba(0,0,0,.22); }
.whoami .badge { background: rgba(0,0,0,.22); }

/* ---------- 方式三 MCP ---------- */
.install-way-wide { grid-column: 1 / -1; }
.mcp-row code { white-space: pre; font-size: 12px; }

/* ---------- 我能看的文件(竖列) ---------- */
.fl-head { display:flex; align-items:center; justify-content:space-between; margin-bottom:8px; }
.fl-sum { margin-top:4px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; max-width:640px; }
.fl-acts { display:flex; gap:6px; flex:0 0 auto; align-items:center; }
.member-invite { margin-left:auto; }
.member-row .member-tasks { margin-left:auto; }
.member-row .member-tasks + .member-invite { margin-left:10px; }

/* ---------- 邀请成员表单美化(#2) + 成员行操作 ---------- */
.invite-fold[open] { background:var(--green-light); border-radius:12px; padding:12px 14px; border-top:none; }
.inv-sec { font-size:13px; font-weight:600; margin:12px 0 6px; }
.inv-bulk textarea { width:100%; box-sizing:border-box; min-height:88px; padding:8px 10px; border:1px solid var(--border); border-radius:8px; font:inherit; font-size:13px; resize:vertical; background:#fff; }
.inv-bulk-row { display:flex; align-items:center; flex-wrap:wrap; gap:8px 12px; margin-top:8px; }
.inv-bulk-row select { width:auto; }
.bulk-tbl { border-collapse:collapse; font-size:13px; min-width:520px; width:100%; background:#fff; border-radius:8px; }
.bulk-tbl th { text-align:left; font-weight:600; color:var(--muted, #67748a); padding:6px; }
.bulk-tbl td { padding:5px 6px; vertical-align:top; border-top:1px solid var(--border); }
.bulk-tbl input:not([type=checkbox]), .bulk-tbl select { width:100%; box-sizing:border-box; padding:5px 7px; font-size:13px; }
.bulk-tbl tr.bulk-skip td, .bulk-tbl tr.bulk-skip input { color:#9aa3ad; }
/* 手机上批量邀请表一行一张小卡：勾选框在左，姓名 / 部门 / 邮箱竖着排——横着排邮箱那列被挤到屏幕外（product-qa 390 宽实测） */
@media (max-width: 600px) {
  .bulk-tbl { min-width:0; }
  .bulk-tbl tr:first-child { display:none; }
  .bulk-tbl tr { display:grid; grid-template-columns:28px 1fr; gap:6px 8px; padding:8px 0; border-top:1px solid var(--border); }
  .bulk-tbl td { border-top:0; padding:0; }
  .bulk-tbl td:first-child { grid-row:span 3; padding-top:6px; }
}
.invite-fold[open] summary { margin-bottom:10px; }
.invite-row { display:flex; align-items:stretch; gap:10px; flex-wrap:wrap; margin:0; padding:0; border:none; }
.invite-row input[name="name"], .invite-row select, .invite-row .btn {
  height:44px; border-radius:10px; font-size:14.5px; }
.invite-row input[name="name"] { flex:1 1 220px; background:#fff; }
.invite-row select { flex:0 1 150px; width:auto; background:#fff; }
.member-spacer { flex:1; }
.member-row { flex-wrap:wrap; }
.mt-box { margin:0 0 0 36px; }
.mt-list { border-left:2px solid var(--green-mid); margin:4px 0 10px; padding:6px 0 6px 12px;
  display:flex; flex-direction:column; gap:6px; }
.mt-item { display:flex; align-items:center; gap:8px; font-size:13.5px; }
.mt-title { font-weight:600; }
.mt-close { color:var(--muted); }
.row-more { position:relative; }
.row-more summary { list-style:none; cursor:pointer; padding:2px 9px; border:1px solid var(--border);
  border-radius:7px; color:var(--muted); font-weight:700; }
.row-more summary::-webkit-details-marker { display:none; }
.row-more[open] summary { background:var(--green-light); }
.row-more-panel { position:absolute; right:0; top:30px; z-index:44; background:#fff;
  border:1px solid var(--border); border-radius:10px; box-shadow:0 10px 30px rgba(16,40,32,.15);
  padding:10px 12px; white-space:nowrap; }

/* ---------- 品牌确认弹层(替换浏览器原生confirm) ---------- */
.bc-overlay { position:fixed; inset:0; z-index:999; background:rgba(16,40,32,.45);
  display:flex; align-items:center; justify-content:center; padding:20px;
  animation:bcIn .14s ease; }
.bc-modal { background:var(--card); border-radius:16px; box-shadow:0 24px 70px rgba(16,40,32,.35);
  padding:22px 24px 18px; max-width:440px; width:100%; animation:bcPop .16s ease; }
.bc-title { font-size:15px; font-weight:700; margin-bottom:8px; }
.bc-msg { font-size:14px; line-height:1.7; color:var(--text); }
.bc-actions { display:flex; justify-content:flex-end; gap:10px; margin-top:18px; }
.bc-ok { background:var(--danger); }
.bc-ok:hover { background:#992e23; }
.bc-out { opacity:0; transition:opacity .12s; }
@keyframes bcIn { from { opacity:0; } }
@keyframes bcPop { from { transform:scale(.96); opacity:0; } }
@media (prefers-reduced-motion: reduce) { .bc-overlay, .bc-modal { animation:none; } }
/* 兼任 */
.tag-extra { font-weight:500; }
.rm-extras { display:flex; flex-direction:column; gap:8px; margin-bottom:10px; }
.rm-label { font-size:12px; font-weight:700; color:var(--muted); }
.rm-checks { display:flex; flex-wrap:wrap; gap:8px 14px; max-width:260px; }
.rm-checks label { display:inline-flex; align-items:center; gap:5px; font-size:13px; margin:0; color:var(--text); }
.rm-checks input { width:auto; }
.rm-sep { border-top:1px solid var(--border); margin:4px 0 10px; }
.row-more-panel { white-space:normal; min-width:280px; }

/* ---------- 收尾打磨批: 仪表盘任务摘要卡(完整版归 /tasks 单一真源) ---------- */
.task-sum-count { font-size:13px; font-weight:700; color:var(--muted); margin:12px 0 8px; }
.task-sum-list { display:flex; flex-direction:column; gap:8px; }
.task-sum-item { display:flex; align-items:center; gap:8px; min-width:0; }
.task-sum-item .tag { flex:0 0 auto; }
.task-sum-title { font-weight:600; font-size:13.5px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.task-sum-due { flex:0 0 auto; }
.task-sum-more { display:inline-block; margin-top:12px; font-size:13px; font-weight:600; }

/* 权限规则卡（矩阵退役，2026-08-20） */
.perm-rules { display: flex; flex-direction: column; gap: 10px; margin: 12px 0 18px; }
.perm-rule { display: grid; grid-template-columns: 1fr auto; grid-template-areas: "main count" "sub count";
  gap: 2px 16px; align-items: center; padding: 12px 16px; border: 1px solid var(--line);
  border-radius: 12px; background: #fff; }
.perm-rule .pr-main { grid-area: main; display: flex; gap: 10px; align-items: center; }
.perm-rule .pr-label { font-weight: 600; }
.perm-rule .pr-sub { grid-area: sub; }
.perm-rule .pr-count { grid-area: count; font-size: 20px; font-weight: 700; text-align: right; white-space: nowrap; }
.perm-rule.perm-green { border-left: 4px solid var(--green-dark); }
.perm-rule.perm-gray  { border-left: 4px solid #9ca3af; }
.perm-rule.perm-warn  { border-left: 4px solid var(--warn); }
.perm-rule.perm-red   { border-left: 4px solid var(--danger); }
.perm-rule.perm-exc   { border-left: 4px solid var(--warn); background: #fffdf5; }
.row-group-flat { margin-top: 6px; font-size: 13px; font-weight: 600; color: var(--muted); }

/* 方式三主推高亮 + 核心文件分区 */
.install-way.way-primary { border: 2px solid var(--green-dark); background: #f4faf6; border-radius: 12px; }
.core-files { border: 1.5px solid var(--green-dark); border-radius: 14px; padding: 12px 14px; margin-bottom: 16px; background: #f7faf7; }
.core-files-head { font-weight: 700; color: var(--green-dark); margin-bottom: 8px; }
.core-card { background: #fff; }

.invite-row .inv-boss { display:inline-flex; align-items:center; gap:4px; font-size:13px; color:var(--muted); white-space:nowrap; }

.upfold { margin-top:2px; }
.upfold summary { list-style:none; display:inline-flex; cursor:pointer; }
.upfold summary::-webkit-details-marker { display:none; }

/* MCP 四步接入指引 */
.mcp-steps { margin: 10px 0 0; padding-left: 20px; font-size: 13px; color: var(--muted); line-height: 1.9; }
.mcp-steps li { margin: 0; }
.mcp-steps b { color: var(--text); font-weight: 600; }

/* MCP 信任步骤截图 */
.mcp-shot { display:block; margin:14px auto; max-width:480px; text-align:center; }
.mcp-shot img { width:100%; border:1px solid var(--border); border-radius:8px; display:block; }
.mcp-shot span { display:block; margin-top:4px; }
.mcp-shot:hover { text-decoration:none; }
.mcp-shot:hover img { border-color:var(--green-mid); }

/* 接上后第一句"开场咒语" */
.first-say { margin-top:16px; padding:14px 16px; border:1px solid var(--green-mid); background:var(--green-light); border-radius:10px; }
.first-say .fs-head { font-weight:600; margin-bottom:10px; }
.first-say .cmd-row code { font-size:13.5px; line-height:1.6; }
.first-say .cmd-row { flex-wrap:wrap; overflow-x:visible; align-items:flex-start; }
.first-say .cmd-row code { white-space:pre-wrap; word-break:break-word; flex:1 1 240px; min-width:0; }
.first-say .cmd-row button { flex:0 0 auto; }

.alt-install { margin-top:14px; }
.alt-install summary { list-style:none; display:inline-flex; cursor:pointer; }
.alt-install summary::-webkit-details-marker { display:none; }

/* 仪表盘系统状态条（一行健康脉搏，只放能触发行动的信号） */
.status-strip { display:flex; align-items:center; flex-wrap:wrap; gap:12px; padding:9px 14px;
  border-radius:10px; font-size:13px; margin-bottom:16px; border:1px solid var(--border); }
.status-strip.ss-ok { background:var(--green-light); border-color:var(--green-mid); color:var(--green-dark); }
.status-strip.ss-bad { background:var(--warn-bg); border-color:#efd9a0; color:var(--warn); }
.status-strip .ss-dot { width:9px; height:9px; border-radius:50%; }
.status-strip.ss-ok .ss-dot { background:#2fa36a; }
.status-strip.ss-bad .ss-dot { background:var(--warn); }
.status-strip .ss-i { color:var(--muted); }
.status-strip.ss-ok .ss-i { color:#4a6b5c; }
.status-strip .ss-warn { color:var(--danger); font-weight:600; }
.status-strip .ss-more { margin-left:auto; }

.mcp-shot.mcp-shot-wide { max-width:680px; }

.login-token { margin-top:16px; border-top:1px solid var(--border); padding-top:12px; }
.login-token summary { list-style:none; cursor:pointer; color:var(--muted); }
.login-token summary::-webkit-details-marker { display:none; }

/* 剧本能力橱窗（问答页） */
.skill-strip { padding:12px 14px; }
.skill-strip .chips { display:flex; flex-wrap:wrap; gap:8px; }
.skill-chip { display:inline-flex; flex-direction:column; align-items:flex-start; gap:1px;
  background:var(--green-light); border:1px solid var(--green-mid); color:var(--green-dark);
  border-radius:10px; padding:7px 12px; cursor:pointer; font-size:14px; font-weight:600; text-align:left; }
.skill-chip:hover { background:var(--green-mid); }
.skill-chip .chip-when { font-size:11.5px; font-weight:400; color:var(--muted); }
.skill-manual summary { list-style:none; display:inline-flex; cursor:pointer; }
.skill-manual summary::-webkit-details-marker { display:none; }

/* ---------- 管理页美化批（2026-08-29）：中性表头 · 单行紧凑员工表 · 安静按钮 · 结果条稳定容器 ---------- */
/* 表头：绿底 → 白底细字，让表格退到内容后面 */
th { background: transparent; color: var(--muted); font-size: 12.5px; font-weight: 600;
  letter-spacing: .02em; padding: 8px 12px 9px; border-bottom: 1px solid #d3d9d6; }
tr:hover td { background: #f8faf9; }

/* 标签页：左边「做」的三件事，右边「查看」两个只读页 */
.tabs { gap: 2px; margin-bottom: 18px; align-items: center; }
.tabs button { padding: 9px 12px; font-size: 14.5px; color: var(--muted); }
.tabs button:hover { color: var(--text); }
.tabs button.active { color: var(--green-dark); }
.tabs .tabs-sep { margin-left: auto; padding-left: 0; border-left: none; color: #9aa3ad; font-size: 12px; letter-spacing: .06em; }
.tabs button.tab-ghost { color: var(--muted); font-size: 14px; }
.tabs button.tab-ghost.active { color: var(--green-dark); }

/* 说明文字：一律轻量小字、限行长，不跟表格抢眼 */
.note { font-size: 13px; color: var(--muted); line-height: 1.6; max-width: 76ch; margin: 0 0 12px; }
.cell-note { font-size: 12.5px; color: var(--muted); line-height: 1.55; max-width: 380px; margin-top: 5px; white-space: normal; }

/* 安静按钮：白底浅灰边、深字；红色只给破坏性动作 */
.btn.quiet { background: #fff; color: #374151; border: 1px solid #dde2df; font-weight: 500; }
.btn.quiet:hover { background: #f4f6f5; border-color: #c9d1cd; }
.btn.quiet.red { color: var(--danger); }
.btn.quiet.red:hover { background: var(--danger-bg); border-color: #eab3ac; }

/* 员工表：一人一行，动作列右对齐不换行 */
.emp-table td { padding: 10px 12px; vertical-align: middle; }
.emp-table .col-id { width: 28px; color: #9aa3ad; font-size: 12.5px; padding-right: 4px; }
.emp-table .col-name { white-space: nowrap; }
.emp-table .emp-name { font-weight: 600; margin-right: 4px; }
.emp-table .emp-phone { font-size: 12.5px; color: var(--muted); margin-top: 2px; }
.emp-table .col-dept, .emp-table .col-last, .emp-table .col-status, .emp-table .col-actions { white-space: nowrap; }
.emp-table .col-last { color: var(--muted); font-size: 13px; }
.emp-table .col-last .never { color: #a3adb8; }
.emp-table .col-actions { text-align: right; }
.emp-table .col-token { min-width: 220px; }
/* 窄列 width:1% + 不换行 = 按内容收紧，剩余宽度全落到令牌列（说明文字不被挤成窄条） */
.emp-table .col-id, .emp-table .col-dept, .emp-table .col-last,
.emp-table .col-status, .emp-table .col-actions { width: 1%; }   /* 姓名列不设 1%：有余量时手机号一行放下，挤时才折成两行 */
.emp-table .tag { white-space: nowrap; }
.emp-table code { font-family: "SF Mono", ui-monospace, Menlo, Consolas, monospace; font-size: 12.5px;
  background: #f1f4f2; color: var(--text); padding: 2px 7px; border-radius: 5px; }
.emp-table .btn.small { padding: 5px 11px; border-radius: 7px; }
.tok-line { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
/* 本人行：说明放通栏子行，主行去底线与子行连成一体 */
.emp-table tr.emp-me td { border-bottom: 0; padding-bottom: 4px; }
.emp-table tr.emp-sub td { padding: 0 12px 10px 38px; }   /* 38px = 对齐姓名列 */
.emp-table tr.emp-sub .cell-note { max-width: none; margin-top: 0; }
.emp-table tr.emp-sub [id^="mytok-"] { margin-top: 6px; }
.emp-table tr.emp-me:hover td, .emp-table tr.emp-me:hover + tr.emp-sub td,
.emp-table tr.emp-sub:hover td, .emp-table tr.emp-me:has(+ tr.emp-sub:hover) td { background: #f8faf9; }
.row-actions { display: inline-flex; gap: 6px; }

/* 调岗：下拉即操作，改了才冒出「保存」 */
.dept-form { display: inline-flex; align-items: center; gap: 6px; }
.dept-form select { width: auto; min-width: 108px; padding: 6px 30px 6px 10px; font-size: 13.5px; border-radius: 7px; }
.dept-form .btn { visibility: hidden; }          /* 占位不显示：冒出时整行不跳 */
.dept-form.dirty select { border-color: var(--green); box-shadow: 0 0 0 3px var(--green-light); }
.dept-form.dirty .btn { visibility: visible; }

/* 行动作的结果条：放在列表卡顶部的稳定容器里，列表刷新不会把它冲掉 */
#emp-list-msg:not(:empty) { margin-bottom: 14px; }
/* 员工列表按部门分组（2026-09-13）：每组前一行「部门 · N 人」 */
.emp-table tr.emp-dept-row td { background: #f6f8fa; color: #4a5768; font-size: 13px; padding: 7px 12px; border-top: 1px solid var(--border); }
#emp-list-msg .notice { margin: 0; }

/* 定级复核：卡里不再套卡，用轻边框面板 */
.review-item { border: 1px solid var(--border); border-radius: 12px; padding: 14px 16px; margin-bottom: 12px; background: #fff; }
.review-item:last-child { margin-bottom: 0; }

/* 手机宽度：顶栏导航单独占一行（原来被挤成竖排）；标签页收紧、不再左右分组 */
@media (max-width: 720px) {
  .topbar-inner { flex-wrap: wrap; }   /* 顶栏不许换行的话，下面这行「导航单独一行」不生效，手机上整页被撑到 609px 横向滚（2026-09-11 溢出检查） */
  nav.mainnav { flex: 1 0 100%; order: 3; gap: 2px; margin: -6px 0 6px; }
  .topask { flex: 1 0 100%; order: 2; margin: 0 0 8px; min-width: 0; }   /* 手机上搜索框单独一行，在导航上面 */
  nav.mainnav a { padding: 6px 10px; font-size: 13.5px; }
  .tabs { gap: 0; }
  .tabs button { padding: 8px 9px; font-size: 14px; }
  .tabs .tabs-sep { margin-left: 6px; }
}

/* 审稿修正批（独立审美评审后）：动作列去边框 · 在职态降噪 · 令牌纯文本 · 说明改脚注 · 弹层按钮按语义配色 */
th { padding: 9px 12px; }
.row-actions .btn.quiet { border-color: transparent; background: transparent; color: #4b5563; padding: 5px 8px; }
.row-actions .btn.quiet:hover { background: #eef2f0; border-color: transparent; color: var(--text); }
.row-actions .btn.quiet.red { color: var(--danger); }
.row-actions .btn.quiet.red:hover { background: var(--danger-bg); color: var(--danger); }
.st-ok { color: var(--muted); font-size: 13px; white-space: nowrap; }
.st-ok::before { content: ""; display: inline-block; width: 7px; height: 7px; border-radius: 50%;
  background: #2fa36a; margin-right: 6px; vertical-align: 1px; }
.emp-table code { background: transparent; padding: 0; color: var(--muted); font-size: 13px; }
.emp-table code.tok-full { color: var(--text); }
.note-foot { margin: 12px 0 0; }
/* 权限总览：原 var(--line) 未定义导致整条边框失效，改用 --border */
.roster-dept { border-bottom: 1px solid var(--border); }
.perm-rule { border: 1px solid var(--border); }
/* 确认弹层：默认绿键；触发元素是红字/危险类才红键 */
.bc-ok { background: var(--green); }
.bc-ok:hover { background: var(--green-dark); }
.bc-ok.bc-danger { background: var(--danger); }
.bc-ok.bc-danger:hover { background: #992e23; }
@media (max-width: 720px) {
  .emp-table .col-id, .emp-table .col-last { display: none; }   /* 手机上隐藏次要列，少横滚 */
  .emp-table tr.emp-sub td { padding-left: 12px; }
}
/* 手机：卡标题允许提示语换行（不挤标题）；本人行说明限宽到可视区，不被横滚截断 */
.card h2 { flex-wrap: wrap; row-gap: 2px; }
@media (max-width: 720px) {
  .emp-table tr.emp-sub .cell-note { max-width: calc(100vw - 90px); }
}

/* ---------- 宽屏批（2026-08-29 Jackie：表格被截、旁边却空着）---------- */
/* 管理页（表格型）放宽到 1440，顶栏同步放宽保持对齐；其他页维持 1080 */
body.page-wide main, body.page-wide .topbar-inner { max-width: 1440px; }
/* 双手机号：按「/」分成两个不可拆的号码，能换行但不拆号；姓名列不再被撑到 300px */
.emp-table .emp-phone { white-space: normal; }
.emp-phone .ph { white-space: nowrap; display: inline-block; }
.emp-phone .ph:first-child::before { content: "📱 "; }   /* 图标跟第一个号码绑在一起，不单独占行 */
.emp-phone .ph:not(:last-child)::after { content: "/"; color: #aab3ae; margin: 0 1px; }
/* 表格真装不下时，两侧出渐隐阴影提示还有内容（滚到边上阴影自动消失），不再无声截断 */
.table-wrap {
  background:
    linear-gradient(to right, #fff 40%, rgba(255,255,255,0)) left / 48px 100% no-repeat,
    linear-gradient(to left, #fff 40%, rgba(255,255,255,0)) right / 48px 100% no-repeat,
    radial-gradient(farthest-side at 0 50%, rgba(16,40,32,.18), transparent) left / 16px 100% no-repeat,
    radial-gradient(farthest-side at 100% 50%, rgba(16,40,32,.18), transparent) right / 16px 100% no-repeat;
  background-attachment: local, local, scroll, scroll;
}

/* ---------- 文件页 IA（2026-08-29）：搜索升格 · 最近 · 分区 · 三种折叠 · 部门 chips ---------- */
.fl-card-head { margin-bottom: 10px; }
.fl-search { display:flex; align-items:center; gap:8px; background:#fff; border:1.5px solid var(--green);
  border-radius:12px; padding:5px 8px 5px 14px; margin-bottom:6px; }
.fl-search input { flex:1; border:none; background:transparent; padding:8px 4px; font-size:15px; min-width:0; }
.fl-search input:focus { outline:none; box-shadow:none; }
.fl-search:focus-within { box-shadow:0 0 0 3px rgba(30,107,84,.15); }
.fl-search-ic { opacity:.7; font-size:14px; }
.fl-sec-head { display:flex; align-items:center; gap:8px; font-size:13px; font-weight:700; color:var(--muted);
  letter-spacing:.04em; margin:18px 0 2px; padding-bottom:6px; border-bottom:1px solid var(--border); }
.fl-sec-count { display:inline-block; min-width:18px; text-align:center; font-size:11.5px; font-weight:700;
  background:#eef0ef; color:#4b5563; border-radius:9px; padding:0 6px; }
.fl-row { display:flex; align-items:flex-start; justify-content:space-between; gap:14px; padding:11px 2px;
  border-bottom:1px solid var(--border); }
.fl-main { min-width:0; flex:1; }
.fl-title { font-weight:600; font-size:14.5px; line-height:1.45; }
.fl-meta { font-size:12.5px; color:var(--muted); margin-top:2px; }
.fl-type { color:var(--green-dark); font-weight:600; }
.fl-sum { font-size:13px; color:var(--muted); margin-top:3px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; max-width:640px; }
.fl-acts { display:flex; gap:2px; flex:0 0 auto; margin-top:2px; }
.fl-acts .btn.quiet, .fl-hrow .btn.quiet { border-color:transparent; background:transparent; color:#4b5563; padding:4px 8px; }
.fl-acts .btn.quiet:hover, .fl-hrow .btn.quiet:hover { background:#eef2f0; color:var(--text); }
.fl-detail:empty { display:none; }
.fl-detail .card { margin:6px 0 10px; }
.fl-new { display:inline-block; font-size:11.5px; font-weight:700; color:var(--green-dark); background:var(--green-light);
  border-radius:9px; padding:0 7px; margin-left:2px; vertical-align:1px; }
.fl-fold { margin-top:6px; }
.fl-fold summary { list-style:none; cursor:pointer; display:inline-flex; align-items:center; gap:4px; font-size:12.5px;
  color:var(--green-dark); font-weight:600; padding:2px 9px; border:1px solid var(--green-mid); border-radius:14px; background:#fff; }
.fl-fold summary::-webkit-details-marker { display:none; }
.fl-fold summary::after { content:"▾"; font-size:11px; }
.fl-fold[open] summary { background:var(--green-light); }
.fl-hist { margin:8px 0 2px; border-left:2px solid var(--green-mid); padding-left:12px; }
.fl-month { font-size:11.5px; font-weight:700; color:var(--muted); margin:6px 0 2px; letter-spacing:.06em; }
.fl-hrow { display:flex; align-items:center; gap:8px; font-size:13px; padding:3px 0; }
.fl-hdate { flex:0 0 auto; font-family:"SF Mono",Menlo,monospace; font-size:12px; color:var(--muted); min-width:84px; }
.fl-htitle { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; flex:1; }
.fl-hrow .btn.small { padding:2px 8px; font-size:12px; }
.fl-more summary { list-style:none; cursor:pointer; font-size:13px; color:var(--green-dark); font-weight:600; padding:9px 2px; }
.fl-more summary::-webkit-details-marker { display:none; }
.fl-more summary::before { content:"▸ "; }
.fl-more[open] summary::before { content:"▾ "; }
.fl-lib-head { display:flex; align-items:center; justify-content:space-between; gap:10px; flex-wrap:wrap;
  margin-top:24px; padding-top:14px; border-top:1px dashed var(--border); }
.fl-lib-title { font-size:15px; font-weight:700; }
.fl-chips { display:flex; flex-wrap:wrap; gap:6px; }
.chip { font-size:12.5px; color:var(--muted); background:#fff; border:1px solid var(--border); border-radius:14px; padding:3px 10px; cursor:pointer; font-family:inherit; }
.chip b { font-weight:700; color:#4b5563; margin-left:2px; }
.chip:hover { background:var(--green-light); color:var(--green-dark); }
.chip.on { background:var(--green); border-color:var(--green); color:#fff; }
.chip.on b { color:#fff; }
.fl-hide { display:none !important; }
.fl-ai { margin-top:18px; }
.fl-ai summary { list-style:none; cursor:pointer; display:flex; align-items:center; gap:8px; font-size:13px; font-weight:700;
  color:var(--muted); padding:8px 0; border-top:1px dashed var(--border); }
.fl-ai summary::-webkit-details-marker { display:none; }
.fl-ai summary::before { content:"▸"; }
.fl-ai[open] summary::before { content:"▾"; }
.core-files .fl-row { border-bottom-color:#e3ece7; padding:9px 2px; }
.core-files .fl-row:last-of-type { border-bottom:none; }
.fl-results .fl-row:last-of-type { border-bottom:none; }
.fl-type-form select { padding:5px 26px 5px 9px; font-size:13px; border-radius:7px; }
@media (max-width:720px){
  .fl-row { flex-direction:column; gap:6px; }
  .fl-acts { flex-wrap:wrap; margin-left:-8px; }
  .fl-sum { white-space:normal; }
  .fl-hrow { flex-wrap:wrap; }
}
.core-files > .fl-row:nth-last-child(2) { border-bottom:none; }   /* 每行后面跟一个 .fl-detail 占位，所以倒数第二个才是末行 */

/* 文件页审稿修正批：三级标题统一 · 核心框降为浅底 · 最近区紧凑 · chips 吸顶且与团队卡同款 · 折叠胶囊去边 */
.fl-h1 { display:flex; align-items:center; gap:8px; font-size:15px; font-weight:700; color:var(--text); margin:28px 0 4px; }
.fl-h1-n { font-size:12.5px; font-weight:500; color:var(--muted); }
.fl-sec-head { font-size:13px; font-weight:600; color:var(--muted); letter-spacing:.02em; margin:22px 0 0; padding-bottom:4px; border-bottom:none; }
.fl-sec-count { background:transparent; color:#9aa3ad; font-weight:500; padding:0; min-width:0; }
.fl-search { margin-bottom:18px; }
.core-files { border:1px solid var(--green-mid); background:#f7faf7; border-radius:12px; padding:12px 14px 6px; }
.core-files-head { font-size:13.5px; }
.fl-recent .fl-row { padding:7px 2px; }
.fl-recent .fl-title { font-size:14px; }
.fl-lib-head { position:sticky; top:56px; z-index:5; background:var(--card); margin-top:24px; padding:12px 0 10px; border-top:none; }
.fl-lib-head::after { content:""; position:absolute; left:0; right:0; bottom:0; height:1px; background:var(--border); }
.chip.on { background:var(--green-light); border-color:var(--green-mid); color:var(--green-dark); }
.chip.on b { color:var(--green-dark); }
.fl-fold summary { border:none; padding:2px 0; background:transparent; }
.fl-fold[open] summary { background:transparent; }
.fl-latest { display:inline-block; font-size:12px; font-weight:600; color:var(--green-dark); background:var(--green-light); border-radius:9px; padding:0 7px; margin-left:2px; vertical-align:2px; }
.fl-type { color:var(--muted); font-weight:400; }
.fl-ai summary { border-top:none; padding:0; }
.fl-ai { margin-top:22px; padding-top:6px; border-top:1px dashed var(--border); }
.btn.quiet.green { color:var(--green); border-color:var(--green-mid); }
@media (max-width:720px){ .fl-lib-head { position:static; } }

/* ---------- 手机端全面优化（2026-08-29）：单列 · 触控目标 · 表格变卡片 · 长内容收起 · 不撑破屏幕 ---------- */
@media (max-width: 720px) {
  main { margin-top: 14px; padding: 0 12px; }
  .card { padding: 16px 14px; border-radius: 12px; margin-bottom: 14px; }
  .page-title { font-size: 21px; margin: 2px 0 4px; }
  .page-sub { margin: 0 0 14px; font-size: 13.5px; }
  /* iOS 聚焦输入框不自动放大：控件字号 ≥16px */
  input[type=text], input[type=password], input[type=email], input[type=search], input[type=number], textarea, select,
  .fl-search input, .nl-assign input { font-size: 16px; }
  /* 触控目标：小按钮至少 36px 高 */
  .btn.small { min-height: 36px; padding: 6px 12px; }
  .row-actions .btn.quiet, .fl-acts .btn.quiet, .fl-hrow .btn.quiet { padding: 7px 10px; }
  .tabs button { min-height: 40px; }
  .chip { min-height: 32px; }
  /* 系统状态条：手机只留告警和入口 */
  .status-strip { gap: 6px 12px; padding: 8px 12px; }
  .status-strip .ss-i { display: none; }
  /* 仪表盘安装卡：内容不撑破屏幕（代码块折行、网格列允许收缩） */
  .install-cols { grid-template-columns: minmax(0, 1fr); }
  .install-way, .install-cols > * { min-width: 0; }
  .cmd-row { overflow-x: hidden; }
  .cmd-row code, .mcp-row code { white-space: pre-wrap; word-break: break-all; }
  .mcp-shot, .mcp-shot.mcp-shot-wide { max-width: 100%; }
  /* 团队卡顶行：筛人 tabs 占一行，按钮不被挤扁 */
  .team-topline { flex-wrap: wrap; gap: 8px; }
  .team-topline .team-tabs { flex: 1 0 100%; }
  .team-topline .btn, .team-topline .dept-manage { flex: 0 0 auto; white-space: nowrap; margin-left: 0 !important; }
  .dept-panel { width: calc(100vw - 52px); right: auto; left: 0; }
  .member-row { gap: 8px; }
  /* 文件页：chips 横向滑动一行；摘要最多两行；资料库头竖排 */
  .fl-chips { flex-wrap: nowrap; overflow-x: auto; -webkit-overflow-scrolling: touch; padding-bottom: 2px;
    scrollbar-width: none; max-width: 100%; }   /* 不用负 margin：会把页面撑出横向滚动 */
  .fl-chips::-webkit-scrollbar { display: none; }
  .fl-chips .chip { flex: 0 0 auto; }
  .fl-lib-head { flex-direction: column; align-items: stretch; gap: 8px; }
  .fl-sum { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; white-space: normal; }
  .fl-row { gap: 4px; padding: 10px 0; }
  .fl-acts { margin: 0 0 0 -10px; }
  /* 管理页员工表 → 卡片式：姓名｜状态 / 部门｜操作 / 令牌 */
  .table-wrap.emp-table { background: none; }
  .emp-table table, .emp-table tbody { display: block; width: 100%; }
  .emp-table thead { display: none; }
  .emp-table tbody tr { display: grid; grid-template-columns: minmax(0, 1fr) auto;
    grid-template-areas: "name status" "dept dept" "token token" "actions actions"; gap: 8px 10px; align-items: center;
    padding: 12px 0; border-bottom: 1px solid var(--border); }
  .emp-table tbody tr.emp-me { border-bottom: 0; padding-bottom: 6px; }
  .emp-table tbody tr.emp-sub { display: block; padding: 0 0 12px; }
  .emp-table td { display: block; padding: 0 !important; border: 0 !important; white-space: normal !important; width: auto !important; }
  .emp-table td.col-id, .emp-table td.col-last { display: none; }
  .emp-table td.col-name { grid-area: name; }
  .emp-table td.col-status { grid-area: status; }
  .emp-table td.col-dept { grid-area: dept; }
  .emp-table td.col-actions { grid-area: actions; text-align: left; }
  .emp-table .row-actions { margin-left: -10px; }
  .emp-table td.col-token { grid-area: token; min-width: 0; }
  .emp-table .dept-form { width: 100%; }
  .emp-table .dept-form select { min-width: 0; flex: 0 1 220px; }
  .emp-table .dept-form .btn { display: none; visibility: visible; }     /* 手机上不占位，改了才出现 */
  .emp-table .dept-form.dirty .btn { display: inline-block; }
  .emp-table .emp-phone { max-width: none; }
  .emp-table tr.emp-sub .cell-note { max-width: none; }
  /* 通用小表（例外清单 / 审计 / 健康游标）→ 堆叠行，data-label 当行首标签 */
  .table-wrap.stack-m { background: none; }
  .table-wrap.stack-m table, .table-wrap.stack-m tbody { display: block; width: 100%; }
  .table-wrap.stack-m thead { display: none; }
  .table-wrap.stack-m tr { display: block; padding: 10px 0; border-bottom: 1px solid var(--border); }
  .table-wrap.stack-m tr:hover td { background: transparent; }
  .table-wrap.stack-m td { display: flex; gap: 10px; align-items: baseline; padding: 3px 0 !important; border: 0 !important;
    white-space: normal !important; max-width: none !important; overflow: visible !important; text-overflow: clip !important; }
  .table-wrap.stack-m td::before { content: attr(data-label); flex: 0 0 52px; color: #9aa3ad; font-size: 12px; }
  .table-wrap.stack-m td.no-label::before { display: none; }
  .table-wrap.stack-m td.m-hide { display: none; }
  .table-wrap.stack-m td .tag { white-space: nowrap; }
  /* 表单行：两列并排的输入在手机上各占一行更好点 */
  .row > * { min-width: 100%; }
  .row .btn { min-width: 0; }
}

/* ---------- 手机端审稿修正批（独立审美评审后） ---------- */
.stack-m td::before { color: var(--muted); }            /* data-label 对比度：#9aa3ad 2.6:1 → --muted 5.4:1 */
.fl-sec-count { color: var(--muted); }
.tabs .tabs-sep { color: var(--muted); }
.scope-tab { border-radius: 14px; font-size: 13px; }    /* 筛人 tab 与文件页 chip 统一成一套胶囊 */
.perm-rule .tag { white-space: nowrap; }
.perm-rule .pr-main { flex-wrap: wrap; }
@media (max-width: 720px) {
  /* iOS 聚焦不放大：把特异性更高的控件也压到 16px */
  .dept-form select, .invite-row input, .invite-row select, .assign-form input, .assign-form select,
  .fl-type-form select, .dept-add input, .rn-form input { font-size: 16px; }
  /* 状态条：藏普通信息项，告警项要留着 */
  .status-strip .ss-i { display: inline; }
  .status-strip .ss-i:not(.ss-warn):not(:has(.ss-warn)) { display: none; }   /* 嵌套写法的告警（MCP 离线）也要留 */
  /* 顶栏：内边距与正文对齐；头像菜单是唯一的令牌/密码/切身份入口，触控目标放大并靠右 */
  header.topbar { padding: 0 12px; }
  .whoami { margin-left: auto; gap: 8px; }
  .avatar { width: 32px; height: 32px; font-size: 14px; }
  .who-menu summary { min-width: 36px; min-height: 36px; display: inline-flex; align-items: center; justify-content: center; }
  nav.mainnav a { padding: 9px 12px; }
  /* 部门面板从右侧展开，不再向右撑出屏幕 */
  .dept-panel { left: auto; right: 0; width: calc(100vw - 52px); max-width: calc(100vw - 52px); }
  /* 触控目标 ≥36px：筛人 tab（单行横滑）、行尾 ⋯、chip、复选框 */
  .scope-tabs { flex-wrap: nowrap; overflow-x: auto; -webkit-overflow-scrolling: touch; scrollbar-width: none; max-width: 100%; }
  .scope-tabs::-webkit-scrollbar { display: none; }
  .scope-tab { flex: 0 0 auto; min-height: 36px; display: inline-flex; align-items: center; }
  .row-more summary { min-height: 36px; display: inline-flex; align-items: center; }
  .chip { min-height: 36px; display: inline-flex; align-items: center; }
  .checks label { min-height: 36px; }
  input[type=checkbox] { width: 20px; height: 20px; accent-color: var(--green); }
  textarea { min-height: 120px; }
  /* 管理页标签：「查看」变成一条细分隔线；整行横滑不折行 */
  .tabs { flex-wrap: nowrap; overflow-x: auto; -webkit-overflow-scrolling: touch; scrollbar-width: none; }
  .tabs::-webkit-scrollbar { display: none; }
  .tabs button { flex: 0 0 auto; }
  .tabs .tabs-sep { font-size: 0; width: 1px; height: 18px; background: var(--border); margin: 0 6px; padding: 0; align-self: center; }
  /* 员工卡：破坏性的「停用」挪到操作行末尾，不占主操作位 */
  .emp-table .row-actions { display: flex; width: 100%; }
  .emp-table .row-actions .red { order: 9; margin-left: auto; }
  .emp-table code { word-break: break-all; white-space: normal; }
}
@media (max-width: 720px) {
  .dept-panel, .dept-panel * { white-space: normal; }       /* 面板里的说明文字要折行，不能撑出屏幕 */
  .dept-panel > * { min-width: 0; }
  .dept-panel .dept-row { gap: 6px; }
}


/* ---------- 评审批(2026-09-03):细节收尾 ---------- */
/* 文件行「下载」低频动作 hover 显(触屏常显) */
@media (hover: hover) {
  .fl-acts a[href*="download"] { opacity: 0; transition: opacity .12s; }
  .fl-row:hover .fl-acts a[href*="download"] { opacity: 1; }
}
/* 吸顶筛选条按 token 高度 + 吸顶投影 */
.fl-lib-head { top: var(--topbar-h) !important; }
/* 长说明限宽,阅读不吃力 */
.install-note, .mcp-steps, .join-note { max-width: 64ch; }
/* 顶栏白色实心按钮 → 反白 ghost */
.token-plain button { background: transparent; border: 1px solid rgba(255,255,255,.35); color: #7fd6b0; }
.token-plain button:hover { background: rgba(255,255,255,.12); }
/* 蓝色数据 pill 归灰(蓝只留给信息提示) */
.tag.blue { background: #eef0ef; color: var(--muted); }
/* 表头全站中性化(管理页批的做法推广到全站) */
th { background: #f7f8f7; color: var(--text-2); }
/* 缺口卡动作行:统一对齐 + 主次分明 */
.gap-actions { display: flex; gap: 8px; align-items: center; margin-top: 8px; flex-wrap: wrap; }
.gap-actions label.btn, .gap-actions .btn { display: inline-flex; align-items: center; justify-content: center; }
.gap-actions .push-right { margin-left: auto; }
/* 简报人员明细折叠 */
.brief-fold summary { cursor: pointer; color: var(--muted); font-size: 13px; list-style: none; }
.brief-fold summary::before { content: "▸ "; }
.brief-fold[open] summary::before { content: "▾ "; }
.brief-people { display: grid; grid-template-columns: 1fr 1fr; gap: 2px 16px; font-size: 13px;
  font-variant-numeric: tabular-nums; margin: 6px 0 0 2px; }
@media (max-width: 720px) { .brief-people { grid-template-columns: 1fr; } }

/* 员工行:破坏/低频动作 hover 才显,红色不整列喊 */
@media (hover: hover) {
  .row-actions .btn.red, .row-actions .btn.quiet:not(.red) { opacity: 0; transition: opacity .12s; }
  tr:hover .row-actions .btn { opacity: 1 !important; }
  .row-actions { min-width: 190px; }
}
/* 技能卡删除:降为 quiet 红字,hover 卡片才显(选择器 .source-card) */
.source-card .btn.danger.small { background: transparent; border: none; color: var(--danger); opacity: 0; transition: opacity .12s; padding: 4px 8px; }
.source-card:hover .btn.danger.small { opacity: .8; }
@media (hover: none) { .source-card .btn.danger.small, .row-actions .btn { opacity: 1 !important; } }
/* 疑似重复 = 警示色,绿色留给正向 */
.fl-fold summary { color: var(--warn); }
.fl-fold summary:hover { color: #8a5a12; }
/* 简报空态安静化(「无,都处理干净了」不当正事列) */
.brief-sec-lines li.quiet-line { list-style: none; color: var(--muted); margin-left: -1.2em; }
.brief-sec-lines li.quiet-line::before { content: "○ "; opacity: .6; }

/* ==================== 头像菜单重设计批 ==================== */
/* 只追加覆写,不动老 selector。容器:统一投影+更大留白;行:一致 padding+浅灰 hover。 */
.who-drop { border-radius: 12px; box-shadow: var(--shadow-pop); min-width: 300px; padding: 8px 0; }
.who-drop .ident-item { padding: 10px 14px; font-size: 14px; border-radius: 0; }
.who-drop .ident-item:hover { background: #f2f2ef; }
.who-drop .ident-add { border-radius: 0; }
.who-drop .ident-out { font-weight: 400; }               /* 红字降噪:普通行样式,不加粗 */
.who-drop .who-drop-label { font-size: 11.5px; font-weight: 600; letter-spacing: .08em;
  color: var(--muted); border-top: 1px solid var(--border); margin-top: 8px; padding: 12px 14px 4px; }
.who-drop .who-drop-hint { padding: 2px 14px 8px; }
#my-token-box { padding: 0 10px; }                       /* 容器横向 padding 归零后补内衬 */
/* 展开小块(头像/手机号/密码):浅灰底与菜单行区分;.hidden 此前全站无规则,收起靠这条 */
.who-drop .hidden { display: none !important; }
.who-sub { margin: 2px 10px 8px; background: #f7f7f4; border-radius: 10px; padding: 12px; }
.who-sub input[type="text"], .who-sub input[type="email"], .who-sub input[type="password"] {
  width: 100%; box-sizing: border-box; font-size: 13px; }
.who-sub .notice { margin: 8px 0 0; padding: 8px 10px; font-size: 12.5px; }
.who-sub-note { font-size: 12px; color: var(--muted); margin-top: 6px; line-height: 1.5; }
.who-file-name { max-width: 150px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* ---------- 公司档案(2026-09-03) ---------- */
.arch-meter-head { display: flex; align-items: baseline; gap: 12px; flex-wrap: wrap; margin-bottom: 8px; }
.arch-bar { height: 8px; background: #e7ecea; border-radius: 99px; overflow: hidden; }
.arch-bar-in { height: 100%; background: var(--brand); border-radius: 99px; transition: width .4s; }
.arch-slots { display: flex; flex-direction: column; }
.arch-slot { display: flex; align-items: center; justify-content: space-between; gap: 12px;
  padding: 10px 4px; border-bottom: 1px dashed #eee9de; }
.arch-slot:last-child { border-bottom: 0; }
.arch-slot-main { display: flex; gap: 10px; align-items: flex-start; min-width: 0; }
.arch-dot { color: var(--brand); font-size: 13px; margin-top: 2px; }
.arch-slot.miss .arch-dot { color: #cfcabc; }
.arch-label { font-weight: 600; font-size: 14px; }
.arch-slot.miss .arch-label { color: var(--text-2); }
.arch-purpose { color: #a09a8a; font-size: 12.5px; margin-top: 2px; }
.arch-doc { font-size: 12.5px; }

/* 档案:实时预览标 + 拖放高亮 + toast */
.arch-live { font-size: 11px; color: var(--brand); background: var(--brand-50); border-radius: 99px; padding: 1px 8px; margin-left: 4px; }
.arch-slot.drag { background: var(--brand-50); outline: 2px dashed var(--brand); outline-offset: -2px; border-radius: 8px; }
#arch-toast { position: fixed; bottom: 24px; left: 50%; transform: translateX(-50%); background: #26282b; color: #fff; border-radius: 99px; padding: 8px 20px; font-size: 13px; opacity: 0; transition: .25s; pointer-events: none; z-index: 30; }
#arch-toast.on { opacity: .94; }

/* ---------- 小兔问问·搜索首页(2026-09-03) ---------- */
#ask-hero { text-align: center; padding: 8vh 16px 24px; transition: padding .3s; }
#ask-hero.searched { padding: 20px 16px 12px; }
.qq-logo { font-size: 40px; font-weight: 700; color: var(--brand); letter-spacing: 1px; }
#ask-hero.searched .qq-logo { font-size: 24px; }
.qq-sub { color: var(--muted); font-size: 14px; margin: 10px 0 26px; max-width: 560px; margin-left: auto; margin-right: auto; line-height: 1.6; }
#ask-hero.searched .qq-sub { display: none; }
.qq-box { display: flex; align-items: center; gap: 10px; max-width: 640px; margin: 0 auto;
  background: #fff; border: 1px solid var(--line); border-radius: 26px; padding: 6px 6px 6px 20px;
  box-shadow: var(--shadow-2); transition: box-shadow .15s, border-color .15s; }
.qq-box:focus-within { border-color: var(--brand); box-shadow: 0 4px 20px rgba(11,85,68,.14); }
.qq-ic { font-size: 18px; opacity: .45; flex-shrink: 0; }
.qq-box textarea { flex: 1; border: 0; outline: 0; resize: none; font-size: 16px; font-family: inherit;
  padding: 11px 0; line-height: 1.4; background: transparent; max-height: 140px; align-self: center; }
.qq-btn { border-radius: 20px; padding: 10px 22px; flex-shrink: 0; }
.qq-chips { display: flex; gap: 8px; flex-wrap: wrap; justify-content: center; align-items: center; margin-top: 18px; }
#ask-hero.searched .qq-chips { display: none; }
.qq-chip { font-size: 13px; background: #fff; border: 1px solid var(--line); border-radius: 99px;
  padding: 6px 15px; cursor: pointer; color: var(--text-2); transition: .12s; }
.qq-chip:hover { border-color: var(--brand); color: var(--brand); background: var(--brand-50); }

/* 系统状态详情弹层 */
.hd-modal { position: fixed; inset: 0; background: rgba(20,25,22,.4); display: flex; align-items: center; justify-content: center; z-index: 60; }
.hd-panel { background: #fff; border-radius: 14px; box-shadow: var(--shadow-pop); width: min(520px, 92vw); max-height: 82vh; overflow: auto; padding: 20px 22px; }
.hd-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 14px; }
.hd-head b { font-size: 16px; }
.hd-rows { display: flex; flex-direction: column; }
.hd-row { display: flex; justify-content: space-between; gap: 16px; padding: 10px 0; border-bottom: 1px solid var(--line); font-size: 14px; }
.hd-row:last-child { border-bottom: 0; }
.hd-row > span:first-child { color: var(--muted); flex-shrink: 0; }
.hd-row > span:last-child { text-align: right; }
.hd-foot { margin-top: 16px; text-align: center; }

/* 文件详情:头部收起 + 管理设置折叠 */
.fd-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 10px; }
.fd-admin { margin-top: 12px; border-top: 1px dashed var(--line); padding-top: 10px; }
.fd-admin summary { cursor: pointer; font-size: 13px; color: var(--muted); list-style: none; user-select: none; }
.fd-admin summary::before { content: "▸ "; }
.fd-admin[open] summary::before { content: "▾ "; }
.fd-admin summary:hover { color: var(--brand); }
.fd-admin > *:not(summary) { margin-top: 10px; }

/* 团队行内消息(生成注册链接结果就地显示) */
.member-row .row-msg { flex-basis: 100%; }
.member-row .row-msg:empty { display: none; }

/* 筛选 chip 计数做成独立浅底 badge(避免"密云销2 1"读成密云销21) */
.chip b { font-weight: 600; background: #eef2f0; color: #6b7280; border-radius: 5px; padding: 0 6px; margin-left: 5px; font-size: 11.5px; }
.chip.on b { background: rgba(255,255,255,.25); color: #fff; }

/* 新增部门要老板批：待批清单 + 老板的架构二次确认 */
.org-reqs{margin-top:10px;border-top:1px solid var(--line,#e9e6de);padding-top:8px}
.org-reqs-h{font-size:12px;font-weight:700;color:#8a6d1f;margin-bottom:6px}
.org-req{display:flex;align-items:center;gap:8px;padding:5px 0;flex-wrap:wrap}
.org-req-n{font-weight:600;font-size:13px}
.ocf{border:1px solid #ece0c2;background:#fdf9ee;border-radius:10px;padding:12px 14px}
.ocf-h{font-weight:700;font-size:13.5px;color:#7a6320;margin-bottom:8px}
.ocf-tree{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:6px}
.ocf-d{font-size:12.5px;background:#fff;border:1px solid #ece0c2;border-radius:7px;padding:3px 8px}
.ocf-d i{font-style:normal;color:#a99a72;margin-left:5px;font-size:11.5px}
.ocf-sum{font-size:12px;color:#8a8a83;margin-bottom:8px}
.ocf-warn{font-size:12px;color:#c0392b;margin-bottom:8px}

/* CEO 值班秘书（影子期）—— 苹果式：一张卡一件事，标题一行，说明两行，动作靠右 */
.ceo-band{border-left-color:#1E2C59;background:#fff;padding:18px 20px}
.ceo-band .h2-hot{margin-bottom:6px}
.ceo-strip{font-size:12.5px;color:#8a94a3;margin:0 0 12px;display:flex;flex-wrap:wrap;gap:4px 14px;align-items:center}
.ceo-strip b{color:#1f2937}
.ceo-shadow{display:inline-block;background:#fff7e6;color:#8a5a00;border-radius:999px;padding:1px 10px;font-size:11.5px}
.ceo-list{display:flex;flex-direction:column;gap:10px}
.ceo-card{display:grid;grid-template-columns:1fr auto;gap:6px 18px;align-items:center;background:#fafbfc;border:1px solid #e8ecf1;border-radius:12px;padding:12px 16px}
.ceo-card.ceo-fold{display:none}
.ceo-main{min-width:0}
.ceo-main b{display:block;font-size:15px;font-weight:600;color:#1f2937;line-height:1.45;margin:2px 0 2px}
.ceo-pr{display:inline-block;color:#fff;border-radius:999px;padding:1px 9px;font-size:11px;font-weight:600;letter-spacing:.2px;margin-bottom:2px}
.ceo-body{font-size:13px;color:#4b5563;line-height:1.55;overflow:hidden;display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical}
.ceo-why{font-size:12.5px;color:#6b7280;margin-top:4px;line-height:1.5}
.ceo-lab{font-weight:600;color:#374151}
.ceo-act{display:flex;gap:14px;align-items:center;white-space:nowrap;font-size:13px;justify-self:end}
.ceo-act .btn.small{padding:7px 14px;border-radius:9px}
.ceo-a{color:#8a94a3;text-decoration:none}.ceo-a:hover{color:#1a8a4f}.ceo-dis:hover{color:#c0392b}
.ceo-st{font-size:12px;color:#1a8a4f}
.ceo-more{display:inline-block;font-size:13px;color:#1a8a4f;margin:8px 0 4px;text-decoration:none}
.ceo-ask{display:flex;gap:8px;margin-top:14px;align-items:center}
.ceo-ask input{flex:1;border:1px solid #dde3ea;border-radius:10px;padding:9px 12px;font:inherit;font-size:13.5px;background:#fff}
.ceo-ask input:focus{outline:none;border-color:#1a8a4f}
.ceo-ask .btn.small{height:36px;padding:0 16px;border-radius:9px}
.ceo-answer{font-size:13px;color:#374151;margin-top:8px;line-height:1.6}.ceo-note{font-size:12px;color:#9aa5b1;margin-top:4px}
.ceo-empty{font-size:13px;color:#6b7280;padding:6px 2px}
@media (max-width:820px){.ceo-card{grid-template-columns:1fr}.ceo-act{justify-self:start}}
/* 「拿到工作手机第一天」照做清单（我的工作手机 + 工作手机分配页，2026-09-11） */
.wx-first { margin-top: 8px; font-size: 13px; line-height: 1.6; }
.wx-first summary { cursor: pointer; color: var(--green-dark); font-weight: 600; }
.wx-first ol { margin: 6px 0 0; padding-left: 20px; }
.wx-first li { margin-bottom: 4px; }

/* 首页「如何使用」入口（2026-09-11 Jackie：首页放一个如何使用） */
.guide-strip { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; background: #f3f8f5; border: 1px solid #cfe6db; border-radius: 12px; padding: 10px 14px; margin: 0 0 14px; color: #0b5544; text-decoration: none; font-size: 14px; }
.guide-strip span { color: #3f5d52; font-size: 13px; flex: 1; min-width: 0; }
.guide-strip i { font-style: normal; }
.guide-strip:hover { border-color: var(--green-dark); }
/* 导航加了「如何使用」后 1280 宽挤不下：窄一点的屏收紧间距、搜索框让位（它和「问答」页是同一件事） */
@media (max-width: 1400px) { nav.mainnav a { padding: 8px 8px; } .topbar-inner { gap: 10px; } }
/* 1320px 以下原来把搜索框藏起来给导航让位；「问答」拿出导航后不藏了 */
/* 仪表盘最上面的「开通设置」卡（第一次用的七步）：只列没做完的，做完的收在「已完成」一行里；全部做完整张卡收成一行 */
.su { border:1px solid #d9e7df; background:#f4faf7; border-radius:14px; padding:14px 16px; margin:0 0 14px; }
.su-h { font-weight:700; font-size:16px; margin-bottom:6px; }
.su-h span { font-weight:400; font-size:13px; color:#67748a; margin-left:8px; }
.su-list { list-style:none; margin:0; padding:0; }
.su-step { display:flex; align-items:center; gap:12px; padding:9px 0; border-top:1px dashed #d9e7df; margin:0; }
.su-list .su-step:first-child { border-top:0; }
.su-n { flex:none; width:26px; height:26px; border-radius:50%; background:#fff; border:1.5px solid #0b5544; color:#0b5544; font-weight:700; display:flex; align-items:center; justify-content:center; font-size:13px; }
.su-step.ok .su-n { background:#0b5544; color:#fff; }
.su-b { flex:1; min-width:0; }
.su-s { font-size:13px; color:#67748a; margin-top:2px; line-height:1.5; }
.su-go { flex:none; font-size:13px; color:#0b5544; font-weight:600; text-decoration:none; white-space:nowrap; }
.su-more { margin-top:4px; border-top:1px dashed #d9e7df; padding-top:8px; }
.su-more > summary, .su-slim > summary { cursor:pointer; font-size:13px; color:#67748a; list-style:none; }
.su-more > summary::-webkit-details-marker, .su-slim > summary::-webkit-details-marker { display:none; }
.su-more > summary::before, .su-slim > summary::before { content:'▸ '; }
.su-more[open] > summary::before, .su-slim[open] > summary::before { content:'▾ '; }
.su-slim { padding:10px 16px; }
.su-slim > summary { color:#0b5544; font-weight:600; }
.su-slim > summary span { font-weight:400; color:#8a94a3; margin-left:8px; }
@media (max-width: 600px) { .su-step { flex-wrap:wrap; } .su-b { flex-basis:calc(100% - 40px); } .su-go { margin-left:38px; } }   /* 手机上「去…→」换到下一行，别把说明挤成一条 */
