*{margin:0;padding:0;box-sizing:border-box}
:root{--primary:#5b73e8;--primary-hover:#4a62d8;--success:#27ae60;--danger:#e74c3c;--warning:#f39c12;--gray-50:#f8f9fa;--gray-100:#f0f2f5;--gray-200:#e8eaed;--gray-400:#9ca3af;--gray-500:#6b7280;--gray-800:#1f2937;--sidebar-w:220px;--shadow:0 1px 8px rgba(0,0,0,.06);--shadow-md:0 4px 16px rgba(0,0,0,.1)}

body{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;font-size:14px;color:#333;background:#f0f2f5;line-height:1.5}
a{color:var(--primary);text-decoration:none}

/* ============ 登录页 ============ */
.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#1a1a2e 0%,#16213e 50%,#0f3460 100%)}
.login-card{background:#fff;border-radius:16px;padding:50px 40px;width:420px;box-shadow:0 20px 60px rgba(0,0,0,.4)}
.login-logo{text-align:center;margin-bottom:30px}
.login-logo .logo-icon{width:56px;height:56px;border-radius:14px;display:inline-flex;align-items:center;justify-content:center;font-size:24px;font-weight:800;color:#fff;background:linear-gradient(135deg,var(--primary),#7c4dff)}
.login-logo h1{font-size:26px;color:#333;margin-top:12px}
.login-logo p{color:#999;font-size:14px;margin-top:5px}
.form-item{margin-bottom:20px}
.form-item label{display:block;font-size:14px;color:#555;margin-bottom:8px;font-weight:500}
.form-item input{width:100%;padding:12px 15px;border:1.5px solid #e0e0e0;border-radius:8px;font-size:15px;transition:border-color .2s}
.form-item input:focus{outline:none;border-color:var(--primary)}
.login-btn{width:100%;padding:13px;background:linear-gradient(135deg,var(--primary),#7c4dff);color:#fff;border:none;border-radius:8px;font-size:16px;cursor:pointer;font-weight:600;margin-top:10px;transition:opacity .2s}
.login-btn:hover{opacity:.9}
.login-error{color:var(--danger);font-size:13px;text-align:center;margin-top:10px;min-height:20px}

/* ============ 侧边栏 ============ */
.sidebar{width:var(--sidebar-w);background:linear-gradient(180deg,#1a1f3a 0%,#131830 60%,#10142a 100%);color:#fff;display:flex;flex-direction:column;position:fixed;top:0;left:0;bottom:0;z-index:100;box-shadow:2px 0 18px rgba(0,0,0,.25)}
.sidebar-brand{position:relative;padding:18px 18px 14px;border-bottom:1px solid rgba(255,255,255,.08);background:linear-gradient(180deg,rgba(255,255,255,.04),transparent)}
.sidebar-close{position:absolute;top:14px;right:12px;width:32px;height:32px;border:none;background:rgba(255,255,255,.1);color:#fff;border-radius:8px;font-size:14px;line-height:1;cursor:pointer;display:none;align-items:center;justify-content:center;-webkit-tap-highlight-color:transparent;transition:background .15s}
.sidebar-close:active{background:rgba(255,255,255,.22)}
.sidebar-brand h2{font-size:15px;font-weight:700;color:#fff;line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding-right:42px;letter-spacing:.2px}
.sidebar-brand p{font-size:12px;color:rgba(255,255,255,.5);margin-top:3px}
.sidebar-nav{flex:1;overflow-y:auto;padding:6px 0 14px}
.sidebar-nav::-webkit-scrollbar{width:5px}
.sidebar-nav::-webkit-scrollbar-thumb{background:rgba(255,255,255,.12);border-radius:5px}
.sidebar-nav::-webkit-scrollbar-thumb:hover{background:rgba(255,255,255,.2)}
.sidebar-nav::-webkit-scrollbar-track{background:transparent}

/* ── 部门分组小标（与菜单项强对比：更小、更暗、有下分隔线） ── */
.nav-section-title{font-size:10.5px;color:rgba(255,255,255,.38);padding:18px 22px 8px;font-weight:700;letter-spacing:1.2px;border-bottom:1px solid rgba(255,255,255,.06);text-transform:none}
.nav-section-title:hover{color:rgba(255,255,255,.6)}
.nav-section-title .nav-section-arrow{font-size:9px;opacity:.6;transition:transform .2s}
.nav-section-title.collapsed{border-bottom:none}
.nav-section-body{overflow:hidden}
.nav-section-title:first-child{padding-top:10px}
.nav-subtitle{font-size:10px;color:#7c93ff;padding:11px 22px 5px;font-weight:700;letter-spacing:.8px;margin-top:6px;border-top:1px solid rgba(255,255,255,.07)}

/* ── 菜单项：卡片化、与分组拉开距离 ── */
.nav-item{display:flex;align-items:center;gap:12px;padding:10px 14px;margin:2px 12px;border-radius:9px;cursor:pointer;transition:background .18s,color .18s,transform .18s;font-size:14px;color:rgba(255,255,255,.72);border-left:3px solid transparent;min-height:40px}
.nav-item:active{transform:scale(.985)}
.nav-item:hover{background:rgba(255,255,255,.07);color:#fff}
.nav-item.active{background:linear-gradient(90deg,rgba(91,115,232,.42) 0%,rgba(91,115,232,.14) 100%);color:#fff;border-left-color:#7c93ff;font-weight:600;box-shadow:0 2px 8px rgba(91,115,232,.18)}
.nav-item .nav-icon{font-size:18px;width:24px;text-align:center;flex-shrink:0;filter:drop-shadow(0 1px 1px rgba(0,0,0,.2))}

.sidebar-user{padding:14px 14px;border-top:1px solid rgba(255,255,255,.08);display:flex;align-items:center;gap:10px;cursor:pointer;position:relative;background:rgba(0,0,0,.12)}
.sidebar-user:hover{background:rgba(255,255,255,.06)}
.user-avatar{width:38px;height:38px;border-radius:50%;background:linear-gradient(135deg,var(--primary),#7c4dff);display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:700;color:#fff;flex-shrink:0;box-shadow:0 2px 6px rgba(91,115,232,.4)}
.user-name{font-size:13.5px;color:#fff;font-weight:500;line-height:1.3}
.user-role{font-size:11px;color:rgba(255,255,255,.55);margin-top:2px;line-height:1.3}
.user-menu-arrow{margin-left:auto;color:rgba(255,255,255,.4);font-size:12px;transition:transform .2s}
.sidebar-user.open .user-menu-arrow{transform:rotate(180deg)}
/* 用户下拉菜单 */
.user-dropdown{display:none;position:absolute;bottom:100%;left:0;right:0;background:#1e293b;border-radius:10px 10px 0 0;padding:4px 0;box-shadow:0 -4px 20px rgba(0,0,0,.3);z-index:100;flex-direction:flex-column;min-width:160px}
.sidebar-user.open .user-dropdown{display:flex}
.user-dropdown a{display:flex;align-items:center;gap:8px;padding:10px 16px;color:rgba(255,255,255,.8);font-size:13px;text-decoration:none;transition:background .15s}
.user-dropdown a:hover{background:rgba(255,255,255,.1);color:#fff}

/* ============ 内容区 ============ */
.main-area{flex:1;margin-left:var(--sidebar-w);display:flex;flex-direction:column;min-height:100vh}
.topbar{background:#fff;padding:0 30px;height:60px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--gray-200);flex-shrink:0;position:sticky;top:0;z-index:50}
.topbar-left{display:flex;align-items:center;gap:14px}
.topbar-left h2{font-size:20px;font-weight:600;color:#333}
.topbar-right{display:flex;align-items:center;gap:15px}
.topbar-right .icon-btn{position:relative;background:none;border:none;cursor:pointer;font-size:20px;padding:8px}
.badge-dot{position:absolute;top:2px;right:2px;background:var(--danger);color:#fff;padding:1px 5px;border-radius:10px;font-size:11px;font-weight:600;display:none}
.page-body{flex:1;overflow-y:auto;padding:25px 30px}
.menu-toggle{display:none;background:none;border:none;font-size:20px;cursor:pointer;color:#666;padding:4px}
.top-back-btn{background:none;border:none;font-size:22px;cursor:pointer;color:var(--primary);padding:0 6px;line-height:1.4;font-weight:700;min-width:44px;height:44px;text-align:center;transition:opacity .15s;flex-shrink:0;border-radius:6px;display:flex;align-items:center;justify-content:center;-webkit-tap-highlight-color:transparent}
.top-back-btn:active{opacity:.6}
.mobile-logout-btn{display:none;align-items:center;gap:4px;background:none;border:1px solid var(--gray-200);color:#666;font-size:12px;padding:5px 10px;border-radius:6px;cursor:pointer;white-space:nowrap;-webkit-tap-highlight-color:transparent;transition:all .15s}
/* ============ 全局待办铃铛 ============ */
.bell-wrap{position:relative}
.bell-btn{position:relative;background:none;border:none;cursor:pointer;font-size:20px;padding:6px 8px;-webkit-tap-highlight-color:transparent;line-height:1}
.bell-btn:active{opacity:.6}
.bell-dot{position:absolute;top:0;right:0;min-width:16px;height:16px;padding:0 4px;background:#ff5a5f;color:#fff;border-radius:9px;font-size:11px;font-weight:700;display:flex;align-items:center;justify-content:center;line-height:1;border:2px solid #fff;box-sizing:content-box}
.bell-dot.has-unread{font-size:0;border-radius:50%}
.bell-dot.has-unread::after{content:"";width:7px;height:7px;background:#fff;border-radius:50%}
.bell-panel{position:absolute;top:46px;right:0;width:280px;max-width:88vw;background:#fff;border-radius:14px;box-shadow:0 10px 36px rgba(0,0,0,.18);z-index:200;overflow:hidden}
.bell-panel-head{display:flex;align-items:center;justify-content:space-between;padding:12px 14px;border-bottom:1px solid #eee;font-size:14px;font-weight:700;color:#333}
.bell-panel-sub{font-size:12px;font-weight:500;color:#3aa76d}
.bell-list{max-height:340px;overflow-y:auto;padding:6px}
.bell-item{display:flex;align-items:center;justify-content:space-between;padding:11px 12px;border-radius:10px;text-decoration:none;color:#333;font-size:13px;transition:background .12s}
.bell-item:hover,.bell-item:active{background:#f4f6ff}
.bell-item-label{color:#555}
.bell-item-count{background:#ff5a5f;color:#fff;font-weight:700;font-size:12px;padding:1px 8px;border-radius:10px;min-width:20px;text-align:center}
.bell-item-none{color:#bbb;font-size:13px}
.bell-item.active .bell-item-label{color:#d9393f;font-weight:600}
.bell-item.is-msg.active{background:#f4f6ff}
.bell-item.is-msg.active .bell-item-label{color:#5b73e8}
.bell-empty{padding:24px 12px;text-align:center;color:#3aa76d;font-size:13px;font-weight:600}
.bell-foot{padding:9px 14px;border-top:1px solid #eee;text-align:right}
.bell-foot a{color:#5b73e8;font-size:13px;text-decoration:none}
.mobile-logout-btn:active{background:var(--gray-100);color:var(--danger)}

/* ============ 右上角下载客户端弹窗（t67）============ */
.dl-pop{max-width:440px}
.dl-sec-h{font-size:15px;font-weight:700;margin:4px 0 10px;color:#333}
.dl-qr{background:#fff;border:1px solid var(--gray-200);border-radius:12px;padding:10px;display:inline-block}
.dl-qr img{width:160px;height:160px;display:block}
.dl-btn-a{display:block;width:100%;box-sizing:border-box;text-align:center;padding:12px;border-radius:10px;background:#5b73e8;color:#fff;font-weight:700;text-decoration:none;margin:12px 0 4px;cursor:pointer;-webkit-tap-highlight-color:transparent}
.dl-btn-a:active{opacity:.85}
.dl-tip{font-size:12.5px;color:#888;line-height:1.75;background:#f7f8fc;border-radius:10px;padding:11px 13px;margin-top:8px}
.dl-tip b{color:#5b73e8}

/* ============ 统计卡片 ============ */
.stats-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:22px}
.stat-card{background:#fff;border-radius:12px;padding:22px;box-shadow:0 1px 3px rgba(15,23,42,.05);border:1px solid rgba(15,23,42,.04);display:flex;align-items:center;gap:15px;transition:transform .15s}
.stat-card:hover{transform:translateY(-2px);box-shadow:0 6px 16px rgba(15,23,42,.08)}
.stat-card.clickable{cursor:pointer}
.ohr-kpi-ic{width:44px;height:44px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:22px;flex-shrink:0;background:#eef0ff}
.stat-info .val{font-size:24px;font-weight:600;color:#1f2937;letter-spacing:-.3px}
.stat-info .lbl{font-size:13px;color:#9aa3b2;margin-top:4px}
.bg-blue{background:#e8eeff}.bg-green{background:#e8f8f0}.bg-orange{background:#fff4e6}
.bg-red{background:#ffeaea}.bg-purple{background:#f3e8ff}.bg-teal{background:#e0f7fa}

/* ============ 卡片 ============ */
.card{background:#fff;border-radius:12px;padding:22px;box-shadow:0 1px 3px rgba(15,23,42,.05);border:1px solid rgba(15,23,42,.04);margin-bottom:20px}
.card-title{font-size:16px;font-weight:600;color:#333;margin-bottom:15px;padding-bottom:12px;border-bottom:2px solid var(--gray-100);display:flex;align-items:center;gap:8px}

/* ============ 预警 ============ */
.alert{padding:12px 15px;border-radius:8px;margin-bottom:15px;font-size:14px}
.alert-warning{background:#fff3cd;color:#856404;border-left:4px solid var(--warning)}
.alert-danger{background:#f8d7da;color:#721c24;border-left:4px solid var(--danger)}
.alert-info{background:#cce5ff;color:#004085;border-left:4px solid #3498db}

/* ============ 表格 ============ */
.table-wrap{overflow-x:auto}
.table{width:100%;border-collapse:collapse}
.table th{padding:11px 15px;background:var(--gray-50);font-size:13px;font-weight:600;color:#555;text-align:left;border-bottom:1px solid var(--gray-200)}
.table td{padding:12px 15px;font-size:14px;color:#333;border-bottom:1px solid var(--gray-100)}
.table tr:hover td{background:#fafbfc}

/* ============ 按钮 ============ */
.btn{padding:8px 18px;border:none;border-radius:6px;cursor:pointer;font-size:13px;font-weight:500;transition:all .2s}
.btn-primary{background:var(--primary);color:#fff}.btn-primary:hover{background:var(--primary-hover)}
.btn-success{background:var(--success);color:#fff}.btn-success:hover{background:#219a52}
.btn-danger{background:var(--danger);color:#fff}.btn-danger:hover{background:#c0392b}
.btn-warning{background:var(--warning);color:#fff}.btn-warning:hover{background:#d68910}
.btn-sm{padding:5px 12px;font-size:12px}
/* 主播档案合并视图：团播 / 个播 双档案 Tab
 * t166 改造：把 Tab 条做成「整条 Tab 导航」而不是「按钮抱团」——
 *   容器一条白底 + 1px 淡边框 + 圆角 + 内 padding；子按钮 flex:1 等分铺满；
 *   激活用单紫渐变 (#6366f1→#4f46e5)；图标 14px 半透明 0.75，激活态 1.0
 *   整体对齐老 OA「人事系统」顶部 Tab 布局（全宽等分 + 细线小图标） */
.archive-tabs{display:flex;gap:0;margin-bottom:18px;background:#fff;border-radius:12px;padding:5px;border:1px solid #e6e8ef;box-shadow:0 1px 3px rgba(15,23,42,.04)}
.archive-tabs .btn{flex:1;min-width:0;background:transparent;color:#64748b;font-weight:500;padding:11px 4px;border-radius:8px;font-size:13px;display:inline-flex;align-items:center;justify-content:center;gap:5px;transition:all .2s ease;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;border:1px solid transparent}
.archive-tabs .btn:hover{background:#f5f7fc;color:#1f2937}
.archive-tabs .btn.active{background:linear-gradient(135deg,#6366f1 0%,#4f46e5 100%);color:#fff;font-weight:600;box-shadow:0 2px 8px rgba(99,102,241,.25);border-color:transparent}
.archive-tabs .btn .tab-ic{font-size:14px;line-height:1;opacity:.75;flex-shrink:0;display:inline-flex;align-items:center;justify-content:center}
.archive-tabs .btn.active .tab-ic{opacity:1}
@media(max-width:768px){
  .archive-tabs{padding:4px}
  .archive-tabs .btn{padding:10px 2px;font-size:12.5px;gap:3px}
  .archive-tabs .btn .tab-ic{font-size:13px}
}
.btn-outline{background:#fff;border:1px solid var(--primary);color:var(--primary)}.btn-outline:hover{background:var(--primary);color:#fff}
.btn-group{display:flex;gap:8px}

/* ============ 标签 ============ */
.tag{display:inline-block;padding:3px 10px;border-radius:20px;font-size:12px;font-weight:500}
.tag-pending{background:#fff3cd;color:#856404}.tag-approved{background:#d4edda;color:#155724}.tag-terminal{background:#fbeaea;color:#c0392b}
.tag-rejected{background:#f8d7da;color:#721c24}.tag-info{background:#cce5ff;color:#004085}
.tag-success{background:#d4edda;color:#155724}.tag-warning{background:#ffeeba;color:#856404}

/* ---- badge 徽标（t80 补齐）：多个模块（人员管理/主播端/导入预览）早已使用
   .badge badge-green/red/gray/blue/purple，但主应用样式表一直缺失，导致渲染成无样式纯文本，
   「待核薪」等关键红标失去警示效果。此处统一补齐，与 .tag 视觉体系保持一致。 ---- */
.badge{display:inline-block;padding:2px 9px;border-radius:999px;font-size:12px;font-weight:600;line-height:1.6;white-space:nowrap}
.badge-green{background:#d1fae5;color:#065f46}
.badge-red{background:#fee2e2;color:#b91c1c}
.badge-gray{background:#eef2f7;color:#475569}
.badge-blue{background:#dbeafe;color:#1d4ed8}
.badge-purple{background:#ede9fe;color:#6d28d9}
.badge-orange{background:#ffedd5;color:#c2410c}

/* ============ 表单 ============ */
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:15px}
.form-group{margin-bottom:15px}
.form-group label{display:block;font-size:13px;color:#555;margin-bottom:6px;font-weight:500}
.form-group input,.form-group select,.form-group textarea{width:100%;padding:9px 12px;border:1.5px solid #e0e0e0;border-radius:6px;font-size:14px;transition:border-color .2s;font-family:inherit}
.form-group input:focus,.form-group select:focus,.form-group textarea:focus{outline:none;border-color:var(--primary)}
.form-group textarea{resize:vertical;min-height:80px}
.form-group.row2 .time-pair{display:flex;align-items:center;gap:8px}
.form-group.row2 .time-pair .time-sep{color:#777;font-size:13px;white-space:nowrap}
.form-group.row2 .time-pair input[type="time"]{flex:1;min-width:0}

/* ============ 搜索栏 ============ */
.search-bar{display:flex;gap:10px;margin-bottom:20px;align-items:center;flex-wrap:wrap}
.search-bar input,.search-bar select{padding:8px 12px;border:1.5px solid #e0e0e0;border-radius:6px;font-size:14px}
.search-bar input{flex:1;min-width:200px}
.search-bar input:focus,.search-bar select:focus{outline:none;border-color:var(--primary)}

/* ============ 模态框 ============ */
.modal-overlay{display:none;position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,.5);z-index:1000;justify-content:center;align-items:center}
.modal-overlay.show{display:flex}
.modal-box{background:#fff;border-radius:12px;width:520px;max-width:95%;max-height:85vh;overflow-y:auto;box-shadow:0 20px 60px rgba(0,0,0,.3)}
.modal-header{padding:20px 25px 15px;border-bottom:1px solid var(--gray-100);display:flex;align-items:center;justify-content:space-between}
.modal-header h3{font-size:17px;font-weight:600}
.modal-close{background:none;border:none;font-size:22px;cursor:pointer;color:#999;line-height:1}
.modal-close:hover{color:#333}
.modal-body{padding:20px 25px}
.modal-footer{padding:15px 25px;border-top:1px solid var(--gray-100);display:flex;justify-content:flex-end;gap:10px}

/* 大弹窗（用于复杂表单） */
.modal-box.modal-lg{width:780px;max-width:92vw}
.modal-box.modal-lg .modal-body{padding:20px 24px}
.modal-box.modal-lg .modal-footer{padding:14px 24px}

/* 超大弹窗（主播详情 9 卡片等宽屏表单） */
.modal-box.modal-xl{width:1080px;max-width:94vw}
.modal-box.modal-xl .modal-body{padding:22px 28px}
.modal-box.modal-xl .modal-footer{padding:16px 28px}

/* ============ 右侧滑出面板（Drawer） ============ */
.drawer-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,.35);z-index:1100;display:flex;justify-content:flex-end;opacity:0;visibility:hidden;transition:opacity .25s,visibility .25s}
.drawer-overlay.show{opacity:1;visibility:visible}
.drawer-panel{width:560px;max-width:92vw;height:100%;background:#fff;box-shadow:-8px 0 30px rgba(0,0,0,.15);transform:translateX(100%);transition:transform .3s cubic-bezier(.4,0,.2,1);display:flex;flex-direction:column}
.drawer-overlay.show .drawer-panel{transform:translateX(0)}
.drawer-header{display:flex;align-items:center;justify-content:space-between;padding:18px 24px;border-bottom:1px solid var(--gray-100);flex-shrink:0}
.drawer-header h3{font-size:17px;font-weight:600;margin:0}
.drawer-close{background:none;border:none;font-size:24px;cursor:pointer;color:#999;line-height:1;padding:0 4px;border-radius:4px;transition:color .15s}
.drawer-close:hover{color:#333;background:var(--gray-50)}
.drawer-body{flex:1;overflow-y:auto;padding:20px 24px}
.drawer-body .form-grid{grid-template-columns:1fr 1fr}
.drawer-footer{display:flex;justify-content:flex-end;gap:10px;padding:15px 24px;border-top:1px solid var(--gray-100);flex-shrink:0}

/* ============ 空状态 ============ */
.empty-state{text-align:center;padding:50px 20px;color:#999}
.empty-state .empty-icon{font-size:48px;margin-bottom:15px;display:block}
.empty-state p{font-size:15px}

/* ============ 管道看板 ============ */
.pipeline-board{display:flex;gap:16px;overflow-x:auto;padding:4px 0;min-height:300px}
.pipeline-col{min-width:260px;background:var(--gray-100);border-radius:12px;padding:12px}
.pipeline-col h4{font-size:13px;font-weight:600;padding:4px 8px 10px;display:flex;justify-content:space-between}
.pipeline-col h4 .cnt{color:#999;font-weight:400;font-size:12px}
.pipeline-item{background:#fff;border-radius:8px;padding:12px;margin-bottom:8px;cursor:pointer;border:1px solid var(--gray-200);transition:all .15s}
.pipeline-item:hover{border-color:#ccc;box-shadow:var(--shadow)}
.pipeline-item .pi-name{font-weight:600;font-size:14px;margin-bottom:4px}
.pipeline-item .pi-meta{font-size:12px;color:#999;display:flex;gap:12px}
.pipeline-item .pi-foot{font-size:11px;color:#aaa;display:flex;justify-content:space-between;margin-top:6px;border-top:1px dashed #f0f0f0;padding-top:6px}
.pipeline-item .pi-broker{color:#5b73e8}
.pipeline-col h4 .dot{width:10px;height:10px;border-radius:3px;display:inline-block;margin-right:6px;vertical-align:middle}
.dot{width:12px;height:12px;border-radius:3px;display:inline-block}

/* 视图切换（看板/列表） */
.view-seg{display:inline-flex;border:1px solid var(--gray-200);border-radius:8px;overflow:hidden;background:#fff}
.view-seg button{background:#fff;border:none;padding:7px 16px;font-size:13px;cursor:pointer;color:var(--gray-500);font-weight:500;font-family:inherit}
.view-seg button+button{border-left:1px solid var(--gray-200)}
.view-seg button.active{background:var(--primary);color:#fff}

/* 列表视图 */
.pf-list-wrap{overflow-x:auto;background:#fff;border:1px solid var(--gray-200);border-radius:12px}
.pf-table{width:100%;border-collapse:collapse;font-size:13px}
.pf-table thead th{position:sticky;top:0;background:var(--gray-100);text-align:left;padding:11px 14px;font-weight:600;color:var(--gray-500);white-space:nowrap;border-bottom:1px solid var(--gray-200)}
.pf-table tbody td{padding:10px 14px;border-bottom:1px solid #f3f4f6;white-space:nowrap;color:var(--gray-800)}
.pf-table tbody tr{cursor:pointer;transition:background .12s}
.pf-table tbody tr:hover{background:#f6f8ff}
.pf-stage-badge{display:inline-block;padding:3px 10px;border-radius:20px;color:#fff;font-size:12px;font-weight:500;white-space:nowrap}

/* 招募看板：顶部筛选条 + 优先级徽章 */
.pf-filterbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px;background:#fff;border:1px solid var(--gray-200);border-radius:12px;padding:10px 12px;margin-bottom:14px}
.pf-search{flex:1;min-width:180px;padding:8px 12px;border:1px solid var(--gray-200);border-radius:8px;font-size:.85rem;outline:none}
.pf-search:focus{border-color:var(--primary)}
.pf-filterbar>select{padding:8px 10px;border:1px solid var(--gray-200);border-radius:8px;font-size:.85rem;background:#fff;outline:none;cursor:pointer}
.pf-filter-right{margin-left:auto;display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.pf-batchbar{display:flex;align-items:center;gap:8px;background:#fff7ed;border:1px solid #fed7aa;border-radius:8px;padding:5px 10px}
.pf-batch-count{font-size:.82rem;color:#b45309;white-space:nowrap}
.pf-batchbar>select{padding:5px 8px;border:1px solid #fed7aa;border-radius:6px;font-size:.8rem;background:#fff}
.pf-cb{width:36px;text-align:center}
.pf-row-cb{width:15px;height:15px;cursor:pointer}
.pri-badge{display:inline-block;padding:2px 9px;border-radius:11px;font-size:12px;font-weight:600;white-space:nowrap}
.pri-urgent{background:#fee2e2;color:#dc2626}
.pri-normal{background:#e0edff;color:#2563eb}
.pri-low{background:#f1f1f1;color:#888}
.pi-pri{display:inline-block;font-size:11px;padding:1px 6px;border-radius:8px;margin-left:4px;vertical-align:middle}
.pi-pri.pri-urgent{background:#fee2e2;color:#dc2626}
.pi-pri.pri-normal{background:#e0edff;color:#2563eb}
.pi-pri.pri-low{background:#f1f1f1;color:#888}
@media(max-width:768px){.pf-filterbar{gap:6px}.pf-filter-right{margin-left:0;width:100%}}


/* ============ Toast ============ */
.toast{position:fixed;top:20px;right:20px;z-index:2000;padding:12px 20px;border-radius:8px;font-size:13px;color:#fff;box-shadow:var(--shadow-md);animation:toastIn .3s}
.toast-success{background:#27ae60}.toast-error{background:#e74c3c}.toast-info{background:var(--primary)}
@keyframes toastIn{from{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}

/* ============ 流程步骤 ============ */
.flow-steps{display:flex;align-items:center;gap:0;margin-bottom:16px;flex-wrap:wrap}
.flow-step{padding:4px 10px;border-radius:20px;font-size:12px;font-weight:500}
.flow-step.done{background:#d4edda;color:#155724}
.flow-step.active{background:#fff3cd;color:#856404}
.flow-step.waiting{background:var(--gray-100);color:#999}
.flow-step.terminal{background:#fbeaea;color:#c0392b;border:1px dashed #e0a3a3}
.flow-terminal-group{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:12px;padding-top:10px;border-top:1px dashed #eee}
.flow-terminal-label{font-size:12px;color:#999}
.flow-arrow{color:#ccc;padding:0 3px;font-size:14px}
.flow-branch{margin-top:10px;font-size:12px;color:#999;background:#fafafa;border-radius:6px;padding:6px 10px}
.flow-branch b{font-weight:600}

/* ============ 招募看板两栏布局 ============ */
.pf-layout{display:flex;gap:16px;align-items:flex-start}
.pf-main{flex:1;min-width:0}
.pf-side{width:320px;flex:0 0 320px;position:sticky;top:25px;align-self:flex-start;max-height:calc(100vh - 110px);overflow-y:auto}
.pf-side .card{margin-bottom:0}

@media(max-width:1100px){
  .pf-layout{flex-direction:column}
  .pf-side{width:100%;flex:0 0 auto;position:static;max-height:none;overflow:visible}
}

/* ============ 企宣部统计卡 ============ */
.eq-stats{display:flex;gap:12px;margin-bottom:16px}
.eq-stat{display:flex;align-items:center;gap:14px;background:#fff;border-radius:10px;padding:16px 20px;box-shadow:0 1px 6px rgba(0,0,0,.05);flex:1;min-width:0;border-left:3px solid transparent}
.eq-stat-blue{border-left-color:#5b73e8}.eq-stat-green{border-left-color:#27ae60}.eq-stat-orange{border-left-color:#f39c12}.eq-stat-purple{border-left-color:#9b59b6}.eq-stat-red{border-left-color:#e74c3c}.eq-stat-teal{border-left-color:#00acc1}
.eq-stat .ic{font-size:26px;line-height:1;flex-shrink:0;width:40px;text-align:center}
.eq-stat>div{display:flex;flex-direction:column;gap:2px;min-width:0}
.eq-stat .num{font-size:24px;font-weight:700;color:#222;line-height:1.2}
.eq-stat .lbl{font-size:12px;color:#999}

/* ============ 模块内容区通用 ============ */
.page-header{margin-bottom:20px}
.page-header h2{font-size:18px;font-weight:600}
.page-header p{color:#999;font-size:13px;margin-top:4px}
.cd-stat{display:flex;flex-direction:column;gap:3px;min-width:64px}
.cd-stat span{font-size:12px;color:#999}
.cd-stat b{font-size:15px;font-weight:600;color:#222;line-height:1.15}
.flex-between{display:flex;justify-content:space-between;align-items:center}
.text-muted{color:var(--gray-500)}.text-sm{font-size:12px}.text-center{text-align:center}
.mb{margin-bottom:16px}.mt{margin-top:16px}.gap-sm{gap:8px}
.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.grid-4{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}

/* ===== 化妆采购入库（t390） ===== */
.mk-form{display:flex;flex-direction:column;gap:12px}
.mk-field{display:flex;flex-direction:column}
.mk-field>label{font-size:12px;color:#64748b;margin-bottom:4px}
.mk-row{display:flex;gap:10px}
.mk-row>div{flex:1;display:flex;flex-direction:column}
.mk-purchase-list{display:flex;flex-direction:column;gap:10px}
.mk-purchase-card{padding:12px;border:1px solid #e2e8f0;border-radius:10px;background:#fff}
.mk-tabs{overflow-x:auto;-webkit-overflow-scrolling:touch}
.mk-tab{flex:0 0 auto;white-space:nowrap}

@media(max-width:768px){
  .stats-grid,.grid-2,.grid-3,.grid-4{grid-template-columns:repeat(2,1fr)}
  .form-grid{grid-template-columns:1fr}
  .sidebar{left:-100%;transition:left .3s;z-index:200;width:82%;max-width:320px}
  .sidebar.open{left:0}
  .sidebar-brand h2{font-size:14px;padding-right:48px}
  .nav-section-title{padding:16px 20px 8px}
  .nav-item{box-sizing:border-box;width:auto}
  .main-area{margin-left:0}
  .menu-toggle{display:flex;align-items:center;justify-content:center;width:44px;height:44px;background:none;border:none;font-size:20px;cursor:pointer;color:#666;border-radius:6px;-webkit-tap-highlight-color:transparent;active:background:var(--gray-100)}
  .page-body{padding:14px 14px calc(74px + env(safe-area-inset-bottom))}
  .pipeline-board{flex-direction:column}
  .topbar{height:54px;padding:0 16px}
  .topbar-left h2{font-size:17px}
  .mobile-logout-btn{display:inline-flex}
  .btn{padding:11px 18px;font-size:15px;min-height:44px}
  .btn-sm{padding:8px 14px;min-height:36px;font-size:13px}
  .form-item input{padding:14px 15px;font-size:16px}
  .form-group input,.form-group select,.form-group textarea{padding:12px 14px;font-size:16px}
  .table th,.table td{padding:12px 12px;font-size:13px}
  .nav-item{padding:14px 20px;font-size:15px}
  .stat-info .val{font-size:24px}
  .modal-box{width:100%;height:100%;max-height:100%;border-radius:0}
  .drawer-panel{width:100%;max-width:100%}
  .mobile-tabbar{display:flex!important;position:fixed;left:0;right:0;bottom:0;z-index:90;height:calc(56px + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);background:#fff;border-top:1px solid var(--gray-200);box-shadow:0 -2px 12px rgba(0,0,0,.08);align-items:stretch}
  .mtab{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;color:var(--gray-500);font-size:11px;text-decoration:none;min-width:0}
  .mtab-icon{font-size:20px;line-height:1}
  .mtab-label{font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
  .mtab.active{color:var(--primary)}
  .mtab.active .mtab-icon{transform:translateY(-1px)}
  .sidebar-backdrop{display:none;position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:150}
  .sidebar-backdrop.show{display:block}
  .sidebar-close{display:flex}
  .mk-row{flex-direction:column}
}
.mobile-tabbar{display:none}
.sidebar-backdrop{display:none}

/* ============ 每日汇报 / 工作量录入 ============ */
.wl-table{width:100%;border-collapse:collapse;margin-top:4px}
.wl-table .wl-cat td{background:var(--gray-50);font-weight:600;color:var(--gray-800);font-size:13px;padding:9px 12px;border-bottom:1px solid var(--gray-200)}
.wl-table .wl-head td{background:#fff;font-size:12px;font-weight:600;color:var(--gray-500);padding:8px 10px;border-bottom:1px solid var(--gray-100)}
.wl-table .wl-row td{padding:6px 8px;border-bottom:1px solid var(--gray-100);vertical-align:middle}
.wl-table .wl-platform{font-weight:600;color:#333;font-size:13px;white-space:nowrap}
.wl-input{width:100%;min-width:72px;padding:7px 10px;border:1px solid var(--gray-200);border-radius:6px;font-size:13px;font-family:inherit;background:#fff;box-sizing:border-box}
.wl-input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px rgba(91,115,232,.1)}
.wl-report-title{font-size:16px;font-weight:700;color:var(--gray-800)}
.wl-report-subtitle{font-size:13px;color:var(--gray-500);margin-top:4px;margin-bottom:14px}
.wl-summary-card{background:var(--gray-50);border:1px solid var(--gray-100);border-radius:10px;padding:16px}
.wl-summary-title{font-size:14px;font-weight:600;color:var(--gray-800);margin-bottom:12px}
.wl-summary-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.wl-summary-item{display:flex;flex-direction:column;gap:4px;background:#fff;border:1px solid var(--gray-100);border-radius:8px;padding:10px}
.wl-summary-item span:first-child{font-size:12px;color:var(--gray-500)}
.wl-summary-item span:last-child{font-size:18px;font-weight:700;color:var(--primary)}
@media(max-width:768px){.wl-summary-grid{grid-template-columns:repeat(2,1fr)}}

/* ============ 候选人沟通记录与跟踪 ============ */
.comm-next{display:flex;flex-direction:column;gap:4px;background:linear-gradient(135deg,#eef2ff,#f5f3ff);border:1px solid #dbe3ff;border-left:4px solid var(--primary);border-radius:8px;padding:12px 14px;margin-bottom:4px}
.comm-next-label{font-size:12px;font-weight:600;color:var(--primary)}
.comm-next-body{font-size:14px;color:var(--gray-800)}
.comm-empty{color:var(--gray-400);font-size:13px;padding:8px 0}
.comm-timeline{display:flex;flex-direction:column;gap:0}
.comm-item{display:flex;gap:12px;padding:12px 0;border-bottom:1px solid var(--gray-100)}
.comm-item:last-child{border-bottom:none}
.comm-dot{width:10px;height:10px;border-radius:50%;background:var(--primary);margin-top:5px;flex:0 0 auto;box-shadow:0 0 0 3px rgba(91,115,232,.15)}
.comm-content{flex:1;min-width:0}
.comm-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:4px}
.comm-who{font-size:13px;font-weight:600;color:var(--gray-800)}
.comm-time{font-size:12px;color:var(--gray-400)}
.comm-text{font-size:14px;color:var(--gray-800);white-space:pre-wrap;line-height:1.5}
.comm-next-inline{margin-top:6px;font-size:12px;color:var(--primary);background:rgba(91,115,232,.08);border-radius:6px;padding:5px 8px}
.comm-actions{margin-top:10px;display:flex;gap:6px}
.btn-xs{padding:3px 9px;font-size:12px;border-radius:5px;line-height:1.5}
.btn-danger{background:#fff;color:#e23d3d;border:1px solid #f0b4b4}
.btn-danger:hover{background:#fdecec;border-color:#e88989}

/* 人员管理：角色/部门多选标签芯片 */
.su-chip{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border:1.6px solid var(--gray-200,#e2e8f0);border-radius:10px;font-size:13px;font-weight:500;color:#334155;cursor:pointer;transition:all .15s ease;user-select:none}
.su-chip:hover{border-color:#818cf8;box-shadow:0 1px 6px rgba(79,70,229,.18)}
.su-chip.on{background:#4f46e5;border-color:#4f46e5;color:#fff}
.su-chip.on:hover{border-color:#6366f1;box-shadow:0 1px 8px rgba(79,70,229,.3)}
.su-chip-green:hover{border-color:#34d399;box-shadow:0 1px 6px rgba(5,150,105,.18)}
.su-chip-green.on{background:#059669;border-color:#059669;color:#fff}
.su-chip-green.on:hover{border-color:#10b981;box-shadow:0 1px 8px rgba(5,150,105,.3)}
.su-chip.dis{opacity:.45;cursor:not-allowed}
.su-chip.dis:hover{border-color:var(--gray-200,#e2e8f0);box-shadow:none}

/* ============ 工作台首页 (t59 大气版) ============ */
.home-page{max-width:960px;margin:0 auto;padding:8px 0 32px}

/* ── 顶部欢迎卡：网状渐变 + 浮动装饰 ── */
.home-hero{position:relative;overflow:hidden;padding:0;border-radius:20px;margin-bottom:22px;box-shadow:0 12px 36px rgba(91,115,232,.22),0 2px 6px rgba(91,115,232,.08)}
.home-hero-bg{position:absolute;inset:0;background:linear-gradient(135deg,#5b73e8 0%,#7c5ff0 50%,#9d6ef5 100%)}
.home-hero-bg::before{content:'';position:absolute;top:-80px;right:-60px;width:280px;height:280px;background:radial-gradient(circle,rgba(255,255,255,.22) 0%,rgba(255,255,255,0) 70%);border-radius:50%}
.home-hero-bg::after{content:'';position:absolute;bottom:-100px;left:-40px;width:320px;height:320px;background:radial-gradient(circle,rgba(255,255,255,.14) 0%,rgba(255,255,255,0) 70%);border-radius:50%}
.home-hero-content{position:relative;display:flex;align-items:center;gap:20px;padding:26px 28px;color:#fff;z-index:1}
.home-avatar{width:64px;height:64px;border-radius:50%;background:linear-gradient(135deg,rgba(255,255,255,.4) 0%,rgba(255,255,255,.18) 100%);display:flex;align-items:center;justify-content:center;font-size:26px;font-weight:800;flex:0 0 auto;box-shadow:0 4px 14px rgba(0,0,0,.18),inset 0 0 0 2px rgba(255,255,255,.45);letter-spacing:1px}
.home-hero-text{flex:1;min-width:0}
.home-greet{font-size:22px;font-weight:600;line-height:1.3;letter-spacing:.3px}
.home-greet .home-name{font-weight:800;background:linear-gradient(90deg,#fff 0%,#fde9a3 100%);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent}
.home-role{font-size:13px;opacity:.92;margin-top:6px;font-weight:500;letter-spacing:.4px}
.home-hero-meta{display:flex;gap:10px;margin-top:12px;flex-wrap:wrap}
.home-hero-chip{display:inline-flex;align-items:center;gap:5px;padding:5px 12px;background:rgba(255,255,255,.18);border:1px solid rgba(255,255,255,.22);border-radius:999px;font-size:12px;font-weight:500;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}
.home-hero-chip #homeClock{font-variant-numeric:tabular-nums;font-weight:700;letter-spacing:.5px}

/* ── 通用 section ── */
.home-section{margin-bottom:22px}
.home-section-head{display:flex;align-items:baseline;justify-content:space-between;margin:0 4px 12px;padding:0 2px}
.home-section-title{font-size:16px;font-weight:700;color:#222;letter-spacing:.3px;position:relative;padding-left:12px}
.home-section-title::before{content:'';position:absolute;left:0;top:4px;bottom:4px;width:4px;border-radius:2px;background:linear-gradient(180deg,#5b73e8,#9d6ef5)}
.home-section-hint{font-size:12px;color:#9aa3b2;font-weight:500}

/* ── 快捷功能磁贴 ── */
.home-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
.home-tile{display:flex;flex-direction:column;align-items:center;gap:10px;padding:20px 10px;background:#fff;border-radius:16px;box-shadow:0 2px 12px rgba(15,23,42,.05);text-decoration:none;color:#222;transition:all .2s ease;border:1px solid rgba(15,23,42,.04);position:relative;overflow:hidden}
.home-tile:hover{transform:translateY(-3px);box-shadow:0 10px 24px rgba(15,23,42,.12);border-color:rgba(91,115,232,.18)}
.home-tile:active{transform:translateY(-1px)}
.home-tile-icon{width:48px;height:48px;border-radius:14px;display:flex;align-items:center;justify-content:center;font-size:24px;box-shadow:0 4px 12px rgba(0,0,0,.08);transition:transform .25s ease}
.home-tile:hover .home-tile-icon{transform:scale(1.08) rotate(-3deg)}
.home-tile-label{font-size:13px;text-align:center;line-height:1.3;color:#374151;font-weight:600}

/* ── 我的待办：顶部色条 + 大数字 + 图标 ── */
.home-todo-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
.home-todo{position:relative;display:flex;flex-direction:column;align-items:flex-start;justify-content:space-between;gap:8px;padding:16px 14px 14px;background:#fff;border-radius:16px;box-shadow:0 2px 12px rgba(15,23,42,.05);text-decoration:none;color:#222;transition:all .2s ease;border:1px solid rgba(15,23,42,.04);min-height:108px;overflow:hidden}
.home-todo::before{content:'';position:absolute;top:0;left:0;right:0;height:3px;background:var(--bar,#5b73e8);border-radius:16px 16px 0 0}
.home-todo:hover{transform:translateY(-3px);box-shadow:0 10px 24px rgba(15,23,42,.12)}
.home-todo:active{transform:translateY(-1px)}
.home-todo-icon{font-size:22px;width:36px;height:36px;display:flex;align-items:center;justify-content:center;border-radius:10px;background:var(--soft,#f0f2f5);flex-shrink:0}
.home-todo-count{font-size:30px;font-weight:800;line-height:1;color:#9aa3b2;font-variant-numeric:tabular-nums;letter-spacing:-1px}
.home-todo-label{font-size:12px;text-align:left;line-height:1.4;color:#6b7280;font-weight:500}
.home-todo.is-urgent{background:linear-gradient(135deg,#fff 0%,var(--soft,#fff5f5) 100%)}
.home-todo.is-urgent .home-todo-count{color:#dc2626}
.home-todo.is-urgent .home-todo-label{color:#374151;font-weight:700}
.home-todo.is-msg{background:linear-gradient(135deg,#fff 0%,var(--soft,#eef0fb) 100%)}
.home-todo.is-msg .home-todo-count{color:#5b73e8}
.home-todo-skeleton,.home-todo-empty{grid-column:1/-1;text-align:center;color:#9aa;font-size:13px;padding:32px 18px;background:#fff;border-radius:16px;box-shadow:0 2px 12px rgba(15,23,42,.05)}
.home-todo-empty{color:#10b981;font-weight:600;font-size:15px;background:linear-gradient(135deg,#ecfdf5 0%,#fff 100%)}

/* ── 经营概览：彩色渐变大卡 ── */
.home-money-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.home-money-card{position:relative;overflow:hidden;padding:22px 22px 18px;border-radius:18px;box-shadow:0 8px 24px rgba(15,23,42,.08);min-height:140px;display:flex;flex-direction:column;justify-content:space-between;color:#fff;transition:all .25s ease}
.home-money-card:hover{transform:translateY(-4px);box-shadow:0 14px 32px rgba(15,23,42,.14)}
.home-money-card.revenue{background:linear-gradient(135deg,#4facfe 0%,#00c6ff 100%)}
.home-money-card.payable{background:linear-gradient(135deg,#ff9966 0%,#ff5e62 100%)}
.home-money-card.receivable{background:linear-gradient(135deg,#11998e 0%,#38ef7d 100%)}
.home-money-bg-icon{position:absolute;top:-30px;right:-30px;font-size:140px;opacity:.14;transform:rotate(-12deg);pointer-events:none;line-height:1}
.home-money-icon{font-size:28px;width:44px;height:44px;border-radius:12px;background:rgba(255,255,255,.22);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);display:flex;align-items:center;justify-content:center;margin-bottom:8px;box-shadow:inset 0 0 0 1px rgba(255,255,255,.25)}
.home-money-val{font-size:30px;font-weight:800;line-height:1.1;color:#fff;letter-spacing:-1px;font-variant-numeric:tabular-nums;text-shadow:0 2px 8px rgba(0,0,0,.12);word-break:break-all}
.home-money-label{font-size:14px;color:rgba(255,255,255,.95);font-weight:600;margin-top:6px;letter-spacing:.3px}
.home-money-foot{font-size:11px;color:rgba(255,255,255,.75);margin-top:4px;letter-spacing:.3px;text-transform:uppercase}

/* ── 数据中心：领导层视图说明横幅（t156） ── */
.dc-banner{margin:0 4px 14px;padding:12px 16px;border-radius:12px;background:linear-gradient(135deg,#eef2ff 0%,#f5f3ff 100%);border:1px solid rgba(91,115,232,.18);color:#4b5563;font-size:13px;line-height:1.6;letter-spacing:.2px}

/* ── 首页列表区块：公司公告 / 审批中心（t157） ── */
.home-section-more{font-size:12px;color:#5b73e8;font-weight:600;text-decoration:none;letter-spacing:.3px;white-space:nowrap}
.home-section-more:hover{text-decoration:underline}
.home-list{display:flex;flex-direction:column;gap:10px}
.home-list-item{display:block;text-decoration:none;color:inherit;background:#fff;border-radius:14px;padding:14px 16px;box-shadow:0 2px 12px rgba(15,23,42,.05);border:1px solid rgba(15,23,42,.04);transition:all .2s ease;position:relative;overflow:hidden}
.home-list-item:hover{transform:translateY(-2px);box-shadow:0 8px 20px rgba(15,23,42,.1);border-color:rgba(91,115,232,.18)}
.home-list-row{display:flex;align-items:center;gap:8px}
.home-list-title{font-size:14px;font-weight:700;color:#222;line-height:1.4;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.home-list-sum{font-size:12.5px;color:#6b7280;line-height:1.5;margin-top:6px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.home-list-meta{font-size:11.5px;color:#9aa3b2;margin-top:7px;display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.home-badge{display:inline-flex;align-items:center;padding:1px 8px;border-radius:999px;font-size:11px;font-weight:700;line-height:1.6;flex:0 0 auto}
.home-badge.pin{background:linear-gradient(135deg,#fde68a,#f59e0b);color:#7c2d12}
.home-badge.wait{background:linear-gradient(135deg,#fee2e2,#fca5a5);color:#991b1b}
.home-list-empty{padding:26px 18px;text-align:center;color:#9aa3b2;font-size:13px;background:#fff;border-radius:14px;box-shadow:0 2px 12px rgba(15,23,42,.05)}
.home-list-empty.ok{color:#10b981;background:linear-gradient(135deg,#ecfdf5 0%,#fff 100%);font-weight:600}

@media(max-width:900px){
  .home-page{max-width:760px}
}
@media(max-width:768px){
  .home-page{padding:4px 0 80px}
  .home-grid{grid-template-columns:repeat(2,1fr);gap:10px}
  .home-todo-grid{grid-template-columns:repeat(2,1fr);gap:10px}
  .home-money-grid{grid-template-columns:1fr;gap:12px}
  .home-hero{border-radius:16px;margin:0 0 14px}
  .home-hero-content{padding:18px 20px;gap:14px}
  .home-avatar{width:52px;height:52px;font-size:22px}
  .home-greet{font-size:18px}
  .home-money-card{min-height:120px;padding:18px}
  .home-money-val{font-size:24px}
  .home-section{margin-bottom:16px}
}
/* ── 主播阶段分布卡（t152 角色工作台）── */
.home-stage{display:grid;grid-template-columns:repeat(6,1fr);gap:10px}
.home-stage-cell{background:#fff;border-radius:14px;padding:16px 8px;text-align:center;box-shadow:0 2px 12px rgba(15,23,42,.05);border:1px solid rgba(15,23,42,.04);transition:transform .2s ease}
.home-stage-cell:hover{transform:translateY(-3px);box-shadow:0 10px 24px rgba(15,23,42,.12)}
.home-stage-num{font-size:26px;font-weight:800;line-height:1;color:#222;font-variant-numeric:tabular-nums}
.home-stage-lab{font-size:12px;color:#6b7280;margin-top:8px;font-weight:600}
.home-stage-cell.active .home-stage-num{color:#10b981}
.home-stage-cell.paused .home-stage-num{color:#9aa3b2}
.home-stage-cell.left .home-stage-num{color:#f59e0b}
@media(max-width:768px){
  .home-stage{grid-template-columns:repeat(3,1fr);gap:8px}
}
@media(max-width:480px){
  .home-stage{grid-template-columns:repeat(2,1fr)}
}
/* ── 工作台打卡卡（t159 首页直接打卡，复用 /api/attendance/clock）── */
.home-clock-card{background:#fff;border-radius:16px;padding:18px;box-shadow:0 2px 12px rgba(15,23,42,.05);border:1px solid rgba(15,23,42,.04);display:flex;flex-direction:column;gap:14px}
.home-clock-now{display:flex;align-items:baseline;gap:12px}
.home-clock-time{font-size:30px;font-weight:800;color:#222;font-variant-numeric:tabular-nums;letter-spacing:1px;line-height:1}
.home-clock-date{font-size:13px;color:#9aa3b2;font-weight:600}
.home-clock-status{display:inline-flex;align-items:center;gap:8px;align-self:flex-start;padding:5px 12px;border-radius:999px;font-size:13px;font-weight:700;background:#f1f5f9;color:#64748b}
.home-clock-status .home-clock-dot{width:9px;height:9px;border-radius:50%;background:currentColor;box-shadow:0 0 0 4px rgba(100,116,139,.15)}
.home-clock-status.on{background:rgba(16,185,129,.12);color:#059669}
.home-clock-status.on .home-clock-dot{box-shadow:0 0 0 4px rgba(16,185,129,.18)}
.home-clock-status.done{background:rgba(91,115,232,.12);color:#5b73e8}
.home-clock-status.done .home-clock-dot{box-shadow:0 0 0 4px rgba(91,115,232,.18)}
.home-clock-status.off{background:rgba(245,158,11,.12);color:#d97706}
.home-clock-status.off .home-clock-dot{box-shadow:0 0 0 4px rgba(245,158,11,.18)}
.home-clock-rows{display:flex;flex-direction:column;background:#f8fafc;border-radius:12px;padding:2px 14px}
.home-clock-row{display:flex;justify-content:space-between;align-items:center;font-size:13px;padding:7px 0;border-bottom:1px dashed #eef1f5}
.home-clock-row:last-child{border-bottom:none}
.home-clock-row>span:first-child{color:#6b7280;font-weight:600}
.home-clock-row>span:last-child{color:#222;font-weight:700;font-variant-numeric:tabular-nums}
.home-clock-btns{display:flex;gap:10px}
.home-clock-btn{flex:1;border:none;border-radius:12px;padding:13px 8px;font-size:14px;font-weight:700;cursor:pointer;color:#fff;transition:all .2s ease}
.home-clock-btn.in{background:linear-gradient(135deg,#10b981,#059669)}
.home-clock-btn.out{background:linear-gradient(135deg,#5b73e8,#7c5ff0)}
.home-clock-btn:disabled{opacity:.45;cursor:not-allowed;filter:grayscale(.3)}
.home-clock-btn:not(:disabled):hover{transform:translateY(-2px);box-shadow:0 8px 18px rgba(15,23,42,.16)}
.home-clock-loc{font-size:12px;color:#9aa3b2;display:flex;align-items:center;gap:6px;font-weight:500}
@media(max-width:480px){
  .home-clock-time{font-size:26px}
  .home-clock-btn{font-size:13px;padding:12px 6px}
}

/* ── t159·2  英雄内部紧凑打卡区（替代独立打卡白卡） ── */
.home-hero-left{display:flex;align-items:center;gap:20px;flex:1;min-width:0}
.home-hero-clock{flex:0 1 320px;background:rgba(255,255,255,.16);border:1px solid rgba(255,255,255,.28);border-radius:18px;padding:14px 16px;color:#fff;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);box-shadow:0 4px 18px rgba(0,0,0,.12);display:flex;flex-direction:column;gap:10px}
.home-hero-clock-head{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
.home-hero-clock-shift{font-size:12px;font-weight:600;opacity:.92;letter-spacing:.3px;background:rgba(255,255,255,.18);padding:3px 10px;border-radius:999px}
.home-hero-clock-status{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:700;background:rgba(255,255,255,.22);padding:3px 10px;border-radius:999px}
.home-hero-clock-status .dot{width:8px;height:8px;border-radius:50%;background:#fff;box-shadow:0 0 0 3px rgba(255,255,255,.35)}
.home-hero-clock-status.on .dot{background:#34d399;box-shadow:0 0 0 3px rgba(52,211,153,.4)}
.home-hero-clock-status.done .dot{background:#a5b4fc;box-shadow:0 0 0 3px rgba(165,180,252,.4)}
.home-hero-clock-status.off .dot{background:#fbbf24;box-shadow:0 0 0 3px rgba(251,191,36,.4)}
.home-hero-clock-btns{display:flex;gap:8px}
.home-hero-clock-btn{flex:1;border:none;border-radius:11px;padding:10px 6px;font-size:13px;font-weight:700;cursor:pointer;color:#fff;transition:all .2s ease;line-height:1.1}
.home-hero-clock-btn.in{background:linear-gradient(135deg,#10b981,#059669);box-shadow:0 4px 12px rgba(16,185,129,.35)}
.home-hero-clock-btn.out{background:linear-gradient(135deg,#7c5ff0,#9d6ef5);box-shadow:0 4px 12px rgba(124,95,240,.35)}
.home-hero-clock-btn:disabled{opacity:.5;cursor:not-allowed;filter:grayscale(.4)}
.home-hero-clock-btn:not(:disabled):hover{transform:translateY(-1px);filter:brightness(1.05)}
.home-hero-clock-times{display:flex;justify-content:space-between;gap:8px;font-size:12px;background:rgba(255,255,255,.12);border-radius:10px;padding:7px 12px}
.home-hero-clock-times span{display:flex;flex-direction:column;align-items:flex-start;line-height:1.3;flex:1}
.home-hero-clock-times b{font-weight:600;opacity:.85;font-size:11px}
.home-hero-clock-times i{font-style:normal;font-weight:600;font-variant-numeric:tabular-nums;font-size:12px}
.home-hero-clock-loc{font-size:11px;opacity:.88;display:flex;align-items:center;gap:4px;font-weight:500;letter-spacing:.2px}
@media(max-width:768px){
  .home-hero-clock{flex:1 1 100%;margin-top:8px}
}
@media(max-width:380px){
  .home-hero-clock-btn{font-size:12px;padding:9px 4px}
}

/* ============ 地图选点弹窗 ============ */
#mapPickerOverlay{position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:9999;display:flex;align-items:center;justify-content:center}
.mp-box{width:min(760px,94vw);height:min(80vh,640px);background:#fff;border-radius:14px;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 12px 40px rgba(0,0,0,.3)}
.mp-head{display:flex;gap:8px;padding:10px;border-bottom:1px solid #eee;align-items:center}
.mp-head .form-control{flex:1}
.mp-map{flex:1;min-height:0;width:100%}
.mp-foot{display:flex;gap:10px;align-items:center;justify-content:space-between;padding:10px 12px;border-top:1px solid #eee}
.mp-coord{font-size:13px;color:#5b73e8;font-weight:600}
@media(max-width:768px){
  .mp-box{width:100vw;height:100vh;border-radius:0}
  .home-page{padding:4px 0 80px}
  .home-hero{border-radius:14px;margin:0 0 12px}
}
/* ============ 部门物资 ============ */
.da-page{padding:0}
.da-tabs{display:flex;gap:6px;flex-wrap:wrap;padding:10px 12px 0;border-bottom:1px solid #eee;background:#fff}
.da-tab{border:none;background:transparent;padding:10px 14px;font-size:14px;color:#555;cursor:pointer;border-bottom:2px solid transparent;font-weight:600}
.da-tab.active{color:#5b73e8;border-bottom-color:#5b73e8}
.da-tab:hover{color:#3b5bdb}
.da-content{padding:12px}
/* 物资资产合并入口 Tab（assets-center.js） */
.asset-tabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px;border-bottom:1px solid #eee;padding-bottom:8px}
.asset-tab{border:none;background:transparent;padding:9px 18px;font-size:14px;color:#555;cursor:pointer;border-radius:8px 8px 0 0;border-bottom:2px solid transparent;font-weight:600}
.asset-tab:hover{background:rgba(91,115,232,.06)}
.asset-tab.active{color:#5b73e8;border-bottom-color:#5b73e8}
.asset-tab-content{margin-top:4px}
/* AP 表单：选人/选主播自动带出的银行卡信息 */
.ap-bank-info{margin-top:8px;font-size:12px;color:#0f766e;background:rgba(16,185,129,.08);border:1px solid rgba(16,185,129,.25);border-radius:8px;padding:7px 10px;line-height:1.5}
.ap-bank-info .ap-bi-ic{margin-right:4px}
.da-toolbar{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:12px}
.da-toolbar .form-control{flex:1;min-width:120px;max-width:220px}
.da-toolbar .btn-primary,.da-toolbar .btn-outline{white-space:nowrap}
.da-list{background:#fff;border-radius:12px;box-shadow:0 2px 10px rgba(0,0,0,.05);overflow:hidden}
.da-list .data-table{margin:0;box-shadow:none}
.row-actions a{color:#5b73e8;margin-right:10px;cursor:pointer;font-size:13px;text-decoration:none}
.row-actions a:hover{text-decoration:underline}
.ho-item{background:#fafbff}

/* ============ 超小屏适配 (≤480px) ============ */
@media(max-width:480px){
  .stats-grid,.grid-2,.grid-3,.grid-4{grid-template-columns:1fr}
  .home-grid{grid-template-columns:repeat(4,1fr);gap:8px}
  .home-todo-grid{grid-template-columns:repeat(2,1fr);gap:10px}
  .home-tile{padding:14px 4px;gap:6px}
  .home-tile-icon{width:40px;height:40px;font-size:20px;border-radius:12px}
  .home-tile-label{font-size:11px;line-height:1.2}
  .page-body{padding:10px 10px calc(74px + env(safe-area-inset-bottom))}
  .card{padding:12px}
  .page-header h2{font-size:18px}
  .page-header p{font-size:12px}
  .topbar-left h2{font-size:15px}
  .table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
  .table{min-width:320px}
  .table th,.table td{padding:8px 8px;font-size:12px;white-space:nowrap}
  .btn{padding:10px 14px;font-size:14px;min-height:42px}
  .btn-sm{padding:7px 12px;min-height:34px;font-size:12px}
  .modal-box{width:100%;height:100%;max-height:100%;border-radius:0}
  .drawer-panel{width:100%;max-width:100%}
  .home-hero{padding:14px}
  .home-hero h3{font-size:16px}
  .wl-summary-grid{grid-template-columns:1fr}
  .da-toolbar .form-control{max-width:100%}
  .flex-between{flex-direction:column;align-items:flex-start;gap:8px}
  .ohr-stage-grid{grid-template-columns:repeat(2,1fr)}
  .ohr-dept-name{width:72px;font-size:12px}
  .ohr-dept-meta{min-width:78px}
  /* ===== 全站详情/信息卡内联多列网格：窄屏折叠，杜绝文字被挤成竖排 ===== */
  /* 顺序：先最宽(2列子串覆盖2/3/4列)，再逐步收窄，4列置底覆盖为双列 */
  [style*="grid-template-columns:1fr 1fr"]{grid-template-columns:1fr !important}
  [style*="grid-template-columns:1fr 1fr 1fr"]{grid-template-columns:1fr !important}
  [style*="grid-template-columns:1fr 1fr 1fr 1fr"]{grid-template-columns:repeat(2,1fr) !important}
  [style*="grid-template-columns:repeat(3,1fr)"]{grid-template-columns:1fr !important}
  [style*="grid-template-columns:repeat(4,1fr)"]{grid-template-columns:repeat(2,1fr) !important}
  .form-stack{grid-template-columns:1fr}
  .mga-grid{grid-template-columns:1fr}
}

/* ============ t164·人事总览专属样式（对齐老 OA 视觉） ============ */
/* .ohr-substats / .ohr-substat 已废弃（t165 砍掉下层小指标，对齐老 OA 单层 KPI） */

.ohr-dept-row{display:flex;align-items:center;gap:12px;padding:9px 0;border-bottom:1px dashed #f0f2f5}
.ohr-dept-row:last-child{border-bottom:none}
.ohr-dept-name{width:130px;flex-shrink:0;font-size:13px;color:#475569;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ohr-dept-bar{flex:1;background:#f0f2f7;border-radius:6px;height:14px;overflow:hidden;min-width:60px;box-shadow:inset 0 1px 2px rgba(0,0,0,.04)}
.ohr-dept-fill{height:100%;border-radius:6px;transition:width .5s ease;box-shadow:0 1px 3px rgba(0,0,0,.08)}
.ohr-dept-meta{display:flex;align-items:baseline;gap:8px;flex-shrink:0;min-width:96px;justify-content:flex-end}
.ohr-dept-n{font-size:14px;font-weight:700;color:#222;font-variant-numeric:tabular-nums}
.ohr-dept-p{font-size:11px;color:#9aa3b2;font-weight:600;background:#f6f8fc;border-radius:4px;padding:1px 6px}

.ohr-event-title{font-size:13px;font-weight:700;color:#222;margin:2px 0 10px;letter-spacing:.3px;display:flex;align-items:center;gap:6px}
.ohr-event-in{color:#10b981}
.ohr-event-out{color:#ef4444}
.ohr-evt{display:flex;align-items:center;gap:12px;padding:11px 0;border-bottom:1px dashed #f0f2f5;transition:background .15s}
.ohr-evt:last-child{border-bottom:none}
.ohr-evt:hover{background:#f9fbff;border-radius:8px;padding-left:8px;padding-right:8px}
.ohr-evt-avatar{width:38px;height:38px;border-radius:50%;background:#eef0ff;color:#6366f1;display:flex;align-items:center;justify-content:center;font-size:15px;font-weight:700;flex-shrink:0}
.ohr-evt-name{font-size:14px;color:#1f2937;font-weight:600;flex:0 0 auto;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ohr-evt-dept{font-size:12.5px;color:#9aa3b2;flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ohr-evt-tag{padding:3px 11px;border-radius:999px;font-size:11.5px;font-weight:700;flex-shrink:0;font-variant-numeric:tabular-nums}
.ohr-evt-tag.in{background:#eef2ff;color:#6366f1}
.ohr-evt-tag.out{background:#fef2f2;color:#ef4444}

.ohr-todo{display:flex;align-items:center;gap:12px;padding:11px 0;border-bottom:1px dashed #f0f2f5}
.ohr-todo:last-child{border-bottom:none}
.ohr-todo-icon{font-size:16px;width:28px;height:28px;background:rgba(91,115,232,.1);border-radius:8px;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.ohr-todo-label{font-size:14px;color:#333;flex:1;font-weight:500}

.ohr-qr-placeholder{margin-top:16px;padding:36px;background:#f6f7fb;border:2px dashed #d7dbe6;border-radius:12px;text-align:center;color:#9aa3b2;font-size:13.5px;line-height:1.7}

/* t167 人事总览：4 个数据 Tab 通用工具条 / 表格容器 / 计数 / 阶段概览 */
.ohr-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin:8px 0 14px}
.ohr-toolbar .fe-input{min-height:38px}
.ohr-count{margin-left:auto;font-size:12.5px;color:#9aa3b2;font-weight:600;white-space:nowrap}
.ohr-table-wrap{width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;border:1px solid #eef0f5;border-radius:10px}
.ohr-summary-row{margin-bottom:4px}

.ohr-stage-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:12px;margin-top:6px}
.ohr-stage-cell{position:relative;background:#fff;border:1px solid #e6e8ef;border-radius:10px;padding:16px 8px;text-align:center;overflow:hidden;transition:transform .2s ease,box-shadow .2s ease}
.ohr-stage-cell::before{content:'';position:absolute;inset:0;background:var(--c);opacity:.07;pointer-events:none}
.ohr-stage-cell:hover{transform:translateY(-3px);box-shadow:0 8px 20px rgba(15,23,42,.1);border-color:transparent}
.ohr-stage-v{position:relative;font-size:22px;font-weight:800;color:var(--c);line-height:1;font-variant-numeric:tabular-nums;letter-spacing:-.5px}
.ohr-stage-l{position:relative;font-size:12px;color:#64748b;margin-top:6px;font-weight:600}

@media(max-width:900px){
  .ohr-stage-grid{grid-template-columns:repeat(3,1fr)}
}
@media(max-width:600px){
  .ohr-stage-grid{grid-template-columns:repeat(2,1fr)}
  .ohr-dept-name{width:90px;font-size:12px}
  .ohr-dept-meta{min-width:80px}
}
@media(max-width:380px){
  .ohr-dept-name{display:none}
}

/* ══════════════════════════════════════════════════════════════════════════
   t168 人事总览改版：请假记录 / 只读横幅 / 表头排序 / 二维码入职 /
                     培训子 Tab 文档 / 入离职时间线 / 通用 fe-btn
   ══════════════════════════════════════════════════════════════════════════ */

/* ── 通用扁平按钮（禁止给按钮用 .btn 以外的语义混用，这里统一 fe-btn） ── */
.fe-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:9px 16px;border:1px solid #dfe3ec;border-radius:9px;background:#fff;color:#475569;font-size:13px;font-weight:600;cursor:pointer;white-space:nowrap;transition:all .18s ease;font-family:inherit;line-height:1.2}
.fe-btn:hover{border-color:#6366f1;color:#6366f1;background:#f7f8ff;box-shadow:0 2px 8px rgba(99,102,241,.12)}
.fe-btn:active{transform:translateY(1px)}
.fe-btn-sm{padding:7px 13px;font-size:12.5px;border-radius:8px}
.fe-btn-mini{padding:4px 10px;font-size:12px;border-radius:7px}
.fe-btn-primary{background:#6366f1;border-color:#6366f1;color:#fff}
.fe-btn-primary:hover{background:#5457e5;border-color:#5457e5;color:#fff;box-shadow:0 4px 12px rgba(99,102,241,.28)}

/* ── 请假记录（概览左卡，t167 遗留缺口，t168 补齐） ── */
.ohr-leave-row{display:flex;align-items:center;gap:10px;padding:10px 0;border-bottom:1px dashed #f0f2f5}
.ohr-leave-row:last-child{border-bottom:none}
.ohr-leave-dot{width:8px;height:8px;border-radius:50%;background:#3b82f6;flex-shrink:0;box-shadow:0 0 0 3px rgba(59,130,246,.14)}
.ohr-leave-name{font-size:13.5px;color:#1f2937;font-weight:600;flex:0 0 auto;min-width:64px}
.ohr-leave-date{font-size:12.5px;color:#6b7280;font-variant-numeric:tabular-nums;background:#f4f6fb;border-radius:5px;padding:2px 8px;flex-shrink:0}
.ohr-leave-remark{font-size:12.5px;color:#9aa3b2;flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ohr-leave-more{margin-top:10px;font-size:12px;color:#9aa3b2;text-align:center;background:#f8f9fc;border-radius:7px;padding:7px}

/* ── 只读说明横幅（右侧挂新增/修改入口） ── */
.ohr-readonly-banner{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:4px 0 14px;padding:11px 14px;background:#f7f8ff;border:1px solid #e4e6f7;border-left:3px solid #6366f1;border-radius:9px}
.ohr-rb-ic{font-size:14px;flex-shrink:0}
.ohr-rb-txt{flex:1;min-width:180px;font-size:12.5px;color:#5b6478;line-height:1.6}

/* ── 表头点击排序 ── */
.ohr-sort-th{cursor:pointer;user-select:none;position:relative;padding-right:20px!important;transition:color .15s}
.ohr-sort-th:hover{color:#6366f1}
.ohr-sort-th::after{content:'⇅';position:absolute;right:6px;top:50%;transform:translateY(-50%);font-size:10px;color:#c3c9d6;font-weight:400}
.ohr-sort-th.sort-asc::after{content:'▲';color:#6366f1;font-size:8px}
.ohr-sort-th.sort-desc::after{content:'▼';color:#6366f1;font-size:8px}

/* ── 表格观感（首字母头像 / 等宽数字列） ── */
.ohr-grid tbody tr{transition:background .14s}
.ohr-grid tbody tr:hover{background:#f9fbff}
.ohr-cell-av{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:50%;background:#eef0ff;color:#6366f1;font-size:12px;font-weight:700;margin-right:8px;vertical-align:middle}
.ohr-cell-mono{font-variant-numeric:tabular-nums;color:#64748b;font-size:12.5px}

/* 阶段速览卡：可点筛选 + 选中态 */
.ohr-stage-cell.clickable{cursor:pointer}
.ohr-stage-cell.active{border-color:var(--c);box-shadow:0 6px 18px rgba(15,23,42,.1)}
.ohr-stage-cell.active::before{opacity:.16}
.ohr-jl-grid{grid-template-columns:repeat(3,1fr)}

/* ── 新人入职：二维码 + 流程 + 行政配置 ── */
.ohr-onboard-card{text-align:center}
.ohr-qr-box{display:flex;align-items:center;justify-content:center;margin:8px 0 4px}
.ohr-qr-img{width:240px;height:240px;padding:12px;background:#fff;border:1px solid #e6e8ef;border-radius:14px;box-shadow:0 6px 20px rgba(15,23,42,.07)}
.ohr-qr-fallback{padding:26px;background:#f6f7fb;border:2px dashed #d7dbe6;border-radius:12px;color:#6b7280;font-size:13px;line-height:1.8}
.ohr-qr-url{display:inline-block;margin-top:6px;font-size:12px;color:#6366f1;word-break:break-all}
.ohr-qr-tip{margin-top:12px;font-size:13px;color:#5b6478;font-weight:600}
.ohr-qr-actions{margin-top:14px;display:flex;gap:8px;justify-content:center;flex-wrap:wrap}

.ohr-steps{margin-top:4px}
.ohr-step{display:flex;gap:12px;padding:12px 0;border-bottom:1px dashed #f0f2f5}
.ohr-step:last-child{border-bottom:none}
.ohr-step-n{flex-shrink:0;width:24px;height:24px;border-radius:50%;background:#6366f1;color:#fff;font-size:12.5px;font-weight:700;display:flex;align-items:center;justify-content:center}
.ohr-step-body{flex:1;min-width:0}
.ohr-step-t{font-size:13.5px;font-weight:700;color:#1f2937}
.ohr-step-d{margin-top:4px;font-size:12.5px;color:#6b7280;line-height:1.7}

.ohr-cfg{margin-top:16px;padding:14px;background:#fafbfe;border:1px solid #eef0f5;border-radius:10px}
.ohr-cfg-title{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:13px;font-weight:700;color:#1f2937;margin-bottom:10px}
.ohr-cfg-hint{font-size:11.5px;color:#9aa3b2;font-weight:500}

/* 新人入职（t187）：后端二维码 + 提交记录 */
.ohr-on-note{margin-top:12px;font-size:12px;color:#7c8499;line-height:1.6;background:#f6f7fb;border:1px solid #eef0f5;border-radius:8px;padding:8px 10px;text-align:left}
.ohr-loading{padding:24px;text-align:center;color:#9aa3b2;font-size:13px}
.ohr-on-filter{display:flex;gap:8px;flex-wrap:wrap;margin:4px 0 12px}
.ohr-on-fbtn{padding:6px 14px;border:1px solid #e6e8ef;border-radius:999px;background:#fff;color:#64748b;font-size:12.5px;font-weight:600;cursor:pointer;font-family:inherit;transition:all .18s ease}
.ohr-on-fbtn:hover{border-color:#c7c9f5;color:#6366f1}
.ohr-on-fbtn.active{background:#6366f1;border-color:#6366f1;color:#fff}
.ohr-on-table{width:100%;border-collapse:collapse;font-size:13px}
.ohr-on-table th{text-align:left;padding:10px 12px;color:#94a3b8;font-weight:600;font-size:12px;border-bottom:1px solid #eef0f5}
.ohr-on-table td{padding:10px 12px;border-bottom:1px solid #f5f6f9;color:#334155}
.ohr-on-row{cursor:pointer;transition:background .15s ease}
.ohr-on-row:hover{background:#f7f8ff}
.ohr-on-badge{display:inline-block;padding:3px 10px;border-radius:999px;font-size:12px;font-weight:600}
.ohr-on-badge.st-new{background:#fff4e5;color:#b45309}
.ohr-on-badge.st-reviewed{background:#eef2ff;color:#4f46e5}
.ohr-on-badge.st-imported{background:#ecfdf5;color:#047857}
.ohr-dl table{width:100%;border-collapse:collapse}
.ohr-dl-k{width:120px;padding:9px 10px;color:#94a3b8;font-size:12.5px;font-weight:600;background:#fafbfe;border-bottom:1px solid #f2f4f8;vertical-align:top}
.ohr-dl-v{padding:9px 12px;color:#334155;font-size:13px;border-bottom:1px solid #f2f4f8;word-break:break-all}
.ohr-dl-meta{margin-top:10px;color:#94a3b8;font-size:12px}
.ohr-dl-foot{display:flex;gap:10px;justify-content:flex-end;align-items:center;margin-top:16px}
.ohr-on-imported-tip{color:#047857;font-size:13px;font-weight:600}
/* t188：二维码显示尺寸约束（避免卡片被超大 SVG 撑爆） + 放大弹窗样式 */
.ohr-qr-box{display:inline-block;max-width:100%}
.ohr-qr-box svg{display:block;width:220px;max-width:100%;height:auto;margin:0 auto;border:1px solid #eef0f5;border-radius:8px;padding:6px;background:#fff;box-sizing:border-box}
.ohr-qr-big{display:flex;justify-content:center;align-items:center;padding:8px 0 14px}
.ohr-qr-big svg{display:block;width:360px;max-width:80vw;height:auto;border:1px solid #e6e8ef;border-radius:12px;padding:10px;background:#fff;box-sizing:border-box}
.ohr-qr-big-tip{text-align:center;color:#7c8499;font-size:13px;line-height:1.8;padding:0 12px 4px}
.ohr-qr-url{margin-top:8px;text-align:center;color:#94a3b8;font-size:11.5px;word-break:break-all;padding:0 12px}

/* ── 新人培训：Tab 复用 archive-tabs（人事总览顶 Tab 同款，t189） ── */
.ohr-train-card{margin-top:0}
.ohr-doc-head{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;padding-bottom:10px;margin-bottom:12px;border-bottom:1px solid #f0f2f5}
.ohr-doc-title{font-size:15px;font-weight:700;color:#1f2937}
.ohr-train-doc{font-size:13.5px;color:#475569;line-height:1.85}
.ohr-doc-h1{font-size:15px;font-weight:700;color:#1f2937;margin:2px 0 10px;padding-left:10px;border-left:3px solid #6366f1}
.ohr-doc-h2{font-size:13.5px;font-weight:700;color:#4f46e5;margin:16px 0 8px}
.ohr-doc-ul{margin:0 0 10px;padding-left:20px}
.ohr-doc-ul li{margin:5px 0}
.ohr-doc-p{margin:6px 0}
.ohr-doc-ta{width:100%;min-height:360px;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:12.5px;line-height:1.75;resize:vertical}

/* ── 入离职记录：按月分组时间线 ── */
.ohr-tl-card{margin-top:0}
.ohr-tl-group + .ohr-tl-group{margin-top:22px}
.ohr-tl-month{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding-bottom:8px;border-bottom:1px solid #f0f2f5}
.ohr-tl-m{font-size:13.5px;font-weight:700;color:#1f2937;font-variant-numeric:tabular-nums}
.ohr-tl-mstat{display:flex;gap:6px;margin-left:auto}
.ohr-tl-mstat em{font-style:normal;font-size:11.5px;font-weight:700;padding:2px 9px;border-radius:999px}
.ohr-tl-mstat em.in{background:#ecfdf5;color:#10b981}
.ohr-tl-mstat em.out{background:#fef2f2;color:#ef4444}
.ohr-timeline{position:relative;margin-top:6px;padding-left:14px}
.ohr-timeline::before{content:'';position:absolute;left:4px;top:12px;bottom:12px;width:2px;background:#eef0f5}
.ohr-tl-item{position:relative;display:flex;align-items:center;gap:10px;padding:10px 8px 10px 14px;border-radius:9px;transition:background .14s}
.ohr-tl-item:hover{background:#f9fbff}
.ohr-tl-dot{position:absolute;left:-14px;width:9px;height:9px;border-radius:50%;background:#94a3b8;box-shadow:0 0 0 3px #fff}
.ohr-tl-item.in .ohr-tl-dot{background:#10b981}
.ohr-tl-item.out .ohr-tl-dot{background:#ef4444}
.ohr-tl-date{font-size:12px;color:#6b7280;font-variant-numeric:tabular-nums;background:#f4f6fb;border-radius:5px;padding:2px 8px;flex-shrink:0}
.ohr-tl-avatar{width:30px;height:30px;border-radius:50%;background:#eef0ff;color:#6366f1;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:700;flex-shrink:0}
.ohr-tl-name{font-size:13.5px;color:#1f2937;font-weight:600;flex-shrink:0}
.ohr-tl-role{font-size:12.5px;color:#9aa3b2;flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ohr-tl-tag{font-size:11.5px;font-weight:700;padding:3px 11px;border-radius:999px;flex-shrink:0}
.ohr-tl-tag.in{background:#ecfdf5;color:#10b981}
.ohr-tl-tag.out{background:#fef2f2;color:#ef4444}
  .ohr-tl-extra{font-size:11.5px;color:#9aa3b2;flex-shrink:0;font-variant-numeric:tabular-nums}

/* ── t170：行动条 / 危险按钮 / KPI 副标 / 区块标题 / 主播操作列 ── */
.ohr-act-bar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:2px 0 14px}
.ohr-act-hint{font-size:12px;color:#9aa3b2;font-weight:500}
.ohr-kpi-sub{font-size:11.5px;color:#94a3b8;margin-top:3px;font-weight:500}
.fe-btn-danger{background:#fff;border-color:#f3c2c2;color:#ef4444}
.fe-btn-danger:hover{border-color:#ef4444;color:#ef4444;background:#fef2f2;box-shadow:0 2px 8px rgba(239,68,68,.14)}
.ohr-st-op{white-space:nowrap}
/* ── t175：人员档案 sub-tab（水平胶囊组，区别于父 Tab 全宽等分，层级更清晰） ── */
.archive-subtabs{display:flex;gap:6px;margin:0 0 16px;background:#fff;border-radius:12px;padding:5px;border:1px solid #e6e8ef;box-shadow:0 1px 3px rgba(15,23,42,.04)}
.archive-subtabs .btn{flex:1;min-width:0;background:transparent;color:#64748b;font-weight:500;padding:9px 4px;border-radius:8px;font-size:13px;display:inline-flex;align-items:center;justify-content:center;gap:5px;transition:all .2s ease;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;border:1px solid transparent}
.archive-subtabs .btn:hover{background:#f5f7fc;color:#1f2937}
.archive-subtabs .btn.active{background:linear-gradient(135deg,#6366f1 0%,#4f46e5 100%);color:#fff;font-weight:600;box-shadow:0 2px 8px rgba(99,102,241,.25);border-color:transparent}

/* ── t172/t175：主播档案「登录账号」列（横排：徽章 + 用户名 + 行内按钮，紧凑不堆叠） ── */
.ohr-login-cell{display:inline-flex;align-items:center;gap:6px;flex-wrap:wrap}
.ohr-login-un{font-size:12px;color:#64748b;font-variant-numeric:tabular-nums;word-break:break-all}
.ohr-st-login-btns{display:inline-flex;gap:4px;flex-wrap:wrap;margin-left:4px}
.ohr-login-info{font-size:13px;color:#334155;font-weight:600;background:#f1f5f9;padding:6px 10px;border-radius:8px}
.ohr-modal-tip{font-size:12px;color:#94a3b8;margin:6px 0 0;line-height:1.5}
/* t177：主播详细档案弹窗（详情按钮 → 只读完整档案 + 阶段历史时间线） */
.ohr-detail-tbl{width:100%;border-collapse:collapse;font-size:13px}
.ohr-detail-tbl td{border-bottom:1px solid #eef0f6;padding:8px 10px;vertical-align:top}
.ohr-detail-tbl .ohr-dt{width:96px;color:#94a3b8;white-space:nowrap;background:#fafbff}
.ohr-detail-tbl .ohr-dv{color:#1f2937}
.ohr-detail-sub{font-size:13px;font-weight:600;color:#475569;margin:16px 0 8px}
.ohr-timeline{position:relative;padding-left:18px}
.ohr-timeline:before{content:'';position:absolute;left:5px;top:4px;bottom:4px;width:2px;background:#e6e8ef}
.ohr-tl-item{position:relative;padding:0 0 14px}
.ohr-tl-dot{position:absolute;left:-16px;top:4px;width:10px;height:10px;border-radius:50%;border:2px solid #fff;box-shadow:0 0 0 1px #e6e8ef}
.ohr-tl-top{font-size:13px;font-weight:600;color:#1f2937}
.ohr-tl-seg{font-weight:400;color:#94a3b8;font-size:12px;margin-left:6px}
.ohr-tl-rate,.ohr-tl-op,.ohr-tl-reason{font-size:12px;color:#64748b;margin-top:2px}
/* ── t179：主播档案详情 → 分组可编辑表单（单紫，1px 淡边，无渐变大图标） ── */
.ohr-detail-id{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:14px;padding:10px 12px;background:#f8fafc;border:1px solid #eef0f6;border-radius:10px}
.ohr-detail-group{margin-bottom:14px;border:1px solid #eef0f6;border-radius:10px;overflow:hidden;background:#fff}
.ohr-detail-group-head{font-size:13px;font-weight:700;color:#4f46e5;padding:9px 14px;background:#eef0ff;border-bottom:1px solid #e6e8f5;display:flex;align-items:center;gap:8px}
.ohr-detail-group-head::before{content:'';width:3px;height:13px;background:#6366f1;border-radius:2px}
.ohr-detail-fields{display:grid;grid-template-columns:repeat(2,1fr);gap:10px 14px;padding:14px}
.ohr-detail-row{display:flex;flex-direction:column;gap:4px;min-width:0}
.ohr-detail-row.ohr-row-full{grid-column:1 / -1}
.ohr-detail-row label{font-size:12px;font-weight:600;color:#475569}
.ohr-detail-row .fe-input{width:100%}
@media (max-width:520px){.ohr-detail-fields{grid-template-columns:1fr}}
.ohr-note-inline{font-size:12.5px;color:#64748b;background:#f8fafc;border:1px solid #eef0f6;border-left:3px solid #c7d2fe;padding:8px 12px;border-radius:8px;margin:0 0 14px}
/* #962 内联编辑下拉（岗位 / 部门 / 状态）：紧凑、单紫描边，贴合表格密度 */
.ohr-inline-sel{padding:4px 6px;font-size:12px;min-width:96px;height:auto;line-height:1.3;border-color:#dcdcf5}
.ohr-inline-sel:focus{border-color:#6366f1;box-shadow:0 0 0 2px rgba(99,102,241,.15)}
.ohr-sec-title{display:flex;align-items:center;gap:12px;margin:2px 0 14px;padding:12px 16px;background:linear-gradient(120deg,#6366f1,#8b5cf6);border-radius:12px;color:#fff;box-shadow:0 6px 18px rgba(99,102,241,.22)}
.ohr-sec-ic{font-size:22px;width:42px;height:42px;border-radius:11px;background:rgba(255,255,255,.18);display:flex;align-items:center;justify-content:center;flex-shrink:0}
.ohr-sec-t{font-size:16px;font-weight:800;letter-spacing:.3px}
.ohr-sec-s{font-size:12.5px;opacity:.85;margin-top:2px}

@media(max-width:768px){
  .ohr-qr-img{width:200px;height:200px}
  .ohr-tl-role,.ohr-tl-extra{display:none}
  .ohr-leave-remark{display:none}
  .ohr-readonly-banner{padding:10px 12px}
}

/* ============ t186 直播履约考勤 ============ */
.table-responsive{overflow-x:auto;margin:0 -4px}
.sa-badge{display:inline-block;padding:2px 9px;border-radius:20px;font-size:12px;font-weight:600;border:1px solid transparent;line-height:1.6}
.sa-checkin{padding:6px 2px}
.sa-checkin-head{display:flex;align-items:center;gap:14px;margin-bottom:14px}
.sa-avatar{width:48px;height:48px;border-radius:50%;background:var(--primary);color:#fff;display:flex;align-items:center;justify-content:center;font-size:20px;font-weight:700;flex:none}
.sa-name{font-size:17px;font-weight:600;color:#1f2937}
.sa-sub{font-size:13px;color:#6b7280;margin-top:2px}
.sa-plan{background:var(--gray-50);border:1px solid var(--gray-200);border-radius:8px;padding:12px 14px;font-size:14px;color:#374151}
.sa-plan b{color:var(--primary)}
.sa-done{margin-top:12px;padding:12px 14px;border-radius:8px;background:#ecfdf5;color:#059669;font-weight:600;border:1px solid #a7f3d0}
.sa-tip{margin-top:10px;font-size:12px;color:#9ca3af;line-height:1.6}
.sa-codebox{display:flex;flex-direction:column;align-items:center;text-align:center}
.sa-qr{background:#fff;border:1px solid var(--gray-200);border-radius:10px;padding:12px;display:inline-block;max-width:100%}
.sa-qr svg{display:block;width:240px;height:240px}
.sa-url{margin-top:12px;font-size:12px;color:#6b7280;word-break:break-all}
.sa-url code{background:var(--gray-50);padding:3px 6px;border-radius:4px;font-size:11px}
.sa-det{display:inline-flex;align-items:center;gap:4px;margin:3px 6px 3px 0;font-size:12px;color:#4b5563}
.sa-detbox{display:block;padding:12px;background:var(--gray-50);border-radius:6px}
/* t197：主播每日明细改为正式小表格（替代原 flex 徽章） */
.sa-det-table{width:100%;border-collapse:collapse;font-size:12px;background:#fff;border:1px solid var(--gray-200);border-radius:6px;overflow:hidden}
.sa-det-table th{text-align:left;color:#9ca3af;font-weight:600;padding:7px 12px;border-bottom:1px solid var(--gray-200);background:var(--gray-50);white-space:nowrap}
.sa-det-table td{padding:8px 12px;border-bottom:1px solid var(--gray-100);color:#374151;white-space:nowrap}
.sa-det-table tr:last-child td{border-bottom:none}
.sa-rep-meta{font-size:13px;color:#6b7280;margin-bottom:14px}
.sa-rep-meta b{color:#374151}
.sa-table th,.sa-table td{padding:10px 12px;font-size:13px}
.sa-table .sa-tot td{background:var(--gray-50);font-weight:600;border-top:2px solid var(--gray-200)}

/* ============ 薪资管理 · 核算参数 / 考勤规则设置区（t220 录入页瘦身，设置迁此） ============ */
.sm-set{background:#fff;border:1px solid var(--gray-200);border-radius:12px;padding:16px 18px;margin-bottom:16px}
.sm-set-t{font-size:14px;font-weight:600;color:#333;margin-bottom:12px}
.sm-set-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px}
.sm-set-grid label{display:flex;flex-direction:column;gap:6px;font-size:12.5px;color:#64748b;font-weight:500}
.sm-set-grid .fe-input{width:100%;padding:9px 11px;border:1px solid var(--gray-200);border-radius:8px;font-size:14px;background:#fff;box-sizing:border-box;font-family:inherit}
.sm-set-grid .fe-input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px rgba(91,115,232,.12)}
.sm-set-act{display:flex;align-items:center;gap:12px;margin-top:14px;flex-wrap:wrap}
.sm-set-tip{font-size:12px;color:#94a3b8}
.sm-set-ro{font-size:13.5px;color:#475569;line-height:1.7}
.sm-set-ro b{color:#6366F1;font-weight:600}

/* t227 单行紧凑参数条：3 核算参数 + 4 考勤规则 一排 7 列，紧贴工资表上方 */
.sm-set-compact{background:#fff;border:1px solid var(--gray-200);border-radius:10px;padding:10px 14px;margin-bottom:14px}
.sm-set-compact-t{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:8px;font-size:12px;color:#475569;font-weight:600}
.sm-set-compact-t .sm-set-compact-tit{color:#6366F1}
.sm-set-compact-t .sm-set-compact-sep{color:#cbd5e1;font-weight:400;margin:0 2px}
.sm-set-compact-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:10px}
.sm-set-compact-grid label{display:flex;flex-direction:column;gap:3px;font-size:11px;color:#64748b;font-weight:500;line-height:1.3}
.sm-set-compact-grid .fe-input{width:100%;padding:5px 8px;border:1px solid var(--gray-200);border-radius:6px;font-size:12px;background:#fff;box-sizing:border-box;font-family:inherit}
.sm-set-compact-grid .fe-input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 2px rgba(91,115,232,.12)}
.sm-set-compact-act{display:flex;align-items:center;gap:10px;margin-top:10px;flex-wrap:wrap}
.sm-set-compact-tip{font-size:11px;color:#94a3b8}
.sm-set-compact-ro{font-size:12px;color:#475569;line-height:1.6}
.sm-set-compact-ro b{color:#6366F1;font-weight:600}
@media(max-width:1100px){.sm-set-compact-grid{grid-template-columns:repeat(4,1fr)}}
@media(max-width:640px){.sm-set-compact-grid{grid-template-columns:repeat(2,1fr)}}
/* 人工成本总览 KPI（补单紫清爽卡 + 横向排列，避免无样式裸文本） */
.sm-kpi-row{display:flex;gap:14px;flex-wrap:wrap;margin-bottom:14px}
.sm-kpi{background:#fff;border:1px solid var(--gray-200);border-radius:12px;padding:16px 18px;flex:1;min-width:160px}
.sm-kpi-v{font-size:22px;font-weight:700;color:#6366F1;line-height:1.2}
.sm-kpi-t{font-size:13px;color:#475569;margin-top:4px;font-weight:600}
.sm-kpi-s{font-size:12px;color:#94a3b8;margin-top:2px}

/* ============ #1458 手机端全局响应式安全网（t391） ============ */
/* 兜底：一次性覆盖未单独适配的表格/弹窗/工具条，消除手机端页面级横向溢出。
   纯增量，不改动各模块已有的 @media 规则。 */
@media (max-width:768px){
  /* 1) 内容区表格横向滚动：让内容容器内的 <table> 自身成为滚动容器
     （display:block + overflow-x:auto），宽表格不再把整个页面撑出横向滚动条。
     已包 .table-wrap 的表格多一层滚动，无害。 */
  .page-body table,
  .card table,
  .modal-body table,
  .drawer-body table,
  .fe-card table,
  .content table,
  .sheet table{
    display:block;
    width:100%;
    overflow-x:auto;
    -webkit-overflow-scrolling:touch;
  }

  /* 2) 宽弹窗手机满屏：.modal-lg/.modal-xl 基础宽度(780/1080)特异性高于全局
     .modal-box 移动规则，这里用同等特异性(双类)+靠后声明强制手机全屏。 */
  .modal-box.modal-lg,
  .modal-box.modal-xl{
    width:100%;
    max-width:100%;
    height:100%;
    max-height:100%;
    margin:0;
    border-radius:0;
  }
  .modal-box.modal-lg .modal-body,
  .modal-box.modal-xl .modal-body{
    max-height:none;
    padding:16px;
  }

  /* 3) 通用工具条/操作行换行：flex-wrap 仅对 flex 容器生效，非 flex 元素无副作用。 */
  .toolbar,.tool-bar,.op-row,.btn-row,.action-bar,.filter-bar,.fe-toolbar,
  .pf-filterbar,.da-toolbar,.ohr-toolbar,.row-actions{
    flex-wrap:wrap;
    row-gap:8px;
  }
  .row-actions{display:flex;gap:8px}

  /* 4) 内容区图片/二维码不超出容器 */
  .page-body img,.card img,.modal-body img,.drawer-body img,
  .page-body svg,.card svg,.modal-body svg{
    max-width:100%;
    height:auto;
  }
}

/* ============ t392 顶栏+首页工作台 移动端彻底修复（#1458 续） ============ */
/* 现象：手机端顶栏 8 个 item 总宽 ~580px 撑爆 375px 视口，h2「我的工作」
   与顶部日期被压成一字宽竖排；首页 .home-hero-content 默认 flex 不换行，
   导致左侧管理员文字 + 右侧打卡卡同挤一行，左侧文字被压到一字宽。
   修复策略：① 精简顶栏（隐藏下载按钮/日期，保留核心）② 顶栏标题 nowrap
   + ellipsis ③ hero 父级加 flex-wrap 让打卡卡下到第二行 ④ 各触摸目标 ≥36px。 */
@media (max-width:768px){
  /* ── 1. 顶栏精简 ── */
  .topbar-right .icon-btn{display:none}     /* 🤖🍎 下载按钮：移动端冗余 */
  #topDate{display:none}                    /* "2026年8月27日 四"：占位太大 */
  /* ── 2. 顶栏尺寸与留白 ── */
  .topbar{height:48px;padding:0 12px;gap:8px}
  .topbar-left{gap:8px;flex:1;min-width:0}
  .topbar-left h2{
    font-size:16px;font-weight:600;
    white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
    flex:1;min-width:0;
  }
  .topbar-right{gap:6px;flex-shrink:0}
  /* ── 3. 触摸目标 ≥36px ── */
  .top-back-btn{min-width:36px;height:36px;font-size:20px}
  .menu-toggle{width:36px;height:36px;font-size:18px}
  .bell-btn{padding:4px 6px;font-size:18px}
  .mobile-logout-btn{padding:4px 8px;font-size:11px;white-space:nowrap}
  /* ── 4. 首页 hero：父级允许换行 + 打卡卡下到第二行 ── */
  .home-hero-content{flex-wrap:wrap;row-gap:10px}
  .home-hero-left{flex:1 1 100%;min-width:0;gap:14px}
  .home-hero-clock{flex:1 1 100%;margin-top:0;min-width:0}
  /* ── 5. hero 头像/文字紧凑 ── */
  .home-avatar{width:48px;height:48px;font-size:20px;flex-shrink:0}
  .home-greet{font-size:16px;line-height:1.3}
  .home-role{font-size:12px;margin-top:4px}
  .home-hero-meta{margin-top:8px;gap:6px;flex-wrap:wrap}
  .home-hero-chip{font-size:11px;padding:4px 8px}
  /* ── 6. hero 打卡卡内部：时间与按钮在窄屏单行紧凑显示 ── */
  .home-hero-clock{padding:12px 14px;gap:8px}
  .home-hero-clock-head{gap:6px}
  .home-hero-clock-shift{font-size:11px;padding:2px 8px}
  .home-hero-clock-status{font-size:11px;padding:2px 8px}
  .home-hero-clock-btns{gap:6px}
  .home-hero-clock-btn{padding:9px 4px;font-size:12px}
  .home-hero-clock-times{padding:6px 10px;font-size:11px;gap:6px}
  .home-hero-clock-times b{font-size:10px}
  .home-hero-clock-times i{font-size:11px}
  .home-hero-clock-loc{font-size:10px}
}
/* 超窄屏（≤380px）：退出按钮只留图标 */
@media (max-width:380px){
  .topbar .mobile-logout-btn{padding:4px 6px}
  .home-hero-clock-btn{padding:9px 2px;font-size:11px}
}

/* ============ t393 全站移动端通用适配强化（#1458/#1466） ============ */
/* 在 t391 安全网（表格滚动/弹窗全屏/工具条换行）+ t392（顶栏/首页）基础上，
   进一步消除各页面通用溢出与拥挤：
   ① 内容区/卡片内边距过大（.page-body 25px30px、.card 22px）
   ② 多列网格（.grid-2/3/4、各模块内联 grid）手机端未塌缩
   ③ Drawer 560px 未全屏、Modal/Drawer 内边距过大
   ④ 表单双列未塌单列
   纯增量：仅 @media(max-width:768px) 内生效，!important 仅用于压制模块内联样式，
   不改动任何桌面布局。 */
@media (max-width:768px){
  /* 1) 内容区与卡片内边距收敛 */
  .page-body{padding:14px 12px}
  .card{padding:14px;margin-bottom:14px}
  .card-title{font-size:15px;margin-bottom:12px;padding-bottom:10px}
  .fe-card{padding:14px}
  .content{padding:14px 12px}
  .sheet{padding:14px 12px}
  .drawer-body .fe-card{padding:14px}

  /* 2) 多列网格塌缩为 2 列（含模块内联 grid，用 !important 压制内联样式） */
  .grid-2,.grid-3,.grid-4,
  .bp-grid-4,.ob-summary,.at-kpi,.kpi-grid,.summary-grid,.fe-card-grid,
  .stat-row,.ohr-grid,.sm-set-compact-grid{
    grid-template-columns:repeat(2,1fr)!important;
  }
  [style*="grid-template-columns"]{
    grid-template-columns:repeat(2,1fr)!important;
  }

  /* 3) 表单网格/行 塌单列、子项满宽 */
  .form-grid,.drawer-body .form-grid{grid-template-columns:1fr!important}
  .form-row,.fe-form-row{flex-direction:column;align-items:stretch;gap:10px}
  .form-row>.fe-input,.form-row>.form-control,.form-row>select,.form-row>input,
  .fe-form-row>*{width:100%;max-width:100%}

  /* 4) Drawer 全屏 + 内边距收敛 */
  .drawer-panel{width:100%;max-width:100%}
  .drawer-body{padding:14px 14px}
  .drawer-header{padding:14px 16px}
  .drawer-footer{padding:12px 16px;flex-wrap:wrap;gap:8px}
  .drawer-footer .btn{flex:1 1 auto}

  /* 5) Modal 内边距收敛（基础 .modal-box 与已全屏的 lg/xl） */
  .modal-box{padding:0}
  .modal-header{padding:16px 16px 12px}
  .modal-body{padding:14px 16px}
  .modal-footer{padding:12px 16px;flex-wrap:wrap;gap:8px}
  .modal-footer .btn{flex:1 1 auto}
  .modal-box.modal-lg .modal-body,
  .modal-box.modal-xl .modal-body{padding:14px 16px}
  .modal-box.modal-lg .modal-footer,
  .modal-box.modal-xl .modal-footer{padding:12px 16px}

  /* 6) 统计卡紧凑 */
  .stat-card{padding:14px;gap:10px;flex-wrap:wrap}
  .stat-card .val,.stat-info .val{font-size:20px}

  /* 7) 通用按钮触摸目标 + 工具条输入满宽 */
  .btn{padding:10px 14px;min-height:40px;font-size:14px}
  .fe-btn{padding:10px 14px;min-height:40px}
  .toolbar,.filter-bar,.op-row,.btn-row,.action-bar{gap:8px;padding:10px 0}
  .toolbar .fe-input,.filter-bar .fe-input,
  .toolbar input,.filter-bar input,.toolbar select,.filter-bar select{
    width:100%!important;max-width:100%;flex:1 1 100%;
  }

  /* 8) 分页 / 底部操作条居中可点 */
  .pager,.pagination{display:flex;flex-wrap:wrap;gap:6px;justify-content:center}

  /* 9) 文本/标题不溢出容器 */
  h1,h2,h3,.card-title,.modal-header h3{word-break:break-word;white-space:normal}
  .ellipsis,.txt-ellipsis{white-space:normal}
}

/* ============ t393 即时通讯（chat.js）手机端布局修复 ============ */
/* 现象：chat.js 左栏 .chat-side 写死 width:300px;flex:0 0 auto，
   375px 视口被占 300px，右侧消息区仅剩 ~75px 不可用。
   修复：手机端改为上下堆叠（会话列表在上、消息在下），各占满宽。 */
@media (max-width:768px){
  .chat-layout{flex-direction:column!important;height:auto!important}
  .chat-side{width:100%!important;max-width:100%!important;flex:0 0 auto!important;
    height:38vh!important;border-right:none!important;border-bottom:1px solid var(--gray-100)}
  .chat-main{flex:1 1 auto!important;width:100%!important;min-height:52vh!important}
  .chat-msg-list{height:auto!important;max-height:52vh!important}
}

/* ============ t394 全站移动端表格横向滚动兜底 + 细节加固（#1466） ============ */
/* 现象：个别模块表格未包 .table-wrap，直接用 min-width 680~980px 的裸 <table>，
   在 375px 视口会撑破页面导致横向 overflow（直播工时/租赁/办公人事/主播/团队/资产/招聘 等）。
   修复：手机端给常见内容容器开启横向滚动兜底；已自带滚动容器的
   （card overflow:auto / .eas-twrap / .rpt-tbl-wrap / .table-wrap）不受影响。
   纯增量，仅 @media(max-width:768px) 内生效，不改动任何桌面布局。 */
@media (max-width:768px){
  .page-body,.card,.content,.sheet,.fe-card,.modal-body,.drawer-body,.panel{
    overflow-x:auto;-webkit-overflow-scrolling:touch;
  }
  /* 顶部筛选/工具条在手机端允许换行，不挤一行溢出 */
  .filter-bar,.toolbar{flex-wrap:wrap}
  /* 弹层内长文本/编号可断行，避免横向溢出 */
  .modal-body,.drawer-body{word-break:break-word;overflow-wrap:anywhere}
}

