/* ===== 任务协同智管助手 · 移动端样式（微信 H5） ===== */
:root{
  --brand:#059669;
  --brand-2:#10B981;
  --brand-deep:#047857;
  --brand-soft:#ECFDF5;
  --brand-line:#BFEFDC;

  --bg:#F4F6F8;
  --card:#FFFFFF;
  --line:#EDF0F4;
  --line-2:#E3E8EE;

  --t1:#111827;
  --t2:#5B6674;
  --t3:#98A2B3;

  --orange:#F59E0B;
  --red:#EF4444;
  --blue:#3B82F6;
  --violet:#8B5CF6;
  --gray:#94A3B8;

  --r-lg:18px;
  --r-md:14px;
  --r-sm:10px;
  --shadow:0 1px 2px rgba(16,24,40,.04), 0 6px 18px -12px rgba(16,24,40,.18);
  --safe-b:env(safe-area-inset-bottom, 0px);
}

*{box-sizing:border-box;-webkit-tap-highlight-color:transparent;}
html,body{margin:0;padding:0;}
body{
  font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Hiragino Sans GB","Microsoft YaHei","Helvetica Neue",Arial,sans-serif;
  background:#E8EBEF;
  color:var(--t1);
  font-size:15px;
  line-height:1.5;
  -webkit-font-smoothing:antialiased;
}
button{font-family:inherit;border:0;background:none;padding:0;cursor:pointer;color:inherit;}
input,select,textarea{font-family:inherit;font-size:15px;color:var(--t1);outline:none;}
a{color:inherit;text-decoration:none;}

.app{
  max-width:460px;
  margin:0 auto;
  min-height:100vh;
  background:var(--bg);
  position:relative;
  overflow-x:hidden;
  box-shadow:0 0 0 1px rgba(16,24,40,.05), 0 24px 60px -30px rgba(16,24,40,.35);
}
.page{padding-bottom:calc(84px + var(--safe-b));min-height:100vh;}
.page-nopad{padding-bottom:0;}

/* ---------- 顶部导航 ---------- */
.nav{
  position:sticky;top:0;z-index:30;
  background:rgba(255,255,255,.92);
  backdrop-filter:saturate(180%) blur(12px);
  -webkit-backdrop-filter:saturate(180%) blur(12px);
  border-bottom:1px solid var(--line);
  height:52px;display:flex;align-items:center;padding:0 14px;gap:10px;
}
.nav h1{font-size:17px;font-weight:600;margin:0;letter-spacing:.2px;flex:1;text-align:center;}
.nav-side{width:58px;display:flex;align-items:center;gap:6px;}
.nav-side.right{justify-content:flex-end;}
.nav-btn{font-size:14px;color:var(--t2);padding:6px 2px;display:flex;align-items:center;gap:4px;}
.nav-btn.strong{color:var(--brand);font-weight:600;}
.icon{width:20px;height:20px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;display:block;}
.icon-sm{width:16px;height:16px;}
.icon-lg{width:24px;height:24px;}

/* ---------- 通用块 ---------- */
.sec{padding:0 14px;}
.sec-title{display:flex;align-items:center;justify-content:space-between;margin:20px 0 10px;}
.sec-title h2{font-size:15px;font-weight:600;margin:0;color:var(--t1);}
.sec-title .more{font-size:13px;color:var(--t3);display:flex;align-items:center;gap:2px;}
.card{background:var(--card);border-radius:var(--r-lg);box-shadow:var(--shadow);}
.pad{padding:14px;}
.muted{color:var(--t2);}
.tiny{font-size:12px;}
.center{text-align:center;}
.row{display:flex;align-items:center;}
.between{display:flex;align-items:center;justify-content:space-between;}
.gap8{gap:8px;}
.gap6{gap:6px;}
.mt8{margin-top:8px;}
.mt12{margin-top:12px;}
.mt16{margin-top:16px;}
.flex1{flex:1;min-width:0;}
.ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.clamp2{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}

/* ---------- 工作台头部 ---------- */
.hero{
  background:linear-gradient(160deg,#059669 0%,#0EA271 55%,#10B981 100%);
  padding:14px 16px 52px;
  color:#fff;position:relative;overflow:hidden;
}
.hero::after{
  content:"";position:absolute;right:-46px;top:-56px;width:170px;height:170px;
  border-radius:50%;background:rgba(255,255,255,.10);
}
.hero::before{
  content:"";position:absolute;right:44px;top:56px;width:80px;height:80px;
  border-radius:50%;background:rgba(255,255,255,.08);
}
.hero-top{display:flex;align-items:center;gap:10px;position:relative;z-index:2;}
.hero-top .who{flex:1;min-width:0;}
.hero-top .hi{font-size:18px;font-weight:600;letter-spacing:.3px;}
.hero-top .sub{font-size:12px;opacity:.82;margin-top:2px;}
.hero-badge{
  display:inline-flex;align-items:center;gap:4px;
  background:rgba(255,255,255,.2);border:1px solid rgba(255,255,255,.28);
  color:#fff;font-size:11px;padding:3px 8px;border-radius:20px;backdrop-filter:blur(4px);
}
.avatar{
  width:40px;height:40px;border-radius:13px;display:flex;align-items:center;justify-content:center;
  font-size:15px;font-weight:600;color:#fff;background:#0E9F6E;flex:0 0 auto;letter-spacing:0;
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.18);
}
.avatar.sm{width:30px;height:30px;border-radius:10px;font-size:12px;}
.avatar.xs{width:24px;height:24px;border-radius:8px;font-size:11px;}
.hero .avatar{box-shadow:0 0 0 2px rgba(255,255,255,.35);}

.stat-strip{
  margin:-40px 14px 0;position:relative;z-index:5;
  background:#fff;border-radius:var(--r-lg);box-shadow:0 8px 24px -14px rgba(16,24,40,.28);
  display:grid;grid-template-columns:repeat(4,1fr);padding:14px 4px;
}
.stat-strip .st{text-align:center;position:relative;}
.stat-strip .st + .st::before{content:"";position:absolute;left:0;top:6px;bottom:6px;width:1px;background:var(--line);}
.stat-strip .n{font-size:20px;font-weight:700;letter-spacing:-.5px;line-height:1.2;font-variant-numeric:tabular-nums;}
.stat-strip .l{font-size:11px;color:var(--t3);margin-top:3px;}
.n-green{color:var(--brand)}.n-orange{color:var(--orange)}.n-blue{color:var(--blue)}.n-violet{color:var(--violet)}.n-gray{color:var(--t2)}

/* ---------- 任务卡 ---------- */
.task-card{
  background:#fff;border-radius:var(--r-md);padding:13px 14px;margin-bottom:10px;
  box-shadow:var(--shadow);position:relative;overflow:hidden;transition:transform .15s ease;
}
.task-card:active{transform:scale(.985);}
.task-card::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--brand);opacity:.85;}
.task-card.p-high::before{background:var(--red);}
.task-card.p-urgent::before{background:#DC2626;}
.task-card.p-low::before{background:#CBD5E1;}
.tc-head{display:flex;align-items:flex-start;gap:8px;}
.tc-title{font-size:15px;font-weight:600;line-height:1.45;flex:1;min-width:0;color:var(--t1);}
.tc-meta{display:flex;align-items:center;gap:8px;margin-top:9px;font-size:12px;color:var(--t3);flex-wrap:wrap;}
.tc-foot{display:flex;align-items:center;justify-content:space-between;margin-top:10px;padding-top:10px;border-top:1px dashed var(--line-2);}
.tc-people{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--t2);}
.arrow-mini{color:var(--t3);font-size:11px;}

/* ---------- 徽章 ---------- */
.badge{display:inline-flex;align-items:center;gap:4px;height:22px;padding:0 8px;border-radius:7px;font-size:11px;font-weight:600;white-space:nowrap;letter-spacing:.2px;}
.badge .dot{width:5px;height:5px;border-radius:50%;background:currentColor;}
.b-pending{background:#FFF7ED;color:#C2410C;}
.b-doing{background:#EFF6FF;color:#1D4ED8;}
.b-submitted{background:#F5F3FF;color:#6D28D9;}
.b-confirmed{background:#ECFDF5;color:#047857;}
.b-archived{background:#F1F5F9;color:#64748B;}
.b-cancelled{background:#FEF2F2;color:#B91C1C;}
.b-p-high{background:#FEF2F2;color:#DC2626;}
.b-p-urgent{background:#DC2626;color:#fff;}
.b-p-normal{background:#F1F5F9;color:#64748B;}
.b-p-low{background:#F8FAFC;color:#94A3B8;}
.b-role{background:var(--brand-soft);color:var(--brand-deep);}
.b-role.owner{background:#FEF3C7;color:#92400E;}
.b-role.admin{background:#EDE9FE;color:#5B21B6;}
.b-role.manager{background:#E0F2FE;color:#075985;}

/* ---------- 底部 tabbar ---------- */
.tabbar{
  position:fixed;left:0;right:0;bottom:0;z-index:60;
  max-width:460px;margin:0 auto;
  background:rgba(255,255,255,.96);
  backdrop-filter:saturate(180%) blur(14px);-webkit-backdrop-filter:saturate(180%) blur(14px);
  border-top:1px solid var(--line);
  display:grid;grid-template-columns:repeat(5,1fr);
  padding-bottom:var(--safe-b);
  height:calc(60px + var(--safe-b));
}
.tabbar .tab{
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;
  color:var(--t3);font-size:10px;padding-top:2px;position:relative;
}
.tabbar .tab.active{color:var(--brand);}
.tabbar .tab.active .icon{stroke-width:2.1;}
.tab-fab{position:relative;}
.tab-fab .fab{
  position:absolute;top:-23px;left:50%;transform:translateX(-50%);
  width:46px;height:46px;border-radius:50%;
  background:linear-gradient(150deg,#10B981,#059669);
  display:flex;align-items:center;justify-content:center;color:#fff;
  box-shadow:0 8px 18px -6px rgba(5,150,105,.6),0 0 0 4px #fff;
  transition:transform .15s ease;
}
.tab-fab .fab:active{transform:translateX(-50%) scale(.92);}
.tab-fab .fab .icon{width:24px;height:24px;stroke-width:2.4;}
.tab-fab span.lbl{position:absolute;bottom:3px;font-size:10px;color:var(--t3);}

/* ---------- 分段控件 / 筛选 ---------- */
.segmented{
  display:flex;background:#EAEEF2;border-radius:12px;padding:3px;gap:2px;margin:12px 14px 0;
}
.segmented button{
  flex:1;height:34px;border-radius:9px;font-size:13px;color:var(--t2);font-weight:500;
  display:flex;align-items:center;justify-content:center;gap:4px;transition:.18s;
}
.segmented button.on{background:#fff;color:var(--t1);font-weight:600;box-shadow:0 1px 3px rgba(16,24,40,.10);}
.segmented button .cnt{font-size:11px;color:var(--t3);font-weight:500;}

.chips{display:flex;gap:8px;overflow-x:auto;padding:12px 14px 2px;scrollbar-width:none;}
.chips::-webkit-scrollbar{display:none;}
.chip{
  flex:0 0 auto;height:30px;padding:0 12px;border-radius:16px;font-size:13px;
  background:#fff;color:var(--t2);border:1px solid var(--line-2);display:flex;align-items:center;gap:4px;
}
.chip.on{background:var(--brand-soft);border-color:var(--brand-line);color:var(--brand-deep);font-weight:600;}

.searchbar{margin:12px 14px 0;display:flex;align-items:center;gap:8px;background:#fff;border-radius:12px;padding:0 12px;height:40px;border:1px solid var(--line);}
.searchbar input{border:0;background:none;flex:1;height:100%;font-size:14px;}
.searchbar input::placeholder{color:var(--t3);}

/* ---------- 空态 ---------- */
.empty{padding:56px 20px;text-align:center;color:var(--t3);}
.empty .ico{width:56px;height:56px;border-radius:20px;background:#EDF1F5;display:flex;align-items:center;justify-content:center;margin:0 auto 12px;color:#B6C0CC;}
.empty p{margin:0;font-size:13px;}

/* ---------- 详情页 ---------- */
.detail-hero{background:#fff;padding:18px 16px 16px;border-bottom:1px solid var(--line);}
.detail-hero h1{font-size:19px;line-height:1.45;margin:8px 0 0;font-weight:650;letter-spacing:-.2px;}
.badge-row{display:flex;align-items:center;gap:6px;flex-wrap:wrap;}
.info-grid{background:#fff;}
.info-row{display:flex;align-items:flex-start;gap:12px;padding:12px 16px;border-bottom:1px solid var(--line);font-size:14px;}
.info-row:last-child{border-bottom:0;}
.info-row .k{width:72px;color:var(--t3);flex:0 0 auto;font-size:13px;padding-top:1px;}
.info-row .v{flex:1;min-width:0;color:var(--t1);}
.person-line{display:flex;align-items:center;gap:8px;}
.person-line .nm{font-weight:500;}
.person-line .dp{font-size:12px;color:var(--t3);}

.desc-box{background:#fff;padding:14px 16px;font-size:14px;line-height:1.75;color:#374151;white-space:pre-wrap;word-break:break-word;}

/* 时间轴 */
.timeline{background:#fff;padding:6px 16px 16px;}
.tl-item{display:flex;gap:12px;position:relative;padding:10px 0;}
.tl-item:not(:last-child)::before{
  content:"";position:absolute;left:13px;top:34px;bottom:-2px;width:1.5px;background:var(--line-2);
}
.tl-dot{
  width:27px;height:27px;border-radius:9px;background:#F1F5F9;color:#94A3B8;
  display:flex;align-items:center;justify-content:center;flex:0 0 auto;z-index:2;
}
.tl-dot.on{background:var(--brand-soft);color:var(--brand);}
.tl-dot.warn{background:#FFF7ED;color:#C2410C;}
.tl-dot.done{background:#ECFDF5;color:#047857;}
.tl-body{flex:1;min-width:0;padding-top:2px;}
.tl-body .t{font-size:13.5px;font-weight:500;color:var(--t1);}
.tl-body .t .who{color:var(--brand-deep);}
.tl-body .n{font-size:12.5px;color:var(--t2);margin-top:3px;background:#F8FAFB;border-radius:8px;padding:7px 10px;line-height:1.6;word-break:break-word;}
.tl-body .tm{font-size:11.5px;color:var(--t3);margin-top:4px;font-variant-numeric:tabular-nums;}

/* 底部操作条 */
.actionbar{
  position:fixed;left:0;right:0;bottom:0;max-width:460px;margin:0 auto;z-index:70;
  background:rgba(255,255,255,.98);border-top:1px solid var(--line);
  padding:10px 14px calc(10px + var(--safe-b));
  display:flex;gap:10px;backdrop-filter:blur(10px);
}
.btn{
  height:46px;border-radius:13px;font-size:15.5px;font-weight:600;display:flex;align-items:center;justify-content:center;gap:6px;
  flex:1;transition:transform .14s ease,opacity .14s;
}
.btn:active{transform:scale(.98);opacity:.92;}
.btn-primary{background:linear-gradient(150deg,#10B981,#059669);color:#fff;box-shadow:0 6px 16px -8px rgba(5,150,105,.7);}
.btn-ghost{background:#F1F5F9;color:var(--t2);flex:0 0 auto;padding:0 18px;}
.btn-outline{background:#fff;color:var(--brand-deep);border:1.5px solid var(--brand-line);}
.btn-danger{background:#FEF2F2;color:#B91C1C;flex:0 0 auto;padding:0 18px;}
.btn-dark{background:#111827;color:#fff;}
.btn:disabled{opacity:.45;}
.btn-sm{height:34px;border-radius:10px;font-size:13px;font-weight:600;padding:0 14px;flex:0 0 auto;display:inline-flex;align-items:center;gap:4px;}

.hint-bar{display:flex;gap:8px;align-items:flex-start;background:#FFFBEB;border:1px solid #FDE68A;color:#92400E;border-radius:12px;padding:10px 12px;font-size:12.5px;line-height:1.6;margin:12px 14px;}

/* ---------- 表单 ---------- */
.form-group{background:#fff;border-radius:var(--r-md);overflow:hidden;box-shadow:var(--shadow);margin:12px 14px 0;}
.fg-row{display:flex;align-items:center;gap:10px;padding:0 14px;min-height:52px;border-bottom:1px solid var(--line);}
.fg-row:last-child{border-bottom:0;}
.fg-row label{width:76px;flex:0 0 auto;font-size:14px;color:var(--t2);}
.fg-row input[type=text],.fg-row input[type=date],.fg-row select,.fg-row input[type=time]{
  flex:1;min-width:0;border:0;background:none;font-size:15px;padding:14px 0;
}
.fg-row select{appearance:none;background:transparent;}
.fg-row .picker{flex:1;display:flex;align-items:center;justify-content:space-between;gap:8px;padding:14px 0;font-size:15px;color:var(--t1);}
.fg-row .picker.empty-val{color:var(--t3);}
.fg-col{display:block;padding:12px 14px;border-bottom:1px solid var(--line);}
.fg-col:last-child{border-bottom:0;}
.fg-col > label{font-size:14px;color:var(--t2);display:block;margin-bottom:8px;}
.fg-col textarea{width:100%;border:0;background:none;resize:none;font-size:15px;line-height:1.7;min-height:88px;}
.fg-col textarea::placeholder{color:var(--t3);}
.counter{text-align:right;font-size:11px;color:var(--t3);}
.req::after{content:"*";color:var(--red);margin-left:2px;}

.pri-picker{display:flex;gap:8px;}
.pri-picker button{flex:1;height:36px;border-radius:10px;background:#F4F6F8;color:var(--t2);font-size:13px;font-weight:500;border:1.5px solid transparent;}
.pri-picker button.on{background:var(--brand-soft);border-color:var(--brand);color:var(--brand-deep);font-weight:600;}
.pri-picker button.on[data-pri=high]{background:#FEF2F2;border-color:#FCA5A5;color:#DC2626;}
.pri-picker button.on[data-pri=urgent]{background:#DC2626;border-color:#DC2626;color:#fff;}

.selected-people{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px;}
.person-chip{display:inline-flex;align-items:center;gap:6px;background:#F1F5F9;border-radius:20px;padding:4px 8px 4px 4px;font-size:13px;}

/* ---------- 弹窗 / 抽屉 ---------- */
.mask{
  position:fixed;inset:0;background:rgba(17,24,39,.42);z-index:100;
  display:flex;align-items:flex-end;justify-content:center;
  animation:fadeIn .18s ease;backdrop-filter:blur(2px);
}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
@keyframes slideUp{from{transform:translateY(24px);opacity:.6}to{transform:translateY(0);opacity:1}}
.sheet{
  width:100%;max-width:460px;background:#fff;border-radius:20px 20px 0 0;
  max-height:88vh;display:flex;flex-direction:column;animation:slideUp .22s cubic-bezier(.2,.8,.3,1);
  padding-bottom:var(--safe-b);
}
.sheet-head{display:flex;align-items:center;justify-content:space-between;padding:16px 16px 12px;border-bottom:1px solid var(--line);}
.sheet-head h3{font-size:16px;font-weight:600;margin:0;}
.sheet-head .x{width:28px;height:28px;border-radius:9px;background:#F1F5F9;display:flex;align-items:center;justify-content:center;color:var(--t2);}
.sheet-body{overflow-y:auto;padding:8px 0;flex:1;-webkit-overflow-scrolling:touch;}
.sheet-foot{padding:12px 16px;border-top:1px solid var(--line);display:flex;gap:10px;}
.sheet-foot .btn{height:44px;}

.pick-item{display:flex;align-items:center;gap:10px;padding:11px 16px;}
.pick-item:active{background:#F8FAFB;}
.pick-item .nm{font-size:14.5px;font-weight:500;}
.pick-item .dp{font-size:12px;color:var(--t3);margin-top:1px;}
.pick-item .tick{color:var(--brand);}
.pick-item.on{background:var(--brand-soft);}
.dept-group-label{padding:10px 16px 6px;font-size:11.5px;color:var(--t3);font-weight:600;letter-spacing:.4px;background:#FAFBFC;}

/* ---------- 组织架构 ---------- */
.org-company{background:#fff;border-radius:var(--r-md);margin:0 14px 12px;box-shadow:var(--shadow);overflow:hidden;}
.org-company-head{display:flex;align-items:center;gap:10px;padding:13px 14px;background:linear-gradient(180deg,#FAFBFC,#fff);border-bottom:1px solid var(--line);}
.org-dot{width:9px;height:9px;border-radius:3px;flex:0 0 auto;}
.org-company-head .nm{font-size:15px;font-weight:650;flex:1;}
.org-dept{border-bottom:1px solid var(--line);}
.org-dept:last-child{border-bottom:0;}
.dept-row{display:flex;align-items:center;gap:8px;padding:11px 14px;font-size:14px;}
.dept-row .caret{width:16px;height:16px;color:var(--t3);transition:transform .2s;}
.dept-row .caret.open{transform:rotate(90deg);}
.dept-row .nm{flex:1;min-width:0;}
.dept-row .cnt{font-size:11.5px;color:var(--t3);background:#F4F6F8;border-radius:6px;padding:1px 6px;}
.dept-row .ops{display:flex;gap:2px;}
.mini-btn{width:28px;height:28px;border-radius:8px;display:flex;align-items:center;justify-content:center;color:var(--t3);}
.mini-btn:active{background:#F1F5F9;}
.dept-children{overflow:hidden;}
.member-row{display:flex;align-items:center;gap:9px;padding:9px 14px 9px 38px;font-size:13.5px;color:var(--t2);}
.member-row .nm{color:var(--t1);font-weight:500;font-size:14px;}
.member-row .pos{font-size:12px;color:var(--t3);}

.member-card{display:flex;align-items:center;gap:11px;padding:12px 14px;background:#fff;border-bottom:1px solid var(--line);}
.member-card:last-child{border-bottom:0;}
.member-card .info{flex:1;min-width:0;}
.member-card .n1{font-size:14.5px;font-weight:600;display:flex;align-items:center;gap:6px;}
.member-card .n2{font-size:12px;color:var(--t3);margin-top:2px;}
.list-wrap{background:#fff;border-radius:var(--r-md);margin:0 14px;overflow:hidden;box-shadow:var(--shadow);}

/* ---------- 我的 ---------- */
.profile-head{background:#fff;padding:20px 16px;display:flex;align-items:center;gap:14px;}
.menu-list{background:#fff;border-radius:var(--r-md);margin:12px 14px 0;overflow:hidden;box-shadow:var(--shadow);}
.menu-item{display:flex;align-items:center;gap:12px;padding:15px 14px;border-bottom:1px solid var(--line);font-size:14.5px;}
.menu-item:last-child{border-bottom:0;}
.menu-item .ico-box{width:32px;height:32px;border-radius:10px;display:flex;align-items:center;justify-content:center;background:var(--brand-soft);color:var(--brand);}
.menu-item .lbl{flex:1;}
.menu-item .val{font-size:13px;color:var(--t3);}

/* ---------- toast ---------- */
.toast{
  position:fixed;left:50%;bottom:110px;transform:translate(-50%,12px);
  background:rgba(17,24,39,.92);color:#fff;font-size:13.5px;padding:10px 18px;border-radius:12px;
  z-index:200;opacity:0;pointer-events:none;transition:.24s ease;max-width:80%;text-align:center;line-height:1.5;
  backdrop-filter:blur(6px);
}
.toast.show{opacity:1;transform:translate(-50%,0);}

/* ---------- 权限说明表 ---------- */
.perm-table{width:100%;border-collapse:collapse;font-size:11.5px;background:#fff;}
.perm-table th,.perm-table td{border:1px solid var(--line);padding:7px 6px;text-align:center;vertical-align:middle;line-height:1.5;}
.perm-table th{background:#F8FAFB;font-weight:600;color:var(--t2);font-size:11px;}
.perm-table td:first-child,.perm-table th:first-child{text-align:left;padding-left:10px;font-weight:500;}
.perm-yes{color:var(--brand);font-weight:700;}
.perm-no{color:#D1D5DB;}
.perm-part{color:var(--orange);font-weight:600;font-size:10.5px;}

/* 说明文档块 */
.doc-block{padding:0 16px 18px;font-size:13.5px;line-height:1.8;color:#374151;}
.doc-block h4{font-size:14px;margin:18px 0 6px;color:var(--t1);font-weight:650;}
.doc-block p{margin:6px 0;}
.doc-block ul{margin:6px 0;padding-left:18px;}
.doc-block li{margin:4px 0;}
.flow-mini{display:flex;align-items:center;gap:4px;font-size:11px;color:var(--t2);flex-wrap:wrap;margin-top:6px;}
.flow-mini b{background:#F1F5F9;border-radius:6px;padding:3px 7px;font-weight:600;color:var(--t1);font-size:11px;}

.skeleton-note{font-size:11.5px;color:var(--t3);text-align:center;padding:14px 20px 0;line-height:1.7;}

/* ---------- 流程进度条 ---------- */
.stepper{display:flex;align-items:flex-start;padding:16px 10px 10px;background:#fff;border-bottom:1px solid var(--line);}
.stp{flex:1;text-align:center;position:relative;z-index:1;}
.stp .bar{position:absolute;top:9px;left:50%;width:100%;height:2px;background:#E7EBF0;z-index:0;}
.stp:last-child .bar{display:none;}
.stp.done .bar{background:#6EE7B7;}
.stp .dot{width:20px;height:20px;border-radius:50%;background:#fff;border:2px solid #E1E6EC;margin:0 auto;position:relative;z-index:2;display:flex;align-items:center;justify-content:center;color:#fff;font-size:11px;font-weight:700;}
.stp .dot svg{width:11px;height:11px;stroke-width:3;}
.stp.done .dot{background:var(--brand);border-color:var(--brand);}
.stp.cur .dot{border-color:var(--brand);background:#fff;box-shadow:0 0 0 4px rgba(5,150,105,.12);}
.stp.cur .dot::after{content:"";width:8px;height:8px;border-radius:50%;background:var(--brand);}
.stp span{display:block;font-size:11px;color:var(--t3);margin-top:7px;line-height:1.3;}
.stp.done span{color:var(--t2);}
.stp.cur span{color:var(--brand-deep);font-weight:600;}
.stp.fail .dot{background:#FEF2F2;border-color:#FCA5A5;}
.stp.fail .dot::after{content:"";width:8px;height:8px;border-radius:2px;background:#EF4444;}
.stp.fail span{color:#B91C1C;font-weight:600;}

/* ---------- 快捷入口 ---------- */
.quick{display:grid;grid-template-columns:repeat(4,1fr);gap:9px;padding:0 14px;margin-top:14px;}
.quick .q{background:#fff;border-radius:15px;padding:13px 4px 11px;text-align:center;box-shadow:var(--shadow);position:relative;}
.quick .q .ico{width:34px;height:34px;border-radius:11px;margin:0 auto 7px;display:flex;align-items:center;justify-content:center;background:var(--brand-soft);color:var(--brand);}
.quick .q .t{font-size:11.5px;color:var(--t2);letter-spacing:.2px;}
.quick .q.locked{opacity:.45;}
.quick .q .n{position:absolute;top:8px;right:12px;min-width:16px;height:16px;border-radius:8px;background:var(--red);color:#fff;font-size:10px;font-weight:700;display:flex;align-items:center;justify-content:center;padding:0 4px;}

.due-overdue{color:#DC2626;font-weight:600;}
.due-today{color:#C2410C;font-weight:600;}
.due-done{color:var(--t3);}

.info-tag{display:inline-flex;align-items:center;gap:3px;font-size:11.5px;color:var(--t3);}
.sheet .form-group{margin:0;box-shadow:none;border-radius:0;}
.sheet .fg-row{min-height:50px;}

.filter-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;padding:12px 16px;}
.filter-grid button{height:42px;border-radius:12px;background:#F4F6F8;font-size:14px;color:var(--t2);border:1.5px solid transparent;}
.filter-grid button.on{background:var(--brand-soft);border-color:var(--brand);color:var(--brand-deep);font-weight:600;}

.role-card{display:flex;gap:10px;padding:12px 14px;border-bottom:1px solid var(--line);align-items:flex-start;}
.role-card:last-child{border-bottom:0;}
.role-card .rl{font-size:13.5px;font-weight:650;}
.role-card .rd{font-size:12px;color:var(--t3);margin-top:3px;line-height:1.6;}

.divider{height:8px;background:transparent;}

/* ---------- 表单输入框 ---------- */
.input-box{
  width:100%;background:#F7F9FA;border:1px solid #EDF0F4;border-radius:11px;
  padding:12px;font-size:15.5px;line-height:1.6;font-weight:500;transition:.16s;
}
.input-box::placeholder{color:#AEB8C4;font-weight:400;font-size:14.5px;}
.input-box:focus{border-color:#BFEFDC;background:#fff;box-shadow:0 0 0 3px rgba(5,150,105,.07);}
textarea.input-box{min-height:96px;resize:none;font-weight:400;font-size:14.5px;}
.fg-col input.input-box,.fg-col textarea.input-box{background:#F7F9FA;border:1px solid #EDF0F4;border-radius:11px;padding:12px;}
.fg-col input.input-box:focus,.fg-col textarea.input-box:focus{background:#fff;border-color:#BFEFDC;}
.dept-row .nm{font-weight:600;font-size:14.5px;}
.page{padding-bottom:calc(92px + var(--safe-b));}
.tab-fab .fab{top:-26px;}
.tab-fab span.lbl{bottom:2px;}

/* select 自定义箭头 */
.fg-row select,.fg-row select:focus{
  appearance:none;-webkit-appearance:none;-moz-appearance:none;
  background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2398A2B3' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right center;background-size:15px 15px;
  padding-right:22px;
}
.tab-fab .fab{top:-28px;box-shadow:0 8px 18px -6px rgba(5,150,105,.55);}
.tab-fab span.lbl{bottom:1px;font-size:9.5px;}

/* ---------- 截止倒计时 ---------- */
.cd{font-variant-numeric:tabular-nums;letter-spacing:-.1px;white-space:nowrap;}
.cd-ok{color:#5B6674;}
.cd-soon{color:#C2410C;font-weight:600;}
.cd-over{color:#DC2626;font-weight:700;}
.cd-none{color:#98A2B3;font-weight:400;}
.cd-pill{padding:3px 9px;border-radius:8px;background:#F1F5F9;font-size:12px;font-weight:600;letter-spacing:0;}
.cd-pill.cd-soon{background:#FFF7ED;}
.cd-pill.cd-over{background:#FEF2F2;}
.actionbar .btn:only-child{flex:1 1 auto;}
#nt-due{flex:0 0 auto;width:auto;padding-right:2px;}
#due-cd{margin-left:auto;}

/* ---------- 登录页 ---------- */
.login{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:0 34px 90px;background:#fff;}
.login-mark{width:66px;height:66px;border-radius:21px;background:linear-gradient(150deg,#10B981,#059669);color:#fff;display:flex;align-items:center;justify-content:center;box-shadow:0 12px 28px -12px rgba(5,150,105,.6);}
.login-mark .icon{width:30px;height:30px;stroke-width:1.9;}
.login-title{font-size:20px;font-weight:650;margin-top:20px;letter-spacing:.3px;}
.login-sub{font-size:13px;color:#98A2B3;margin-top:7px;letter-spacing:.5px;}
.login-actions{width:100%;margin-top:38px;display:flex;flex-direction:column;gap:12px;}
.login-tip{font-size:12px;color:#B6C0CC;margin-top:22px;text-align:center;line-height:1.9;}

/* ---------- 附件行 ---------- */
.file-row{display:flex;align-items:center;gap:10px;padding:11px 14px;border-bottom:1px solid var(--line);}
.file-row:last-child{border-bottom:0;}
.file-row:active{background:#F8FAFB;}
.file-ico{width:30px;height:30px;border-radius:9px;background:var(--brand-soft);color:var(--brand-deep);display:flex;align-items:center;justify-content:center;flex:0 0 auto;}
.file-row > .icon{color:var(--t3);}

/* ---------- 登录码 ---------- */
.code-input{
  width:100%;height:58px;border-radius:15px;border:1.5px solid #E3E8EE;background:#F9FBFC;
  text-align:center;font-size:23px;font-weight:600;letter-spacing:9px;font-variant-numeric:tabular-nums;
  color:var(--t1);transition:.16s;padding-left:9px;
}
.code-input::placeholder{font-size:14px;font-weight:400;letter-spacing:0;color:#AEB8C4;padding-left:0;}
.code-input:focus{border-color:var(--brand);background:#fff;box-shadow:0 0 0 3px rgba(5,150,105,.09);outline:none;}
.code-chip{
  font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  font-size:14px;font-weight:600;letter-spacing:2px;
  background:#F1F5F9;border-radius:9px;padding:5px 11px;color:var(--t1);flex:0 0 auto;
}

/* ---------- 登录页分隔 ---------- */
.login-div{display:flex;align-items:center;gap:10px;color:#B6C0CC;font-size:12px;margin:2px 0;}
.login-div::before,.login-div::after{content:"";flex:1;height:1px;background:#EDF0F4;}

/* ---------- 登录页按钮加高，视觉更饱满 ---------- */
.login-actions .btn{flex:0 0 auto;height:54px;font-size:16.5px;border-radius:16px;letter-spacing:.5px;}
.login-actions a.btn{display:flex;}
.login-actions .code-input{height:56px;font-size:22px;}
.login-actions > *{margin:0;}

/* ---------- 导入 ---------- */
.imp-step{display:flex;align-items:center;gap:12px;padding:14px 0;border-bottom:1px solid var(--line);}
.imp-step:last-of-type{border-bottom:0;}
.imp-step .nm{font-size:14px;font-weight:500;}
.imp-step .dp{font-size:12px;color:var(--t3);margin-top:2px;}
.imp-num{width:24px;height:24px;border-radius:50%;background:var(--brand-soft);color:var(--brand-deep);
  font-size:12px;font-weight:600;display:flex;align-items:center;justify-content:center;flex:0 0 auto;}
.imp-tip{margin-top:14px;font-size:12px;color:var(--t3);line-height:1.9;background:#F8FAFB;border-radius:11px;padding:12px 14px;}
.imp-tip b{color:var(--t2);font-weight:600;}
.imp-sum{display:flex;gap:10px;margin:4px 0 14px;}
.imp-sum > div{flex:1;background:#F8FAFB;border-radius:12px;padding:14px 10px;text-align:center;}
.imp-sum b{display:block;font-size:22px;font-weight:600;color:var(--t1);line-height:1.2;}
.imp-sum span{font-size:12px;color:var(--t3);}

/* ---------- 底栏公共（移动端隐藏的桌面元素） ---------- */
.side-brand{display:none;}
.tab-fab .fab .lbl{display:none;}
.tab-badge{
  position:absolute;top:6px;right:calc(50% - 20px);min-width:15px;height:15px;border-radius:8px;
  background:#EF4444;color:#fff;font-size:9px;font-style:normal;
  display:flex;align-items:center;justify-content:center;padding:0 3px;
}

/* ================= 桌面端（≥1024px）：侧边栏布局 ================= */
@media (min-width: 1024px) {
  body{background:#EDF0F4;}

  .app{
    max-width:none;
    padding-left:236px;
    background:#F5F7FA;
    box-shadow:none;
  }

  /* 侧边栏 */
  .tabbar{
    position:fixed;left:0;top:0;bottom:0;
    width:236px;height:100vh;max-width:none;margin:0;
    display:flex;flex-direction:column;gap:2px;
    padding:22px 14px 18px;
    border-top:0;border-right:1px solid var(--line);
    background:#fff;
    backdrop-filter:none;-webkit-backdrop-filter:none;
    align-content:initial;
  }
  .tabbar .side-brand{
    display:flex;align-items:center;gap:9px;
    padding:0 10px 20px;font-size:15px;font-weight:600;color:var(--t1);
    order:-1;letter-spacing:.2px;
  }
  .tabbar .side-brand .icon{width:20px;height:20px;color:var(--brand);stroke-width:2;}
  .tabbar .tab{
    flex-direction:row;justify-content:flex-start;align-items:center;
    height:42px;border-radius:10px;padding:0 12px;
    font-size:14px;gap:10px;color:var(--t2);
    transition:background .14s,color .14s;
  }
  .tabbar .tab .icon{width:18px;height:18px;}
  .tabbar .tab:hover{background:#F4F6F8;}
  .tabbar .tab.active{background:var(--brand-soft);color:var(--brand-deep);font-weight:500;}
  .tabbar .tab.active .icon{stroke-width:2;}
  .tabbar .tab[data-to="home"]{order:1;}
  .tabbar .tab[data-to="tasks"]{order:2;}
  .tabbar .tab[data-to="org"]{order:3;}
  .tabbar .tab[data-to="me"]{order:4;}
  .tabbar .tab-badge{position:static;margin-left:auto;right:auto;top:auto;}

  /* 发起任务：整行按钮 */
  .tabbar .tab-fab{order:0;margin-bottom:16px;padding:0;height:auto;}
  .tabbar .tab-fab .fab{
    position:static;transform:none;
    width:100%;height:42px;border-radius:10px;
    gap:8px;font-size:14px;font-weight:500;letter-spacing:.3px;
    box-shadow:0 4px 12px -6px rgba(5,150,105,.5);
  }
  .tabbar .tab-fab .fab:active{transform:scale(.98);}
  .tabbar .tab-fab .fab .icon{width:18px;height:18px;stroke-width:2.4;}
  .tabbar .tab-fab .fab .lbl{display:inline;}

  /* 内容区 */
  .nav{max-width:920px;margin:0 auto;}
  .page{max-width:920px;margin:0 auto;padding-bottom:48px;}

  /* 登录页全屏 */
  .login{position:fixed;inset:0;z-index:200;background:#fff;padding-bottom:0;}
  .login-actions{max-width:380px;margin:36px auto 0;}
  .login-tip{max-width:380px;margin-left:auto;margin-right:auto;}
}

@media (min-width: 1440px) {
  .nav,.page{max-width:1080px;}
}
