* { margin: 0; padding: 0; box-sizing: border-box; }
:root {
  --brand: #ff6a3d;
  --brand2: #ff3d6e;
  --bg: #f5f6f8;
  --card: #ffffff;
  --line: #e5e6eb;
  --text: #1f2329;
  --muted: #86909c;
  --primary: #185fa5;
}
body { font-family: -apple-system, "PingFang SC", "Microsoft YaHei", sans-serif; background: var(--bg); color: var(--text); font-size: 14px; }
button { font-family: inherit; cursor: pointer; }
input, select, textarea { font-family: inherit; font-size: 14px; padding: 8px 10px; border: 1px solid var(--line); border-radius: 8px; width: 100%; background: #fff; color: var(--text); }
input:focus, select:focus, textarea:focus { outline: none; border-color: var(--brand); }
.btn { background: var(--brand); color: #fff; border: none; padding: 9px 16px; border-radius: 8px; font-size: 14px; }
.btn:hover { opacity: .9; }
.btn.ghost { background: #fff; color: var(--text); border: 1px solid var(--line); }
.btn.ghost.danger { color: #e24b4a; border-color: #e24b4a; }
.btn.ghost.danger:hover { background: #e24b4a; color: #fff; }
.btn.sm { padding: 5px 10px; font-size: 12px; }
.btn.xs { padding: 2px 6px; font-size: 11px; }
.btn.primary-lg { background:#1D9E75; color:#fff; padding:12px 28px; font-size:15px; border-radius:10px; box-shadow:0 2px 8px rgba(29,158,117,.3); }
.btn.primary-lg:hover { background:#0F6E56; }
.btn.danger { background: #e24b4a; }

/* login */
.login-wrap { min-height: 100vh; display: flex; align-items: center; justify-content: center; background: linear-gradient(135deg, #fff1ea, #ffe9ef); }
.login-card { background: #fff; padding: 36px 32px; border-radius: 16px; width: 340px; box-shadow: 0 8px 30px rgba(0,0,0,.06); }
.login-card h1 { font-size: 22px; text-align: center; margin-bottom: 4px; }
.login-card .sub { text-align: center; color: var(--muted); margin-bottom: 22px; font-size: 13px; }
.login-card .field { margin-bottom: 14px; }
.login-card .hint { text-align: center; color: var(--muted); font-size: 12px; margin-top: 14px; }
.wx-btn { background: #07c160; color: #fff; border: none; font-weight: 500; }
.wx-btn:hover { background: #06ad56; }
.dot-red{display:inline-block;min-width:18px;height:18px;line-height:18px;padding:0 5px;background:#e24b4a;color:#fff;border-radius:9px;font-size:11px;text-align:center;margin-left:6px;vertical-align:middle}
.tag.red{background:#FCEBEB;color:#A32D2D}
.tag.green{background:#EAF3DE;color:#3B6D11}
.guest-msg{padding:12px 0;border-bottom:1px solid #eef0ea}
.guest-msg:last-child{border-bottom:0}
.gm-head{margin-bottom:4px;font-size:13px}
.gm-body{font-size:14px;line-height:1.6;color:#333;white-space:pre-wrap}
.gm-reply{margin-top:6px;padding:8px 10px;background:#F3F6FB;border-radius:8px;font-size:13px;color:#444}

/* 密码显示/隐藏 */
.pwd-wrap { position: relative; }
.pwd-toggle { position: absolute; right: 10px; top: 50%; transform: translateY(-50%); cursor: pointer; font-size: 16px; opacity: .5; user-select: none; line-height: 1; }
.pwd-toggle:hover { opacity: 1; }

/* layout */
.topbar { background: #fff; border-bottom: 1px solid var(--line); height: 56px; display: flex; align-items: center; padding: 0 20px; gap: 12px; position: sticky; top: 0; z-index: 10; }
.logo { width: 30px; height: 30px; border-radius: 8px; background: linear-gradient(135deg, var(--brand), var(--brand2)); color: #fff; font-weight: 700; display: flex; align-items: center; justify-content: center; }
.topbar .title { font-weight: 600; }
.topbar .spacer { flex: 1; }
.topbar .who { color: var(--muted); font-size: 13px; }
.layout { display: flex; min-height: calc(100vh - 56px); }
.sidebar { width: 180px; background: #fff; border-right: 1px solid var(--line); padding: 14px 10px; }
.sidebar a { display: block; padding: 10px 14px; border-radius: 8px; color: var(--text); text-decoration: none; font-size: 14px; margin-bottom: 4px; }
.sidebar a:hover { background: var(--bg); }
.sidebar a.active { background: #fff1ea; color: var(--brand); font-weight: 600; }
.content { flex: 1; padding: 22px; overflow: auto; }
.page-title { font-size: 18px; font-weight: 600; margin-bottom: 16px; }
.user-actions { display: flex; gap: 14px; justify-content: center; flex-wrap: wrap; margin: 0 0 18px; }
.user-actions .btn { font-size: 15px; padding: 11px 26px; box-shadow: 0 2px 8px rgba(43,125,233,.25); }
.perm-pos { width: 120px; padding: 5px 8px; border: 1px solid #dfe3ea; border-radius: 6px; }
.perm-role { width: 150px; padding: 5px 8px; border: 1px solid #dfe3ea; border-radius: 6px; }

/* cards & stats */
.grid { display: grid; gap: 14px; }
.stats { grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); }
.stat { background: var(--card); border: 1px solid var(--line); border-radius: 12px; padding: 16px; }
.stat .num { font-size: 24px; font-weight: 600; }
.stat .lbl { color: var(--muted); font-size: 13px; margin-top: 4px; }

/* table */
table { width: 100%; border-collapse: collapse; background: #fff; border-radius: 12px; overflow: hidden; border: 1px solid var(--line); }
th, td { text-align: left; padding: 11px 14px; border-bottom: 1px solid var(--line); font-size: 13px; }
th { background: #fafbfc; color: var(--muted); font-weight: 500; }
tr:last-child td { border-bottom: none; }
tr:hover td { background: #fafbfc; }

/* kanban */
.kanban { display: flex; gap: 12px; overflow-x: auto; padding-bottom: 8px; }
.kcol { background: #fff; border: 1px solid var(--line); border-radius: 12px; width: 230px; flex: 0 0 230px; padding: 10px; }
.kcol h3 { font-size: 13px; margin-bottom: 10px; display: flex; justify-content: space-between; }
.kcol .cnt { color: var(--muted); font-weight: 400; }
.kcard { border: 1px solid var(--line); border-radius: 8px; padding: 10px; margin-bottom: 8px; cursor: pointer; background: #fff; }
.kcard:hover { border-color: var(--brand); }
.kcard .t { font-weight: 500; font-size: 13px; }
.kcard .m { color: var(--muted); font-size: 12px; margin-top: 4px; }

/* 阶段筛选 chip 标签组 */
.chip { display: inline-block; padding: 4px 12px; border-radius: 999px; border: 1px solid var(--line); background: #fff; font-size: 12px; color: var(--muted); cursor: pointer; user-select: none; transition: all .15s; }
.chip:hover { border-color: var(--brand); color: var(--brand); }
.chip.on { background: var(--brand); color: #fff; border-color: var(--brand); }

/* modal */
.modal-mask { position: fixed; inset: 0; background: rgba(0,0,0,.35); display: flex; align-items: center; justify-content: center; z-index: 50; }
.modal { background: #fff; border-radius: 14px; padding: 24px; width: 620px; max-width: 94vw; max-height: 90vh; overflow: auto; }
.modal h3 { margin-bottom: 16px; font-size: 18px; }
.form-row { margin-bottom: 12px; }
.form-row label { display: block; font-size: 12px; color: var(--muted); margin-bottom: 5px; }
.form-actions { display: flex; gap: 10px; justify-content: flex-end; margin-top: 8px; }
.row2 { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.row3 { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 8px; }
.row3 select { padding: 6px 8px; border: 1px solid var(--line); border-radius: 6px; background: #fff; }
.tag { display: inline-block; padding: 2px 8px; border-radius: 6px; font-size: 12px; background: #fff1ea; color: var(--brand); }
.tag.blue { background: #e6f1fb; color: var(--primary); }
.tag.green { background: #eaf3de; color: #3b6d11; }
.tag.gray { background: #f1efe8; color: #5f5e5a; }
.tag.orange { background: #fff1e0; color: #ba7517; }
.tag.lvl-a { background: #fde2e2; color: #c0392b; font-weight: 600; }
.tag.lvl-b { background: #fdebd0; color: #b9770e; font-weight: 600; }
.tag.lvl-c { background: #e3eefb; color: #1f5fb0; }
.tag.lvl-d { background: #E8F5E9; color: #2E7D32; }
.tag.lvl-e { background: #F3E5F5; color: #7B1FA2; }
.tag.lvl-f { background: #E0F7FA; color: #00838F; }
.chks { display: flex; flex-wrap: wrap; gap: 8px 14px; padding: 6px 0; }
.chk { display: inline-flex; align-items: center; gap: 4px; font-size: 13px; color: var(--text); cursor: pointer; user-select: none; }
.chk input[type="checkbox"] { width: 16px; height: 16px; accent-color: var(--brand); cursor: pointer; flex-shrink: 0; margin: 0; }
.muted { color: var(--muted); }
.section { background: #fff; border: 1px solid var(--line); border-radius: 12px; padding: 16px; margin-bottom: 14px; }
.section h4 { font-size: 14px; margin-bottom: 12px; }
.item { border-bottom: 1px solid var(--line); padding: 10px 0; }
.item:last-child { border-bottom: none; }
.empty { color: var(--muted); text-align: center; padding: 30px; }
.q-row { display: grid; grid-template-columns: 2fr 1fr 1fr 1fr; gap: 8px; margin-bottom: 8px; align-items: center; }
.toast { position: fixed; bottom: 36px; left: 50%; transform: translateX(-50%); background: #1f2329; color: #fff; padding: 10px 18px; border-radius: 8px; font-size: 13px; z-index: 99999; }

/* 工作日志 */
.wl-tabs { display: flex; gap: 8px; margin-bottom: 14px; }
.wl-views { display: flex; gap: 8px; margin-bottom: 14px; }
.wl-views .tab.sm { padding: 5px 14px; font-size: 13px; }
.inv-banner { background: #eef6ff; border: 1px solid #cfe3ff; padding: 8px 10px; border-radius: 8px; margin-bottom: 10px; font-size: 13px; }
.inv-banner.warn { background: #fff4e5; border-color: #ffd8a8; }
.inv-banner.login-inv { background: #eafaf0; border-color: #b7e8c8; color: #1d7a45; }
.inv-hint { background: #f0f9ff; border: 1px solid #bae3ff; border-radius: 8px; padding: 8px 10px; margin: 10px 0 4px; font-size: 12.5px; color: #0c5a8a; line-height: 1.6; }
.inv-list { max-height: 200px; overflow: auto; margin-top: 4px; }
.inv-row { display: flex; align-items: center; gap: 8px; padding: 5px 0; font-size: 13px; border-bottom: 1px dashed #eee; }
.inv-row code { background: #f5f5f5; padding: 2px 6px; border-radius: 4px; }
.set-row { display: flex; justify-content: space-between; align-items: center; gap: 12px; padding: 13px 14px; border-bottom: 1px solid var(--line); }
.set-row:last-child { border-bottom: none; }
.set-row input[type=checkbox] { width: 18px; height: 18px; accent-color: var(--accent, #185fa5); }
.set-row b { font-weight: 500; }

/* 入驻审核提示墙 */
.wall-wrap { min-height: 100vh; display: flex; align-items: center; justify-content: center; background: linear-gradient(135deg, #f3f7fb, #e9f0f8); }
.wall-card { background: #fff; border: 1px solid var(--line); border-radius: 16px; padding: 40px 46px; text-align: center; max-width: 420px; box-shadow: 0 10px 40px rgba(20, 50, 90, .08); }
.wall-icon { font-size: 52px; margin-bottom: 8px; }
.wall-card h2 { margin: 6px 0 12px; font-size: 22px; }
.wall-tip { color: var(--text); line-height: 1.8; font-size: 14px; }

/* 入驻审核列表 */
.rev-list { display: flex; flex-direction: column; gap: 12px; margin-top: 14px; }
.rev-row { display: flex; justify-content: space-between; align-items: center; gap: 16px; background: #fff; border: 1px solid var(--line); border-radius: 12px; padding: 16px 18px; }
.rev-row b { font-size: 15px; }
.rev-main b + .tag { margin-left: 8px; vertical-align: middle; }
.rev-main { flex: 1; min-width: 0; }
.rev-ops { display: flex; gap: 8px; flex-shrink: 0; }
.tab { background: #fff; border: 1px solid var(--line); border-radius: 8px; padding: 7px 18px; font-size: 14px; color: var(--text); cursor: pointer; }
.tab.active { background: var(--brand); color: #fff; border-color: var(--brand); }
.wl-remind { background: #fff7e6; border: 1px solid #ffd591; color: #ad6800; border-radius: 10px; padding: 10px 14px; margin-bottom: 14px; display: flex; align-items: center; gap: 10px; font-size: 13px; }

/* 邀请内部成员醒目提示（公司成员页横幅） */
.invite-tip { background: #fff3e0; border: 1px solid #ff9f43; border-left: 4px solid #ff7a00; border-radius: 10px; padding: 12px 16px; margin-bottom: 14px; color: #8a4b00; font-size: 13.5px; line-height: 1.7; }
.invite-tip-h { font-weight: 700; font-size: 14.5px; margin-bottom: 4px; color: #b45309; }
.invite-tip b { color: #b45309; }
.wl-card { margin-bottom: 12px; }
.wl-head { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-bottom: 10px; }
.wl-row { display: flex; gap: 12px; padding: 7px 0; font-size: 14px; line-height: 1.6; }
.wl-k { flex: 0 0 96px; color: var(--muted); font-size: 13px; padding-top: 1px; }
.wl-comment { margin-top: 10px; background: #f7f8fa; border-radius: 8px; padding: 10px 12px; font-size: 13px; color: #3b6d11; }
.wl-cc { display: inline-flex; align-items: center; gap: 4px; }

.wl-bar { display: flex; gap: 14px; flex-wrap: wrap; align-items: center; margin-bottom: 12px; }
.wl-years { display: flex; gap: 6px; flex-wrap: wrap; }
.wl-quick { display: flex; gap: 6px; flex-wrap: wrap; }
.wl-group { margin-bottom: 10px; }
.wl-group-head { display: flex; align-items: center; gap: 8px; padding: 11px 14px; background: #f2f4f7; border-radius: 10px; cursor: pointer; user-select: none; font-size: 14px; }
.wl-group-head:hover { background: #e9edf2; }
.wl-group-head .muted { font-size: 12px; }
.wl-arrow { font-size: 12px; color: var(--muted); }
.wl-group-body { padding: 12px 4px 2px; }
.btn.ghost.sm.active { background: var(--brand); color: #fff; border-color: var(--brand); }

/* ========== 移动端适配 ========== */
@media (max-width: 768px) {
  .topbar { padding: 0 12px; height: 48px; }
  .topbar .title { display: none; }
  .topbar .who { display: none; }
  .menu-toggle { display: flex !important; width: 32px; height: 32px; align-items: center; justify-content: center; background: none; border: 1px solid var(--line); border-radius: 8px; font-size: 18px; color: var(--text); padding: 0; }

  /* 侧边栏：默认隐藏，点击菜单按钮滑出 */
  .sidebar { position: fixed; left: 0; top: 48px; bottom: 0; width: 220px; z-index: 40;
    transform: translateX(-100%); transition: transform .25s ease; box-shadow: none; border-right: none;
    overflow-y: auto; -webkit-overflow-scrolling: touch; }
  .sidebar.open { transform: translateX(0); box-shadow: 4px 0 20px rgba(0,0,0,.1); border-right: 1px solid var(--line); }
  .sidebar-overlay { display: none; position: fixed; inset: 0; top: 48px; background: rgba(0,0,0,.3); z-index: 35; }
  .sidebar-overlay.show { display: block; }

  .layout { flex-direction: column; }
  .content { padding: 14px 12px; overflow-x: hidden; }
  .page-title { font-size: 16px; margin-bottom: 12px; flex-wrap: wrap; gap: 8px; }

  /* 统计卡片：2列 */
  .stats { grid-template-columns: repeat(2, 1fr); }
  .stat { padding: 12px; }
  .stat .num { font-size: 20px; }

  /* 表格：横向滚动 */
  table { font-size: 12px; display: block; overflow-x: auto; white-space: nowrap; }
  th, td { padding: 8px 10px; min-width: 70px; }

  /* 看板：横向滚动 */
  .kanban { gap: 10px; }
  .kcol { width: 200px; flex: 0 0 200px; padding: 8px; }

  /* 弹窗：几乎全屏 */
  .modal { width: 94vw; padding: 18px; max-height: 90vh; }
  .row2 { grid-template-columns: 1fr; }

  /* 项目详情 */
  .section { padding: 12px; margin-bottom: 10px; }
  .row2 { gap: 8px; }

  /* 按钮：小一点 */
  .btn.sm { padding: 6px 10px; font-size: 11px; }
  .btn.ghost.sm { padding: 4px 8px; font-size: 11px; }

  /* 登录页 */
  .login-card { padding: 28px 20px; width: auto; margin: 0 16px; border-radius: 14px; }
}
@media (max-width: 480px) {
  .stats { grid-template-columns: 1fr 1fr; gap: 8px; }
  .stat .num { font-size: 18px; }
  .kcol { width: 170px; flex: 0 0 170px; }
}

/* 桌面端隐藏菜单按钮 */
.menu-toggle { display: none; }

/* ========== 通知中心 ========== */
.bell { position: relative; background: transparent; border: none; font-size: 20px; line-height: 1; cursor: pointer; padding: 4px 6px; border-radius: 8px; }
.bell:hover { background: #f2f3f5; }
.refresh { background: transparent; border: none; font-size: 20px; line-height: 1; cursor: pointer; padding: 4px 6px; border-radius: 8px; transition: transform .45s ease; }
.refresh:hover { background: #f2f3f5; }
.refresh.spin { transform: rotate(360deg); }

/* ========== 新版本提示横幅 ========== */
.update-banner { position: fixed; top: 0; left: 0; right: 0; z-index: 9999; background: linear-gradient(90deg,#2b7de9,#1e63c2); color: #fff; display: flex; align-items: center; justify-content: space-between; padding: 10px 16px; font-size: 14px; box-shadow: 0 2px 8px rgba(0,0,0,.18); }
.update-banner span { flex: 1; }
.update-banner .btn { background: #fff; color: #1e63c2; border: none; margin-left: 12px; padding: 6px 14px; }
.update-banner .btn:hover { background: #eef3fb; }
/* PWA 添加主屏提示条：半透明蓝色毛玻璃，一行精简 */
.pwa-banner { position: fixed; left: 0; right: 0; bottom: 0; z-index: 9998; display: flex; align-items: center; gap: 8px; padding: 8px 12px; background: rgba(83,74,183,.82); color: #fff; backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px); box-shadow: 0 -2px 12px rgba(0,0,0,.18); }
.pwa-banner .pwa-ico { font-size: 15px; flex: none; }
.pwa-banner .pwa-txt { flex: 1; min-width: 0; font-size: 13px; line-height: 1.2; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.pwa-banner .pwa-add { flex: none; background: #fff; color: #534AB7; border: 0; border-radius: 8px; padding: 7px 16px; font-size: 13px; font-weight: 700; }
.pwa-banner .pwa-add:active { transform: scale(.96); }
/* 微信内引导遮罩：指向右上角 */
.pwa-wechat-mask { position: fixed; inset: 0; z-index: 99999; background: rgba(0,0,0,.5); display: flex; justify-content: flex-end; align-items: flex-start; padding: 54px 16px; }
.pwa-wechat-box { background: #fff; color: #1f2329; border-radius: 14px; padding: 16px 18px; font-size: 14px; line-height: 1.8; text-align: center; max-width: 190px; box-shadow: 0 6px 24px rgba(0,0,0,.3); }
.pwa-wechat-box .pwa-arrow { font-size: 26px; color: #534AB7; margin-bottom: 2px; font-weight: 700; }
.bell .badge { position: absolute; top: -2px; right: -2px; min-width: 16px; height: 16px; padding: 0 4px; border-radius: 9px; background: #f5222d; color: #fff; font-size: 11px; line-height: 16px; text-align: center; }
.notif-list { max-height: 56vh; overflow: auto; margin: -4px -4px 12px; }
.notif-item { padding: 10px 8px; border-radius: 8px; cursor: pointer; border-bottom: 1px solid var(--line); }
.notif-item:hover { background: #f7f8fa; }
.notif-item.read { opacity: .55; }
.notif-item .notif-main { font-size: 14px; }
.notif-item.read .notif-main { font-weight: 400; }
.notif-item:not(.read) .notif-main { font-weight: 600; }

/* ========== @提及浮层 ========== */
.mention-drop { position: fixed; z-index: 200; background: #fff; border: 1px solid var(--line); border-radius: 10px; box-shadow: 0 8px 24px rgba(0,0,0,.14); max-height: 220px; overflow: auto; min-width: 180px; display: none; }
.mention-item { padding: 8px 12px; cursor: pointer; font-size: 13px; display: flex; align-items: baseline; gap: 8px; }
.mention-item:hover, .mention-item.active { background: var(--brand); color: #fff; }
.mention-item .muted { font-size: 11px; }
.mention-item.active .muted { color: rgba(255,255,255,.8); }
.at { color: var(--brand); font-weight: 600; }

@media (max-width: 768px) {
  .bell { font-size: 18px; padding: 4px; }
}

/* ========== 公告（老板全员广播） ========== */
.ann-bar { display: flex; gap: 12px; background: linear-gradient(135deg, #fff7ed, #fff1f0); border: 1px solid #ffc9a8; border-left: 4px solid var(--brand); border-radius: 12px; padding: 14px 16px; margin-bottom: 16px; }
.ann-bar.imp { background: linear-gradient(135deg, #fff1f0, #ffe9e9); border-color: #ffa8a8; border-left-color: #e24b4a; }
.ann-ico { font-size: 22px; line-height: 1.4; flex-shrink: 0; }
.ann-body { flex: 1; min-width: 0; }
.ann-top { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.ann-tag { display: inline-block; padding: 1px 8px; border-radius: 6px; font-size: 12px; background: var(--brand); color: #fff; font-weight: 600; }
.ann-imp { display: inline-block; padding: 1px 8px; border-radius: 6px; font-size: 12px; background: #e24b4a; color: #fff; font-weight: 600; }
.ann-title { font-size: 15px; font-weight: 600; }
.ann-meta { color: var(--muted); font-size: 12px; margin: 4px 0 6px; }
.ann-text { font-size: 13.5px; line-height: 1.7; color: var(--text); white-space: pre-wrap; }
.ann-foot { margin-top: 10px; display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.ann-done { color: #3b6d11; font-size: 13px; font-weight: 600; }
.ann-list { max-height: 60vh; overflow: auto; margin: -4px -4px 12px; display: flex; flex-direction: column; gap: 10px; }
.ann-item { border: 1px solid var(--line); border-radius: 10px; padding: 12px 14px; }
.ann-item.rev { opacity: .6; }
.ann-itop { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; font-size: 14px; }
.ann-imeta { color: var(--muted); font-size: 12px; margin: 4px 0 6px; }
.ann-itext { font-size: 13px; line-height: 1.7; white-space: pre-wrap; margin-bottom: 8px; }

/* ========== 每日经营简报 ========== */
.digest-bar { display: flex; flex-direction: column; background: #fff; border: 1px solid var(--line); border-radius: 12px; padding: 6px 14px; margin: 4px 0; }
.dig-row { display: flex; align-items: center; gap: 10px; padding: 8px 0; border-bottom: 1px solid #f3f3f3; }
.dig-row:last-child { border-bottom: none; }
.dig-ico { font-size: 16px; width: 22px; text-align: center; flex-shrink: 0; }
.dig-lbl { flex: 1; color: var(--text); font-size: 13.5px; }
.dig-val { font-weight: 600; font-size: 14px; }
.dig-val.danger { color: #e24b4a; }

/* ========== 财务 / 报账与收支 ========== */
:root { --green: #3b6d11; --red: #e24b4a; }
.fin-tabs { display: flex; gap: 8px; margin-bottom: 14px; }
.fin-toolbar { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 12px; }
.chip { background: #fff; border: 1px solid var(--line); border-radius: 8px; padding: 5px 12px; font-size: 12px; cursor: pointer; color: var(--text); }
.chip.active { background: var(--brand); color: #fff; border-color: var(--brand); }
.exp-status { display: inline-block; padding: 2px 8px; border-radius: 6px; font-size: 12px; }
.exp-status.draft { background: #f1efe8; color: #5f5e5a; }
.exp-status.pending_mgmt, .exp-status.pending_boss, .exp-status.pending_finance { background: #fff7e6; color: #ad6800; }
.exp-status.paid { background: #eaf3de; color: var(--green); }
.exp-status.rejected { background: #fde2e2; color: #c0392b; }
/* ===== 报账列表：卡片式（替代 8 列表格，移动端友好） ===== */
.exp-cards { display: flex; flex-direction: column; gap: 10px; margin-top: 6px; }
.exp-card { background: #fff; border: 1px solid var(--line); border-radius: 12px; padding: 12px 14px; }
.exp-card-head { display: flex; justify-content: space-between; align-items: baseline; gap: 10px; }
.exp-card-type { font-size: 14px; font-weight: 600; color: #222; display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.exp-card-amt { font-size: 16px; font-weight: 700; color: var(--red); white-space: nowrap; }
.exp-card-meta { display: flex; flex-wrap: wrap; gap: 8px 14px; margin-top: 7px; font-size: 12px; color: #888; align-items: center; }
.exp-card-meta .exp-owner { color: #555; font-weight: 600; }
.exp-card-meta .exp-date { margin-left: auto; }
.exp-card-acts { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 10px; padding-top: 10px; border-top: 1px dashed var(--line); }
.tag-personal { background: #fff3e0; color: #ba7517; font-size: 11px; padding: 1px 7px; border-radius: 6px; font-weight: 600; }
.fin-charts { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 14px; margin: 14px 0; }
.fin-charts .card { background: #fff; border: 1px solid var(--line); border-radius: 12px; padding: 14px; }
.fin-charts .card h4 { font-size: 14px; margin-bottom: 10px; }
.chart-box { position: relative; height: 240px; }
table.mini { font-size: 13px; }

/* ===== 供应商：搜索并加入已注册用户 ===== */
.sup-search { display: flex; gap: 8px; margin: 0 0 12px; }
.sup-search input { flex: 1; }
.stray-list { margin: 0 0 14px; border: 1px solid var(--line); border-radius: 10px; overflow: hidden; }
.stray-item { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 9px 12px; border-bottom: 1px solid var(--line); font-size: 13px; }
.stray-item:last-child { border-bottom: 0; }
.stray-info { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* ===== 客户档案：卡片网格 ===== */
.cust-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); gap: 14px; }
.cust-card { background: #fff; border: 1px solid var(--color-border-secondary, #e2e2e2); border-radius: 12px; padding: 14px; transition: box-shadow .15s, transform .15s; }
.cust-card:hover { box-shadow: 0 4px 14px rgba(0,0,0,.08); transform: translateY(-2px); }
.cust-avatar { width: 36px; height: 36px; border-radius: 9px; display: flex; align-items: center; justify-content: center; font-weight: 500; font-size: 15px; flex: 0 0 auto; }
.cust-name { font-size: 14px; font-weight: 500; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.cust-more-btn { position:absolute;top:8px;right:8px;width:28px;height:28px;border:none;background:transparent;font-size:18px;color:#999;border-radius:6px;cursor:pointer;line-height:1;z-index:2 }
.cust-more-btn:hover { background:#f0f0f0; color:#333; }
.cust-menu { position:absolute;top:36px;right:8px;z-index:10;background:#fff;border:1px solid #e0e0e0;border-radius:8px;box-shadow:0 4px 16px rgba(0,0,0,.12);min-width:120px;padding:4px 0 }
.cust-menu span { display:block;padding:8px 14px;font-size:13px;cursor:pointer;color:#c0392b;white-space:nowrap }
.cust-menu span:hover { background:#fef0f0; }
.cust-paid { font-size: 20px; font-weight: 500; color: var(--color-text-primary, #222); }
.cust-caps { display: flex; gap: 6px; flex-wrap: wrap; }
.cust-caps .cap { font-size: 11px; padding: 2px 8px; border-radius: 10px; background: #f1efea; color: #5f5e5a; }
.cust-caps .cap.blue { background: #e6f1fb; color: #185fa5; }
.cust-caps .cap.green { background: #eaf3de; color: #3b6d11; }

/* ===== chips 筛选/切换 ===== */
.chip { font-size: 12px; padding: 5px 12px; border-radius: 14px; border: 1px solid var(--color-border-secondary, #dcdcdc); background: #fff; color: #444; cursor: pointer; }
.chip:hover { border-color: #b5b5b5; }
.chip.active { background: #534ab7; border-color: #534ab7; color: #fff; }

/* ===== 年度时间线 ===== */
.tl-head { display: grid; grid-template-columns: 160px repeat(12, 1fr); gap: 2px; font-size: 11px; color: #888; margin-bottom: 4px; }
.tl-head div:not(:first-child) { text-align: center; }
.tl-row { display: grid; grid-template-columns: 160px repeat(12, 1fr); gap: 2px; align-items: center; padding: 3px 0; border-top: 1px solid #f0f0f0; cursor: pointer; }
.tl-row:hover { background: #fafafa; }
.tl-name { font-size: 12px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; padding-right: 8px; color: #333; }
.tl-track { grid-column: 2 / 14; display: grid; grid-template-columns: repeat(12, 1fr); gap: 2px; }
.tl-cell { height: 14px; border-radius: 3px; background: #f1efea; }
.tl-cell.on { height: 14px; border-radius: 3px; }

/* ========== 产品化侧栏（分组 + 锁定） ========== */
.nav-group { margin-bottom: 8px; }
.nav-group-title { font-size: 11px; color: var(--muted); padding: 10px 16px 4px; letter-spacing: .5px; display: flex; align-items: center; gap: 6px; font-weight: 600; }
.nav-tag { background: var(--brand); color: #fff; font-size: 10px; padding: 1px 6px; border-radius: 6px; font-weight: 600; }
.sidebar a.locked { opacity: .72; }
.sidebar a.locked:hover { opacity: 1; }

/* ========== 素材中心 ========== */
.mat-toolbar { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 14px; align-items: center; }
.mat-toolbar input, .mat-toolbar select { flex: 0 0 auto; }
.mat-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 12px; }
.mat-card { border: 1px solid var(--line); border-radius: 10px; overflow: hidden; background: #fff; cursor: pointer; transition: .15s; }
.mat-card:hover { box-shadow: 0 4px 14px rgba(0,0,0,.08); transform: translateY(-2px); }
.mat-thumb { width: 100%; height: 130px; object-fit: cover; display: block; background: #f3f3f3; }
.mat-meta { padding: 8px 10px; }
.mat-title { font-size: 13px; font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.mat-tags { margin-top: 4px; display: flex; gap: 4px; flex-wrap: wrap; }
.mat-cat { font-size: 11px; background: #eef2ff; color: #3b4db8; padding: 1px 6px; border-radius: 5px; }
.mat-cat.gray { background: #f1f1f1; color: #666; }
.asset-preview { text-align: center; }
.btn.primary { background: var(--brand); color: #fff; }
.btn.danger { background: #e24b4a; color: #fff; }
.btn.ghost.danger { background: transparent; color: #e24b4a; border: 1px solid #e24b4a; }

/* ========== 每日签到 ========== */
.signin-wrap { display: grid; grid-template-columns: 320px 1fr; gap: 16px; align-items: start; }
.signin-hero { background: linear-gradient(135deg,#ff7e5f,#ff5e62); border-radius: 16px; padding: 28px 22px; color: #fff; text-align: center; box-shadow: 0 8px 24px rgba(255,94,98,.25); }
.signin-flame { font-size: 46px; line-height: 1; }
.signin-streak { font-size: 17px; margin-top: 8px; }
.signin-streak b { font-size: 30px; }
.signin-pts { font-size: 14px; margin-top: 6px; opacity: .95; }
.signin-pts b { font-size: 20px; }
.signin-btn { margin-top: 18px; width: 100%; background: #fff; color: #ff5e62; font-weight: 700; font-size: 16px; padding: 14px; border: none; box-shadow: 0 4px 12px rgba(0,0,0,.15); }
.signin-btn.done { background: rgba(255,255,255,.25); color: #fff; font-weight: 600; cursor: default; }
.signin-bonus { margin-top: 12px; font-size: 12px; opacity: .92; line-height: 1.5; }
.signin-side { display: flex; flex-direction: column; gap: 16px; }
.card-mini { background: #fff; border: 1px solid var(--line); border-radius: 12px; padding: 14px; }
.card-mini-title { font-weight: 600; font-size: 14px; margin-bottom: 10px; }
.cal-head, .cal-grid { display: grid; grid-template-columns: repeat(7,1fr); gap: 4px; }
.cal-head span { text-align: center; font-size: 11px; color: var(--muted); padding: 2px 0; }
.cal-cell { aspect-ratio: 1 / 1; display: flex; flex-direction: column; align-items: center; justify-content: center; font-size: 12px; border-radius: 6px; background: #f6f6f6; color: #888; position: relative; }
.cal-cell.empty { background: transparent; }
.cal-cell.done { background: #fff0ec; color: #ff5e62; font-weight: 600; }
.cal-cell.today { outline: 2px solid #ff5e62; outline-offset: -1px; }
.cal-pts { font-size: 9px; line-height: 1; margin-top: 1px; }
.heat-row { display: flex; flex-wrap: wrap; gap: 6px; }
.heat-cell { display: flex; flex-direction: column; align-items: center; min-width: 46px; padding: 6px 4px; border-radius: 8px; background: #fff0ec; color: #ff5e62; font-size: 11px; }
.heat-cell.today { outline: 2px solid #ff5e62; }
.heat-d { font-weight: 600; }
.heat-p { font-size: 10px; opacity: .8; }
.signin-exchange { margin-top: 16px; }
.ex-cards { display: grid; grid-template-columns: repeat(auto-fill,minmax(150px,1fr)); gap: 12px; }
.ex-card { border: 1px dashed #ffb3a7; border-radius: 12px; padding: 14px; text-align: center; background: #fffaf8; }
.ex-ico { font-size: 28px; }
.ex-name { font-weight: 600; font-size: 14px; margin-top: 6px; }
.ex-cost { font-size: 12px; color: #ff5e62; margin-top: 4px; }
.ex-tag { display: inline-block; margin-top: 6px; font-size: 10px; background: #ff5e62; color: #fff; padding: 1px 8px; border-radius: 8px; }
.hist-list { display: flex; flex-direction: column; gap: 6px; }
.hist-row { display: flex; align-items: center; gap: 12px; font-size: 13px; padding: 7px 10px; border-radius: 8px; background: #fafafa; }
.hist-row b { margin-left: auto; color: #ff5e62; }

/* ========== 幸运抽奖（大转盘） ========== */
.lottery-wrap { display: grid; grid-template-columns: 320px 1fr; gap: 20px; align-items: start; }
.lottery-wheel-area { position: relative; width: 280px; height: 280px; margin: 0 auto; }
.wheel-svg { display: block; border-radius: 50%; box-shadow: 0 10px 30px rgba(0,0,0,.12); background: #fff; }
#wheel-rot { transform-box: view-box; transform-origin: 120px 120px; transition: transform 2.6s cubic-bezier(.17,.67,.3,1.2); }
.wheel-pointer { position: absolute; top: -6px; left: 50%; transform: translateX(-50%); font-size: 26px; color: #ff3b3b; z-index: 3; filter: drop-shadow(0 2px 2px rgba(0,0,0,.2)); }
.wheel-center-btn { position: absolute; top: 50%; left: 50%; transform: translate(-50%,-50%); width: 78px; height: 78px; border-radius: 50%; border: 4px solid #fff; background: linear-gradient(135deg,#ff7e5f,#ff5e62); color: #fff; font-weight: 700; font-size: 15px; line-height: 1.15; cursor: pointer; box-shadow: 0 4px 14px rgba(255,94,98,.4); z-index: 2; }
.wheel-center-btn:disabled { cursor: default; opacity: .85; }
.wheel-center-btn .cost { font-size: 11px; font-weight: 500; opacity: .95; }
.lottery-side { display: flex; flex-direction: column; gap: 16px; }
.lottery-records { display: flex; flex-direction: column; gap: 6px; max-height: 280px; overflow-y: auto; }
.lottery-rec { display: flex; align-items: center; gap: 10px; font-size: 13px; padding: 7px 10px; border-radius: 8px; background: #fafafa; }
.lr-emoji { font-size: 18px; }
.lr-name { font-weight: 600; }
.lr-gain { margin-left: auto; color: #ff5e62; font-weight: 700; }
.lr-date { font-size: 11px; color: var(--muted); margin-left: 8px; }
.lottery-modal-mask { position: fixed; inset: 0; background: rgba(0,0,0,.45); display: flex; align-items: center; justify-content: center; z-index: 999; }
/* 图片放大 Lightbox */
.lightbox-overlay { position: fixed; inset: 0; background: rgba(0,0,0,.75); display: flex; align-items: center; justify-content: center; z-index: 900; cursor: zoom-out; animation: fadeIn .15s ease; }
@keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } }
.lottery-modal { background: #fff; border-radius: 18px; padding: 30px 36px; text-align: center; box-shadow: 0 20px 60px rgba(0,0,0,.3); animation: pop .3s ease; }
@keyframes pop { from { transform: scale(.8); opacity: 0; } to { transform: scale(1); opacity: 1; } }
.lm-emoji { font-size: 56px; line-height: 1; }
.lm-title { font-size: 22px; font-weight: 800; margin: 12px 0 6px; }
.lm-sub { font-size: 14px; color: var(--muted); margin-bottom: 18px; }

/* ========== AI 群聊 ========== */
.chat-demo-banner { background: #fff7e6; border: 1px solid #ffe0a3; color: #8a5a00; padding: 8px 12px; border-radius: 8px; font-size: 12px; margin-bottom: 12px; }
.chat-wrap { display: grid; grid-template-columns: 240px 1fr; gap: 14px; height: calc(100vh - 200px); min-height: 480px; }
.chat-side { background: #fff; border: 1px solid var(--line); border-radius: 12px; padding: 12px; overflow-y: auto; }
.chat-side-sec { margin-bottom: 16px; }
.chat-side-h { font-size: 12px; font-weight: 700; color: var(--muted); margin-bottom: 8px; }
.sess-list { display: flex; flex-direction: column; gap: 4px; }
.sess-item { font-size: 13px; padding: 7px 9px; border-radius: 8px; background: #f6f6f6; cursor: pointer; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.sess-item:hover { background: #eee; }
.sess-item.active { background: #e8edff; color: #3b4db8; font-weight: 600; }
.role-chips { display: flex; flex-wrap: wrap; gap: 6px; }
.role-chip { font-size: 12px; padding: 5px 10px; border-radius: 16px; background: #f1f1f1; color: #888; cursor: pointer; border: 1px solid transparent; user-select: none; }
.role-chip.on { background: #e8f7f0; color: #0F6E56; border-color: #9fe0c4; font-weight: 600; }
.chat-main { display: flex; flex-direction: column; background: #fff; border: 1px solid var(--line); border-radius: 12px; overflow: hidden; }
.chat-msgs { flex: 1; overflow-y: auto; padding: 16px; background: #fafbfc; }
.msg { display: flex; margin-bottom: 14px; }
.msg.user { justify-content: flex-end; }
.msg.user .bubble { background: var(--brand); color: #fff; border-radius: 14px 14px 4px 14px; padding: 9px 13px; max-width: 70%; font-size: 14px; line-height: 1.5; white-space: pre-wrap; }
.msg.ai { gap: 10px; align-items: flex-start; }
.msg.ai .avatar { width: 36px; height: 36px; border-radius: 50%; background: #fff; display: flex; align-items: center; justify-content: center; font-size: 20px; border: 1px solid var(--line); flex-shrink: 0; }
.ai-body { max-width: 80%; }
.ai-name { font-size: 11px; color: var(--muted); margin-bottom: 3px; }
.msg.ai .bubble { background: #fff; border: 1px solid var(--line); border-radius: 4px 14px 14px 14px; padding: 9px 13px; font-size: 14px; line-height: 1.6; white-space: pre-wrap; }
.chat-input { display: flex; gap: 10px; padding: 12px; border-top: 1px solid var(--line); background: #fff; }
.chat-input textarea { flex: 1; resize: none; border: 1px solid var(--line); border-radius: 10px; padding: 10px; font-size: 14px; font-family: inherit; }
.chat-input .btn { align-self: flex-end; }

/* ========== 方案中心 ========== */
.sol-search { display:flex; gap:8px; margin-bottom:14px; }
.sol-cats { display:flex; gap:6px; flex-wrap:wrap; margin-bottom:16px; }
.cat-btn { padding:5px 14px; border:1px solid var(--line); border-radius:20px; background:#fff; font-size:12px; color:var(--muted); cursor:pointer; transition:all .2s; }
.cat-btn:hover { border-color:var(--brand); color:var(--brand); }
.cat-btn.active { background:var(--brand); color:#fff; border-color:var(--brand); }
.sol-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(300px,1fr)); gap:14px; }
.sol-card { background:#fff; border:1px solid var(--line); border-radius:12px; padding:18px; cursor:pointer; transition:all .2s; position:relative; }
.sol-card:hover { border-color:var(--brand); box-shadow:0 4px 16px rgba(255,106,61,.12); transform:translateY(-2px); }
.sol-cat-tag { position:absolute;top:12px;right:12px;background:#f0f7ff;color:#185fa5;font-size:11px;padding:2px 10px;border-radius:10px; }
.sol-title { font-size:16px;font-weight:700;margin:6px 0 8px;line-height:1.4; }
.sol-summary { font-size:13px;color:var(--muted);line-height:1.6;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden; }
.sol-meta { display:flex; gap:8px; align-items:center; margin-top:10px; flex-wrap:wrap; }
.sol-tag { background:#fff3e0;color:#e65100;font-size:11px;padding:2px 8px;border-radius:4px; }
.sol-views { font-size:12px;color:#999;margin-left:auto; }
.sol-act { margin-top:10px;font-size:13px;color:var(--brand);font-weight:600; }
.sol-detail-body { max-height:60vh; overflow-y:auto;padding:16px;background:#fafbfc;border-radius:10px;font-size:14px;line-height:1.8; }
.sol-detail-body h2,.sol-detail-body h3,.sol-detail-body h4 { margin:12px 0 6px; color:var(--text); }
.sol-detail-body ul { padding-left:20px; }
.sol-detail-body li { margin:4px 0; }
.sol-detail-body .md-table { width:100%;border-collapse:collapse;margin:8px 0;font-size:13px; }
.sol-detail-body .md-table th,.sol-detail-body .md-table td { border:1px solid #ddd;padding:6px 10px;text-align:left; }
.sol-detail-body .md-table th { background:#f5f5f5; }

/* ========== 免费工具 ========== */
.ft-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(200px,1fr)); gap:14px; }
.ft-card { background:#fff; border:1px solid var(--line); border-radius:12px; padding:20px;text-align:center;cursor:pointer;transition:all .2s; }
.ft-card:hover { border-color:var(--brand); box-shadow:0 4px 12px rgba(0,0,0,.08); transform:translateY(-2px); }
.ft-ico { font-size:36px;margin-bottom:8px; }
.ft-name { font-size:15px;font-weight:700;margin-bottom:4px; }
.ft-desc { font-size:12px;color:var(--muted);line-height:1.4; }

/* ========== 集章寻宝·分享弹窗 ========== */
.share-box { background:#f4f8ff;border:1px solid var(--brand);border-radius:12px;padding:14px;margin-bottom:12px; }
.sb-title { font-weight:700;margin-bottom:8px;color:var(--brand); }
.sb-link { width:100%;font-size:13px;line-height:1.5;padding:8px 10px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--text);resize:vertical; }
.share-box .btn.sm { margin-top:8px; }

/* ========== 集章寻宝 / 任务打卡 ========== */
.task-progress { background:#fff;border:1px solid var(--line);border-radius:12px;padding:14px 16px;margin-bottom:16px; }
.tp-bar { height:10px;background:#eef0f3;border-radius:6px;overflow:hidden; }
.tp-fill { height:100%;background:linear-gradient(90deg,#ff9a3c,#ff5e62);transition:width .4s; }
.tp-text { font-size:13px;color:var(--muted);margin-top:8px;font-weight:600; }
.task-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(240px,1fr)); gap:14px; }
.task-card { background:#fff;border:1px solid var(--line);border-radius:12px;padding:16px;display:flex;gap:12px;align-items:center;transition:all .2s; }
.task-card.on { border-color:#ffb74d;background:#fffaf2; }
.task-icon { font-size:30px;flex:0 0 auto; }
.task-main { flex:1;min-width:0; }
.task-title { font-size:15px;font-weight:700; }
.task-desc { font-size:12px;color:var(--muted);margin:4px 0 8px; }
.stamp-done { color:#2e7d32;font-weight:600;font-size:13px; }
.stamp-ready { color:#ff8f00;font-weight:600;font-size:13px; }
.stamp-lock { color:#bbb;font-size:13px; }
.task-act { flex:0 0 auto; }
.task-claim { margin-top:18px;text-align:center; }
.claim-done { display:inline-block;background:#e8f5e9;color:#2e7d32;font-weight:700;padding:12px 20px;border-radius:10px; }
.btn.big { font-size:15px;padding:14px 28px; }

/* ========== 供需名片墙 ========== */
.market-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(280px,1fr)); gap:14px; }
.market-card { background:#fff;border:1px solid var(--line);border-radius:12px;padding:16px;display:flex;gap:12px; }
.mc-avatar { width:46px;height:46px;border-radius:50%;background:linear-gradient(135deg,#5b8def,#9b6dff);color:#fff;font-size:20px;font-weight:700;display:flex;align-items:center;justify-content:center;flex:0 0 auto; }
.mc-body { flex:1;min-width:0; }
.mc-name { font-size:15px;font-weight:700;margin-bottom:6px; }
.mc-tag { display:inline-block;background:#eef3ff;color:#3a6df0;font-size:12px;padding:2px 10px;border-radius:20px;margin-bottom:6px; }
.mc-line { font-size:13px;color:#555;margin:3px 0; }
.mc-demand { color:#e65100; }
.mc-phone { color:#888;font-size:12px; }

/* ========== 供应商公开名片区块 ========== */
.pub-card { margin-top:12px;padding:14px;border:1px dashed #c7c7e8;border-radius:10px;background:#fafaff; }
.pub-card-title { font-weight:600;margin-bottom:8px; }
.chk-row { display:flex;align-items:center;gap:6px;font-size:13px;cursor:pointer; }

/* ========== 项目佐证图网格 ========== */
.ev-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(120px,1fr)); gap:10px; }
.ev-card { border:1px solid #eee; border-radius:8px; overflow:hidden; background:#fff; }
.ev-card img { width:100%; height:110px; object-fit:cover; display:block; }
.ev-cap { font-size:12px; padding:6px 8px; color:#444; line-height:1.4; word-break:break-all; }

/* ========== 微信内授权引导遮罩（安卓/鸿蒙手动点击跳转，避免 webview 拦截） ========== */
.wx-auth-mask { position:fixed; inset:0; background:rgba(0,0,0,.55); z-index:99998; display:flex; align-items:center; justify-content:center; padding:24px; }
.wx-auth-card { background:#fff; border-radius:16px; padding:28px 22px; width:100%; max-width:320px; text-align:center; box-shadow:0 8px 30px rgba(0,0,0,.18); }
.wx-auth-title { font-size:18px; font-weight:700; color:#222; margin-bottom:8px; }
.wx-auth-tip { font-size:13px; color:#888; margin-bottom:18px; line-height:1.5; }
.wx-auth-qr { width:200px; height:200px; border:1px solid #eee; border-radius:10px; display:block; margin:0 auto; }

/* ========== 跨租户协作 ========== */
.collab-banner { background:#EAF0FF; border:1px solid #C9D6FF; color:#274690; border-radius:8px; padding:10px 12px; font-size:13px; margin-bottom:12px; }
.collab-sec-title { font-size:13px; font-weight:600; color:#534AB7; margin:16px 0 8px; }
.collab-card { display:flex; justify-content:space-between; align-items:center; gap:12px; background:#fff; border:1px solid var(--color-border); border-radius:10px; padding:12px 14px; margin-bottom:8px; }
.collab-card.rejected { opacity:.6; }
.collab-main { flex:1; }
.collab-ops { display:flex; gap:8px; align-items:center; }
.dir-results { margin:6px 0 4px; max-height:220px; overflow:auto; }
.dir-item { display:flex; justify-content:space-between; align-items:center; gap:10px; background:#fafaff; border:1px solid #eee; border-radius:8px; padding:8px 10px; margin-bottom:6px; }
.dir-info { font-size:13px; color:#333; }
.dir-info b { color:#222; }
