:root{--blue:#1B79C6;--blue-dark:#0f66a8;--blue-light:#e6f2fb;--red:#dc4b4b;--red-light:#fdecec;--green:#3a9d63;--green-light:#e9f7ef;--orange:#e07b2f;--orange-light:#fdf3e8;--purple:#8b5cf6;--purple-light:#f1eafe;--pink:#e05a8a;--pink-light:#fdeef4;--gray-50:#f9fafb;--gray-100:#f3f5f8;--gray-200:#e6e9ef;--gray-300:#d0d5dd;--gray-400:#98a1b0;--gray-500:#6b7484;--gray-600:#4a5568;--gray-700:#374151;--gray-800:#262f3b;--gray-900:#161e27;--amber:#d9a520;--amber-light:#fdf7e0;--yellow:#c9a52f;--yellow-light:#faf0d2;--cyan:#3aa0b8;--cyan-light:#eaf7fa;--radius:8px;--radius-lg:12px;--radius-sm:4px;--radius-pill:999px;--shadow:0 1px 2px rgba(16,24,40,.04),0 1px 3px rgba(16,24,40,.05);--shadow-md:0 2px 8px rgba(16,24,40,.06),0 4px 12px rgba(16,24,40,.05);--shadow-lg:0 12px 32px rgba(16,24,40,.1),0 4px 8px rgba(16,24,40,.04)}
*{margin:0;padding:0;box-sizing:border-box}
body{font-family:-apple-system,"Microsoft YaHei","PingFang SC",sans-serif;color:var(--gray-800);background:var(--gray-50);line-height:1.6;-webkit-font-smoothing:antialiased}
/* Header — 大厂式单行布局：素雅 · 紧凑 */
.header{background:#fff;border-bottom:1px solid var(--gray-200);padding:0 20px;height:56px;display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:100;box-shadow:0 1px 2px rgba(15,23,42,.04);gap:10px}
.header-left{display:flex;align-items:center;gap:10px;min-width:0}
.logo{width:32px;height:32px;border-radius:8px;display:flex;align-items:center;justify-content:center;flex-shrink:0;overflow:hidden}
.brand-row{display:flex;align-items:baseline;gap:10px;min-width:0;flex-wrap:nowrap;flex-shrink:0}
.header-title{font-size:16px;font-weight:700;color:var(--gray-900);white-space:nowrap;letter-spacing:.2px}
.header-week{font-size:12px;color:var(--gray-400);white-space:nowrap}
.header-meta{display:flex;align-items:center;gap:6px;min-width:0;margin-top:0}
.header-sub{font-size:12px;color:var(--gray-500);font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.super-dept-select{font-size:12px;font-weight:500;color:var(--blue);background:var(--blue-light);border:1px solid var(--blue);border-radius:6px;padding:3px 8px;cursor:pointer;font-family:inherit;outline:none;white-space:nowrap;max-width:120px}
.super-dept-select:hover{background:#d7e5fd}
.super-dept-select:focus{border-color:var(--blue-dark);box-shadow:0 0 0 2px rgba(47,111,237,.12)}
@media(max-width:480px){.super-dept-select{font-size:11px;padding:2px 6px;max-width:90px}}
.header-right{display:flex;align-items:center;gap:8px;min-width:0;flex-shrink:1}
.acc-badge-wrap{display:inline-flex;align-items:center;gap:6px;min-width:0;flex-shrink:1;max-width:100%}
.acc-person{display:flex;align-items:center;gap:5px;min-width:0;flex-shrink:1}
.acc-person-name{font-size:12px;font-weight:600;color:var(--gray-700);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:76px}
.acc-role{font-size:12px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.acc-switch-btn{display:inline-flex;align-items:center;gap:2px;border:1px dashed var(--blue);background:var(--blue-light);color:var(--blue);border-radius:10px;font-size:10px;font-weight:600;cursor:pointer;padding:2px 8px;line-height:1.5;transition:all .15s;font-family:inherit;white-space:nowrap}
.acc-switch-btn:hover{background:#d7e5fd;border-style:solid}
/* 操作按钮组：素雅文字按钮，与账号区间以细线分隔 */
.header-menu{display:flex;align-items:center;gap:4px;flex-shrink:0;margin-left:6px;padding-left:10px;border-left:1px solid var(--gray-200)}
.btn-menu{display:inline-flex;align-items:center;gap:4px;border:none;background:transparent;border-radius:6px;font-size:12px;color:var(--gray-600);cursor:pointer;padding:4px 7px;line-height:1;transition:all .15s;font-family:inherit;font-weight:500;white-space:nowrap}
.btn-menu:hover{background:var(--gray-100);color:var(--gray-800)}
.btn-menu .hm-ico{font-size:15px;line-height:1}
/* 微信分享图标：绿色双气泡 */
.hm-share-ico{width:18px;height:18px;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}
.btn-menu.hm-me:hover{background:var(--blue-light);color:var(--blue)}
.btn-menu.hm-share:hover{background:transparent}
.btn-menu.hm-logout:hover{background:var(--red-light);color:var(--red)}
.role-badge{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:12px;font-size:11px;font-weight:500}
.role-badge.leader{background:var(--blue-light);color:var(--blue)}
.role-badge.aggregator{background:var(--green-light);color:var(--green)}
.role-badge.vice_leader{background:var(--purple-light);color:var(--purple)}
.role-badge.main_leader{background:var(--orange-light);color:var(--orange)}
.role-sel-leader{background:var(--blue-light)!important;color:var(--blue)!important;border-color:var(--blue)!important;font-weight:600}
.role-sel-aggregator{background:var(--green-light)!important;color:var(--green)!important;border-color:var(--green)!important;font-weight:600}
.role-sel-vice_leader{background:var(--purple-light)!important;color:var(--purple)!important;border-color:var(--purple)!important;font-weight:600}
.role-sel-main_leader{background:var(--orange-light)!important;color:var(--orange)!important;border-color:var(--orange)!important;font-weight:600}
.role-txt-leader{color:var(--blue)}
.role-txt-aggregator{color:var(--green)}
.role-txt-vice_leader{color:var(--purple)}
.role-txt-main_leader{color:var(--orange)}
/* Offline banner */
#offlineBanner{position:fixed;top:0;left:0;right:0;z-index:1000;background:var(--red);color:#fff;text-align:center;padding:8px 12px;font-size:12px;font-weight:500;display:none;box-shadow:0 2px 8px rgba(211,47,47,.3)}
#offlineBanner.show{display:block;animation:fadeIn .2s ease}
/* Sim float ball — v1.17.0.0 已弃用（按钮移至顶栏 #simToggleBtn），保留作兼容占位 */
#simFloat{position:fixed;right:16px;bottom:80px;z-index:900;width:56px;height:56px;border-radius:50%;background:var(--blue);color:#fff;display:none;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 4px 16px rgba(0,82,217,.35);font-size:11px;font-weight:700;text-align:center;line-height:1.2;transition:transform .2s;user-select:none;pointer-events:none}
#simFloat:active{transform:scale(.92)}
#simFloat.sim-active{background:var(--orange)}
/* v1.17.0.0 模拟角色顶栏按钮（替代原浮动球） */
.sim-toggle{display:inline-flex;align-items:center;justify-content:center;padding:4px 10px;font-size:12px;font-weight:600;border-radius:8px;cursor:pointer;font-family:inherit;border:1px solid var(--blue);background:var(--blue-light);color:var(--blue);transition:all .15s;white-space:nowrap;user-select:none;vertical-align:middle}
.sim-toggle:hover{background:#dbe7fe}
.sim-toggle.sim-active{border-color:var(--orange);background:#fef3e2;color:var(--orange)}
#simPanel{position:fixed;right:16px;bottom:144px;z-index:901;background:#fff;border:1px solid var(--gray-200);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);padding:12px;display:none;min-width:220px;max-width:260px}
#simPanel.show{display:block;animation:fadeIn .15s ease}
#simPanel .sim-title{font-size:12px;font-weight:700;color:var(--gray-900);margin-bottom:8px}
#simPanel .sim-list{max-height:300px;overflow-y:auto}
#simPanel .sim-item{padding:8px 10px;border-radius:var(--radius);cursor:pointer;font-size:12px;color:var(--gray-700);transition:background .15s;display:flex;align-items:center;justify-content:space-between;gap:6px}
#simPanel .sim-item:hover{background:var(--gray-100)}
#simPanel .sim-item.active{background:var(--orange-light);color:var(--orange);font-weight:600}
#simPanel .sim-item .sim-role{font-size:10px;color:var(--gray-400)}
#simPanel .sim-cancel{margin-top:8px;padding-top:8px;border-top:1px solid var(--gray-100);text-align:center}
.btn{display:inline-flex;align-items:center;gap:4px;padding:7px 14px;border:1px solid var(--gray-200);border-radius:var(--radius);background:#fff;cursor:pointer;font-size:12px;color:var(--gray-600);transition:all .2s;font-family:inherit;font-weight:500}
.btn:hover{background:var(--gray-50);border-color:var(--gray-300)}
.btn-primary{background:var(--blue);color:#fff;border-color:var(--blue)}.btn-primary:hover{background:var(--blue-dark);box-shadow:0 2px 8px rgba(47,111,237,.18)}
.btn-danger{background:var(--red);color:#fff;border-color:var(--red)}.btn-danger:hover{background:#c93a3a;box-shadow:0 2px 8px rgba(220,75,75,.18)}
.btn-success{background:var(--green);color:#fff;border-color:var(--green)}.btn-success:hover{background:#2e8050;box-shadow:0 2px 8px rgba(58,157,99,.18)}
.btn-orange{background:var(--orange);color:#fff;border-color:var(--orange)}.btn-orange:hover{background:#c96a24}
.btn-sm{padding:4px 10px;font-size:11px}
.btn-ghost{border:none;background:transparent;color:var(--gray-500)}.btn-ghost:hover{background:var(--gray-100)}
/* Task action buttons — unified minimal style (Linear/Notion-like) */
.act-btn{display:inline-flex;align-items:center;gap:3px;padding:3px 10px;font-size:12px;font-weight:500;line-height:1.5;border-radius:6px;border:1px solid transparent;background:transparent;cursor:pointer;font-family:inherit;white-space:nowrap;transition:all .15s}
.act-btn:hover{background:var(--gray-100)}
.act-btn-primary{color:var(--blue);background:var(--blue-light)}.act-btn-primary:hover{background:#dbe7fe}
.act-btn-accent{color:var(--orange);background:var(--orange-light)}.act-btn-accent:hover{background:#fbe6d3}
.act-btn-muted{color:var(--gray-500)}.act-btn-muted:hover{background:var(--gray-100);color:var(--gray-700)}
.act-btn-danger{color:var(--gray-400)}.act-btn-danger:hover{background:var(--red-light);color:var(--red)}
/* v1.24.0.1 状态机预判置灰：角色/状态不满足，点击弹原因（span 可聚焦反馈，替代 disabled） */
.act-btn-disabled{color:var(--gray-400);background:var(--gray-100);cursor:not-allowed}.act-btn-disabled:hover{background:var(--gray-100);color:var(--gray-400)}
select.header-select{padding:6px 28px 6px 10px;border:1px solid var(--gray-200);border-radius:var(--radius);font-size:12px;background:#fff;cursor:pointer;font-family:inherit;color:var(--gray-700);font-weight:500}
/* Main */
.main{max-width:1200px;margin:0 auto;padding:20px 16px}
/* Tabs */
.tabs{display:flex;gap:2px;background:var(--gray-100);padding:4px;border-radius:var(--radius-lg);margin-bottom:20px}
.tab{flex:1;text-align:center;padding:9px 12px;border:none;background:none;cursor:pointer;font-size:13px;font-weight:500;border-radius:8px;color:var(--gray-400);transition:all .2s;font-family:inherit;position:relative}
.tab:hover:not(.active){color:var(--gray-600);background:rgba(255,255,255,.5)}
.tab.active{background:#fff;color:var(--gray-900);box-shadow:var(--shadow)}
.tab-badge{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;border-radius:9px;font-size:10px;font-weight:700;margin-left:4px;background:var(--red);color:#fff}
.tab-badge.zero{display:none}
.page{display:none}.page.active{display:block;animation:fadeIn .2s ease}
@keyframes fadeIn{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}
/* Stats */
.stats{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;margin-bottom:16px}
.stat-card{background:#fff;border-radius:var(--radius);padding:10px 8px;border:1px solid var(--gray-200);box-shadow:var(--shadow);transition:all .2s;position:relative;overflow:hidden;text-align:center}
.stat-card::before{content:'';position:absolute;left:0;top:0;bottom:0;width:3px}
.stat-card.blue::before{background:var(--blue)}.stat-card.green::before{background:var(--green)}.stat-card.red::before{background:var(--red)}.stat-card.yellow::before{background:var(--orange)}.stat-card.gray::before{background:var(--gray-400)}.stat-card.purple::before{background:var(--purple)}
.stat-card.clickable{cursor:pointer}
.stat-card.clickable:hover{box-shadow:var(--shadow-md);transform:translateY(-1px)}
.stat-card.clickable.active{border:2px solid var(--gray-900);box-shadow:var(--shadow-md)}
.stat-num{font-size:22px;font-weight:800;letter-spacing:-.5px}
.stat-label{font-size:10px;color:var(--gray-400);margin-top:2px;font-weight:500}
/* Toolbar (search + filter) */
.toolbar{display:flex;gap:8px;margin-bottom:12px;flex-wrap:nowrap;align-items:center}
.search-box{flex:1;min-width:80px;position:relative}
.search-box input{width:100%;padding:7px 12px 7px 30px;border:1px solid var(--gray-200);border-radius:var(--radius);font-size:13px;font-family:inherit;background:#fff;transition:all .2s}
.search-box input:focus{outline:none;border-color:var(--blue);box-shadow:0 0 0 3px rgba(0,82,217,.08)}
.search-box::before{content:'\1F50E';position:absolute;left:8px;top:50%;transform:translateY(-50%);font-size:12px;opacity:.4}
.filter-select{padding:6px 24px 6px 8px;border:1px solid var(--gray-200);border-radius:var(--radius);font-size:12px;background:#fff;cursor:pointer;font-family:inherit;color:var(--gray-600);font-weight:500;white-space:nowrap;flex-shrink:0}
.filter-bar{display:flex;align-items:center;gap:8px;margin-bottom:12px;padding:8px 14px;background:var(--blue-light);border-radius:var(--radius);font-size:12px;color:var(--blue)}
/* Cards */
.card{background:#fff;border-radius:var(--radius-lg);box-shadow:var(--shadow);margin-bottom:12px;overflow:hidden;border:1px solid var(--gray-200)}
.card-header{padding:14px 18px;border-bottom:1px solid var(--gray-100);font-weight:700;font-size:14px;color:var(--gray-800)}
.card-body{padding:16px 18px}
/* Task Cards */
.task-card{background:#fff;border:1px solid var(--gray-200);border-radius:var(--radius-lg);padding:14px 16px;margin-bottom:10px;transition:all .2s;position:relative}
.task-card:hover{box-shadow:var(--shadow-md);border-color:var(--gray-300)}
.task-card.timeout{border-left:3px solid var(--red);background:linear-gradient(90deg,var(--red-light),#fff 2%)}
.task-card.done-card{border-left:3px solid var(--green);background:linear-gradient(90deg,var(--green-light),#fff 2%)}
.task-card.pending-close{border-left:3px solid var(--orange);background:linear-gradient(90deg,var(--orange-light),#fff 2%)}
.task-card.pending-delete{border-left:3px solid var(--purple);background:linear-gradient(90deg,var(--purple-light),#fff 2%)}
.task-card.pending-level{border-left:3px solid var(--blue);background:linear-gradient(90deg,var(--blue-light),#fff 2%)}
.task-card.closed{opacity:.7}
.task-top{display:flex;align-items:center;gap:6px;margin-bottom:8px;flex-wrap:wrap;font-size:12px;color:var(--gray-500)}
.task-content{font-weight:500;font-size:14px;margin-bottom:8px;color:var(--gray-900);line-height:1.5}
/* 6-3 任务标题可点击进详情：悬停变主色，不改变排版密度 */
.task-title-link{cursor:pointer;border-radius:4px;transition:color .15s ease}
.task-title-link:hover{color:var(--blue)}
.task-title-link:active{opacity:.78}
.task-meta{display:flex;gap:14px;font-size:12px;color:var(--gray-400);flex-wrap:wrap;align-items:center}
.task-meta span{display:inline-flex;align-items:center;gap:3px}
.task-meta .overtime{color:var(--red);font-weight:700}
.task-progress{margin-top:10px;padding:10px 12px;background:var(--gray-50);border-radius:var(--radius);font-size:12px;color:var(--gray-600);border-left:2px solid var(--gray-300)}
.task-actions{float:right;display:flex;gap:4px}
.pending-notice{margin-top:10px;padding:8px 12px;border-radius:var(--radius);font-size:11px;display:flex;align-items:center;gap:6px}
.pending-notice.close{background:var(--orange-light);color:var(--orange)}
.pending-notice.delete{background:var(--purple-light);color:var(--purple)}
.pending-notice.level{background:var(--blue-light);color:var(--blue)}
.history-toggle{margin-top:8px;font-size:13px;color:var(--gray-400);cursor:pointer;user-select:none;display:inline-flex;align-items:center;gap:4px;border:none;background:none;font-family:inherit}
.history-toggle:hover{color:var(--blue)}
.history-list{margin-top:8px;padding:10px 12px;background:var(--gray-50);border-radius:var(--radius);border-left:2px solid var(--gray-300)}
.history-item{display:flex;gap:8px;font-size:14px;color:var(--gray-600);padding:5px 0;border-bottom:1px dashed var(--gray-200)}
.history-item:last-child{border-bottom:none}
.history-week{flex:0 0 auto;min-width:0;font-weight:500;color:var(--gray-700);white-space:nowrap}
.hist-group-label{font-size:13px;font-weight:700;color:var(--gray-400);margin:2px 0 4px;letter-spacing:.5px}
.edit-area{margin-top:10px;padding-top:10px;border-top:1px solid var(--gray-100)}
.edit-area input{margin-bottom:6px}
/* Badges */
.badge{display:inline-flex;align-items:center;padding:1px 6px;border-radius:4px;font-size:11px;font-weight:600;gap:2px;letter-spacing:.3px}
.badge-s{background:var(--orange-light);color:var(--orange);border:1px solid var(--orange)}.badge-a{background:var(--amber-light);color:var(--amber);border:1px solid var(--amber)}.badge-b{background:var(--blue-light);color:var(--blue);border:1px solid var(--blue)}.badge-c{background:var(--green-light);color:var(--green);border:1px solid var(--green)}
.badge-pending{background:var(--amber-light);color:var(--amber);border:1px solid var(--amber)}.badge-aggregated{background:var(--blue-light);color:var(--blue);border:1px solid #bfdbfe}
.badge-reviewed{background:var(--purple-light);color:var(--purple);border:1px solid #e9d5ff}.badge-confirmed{background:var(--green-light);color:var(--green);border:1px solid #bbf7d0}
.badge-completed{background:var(--green-light);color:var(--green);border:1px solid #bbf7d0}.badge-timeout{background:var(--red-light);color:var(--red);border:1px solid var(--red)}
.badge-closed{background:var(--gray-100);color:var(--gray-400);border:1px solid var(--gray-200)}.badge-pending-close{background:var(--orange-light);color:var(--orange);border:1px solid #fed7aa}
.badge-pending-delete{background:var(--purple-light);color:var(--purple);border:1px solid #e9d5ff}.badge-pending-level{background:var(--blue-light);color:var(--blue);border:1px solid #bfdbfe}
/* Form */
.form-group{margin-bottom:14px}.form-label{display:block;font-size:12px;color:var(--gray-500);margin-bottom:5px;font-weight:500}
.form-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}
input,textarea,select.form-input{width:100%;padding:9px 12px;border:1px solid var(--gray-200);border-radius:var(--radius);font-size:13px;font-family:inherit;background:#fff;transition:all .2s;color:var(--gray-800)}
input:focus,textarea:focus,select.form-input:focus{outline:none;border-color:var(--blue);box-shadow:0 0 0 3px rgba(0,82,217,.08)}
/* Evaluation stars */
.eval-stars{display:inline-flex;gap:2px;margin-left:4px}
.eval-star{font-size:12px}
/* Dashboard bars */
.bar-row{display:flex;align-items:center;gap:10px;margin-bottom:10px}
.bar-label{width:70px;text-align:right;font-size:11px;color:var(--gray-500);font-weight:500}
.bar-track{flex:1;height:18px;background:var(--gray-100);border-radius:9px;overflow:hidden}
.bar-fill{height:100%;border-radius:9px;transition:width .4s ease}.bar-num{width:44px;font-size:12px;font-weight:700;color:var(--gray-700)}
/* Ranking */
.rank-item{display:flex;align-items:center;justify-content:space-between;padding:12px 14px;border:1px solid var(--gray-200);border-radius:var(--radius);margin-bottom:8px;transition:all .2s}
.rank-item:hover{box-shadow:var(--shadow)}
.rank-left{display:flex;align-items:center;gap:12px}
.rank-num{font-size:18px;font-weight:800;color:var(--gray-300);width:28px;text-align:center}
.rank-num.top1{color:var(--orange)}.rank-num.top2{color:var(--gray-400)}.rank-num.top3{color:#d97706}
.rank-info{display:flex;gap:16px;font-size:11px;color:var(--gray-500)}
/* Todo */
.todo-section{margin-bottom:24px}
.todo-section h4{font-size:13px;color:var(--gray-700);margin-bottom:10px;padding-bottom:6px;border-bottom:2px solid var(--gray-100);font-weight:700}
.todo-item{border-left:3px solid var(--orange);background:#fff;border-radius:var(--radius-lg);padding:14px 16px;margin-bottom:10px;box-shadow:var(--shadow);border:1px solid var(--gray-200)}
.todo-item.item-close{border-left-color:var(--orange)}.todo-item.item-delete{border-left-color:var(--purple)}
.todo-item.item-level{border-left-color:var(--blue)}.todo-item.item-flow{border-left-color:var(--green)}
.todo-actions{margin-top:12px;padding-top:12px;border-top:1px solid var(--gray-100)}
.todo-actions input{margin-bottom:8px}
.empty{text-align:center;padding:48px 20px;color:var(--gray-400);font-size:13px}
.empty img,.empty-icon{font-size:32px;margin-bottom:8px;display:block;text-align:center;opacity:.3}
.empty-hint{font-size:11px;margin-top:6px;color:var(--gray-300);opacity:.7}
/* v1.18.0.59 空态页统一引导按钮 */
.empty-btn{display:inline-block;margin-top:14px;padding:9px 22px;border:none;border-radius:20px;background:var(--blue,#1B79C6);color:#fff;font-size:13px;font-weight:600;cursor:pointer;box-shadow:0 2px 8px rgba(27,121,198,.22);line-height:1.4}
.empty-btn:hover{opacity:.9}
.empty-btn:active{transform:scale(.97)}
/* 个人工作台三区（v1.3.13.16） */
.wb-summary{display:flex;gap:8px;margin-bottom:14px}
.wb-card{flex:1;background:#fff;border:1px solid var(--gray-200);border-radius:var(--radius);padding:10px 8px;text-align:center;cursor:pointer;transition:box-shadow .15s,transform .1s}
.wb-card:active{transform:scale(.97)}
.wb-card:hover{box-shadow:var(--shadow)}
.wb-num{font-size:20px;font-weight:800;line-height:1.25}
.wb-label{font-size:11px;color:var(--gray-500);margin-top:2px}
.wb-tasks .wb-num{color:var(--green)}
.wb-approve .wb-num{color:var(--blue)}
.wb-apply .wb-num{color:var(--orange)}
.wb-zone{background:var(--gray-50);border:1px solid var(--gray-200);border-radius:var(--radius-lg);padding:14px 14px 2px;margin-bottom:16px}
.wb-zone-head{display:flex;align-items:center;gap:6px;font-size:14px;font-weight:700;color:var(--gray-800);margin-bottom:10px;padding-bottom:6px;border-bottom:2px solid var(--gray-200)}
.wb-zone-icon{font-size:15px}
.wb-zone-count{margin-left:auto;font-size:11px;font-weight:600;color:var(--gray-500);background:var(--gray-100);border-radius:10px;padding:2px 8px}
.wb-zone .todo-section{margin-bottom:14px}
.wb-zone .todo-section:last-child{margin-bottom:8px}
.wb-empty{text-align:center;padding:20px 12px;color:var(--gray-400);font-size:12px;border:1px dashed var(--gray-200);border-radius:var(--radius);margin-bottom:10px}
/* ====== 公司交办分区（待办tab） ====== */
.cd-section{background:linear-gradient(135deg,#f0f5ff,#f8fbff);border:1px solid #c7dbf5;border-radius:var(--radius-lg);padding:14px 14px 8px;margin-bottom:14px}
.cd-section-head{display:flex;align-items:center;gap:8px;margin-bottom:10px;padding-bottom:8px;border-bottom:2px solid #b8d4f7}
.cd-section-title{font-size:15px;font-weight:800;color:#1a4ed8;letter-spacing:.3px}
.cd-section-count{font-size:12px;font-weight:700;color:#fff;background:#2563eb;border-radius:999px;padding:1px 8px;line-height:18px}
.cd-subsection{margin-bottom:10px}
.cd-subsection:last-child{margin-bottom:0}
.cd-sub-head{display:flex;align-items:center;gap:6px;font-size:13px;font-weight:700;color:#374151;margin-bottom:6px;padding:4px 0;border-bottom:1px solid #e2e8f0}
.cd-sub-count{font-size:11px;font-weight:600;color:#64748b;background:#f1f5f9;border-radius:999px;padding:1px 7px;margin-left:auto}
.cd-card{border-left:3px solid #2563eb;background:#fff;border-radius:var(--radius);padding:10px 12px;margin-bottom:6px;box-shadow:var(--shadow);border:1px solid #e2e8f0}
.cd-card-top{display:flex;align-items:center;gap:6px;flex-wrap:nowrap;margin-bottom:4px}
.cd-card-lv{flex:0 0 auto;font-size:11px;font-weight:800;color:#fff;border-radius:4px;padding:0 6px;line-height:18px}
.cd-card-status{font-size:11px;font-weight:600;padding:1px 6px;border-radius:4px;line-height:18px}
.cd-card-dept{font-size:11px;color:#64748b;margin-left:auto;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:80px}
.cd-card-content{font-size:13.5px;font-weight:600;color:#0f172a;margin-bottom:3px;line-height:1.4;cursor:pointer;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.cd-card-meta{font-size:11px;color:#94a3b8;display:flex;gap:10px;flex-wrap:wrap;margin-top:2px}
.cd-card-deadline{color:#dc4b4b;font-weight:600}
.cd-card-btn{margin-top:6px;display:inline-flex;align-items:center;gap:4px;border:none;border-radius:7px;background:#2563eb;color:#fff;font-size:12px;font-weight:600;padding:5px 12px;cursor:pointer;font-family:inherit;white-space:nowrap}
.cd-card-btn:hover{background:#1d4ed8}
.cd-card-btn-sm{font-size:11px;padding:4px 10px}
.cd-dispatch-btn{margin-top:8px;display:inline-flex;align-items:center;gap:4px;border:1px dashed #2563eb;background:#eff6ff;color:#2563eb;border-radius:var(--radius);font-size:13px;font-weight:600;padding:8px 16px;cursor:pointer;font-family:inherit;width:100%;text-align:center}
.cd-dispatch-btn:hover{background:#dbeafe}
/* ====== 督办速览（健康度驱动）====== */
.svp-wrap{margin:0 0 12px;border-radius:var(--radius-lg);overflow:hidden;border:1px solid var(--gray-200)}
.svp-collapsed-bar{display:flex;align-items:center;gap:8px;padding:8px 14px;background:linear-gradient(135deg,#1a4ed8,#2563eb);color:#fff;cursor:pointer;font-size:13px;font-weight:700;transition:background .15s}
.svp-collapsed-bar:hover{background:linear-gradient(135deg,#1d4ed8,#1e4ed8)}
.svp-collapsed-bar .svp-arrow{transition:transform .2s;font-size:11px;display:inline-block}
.svp-collapsed-bar.svp-collapsed .svp-arrow{transform:rotate(-90deg)}
.svp-collapsed-bar .svp-sum{font-size:12px;font-weight:500;opacity:.9;margin-left:auto;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:300px}
.svp-body{padding:0 14px 14px;display:none}
.svp-body.svp-open{display:block}
.svp-tier{margin-bottom:14px}
.svp-tier-head{display:flex;align-items:center;gap:8px;margin-bottom:8px;padding-bottom:4px;border-bottom:1px solid var(--gray-100)}
.svp-tier-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}
.svp-tier-dot.danger{background:var(--red);box-shadow:0 0 0 3px rgba(220,75,75,.15)}
.svp-tier-dot.warn{background:var(--orange);box-shadow:0 0 0 3px rgba(224,123,47,.15)}
.svp-tier-dot.ok{background:var(--green);box-shadow:0 0 0 3px rgba(58,157,99,.15)}
.svp-tier-label{font-size:13px;font-weight:700}
.svp-tier-label.danger{color:var(--red)}
.svp-tier-label.warn{color:var(--orange)}
.svp-tier-label.ok{color:var(--green)}
.svp-tier-count{font-size:12px;color:var(--gray-400)}
.svp-card{display:flex;align-items:center;gap:10px;padding:10px 12px;background:#fff;border:1px solid var(--gray-200);border-radius:var(--radius);margin-bottom:6px;box-shadow:var(--shadow);cursor:pointer;transition:all .15s;flex-wrap:wrap}
.svp-card:hover{border-color:var(--gray-300);box-shadow:var(--shadow-md)}
.svp-card-lv{flex:0 0 auto;font-size:11px;font-weight:800;color:#fff;border-radius:4px;padding:0 6px;line-height:18px}
.svp-card-lv.s{background:#dc2626}.svp-card-lv.a{background:#ea580c}.svp-card-lv.b{background:#1B79C6}.svp-card-lv.c{background:#059669}
.svp-card-content{flex:1 0 120px;font-size:13px;font-weight:600;color:var(--gray-900);line-height:1.4;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.svp-card-dept{font-size:11px;color:var(--gray-400);flex:0 0 auto;max-width:70px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.svp-card-days{font-size:11px;font-weight:700;flex:0 0 auto;min-width:50px;text-align:right}
.svp-card-days.danger{color:var(--red)}.svp-card-days.warn{color:var(--orange)}.svp-card-days.ok{color:var(--green)}
.svp-bar{width:100%;height:4px;background:var(--gray-100);border-radius:2px;overflow:hidden;margin-top:4px}
.svp-bar-fill{height:100%;border-radius:2px;transition:width .3s}
.svp-bar-fill.danger{background:var(--red)}.svp-bar-fill.warn{background:var(--orange)}.svp-bar-fill.ok{background:var(--green)}
.svp-review{border:2px solid #f59e0b;background:linear-gradient(180deg,#fff8ef,#fffdf9);border-radius:var(--radius-lg);padding:12px 14px;margin-bottom:14px}
.svp-review-head{display:flex;align-items:center;gap:8px;margin-bottom:8px}
.svp-review-icon{font-size:16px}
.svp-review-title{font-size:14px;font-weight:800;color:#b45309}
.svp-review-cta{display:inline-flex;align-items:center;gap:4px;margin-top:8px;border:none;border-radius:7px;background:#b45309;color:#fff;font-size:13px;font-weight:700;padding:7px 16px;cursor:pointer;font-family:inherit;white-space:nowrap}
.svp-review-cta:hover{background:#9a4a08}
.svp-empty{text-align:center;padding:20px 0;color:var(--green);font-size:13px;font-weight:600}
@media(max-width:600px){
  .svp-card{flex-wrap:wrap}.svp-card-content{flex:1 1 100%}
  .svp-card-days{flex:0 0 auto;min-width:auto;margin-top:2px}
  .svp-bar{margin-top:6px}
  .svp-collapsed-bar .svp-sum{max-width:180px}
  .svp-review-cta{font-size:12px;padding:6px 12px}
}
/* Dashboard charts */
.dash-chart-row{display:flex;gap:20px;align-items:flex-start}
.dash-pie{flex:0 0 180px;text-align:center}
.dash-pie-circle{width:160px;height:160px;border-radius:50%;margin:0 auto 10px}
.dash-bars{flex:1;min-width:0;display:flex;align-items:flex-end;gap:12px;height:160px;padding:0 4px}
.dash-bar-col{flex:1;display:flex;flex-direction:column;align-items:center;height:100%;justify-content:flex-end}
.dash-bar{width:100%;max-width:40px;border-radius:4px 4px 0 0;min-height:4px;transition:height .3s}
.dash-legend{margin-top:10px;text-align:left}
/* Rule rows */
.rule-row{display:flex;align-items:center;gap:8px;margin-bottom:10px;font-size:13px;color:var(--gray-600);padding:2px 0}
/* Modal */
.modal-overlay{display:none;position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(15,23,42,.4);z-index:400;align-items:center;justify-content:center;backdrop-filter:blur(2px)}
.modal-overlay.show{display:flex;animation:fadeIn .15s ease}
.modal{background:#fff;border-radius:var(--radius-lg);padding:28px;width:90%;max-width:520px;max-height:90vh;overflow-y:auto;box-shadow:var(--shadow-lg);animation:modalIn .2s ease}
@keyframes modalIn{from{opacity:0;transform:scale(.95) translateY(-10px)}to{opacity:1;transform:scale(1) translateY(0)}}
.modal h3{margin-bottom:18px;font-size:17px;font-weight:700;color:var(--gray-900)}.modal-actions{display:flex;gap:8px;margin-top:20px}
/* 协办反馈弹窗紧凑态：手机端弹键盘后也尽量一屏放下，少滚动（v1.8.1.4） */
.modal.cohost-compact{padding:18px 18px 14px}
.modal.cohost-compact h3{margin-bottom:10px;font-size:16px}
.modal.cohost-compact .form-group{margin-bottom:9px}
.modal.cohost-compact .form-label{margin-bottom:4px}
.modal.cohost-compact #progressTaskInfoGroup{display:none}
.modal.cohost-compact #progressText{min-height:60px;padding:8px 10px}
.modal.cohost-compact #progressHint{font-size:11px;margin-top:3px;line-height:1.45}
.modal.cohost-compact .modal-actions{margin-top:10px}
@media(max-width:480px){.modal.cohost-compact{padding:14px 14px 10px;max-height:86vh}.modal.cohost-compact h3{margin-bottom:8px}.modal.cohost-compact .form-group{margin-bottom:7px}.modal.cohost-compact #progressText{min-height:54px;padding:7px 9px}.modal.cohost-compact #cohostStateGroup label{padding:7px 2px!important;font-size:12.5px!important}}
/* First Login (single-page, tile-based) */
.init-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:linear-gradient(160deg,#eef3fc 0%,#f6f3fe 55%,#f0f7f3 100%);z-index:300;display:flex;align-items:center;justify-content:center;overflow-y:auto;padding:20px 0}
.init-box{background:#fff;border-radius:var(--radius-lg);padding:36px 28px 0;width:400px;max-width:92vw;box-shadow:0 20px 60px rgba(30,64,120,.12);margin:auto;animation:initBoxIn .35s ease}
@keyframes initBoxIn{from{opacity:0;transform:translateY(20px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}
.init-logo{width:100%;margin:0 auto 6px;display:flex;flex-direction:row;align-items:center;justify-content:center;gap:10px;transform:translateX(-14px)}
@media(max-width:480px){.init-logo{transform:translateX(-18px)}}
.init-logo img{width:48px;height:48px;border-radius:12px;object-fit:cover;flex-shrink:0}
.init-logo .init-text{display:flex;flex-direction:column;gap:2px}
.init-logo .init-title{font-size:20px;font-weight:800;color:var(--gray-900);letter-spacing:.5px;line-height:1.2}
.init-logo .init-slogan{font-size:12px;color:var(--gray-400);line-height:1.2}
.init-box h2{font-size:21px;margin-bottom:4px;text-align:center;font-weight:800;color:var(--gray-900)}
.init-sub{text-align:center;color:var(--gray-400);font-size:13px;margin-bottom:22px}
.role-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:4px}
.role-tile{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;padding:18px 10px;border:2px solid var(--gray-200);border-radius:12px;cursor:pointer;font-size:14px;transition:all .15s;font-weight:600;color:var(--gray-700);text-align:center;-webkit-tap-highlight-color:transparent}
.role-tile:hover{border-color:var(--blue);background:var(--blue-light)}
.role-tile.selected{border-color:var(--blue);background:var(--blue-light);color:var(--blue);box-shadow:0 2px 12px rgba(0,82,217,.15)}
.role-tile .rt-icon{font-size:28px;line-height:1}
.role-tile .rt-name{font-size:15px;font-weight:700}
.role-tile .rt-desc{font-size:11px;color:var(--gray-400);font-weight:400}
.role-tile.selected .rt-desc{color:var(--blue);opacity:.7}
.init-extra-area{overflow:hidden;max-height:0;transition:max-height .25s ease,opacity .2s ease;opacity:0}
.init-extra-area.show{max-height:200px;opacity:1;margin-top:14px}
.init-extra-area .form-label{font-size:12px;color:var(--gray-500);margin-bottom:5px;font-weight:500}
.init-extra-area .form-input{margin-bottom:8px}
.init-host-chk{margin-bottom:4px}
.init-host-chk label{font-size:12px;color:var(--gray-500);display:flex;align-items:center;gap:6px;cursor:pointer}
.init-host-chk input{width:16px;height:16px;accent-color:var(--blue)}
.init-confirm-btn{width:100%;margin-top:14px;padding:12px;font-size:15px;font-weight:600;border-radius:var(--radius);justify-content:center;letter-spacing:8px}
.pw-modal{z-index:400}
.pw-error{color:var(--red);font-size:12px;margin-top:6px;min-height:16px}
.pw-success{color:var(--green);font-size:13px;margin-top:6px;line-height:1.5}
.color-swatch{width:22px;height:22px;border-radius:6px;cursor:pointer;border:2px solid transparent;transition:border-color .2s,transform .15s;flex-shrink:0}
.color-swatch:hover{transform:scale(1.1)}
.color-swatch.selected{border-color:var(--gray-900);box-shadow:0 0 0 2px #fff,0 0 0 4px var(--gray-900)}
.direct-level{margin-top:8px;padding:8px;background:var(--blue-light);border-radius:var(--radius);font-size:12px}
/* Toast（v1.23.0.2 z-index 500→3600：驾驶舱壳(3000)内也要可见，所有弹窗之上） */
.toast-container{position:fixed;top:70px;right:20px;z-index:3600;display:flex;flex-direction:column;gap:8px;pointer-events:none}
.toast{background:var(--gray-900);color:#fff;padding:10px 18px;border-radius:var(--radius);font-size:13px;box-shadow:var(--shadow-lg);animation:toastIn .3s ease;pointer-events:auto;font-weight:500;max-width:300px}
.toast.success{background:var(--green)}.toast.error{background:var(--red)}.toast.info{background:var(--blue)}
.toast.muted{background:var(--gray-100);color:var(--gray-600);box-shadow:var(--shadow);font-weight:400}
@keyframes toastIn{from{opacity:0;transform:translateX(100%)}to{opacity:1;transform:translateX(0)}}
.toast.fadeout{animation:toastOut .3s ease forwards}
@keyframes toastOut{to{opacity:0;transform:translateX(100%)}}
/* 办结仪式overlay */
.celebration-overlay{position:fixed;inset:0;z-index:9999;display:flex;align-items:center;justify-content:center;background:rgba(0,0,0,.35);animation:celFadeIn .25s ease;pointer-events:auto}
.celebration-overlay.fadeout{animation:celFadeOut .35s ease forwards}
.celebration-card{background:var(--card);border-radius:20px;padding:32px 40px;text-align:center;box-shadow:0 12px 48px rgba(0,0,0,.2);animation:celPop .4s cubic-bezier(.18,.89,.32,1.28)}
.celebration-check{width:64px;height:64px;border-radius:50%;background:var(--green);margin:0 auto 16px;display:flex;align-items:center;justify-content:center;animation:celCheck .5s ease .15s both}
.celebration-check svg{width:32px;height:32px;stroke:#fff;stroke-width:3;fill:none;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:48;stroke-dashoffset:48;animation:celCheckStroke .4s ease .3s forwards}
.celebration-title{font-size:18px;font-weight:700;color:var(--text);margin-bottom:4px}
.celebration-sub{font-size:13px;color:var(--gray-500)}
@keyframes celFadeIn{from{opacity:0}to{opacity:1}}
@keyframes celFadeOut{to{opacity:0}}
@keyframes celPop{0%{transform:scale(.8);opacity:0}100%{transform:scale(1);opacity:1}}
@keyframes celCheck{0%{transform:scale(0)}100%{transform:scale(1)}}
@keyframes celCheckStroke{to{stroke-dashoffset:0}}
/* 真·办结奖励（v1.4.0） */
.cc-overlay{position:fixed;inset:0;z-index:10000;display:flex;align-items:center;justify-content:center;background:rgba(15,23,42,.38);animation:ccFadeIn .25s ease}
.cc-overlay.cc-out{animation:ccFadeOut .35s ease forwards}
.cc-card{position:relative;background:var(--card,#fff);border-radius:22px;padding:30px 44px;text-align:center;box-shadow:0 16px 56px rgba(15,23,42,.24);animation:ccPop .45s cubic-bezier(.18,.89,.32,1.28);max-width:88vw}
.cc-badge{width:72px;height:72px;border-radius:50%;margin:0 auto 14px;display:flex;align-items:center;justify-content:center;background:linear-gradient(145deg,#fbbf24,#f59e0b);box-shadow:0 8px 22px rgba(245,158,11,.42);animation:ccBadge .55s .12s both}
.cc-badge svg{width:38px;height:38px;fill:#fff;animation:ccStar .5s .28s both}
.cc-title{font-size:19px;font-weight:800;color:var(--gray-900);letter-spacing:1px}
.cc-task{font-size:13px;color:var(--gray-500);margin-top:5px;max-width:320px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cc-score{font-size:46px;font-weight:900;line-height:1.15;color:#f59e0b;margin:10px 0 2px;font-variant-numeric:tabular-nums}
.cc-score-unit{font-size:15px;font-weight:600;color:var(--gray-500);margin-left:3px}
.cc-chips{display:flex;gap:7px;justify-content:center;margin:7px 0 2px;flex-wrap:wrap}
.cc-chip{font-size:11px;font-weight:600;padding:3px 10px;border-radius:999px}
.cc-chip-level{background:#fff7e6;color:#b45309}
.cc-chip-eval{background:var(--blue-light);color:var(--blue)}
.cc-week{font-size:13px;font-weight:600;color:var(--green);margin-top:9px}
.cc-praise{font-size:12.5px;color:var(--gray-500);margin-top:3px}
.cc-confetti{position:absolute;inset:0;pointer-events:none}
.cc-confetti span{position:absolute;top:-8px;left:50%;width:7px;height:11px;border-radius:2px;opacity:0;animation:ccFall 1.5s ease-in forwards}
.cc-confetti span:nth-child(1){background:#fbbf24;animation-delay:.12s;margin-left:-70px}
.cc-confetti span:nth-child(2){background:#60a5fa;animation-delay:.24s;margin-left:58px}
.cc-confetti span:nth-child(3){background:#34d399;animation-delay:.18s;margin-left:-30px}
.cc-confetti span:nth-child(4){background:#f472b6;animation-delay:.3s;margin-left:26px}
.cc-confetti span:nth-child(5){background:#a78bfa;animation-delay:.2s;margin-left:-96px}
.cc-confetti span:nth-child(6){background:#fb923c;animation-delay:.34s;margin-left:88px}
.cc-reduce .cc-badge{animation:none}
@keyframes ccFadeIn{from{opacity:0}to{opacity:1}}
@keyframes ccFadeOut{to{opacity:0}}
@keyframes ccPop{0%{transform:scale(.82);opacity:0}100%{transform:scale(1);opacity:1}}
@keyframes ccBadge{0%{transform:scale(0) rotate(-30deg)}100%{transform:scale(1) rotate(0)}}
@keyframes ccStar{0%{transform:scale(.4);opacity:0}100%{transform:scale(1);opacity:1}}
@keyframes ccFall{0%{transform:translateY(0) rotate(0);opacity:1}100%{transform:translateY(210px) rotate(260deg);opacity:0}}
@keyframes slideUp{from{transform:translateX(-50%) translateY(100%)}to{transform:translateX(-50%) translateY(0)}}
/* Footer */
.footer{text-align:center;padding:20px;font-size:11px;color:var(--gray-400);border-top:1px solid var(--gray-200);margin-top:30px;background:#fff}
/* ====== 大厂风格统一工具类 ====== */
/* 弹窗内信息框 */
.task-info-box{font-size:13px;padding:8px 12px;background:var(--gray-50);border-radius:var(--radius-sm);color:var(--gray-700);line-height:1.5}
/* 弹窗内分隔区块 */
.modal-section{border-top:1px solid var(--gray-100);margin:16px 0;padding-top:16px}
.modal-section-title{font-size:13px;font-weight:700;margin-bottom:12px;color:var(--gray-800)}
/* 弹窗操作按钮等宽 */
 .modal-actions .btn{flex:1;justify-content:center}
.modal-actions .btn-fixed{flex:0 0 auto}
/* 任务处置弹窗close模式：提交2份、取消1份 */
#progressModalBtns.close-mode .btn{flex:1}
#progressModalBtns.close-mode #progressCancelBtn{flex:0 0 33%}
#progressModalBtns.close-mode #progressPrimaryBtn{flex:1 1 67%}
/* 日期选择器图标标签 */
.date-picker-label{position:relative;display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;border:1px solid var(--gray-200);border-radius:var(--radius);background:#fff;cursor:pointer;font-size:18px;color:var(--cyan);flex-shrink:0}
.date-picker-label input[type=date]{position:absolute;top:0;left:0;width:100%;height:100%;opacity:0;cursor:pointer;font-size:0}
/* 审批意见块 */
.opinion{font-size:12px;margin-top:4px;padding:6px 10px;border-radius:var(--radius-sm);line-height:1.5}
.opinion-vice{background:var(--blue-light);color:var(--blue)}
.opinion-main{background:var(--green-light);color:var(--green)}
.opinion-waive{background:var(--orange-light);color:var(--orange);font-weight:500}
/* 考核表格统一样式 */
.assess-table{width:100%;border-collapse:collapse;font-size:12px}
.assess-table th{background:var(--gray-50);padding:8px 4px;text-align:center;font-weight:600;color:var(--gray-600);border-bottom:2px solid var(--gray-200);white-space:nowrap}
.assess-table td{padding:7px 4px;text-align:center;color:var(--gray-700);border-bottom:1px solid var(--gray-100)}
.assess-table td.person-td{text-align:left;font-weight:600;color:var(--gray-800);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:70px}
.assess-table td.score-td{cursor:pointer;text-decoration:underline;text-decoration-style:dotted;text-underline-offset:3px;font-weight:600}
.assess-table tr:hover td{background:var(--gray-50)}
/* 规则表格 */
.rule-table{width:100%;border-collapse:collapse;font-size:12px;margin-top:8px;table-layout:fixed}
.rule-table th,.rule-table td{padding:8px 10px;border:1px solid var(--gray-200);text-align:center}
.rule-table th{background:var(--gray-50);font-weight:600;color:var(--gray-600)}
/* 看板柱状条 */
.bar-mini{border-radius:var(--radius-sm) var(--radius-sm) 0 0;min-height:4px;transition:height .3s}
.legend-dot{display:inline-block;width:10px;height:10px;border-radius:2px;vertical-align:middle;margin-right:4px}
.legend-item{display:inline-flex;align-items:center;font-size:11px;color:var(--gray-500);margin-right:12px}
/* 等级颜色统一 */
.lv-s{color:var(--orange)}.lv-a{color:var(--amber)}.lv-b{color:var(--blue)}.lv-c{color:var(--green)}
.lv-s-bg{background:var(--orange-light);color:var(--orange)}.lv-a-bg{background:var(--amber-light);color:var(--amber)}.lv-b-bg{background:var(--blue-light);color:var(--blue)}.lv-c-bg{background:var(--green-light);color:var(--green)}
/* 部门/分组颜色 */
.color-cycle-0{color:var(--blue)}.color-cycle-1{color:var(--green)}.color-cycle-2{color:var(--yellow)}.color-cycle-3{color:var(--pink)}.color-cycle-4{color:var(--purple)}
.color-cycle-bg-0{background:var(--blue-light);color:var(--blue)}.color-cycle-bg-1{background:var(--green-light);color:var(--green)}.color-cycle-bg-2{background:var(--yellow-light);color:var(--yellow)}.color-cycle-bg-3{background:var(--pink-light);color:var(--pink)}.color-cycle-bg-4{background:var(--purple-light);color:var(--purple)}
/* 导航药丸按钮 */
.nav-pill{display:inline-flex;align-items:center;gap:4px;padding:5px 14px;border:1px solid var(--gray-200);border-radius:var(--radius-pill);background:#fff;cursor:pointer;font-size:12px;color:var(--gray-600);transition:all .2s;font-family:inherit;font-weight:500}
.nav-pill:hover{background:var(--gray-50);border-color:var(--gray-300)}
.nav-pill.active{background:var(--blue);color:#fff;border-color:var(--blue)}
/* 通用进度条 */
.progress-track{height:6px;background:var(--gray-100);border-radius:var(--radius-pill);overflow:hidden}
.progress-fill{height:100%;border-radius:var(--radius-pill);transition:width .4s ease}
/* Responsive helpers */
.show-mobile{display:none}
/* Mobile */
@media(max-width:768px){.stats{grid-template-columns:repeat(4,1fr);gap:6px}.stat-card{padding:8px 4px}.stat-num{font-size:18px}.stat-label{font-size:10px}.header{padding:8px 14px}.header-title{font-size:14px}.header-sub{font-size:10px}.toolbar{flex-wrap:nowrap;gap:4px}.search-box{min-width:50px;flex:1}.search-box input{padding:6px 8px 6px 26px;font-size:12px}.filter-select{font-size:11px;padding:5px 18px 5px 6px;flex-shrink:0}.tab{font-size:12px;padding:8px}.task-card{padding:12px}.task-actions{float:none;margin-bottom:6px;flex-wrap:wrap}.modal{padding:20px;border-radius:var(--radius-lg)}.toast-container{top:60px;right:10px;left:10px}.toast{max-width:none}.header-right{flex-wrap:nowrap}.hide-mobile{display:none!important}.show-mobile{display:table-cell!important}.assess-table{font-size:11px!important}.assess-table th,.assess-table td{padding:4px 2px!important}.assess-table .wk-th{font-size:10px!important}.assess-table .person-td{max-width:40px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.assess-table .total-th,.assess-table .total-td{font-size:10px!important;padding:4px 2px!important}.assess-table .idx-col{width:16px!important}.assess-table .month-total-col{font-size:10px!important}.history-week{font-size:13px;min-width:0}}
@media(max-width:480px){.stats{grid-template-columns:repeat(4,1fr)}.stat-num{font-size:16px}.stat-label{font-size:9px}.header-left .header-week{display:none}.header-right{gap:4px}.header-right select{font-size:11px;padding:4px 8px}.header-right .btn-sm{padding:3px 8px}.init-box{padding:28px 20px}.role-tile{padding:14px 6px}.role-tile .rt-icon{font-size:24px}.role-tile .rt-name{font-size:14px}.role-tile .rt-desc{font-size:10px}.init-confirm-btn{padding:11px;font-size:14px}.header{padding:0 12px;height:48px;gap:6px}.header-left{gap:8px;flex-shrink:0}.header-title{font-size:13px;white-space:nowrap}.header-sub{display:none}.header-week{display:none}.logo{width:28px;height:28px;font-size:13px;border-radius:7px}.acc-badge-wrap{flex-shrink:1;max-width:100%}.acc-person-name{max-width:52px;font-size:11px}.acc-role{font-size:11px;max-width:136px;overflow:hidden;text-overflow:ellipsis}.acc-switch-btn{font-size:9px;padding:0 5px;border-radius:8px}.header-meta{gap:4px}.header-week{display:none}.hide-mobile{display:none!important}.btn-menu{padding:4px 6px;font-size:11px;border-radius:6px}.btn-menu .hm-ico{font-size:14px}.header-right .btn-sm{display:none!important}#snapshotBtns{display:none!important}#adminEntryBtn{display:none!important}.btn{min-height:44px}.btn-sm{min-height:36px}.tab{min-height:44px;display:flex;align-items:center;justify-content:center}.modal-actions .btn{min-height:44px;padding:10px 16px}.dept-task-meta{white-space:normal;flex-shrink:1;overflow:hidden;text-overflow:ellipsis}}
/* 手机端登录卡片避开底部区域 */
@media(max-width:768px){.init-overlay{padding-bottom:60px}}
@media(max-width:480px){.init-overlay{padding-bottom:40px}}
.init-beian{text-align:center;padding:0 0 16px;font-size:11px;color:var(--gray-400)}
.init-beian a{color:var(--gray-400);text-decoration:none}
.init-beian a:hover{color:var(--gray-500);text-decoration:underline}

/* ====== 分端文本切换 ====== */
@media(max-width:768px){.pc-only{display:none!important}.m-only{display:inline!important}}
@media(min-width:769px){.m-only{display:none!important}.pc-only{display:inline!important}}

/* ====== 清单tab chips横滑条 ====== */
#taskStats{display:block!important;padding:0!important}
.chips-bar{display:flex;gap:6px;padding:4px 14px 8px;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none;flex-wrap:nowrap}
@media(max-width:768px){.chips-bar{padding:2px 10px 4px;gap:4px}}
.chips-bar::-webkit-scrollbar{display:none}
.chip{flex-shrink:0;padding:4px 12px;border-radius:14px;font-size:13px;background:var(--gray-100);color:var(--gray-500);cursor:pointer;white-space:nowrap;border:1px solid transparent;user-select:none}
.chip:active{opacity:.75}
.chip.active{background:var(--blue-light);color:var(--blue);border-color:var(--blue);font-weight:600}
.chip .chip-num{font-weight:700;margin-left:2px}
.chip .chip-num.red{color:var(--red)}
.chip .chip-num.amber{color:var(--amber)}
.chip.active .chip-num{color:inherit}

/* 手机端chips更紧凑（置于末尾确保覆盖全局.chip样式） */
@media(max-width:768px){.chip{padding:3px 10px;font-size:12px;border-radius:12px}.chip .chip-num{margin-left:1px}}

/* 手机端chips上下空行收窄：tab导航下边距20px→4px、taskStats下边距16px→0 */
@media(max-width:768px){.tabs{margin-bottom:4px}#taskStats{margin-bottom:0}}

/* 手机端进展模板按钮更紧凑（末尾确保覆盖） */
.progress-tpl-btn{padding:4px 12px;font-size:12px;background:var(--gray-50);border:1px solid var(--gray-200);color:var(--gray-600);border-radius:20px;cursor:pointer;font-family:inherit}
.progress-tpl-btn:hover{background:var(--gray-100);color:var(--gray-800)}
@media(max-width:768px){#progressTemplates button{padding:3px 8px;font-size:11px;border-radius:16px}}
/* ===== 上级看板（v1.10.0） ===== */
.org-kpi{display:flex;flex-direction:column;align-items:center;justify-content:center;min-width:86px;padding:10px 14px;background:#fff;border:1px solid #eef1f5;border-radius:12px}
.org-kpi b{font-size:22px;line-height:1.1;color:var(--blue)}
.org-kpi span{font-size:11px;color:var(--gray-500);margin-top:2px}
.org-group{background:#fff;border:1px solid #eef1f5;border-radius:14px;margin-bottom:12px;overflow:hidden}
.org-group-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:11px 14px;background:#f8fafc;border-bottom:1px solid #eef1f5;font-size:14px;font-weight:700;color:var(--gray-700)}
.org-role{font-size:10.5px;font-weight:600;color:#7c3aed;background:#f3e8ff;border-radius:6px;padding:1px 7px}
.org-scope{font-size:11px;font-weight:400;color:var(--gray-400)}
.org-cnt{font-size:11.5px;font-weight:400;color:var(--gray-500)}
.org-sub{padding:7px 14px 2px;font-size:11.5px;font-weight:700;color:var(--gray-500);background:#fbfcfe}
.org-row{display:flex;align-items:center;gap:8px;padding:9px 14px;border-bottom:1px solid #f3f5f8;font-size:13px;flex-wrap:wrap}
.org-row:last-child{border-bottom:0}
.org-row.is-overdue{background:#fff7f7}
.org-row-title{color:var(--gray-800);min-width:0}
.org-empty{padding:16px;text-align:center;color:var(--gray-400);font-size:12.5px}
#tabOrgBtn{display:none}

/* ===== 上级看板：可点击行 + 只读详情（v1.10.0.3） ===== */
.org-row{cursor:pointer;transition:background .12s}
.org-row:hover{background:#f6f9ff}
.org-row.is-overdue:hover{background:#fff3f3}
.orgd-ro-banner{font-size:12px;line-height:1.6;color:#92590a;background:#fdf6e3;border:1px solid #f3e6bf;border-radius:10px;padding:8px 10px;margin-bottom:10px}
.orgd-meta{border:1px solid #eef1f5;border-radius:10px;padding:4px 12px;margin-bottom:10px}
.orgd-meta-row{display:flex;gap:10px;padding:6px 0;border-bottom:1px dashed #f1f3f7;font-size:12.5px}
.orgd-meta-row:last-child{border-bottom:0}
.orgd-k{flex:0 0 64px;color:var(--gray-400)}
.orgd-v{flex:1;color:var(--gray-800);line-height:1.6}
.orgd-sec-title{font-size:12.5px;font-weight:700;color:var(--gray-600);margin:12px 0 6px}
.orgd-process{padding:2px 0}

/* ====== v1.25.x 任务协作可发现性（分步/协办/关注 hover 浮层 + 手机全屏抽屉 + 首次引导） ====== */
/* 手机端：任务详情全屏底部抽屉（底部滑入，圆角仅顶部） */
@media(max-width:768px){
  #taskDetailModal{align-items:flex-end!important;justify-content:center}
  #taskDetailModal .modal{width:100%;max-width:100%;max-height:94vh;border-radius:18px 18px 0 0;padding:18px 16px;animation:sheetUp .26s cubic-bezier(.2,.7,.2,1)}
  #taskDetailBody{max-height:calc(94vh - 130px)!important}
}
@keyframes sheetUp{from{transform:translateY(100%)}to{transform:translateY(0)}}
/* 分步徽标：平时只显示 "0/2"/"✓ 4/4"，鼠标移过去 hover 浮层列具体步骤；移走即消失 */
.subtask-chip{position:relative;display:inline-flex;align-items:center;cursor:pointer;z-index:10}
.subtask-chip:hover{z-index:60}
.subtask-pop{display:none;position:absolute;left:0;top:calc(100% + 6px);z-index:9999;background:#fff;border:1px solid var(--gray-200);border-radius:10px;box-shadow:var(--shadow-lg);padding:8px 10px;min-width:190px;max-width:300px;font-size:12px;font-weight:500;color:var(--gray-700);line-height:1.55;white-space:normal;text-align:left}
@media(min-width:769px){.subtask-chip:hover .subtask-pop{display:block}}
/* 协办/关注 icon（有才显示；协办紫、关注灰），hover 浮层列姓名；移走即消失 */
.collab-chip{position:relative;display:inline-flex;align-items:center;margin-left:6px;cursor:pointer;vertical-align:middle;z-index:10}
.collab-chip:hover{z-index:60}
.collab-pop{display:none;position:absolute;left:0;top:calc(100% + 6px);z-index:9999;background:#fff;border:1px solid var(--gray-200);border-radius:10px;box-shadow:var(--shadow-lg);padding:8px 10px;min-width:160px;max-width:280px;font-size:12px;font-weight:500;color:var(--gray-700);line-height:1.6;white-space:normal;text-align:left}
@media(min-width:769px){.collab-chip:hover .collab-pop{display:block}}
/* 详情内首次引导虚线框（仅对负责人/领导，每用户一次性） */
.guide-hint{border:1px dashed var(--blue);background:var(--blue-light);border-radius:8px;padding:6px 10px;margin-top:6px;font-size:12px;color:var(--blue);line-height:1.6}
/* v1.25.3.3 手机端分页器：纵向排列（每页条数已 pc-only 隐藏，仅剩"共N条·第x/y页"信息 + 紧凑导航，居中） */
@media(max-width:768px){
  .pager{flex-direction:column;align-items:center;justify-content:center;gap:6px}
  .pager>span:nth-child(2){justify-content:center;gap:4px}
}

/* ===== 个人中心抽屉（我的/材料/设置，v1.25.7.0） ===== */
.drawer-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(15,23,42,.4);z-index:420;display:none;backdrop-filter:blur(2px)}
.drawer-overlay.show{display:flex;justify-content:flex-end;animation:fadeIn .15s ease}
.drawer{background:#fff;height:100%;width:100%;max-width:460px;display:flex;flex-direction:column;box-shadow:var(--shadow-lg);animation:drawerIn .22s cubic-bezier(.2,.7,.2,1);overflow:hidden}
@keyframes drawerIn{from{transform:translateX(100%)}to{transform:translateX(0)}}
.drawer-head{flex-shrink:0;display:flex;align-items:center;gap:12px;padding:18px 18px 14px;background:linear-gradient(135deg,var(--blue),#1d4ed8);color:#fff}
.dh-avatar{width:46px;height:46px;border-radius:50%;background:rgba(255,255,255,.25);display:flex;align-items:center;justify-content:center;font-size:20px;font-weight:700;flex-shrink:0}
.dh-id{flex:1;min-width:0}
.dh-name{font-size:16px;font-weight:700;line-height:1.3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dh-sub{font-size:12px;opacity:.85;margin-top:2px}
.dh-close{flex-shrink:0;width:32px;height:32px;border-radius:50%;background:rgba(255,255,255,.15);display:flex;align-items:center;justify-content:center;font-size:16px;cursor:pointer;color:#fff}
.dh-close:hover{background:rgba(255,255,255,.3)}
.dh-share{flex-shrink:0;width:32px;height:32px;border-radius:50%;background:rgba(255,255,255,.15);display:flex;align-items:center;justify-content:center;cursor:pointer;color:#fff;margin-left:auto;transition:background .15s}
.dh-share:hover{background:rgba(255,255,255,.3);border-color:rgba(255,255,255,.35)}
.dh-share-img{width:18px;height:18px}
@media(max-width:768px){.dh-share{width:28px;height:28px;font-size:13px}}
/* v1.25.7.47 手机端：隐藏快捷操作卡片和下载月报按钮（我的成果tab内，移动端） */
@media(max-width:768px){
  #myQuickArea{display:none!important}
  #mySnapshotBtn{display:none!important}
}
/* v1.25.7.50 标准/AI 双胶囊：与任务难度筛选器(.ai-lvseg)同款容器+按钮，按钮间留 1 个空格gap，
   选中态=蓝/紫 13% 底色（标准蓝 #3d8bfd、AI 紫 #9b6ef3），未选中灰字，二选一关系一目了然。
   ★ 选择器必须用实际按钮类 ai-seg-std/ai-seg-ai（v1.25.7.48 误写 ai-std/ai-ai 致选中色从未生效） */
.ai-seg{display:inline-flex;align-items:center;gap:6px;padding:2px;flex:0 0 auto;white-space:nowrap;
  background:#f7f9fc;border:1px solid #e6eaf2;border-radius:10px;}
.ai-seg-btn{border:none;background:transparent;margin:0;padding:0 10px;height:22px;
  border-radius:7px;font-family:inherit;font-size:12px;font-weight:600;line-height:1;
  display:flex;align-items:center;justify-content:center;cursor:pointer;
  color:#93a0b5;opacity:.5;transition:opacity .15s,color .15s,background .15s;}
.ai-seg-btn:hover{opacity:.8;}
.ai-seg-btn.on{opacity:1;}
.ai-seg-btn.on.ai-seg-std{color:#3d8bfd;background:color-mix(in srgb,#3d8bfd 13%,transparent);}
.ai-seg-btn.on.ai-seg-ai{color:#9b6ef3;background:color-mix(in srgb,#9b6ef3 13%,transparent);}
/* v1.25.7.49 我的材料任务难度筛选：与驾驶舱标题栏 .ck-lvseg 完全同款
   （复刻驾驶舱浅色主题值：容器#f7f9fc/#e6eaf2、S橙#f5842b A黄#e8b020 B蓝#3d8bfd C绿#22a45d、
   选中态opacity:1+13%底色；--ck-*变量作用域在.ck-root内，此处不可引用） */
.ai-lvseg{display:inline-flex;align-items:center;gap:2px;padding:2px;flex:0 0 auto;white-space:nowrap;
  background:#f7f9fc;border:1px solid #e6eaf2;border-radius:10px;}
.ai-lvseg-btn{border:none;background:transparent;margin:0;padding:0;width:24px;height:22px;
  border-radius:7px;font-family:inherit;font-size:12px;font-weight:800;line-height:1;
  display:flex;align-items:center;justify-content:center;cursor:pointer;
  color:#93a0b5;opacity:.5;transition:opacity .15s,color .15s,background .15s;}
.ai-lvseg-btn:hover{opacity:.8;}
.ai-lvseg-btn.on{opacity:1;}
.ai-lvseg-btn.on.lv-s{color:#f5842b;background:color-mix(in srgb,#f5842b 13%,transparent);}
.ai-lvseg-btn.on.lv-a{color:#e8b020;background:color-mix(in srgb,#e8b020 13%,transparent);}
.ai-lvseg-btn.on.lv-b{color:#3d8bfd;background:color-mix(in srgb,#3d8bfd 13%,transparent);}
.ai-lvseg-btn.on.lv-c{color:#22a45d;background:color-mix(in srgb,#22a45d 13%,transparent);}
.dh-switch-label{font-size:11px;color:var(--gray-400);margin:10px 0 6px}
.drawer-nav{flex-shrink:0;display:flex;gap:4px;padding:10px 16px;border-bottom:1px solid var(--gray-100)}
.dn-tab{flex:1;padding:8px 0;border:none;background:none;border-radius:8px;font-size:13px;color:var(--gray-500);cursor:pointer;text-align:center;font-family:inherit}
.dn-tab.is-active{background:var(--blue-light);color:var(--blue);font-weight:600}
.drawer-body{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:14px 16px 28px}
.my-sec{display:block}
.my-card{background:#fff;border:1px solid var(--gray-100);border-radius:var(--radius);padding:12px 14px;margin-bottom:12px}
.my-card-title{font-size:13px;font-weight:700;margin-bottom:10px;color:var(--gray-800)}
.set-group{background:#fff;border:1px solid var(--gray-100);border-radius:var(--radius);padding:12px 14px;margin-bottom:12px}
.set-group-title{font-size:13px;font-weight:700;margin-bottom:8px;color:var(--gray-800)}
.set-row{display:flex;align-items:center;gap:8px;padding:9px 0;border-top:1px solid var(--gray-50)}
.set-group-title + .set-row{border-top:none}
.set-label{flex-shrink:0;font-size:13px;color:var(--gray-700)}
.set-hint{font-size:11.5px;color:var(--gray-400);line-height:1.7;margin:6px 0}
.set-save{width:100%;margin-top:10px}
.set-collapse-btn{width:100%;text-align:left;background:none;border:none;color:var(--blue);font-size:13px;padding:9px 0;cursor:pointer;display:flex;justify-content:space-between;align-items:center;font-family:inherit}
.set-collapse-body{margin-top:4px}
.set-toggle-list .set-row{justify-content:space-between;gap:10px}
.set-toggle-list .set-label{flex:1;min-width:0;font-size:12.5px;color:var(--gray-700)}
/* iOS 风格 toggle（开=蓝，关=灰，低调） */
.toggle{position:relative;display:inline-block;width:44px;height:24px;flex-shrink:0}
.toggle input{opacity:0;width:0;height:0;position:absolute}
.toggle .tg-slider{position:absolute;inset:0;background:#d1d5db;border-radius:99px;transition:background .18s;cursor:pointer}
.toggle .tg-slider::before{content:'';position:absolute;left:2px;top:2px;width:20px;height:20px;border-radius:50%;background:#fff;transition:transform .18s;box-shadow:0 1px 3px rgba(0,0,0,.25)}
.toggle input:checked + .tg-slider{background:var(--blue)}
.toggle input:checked + .tg-slider::before{transform:translateX(20px)}
@media(max-width:480px){
  .drawer{max-width:100%}
  .drawer-head{padding:14px 14px 12px}
  .dh-avatar{width:40px;height:40px;font-size:18px}
  .dh-name{font-size:14px}
  .drawer-body{padding:10px 12px 24px}
}
