/* 多人工作台 · 版式参考千问办公运营工作台（左侧分组导航 + 白色主面板 + 下划线子标签 + 紧凑表格/甘特/看板），配色沿用官网浅蓝白 */
.wa-root { --wa-bg:#f4f7fc; --wa-surface:#ffffff; --wa-line:#e7ebf3; --wa-line-soft:#f0f3f8;
  --wa-ink:#17233d; --wa-ink2:#5f718d; --wa-ink3:#93a3ba;
  --wa-accent:#1d4ed8; --wa-accent-dark:#153eae; --wa-accent-soft:#eef4ff;
  --wa-ok:#12916a; --wa-ok-soft:#e7f6ef; --wa-warn:#a9701a; --wa-warn-soft:#fdf4e3;
  --wa-danger:#c44b4b; --wa-danger-soft:#fdeded; --wa-info-soft:#eef0fe; --wa-info:#4a53c8;
  color:var(--wa-ink); font-size:14px; line-height:1.55; background:var(--wa-bg);
  font-family:var(--font-sans, -apple-system, "PingFang SC", "Microsoft YaHei", sans-serif);
}
.wa-root *{box-sizing:border-box}

.wa { display:grid; grid-template-columns:232px minmax(0,1fr); align-items:start; min-height:calc(100vh - 88px) }
.wa[hidden], .wa-login[hidden] { display:none !important }

/* ---------------- 左侧栏 ---------------- */
.wa-side{position:sticky; top:5.95rem; align-self:start; display:flex; flex-direction:column;
  height:calc(100vh - 5.95rem); border-right:1px solid var(--wa-line); background:var(--wa-surface)}
.wa-brand{display:flex; align-items:center; gap:.6rem; padding:1rem .9rem; border-bottom:1px solid var(--wa-line-soft)}
.wa-logo{display:grid; place-items:center; width:36px; height:36px; border-radius:10px; flex:0 0 auto;
  background:#1d4ed8; color:#fff; font-size:.95rem; font-weight:700}
.wa-brand b{display:block; font-size:.92rem; font-weight:700; letter-spacing:-.01em}
.wa-brand small{display:block; margin-top:1px; color:var(--wa-ink3); font-size:.68rem; letter-spacing:.04em}

.wa-nav{flex:1; overflow-y:auto; padding:.5rem .6rem 1rem}
.wa-group{padding:.85rem .5rem .3rem; color:var(--wa-ink3); font-size:.66rem; font-weight:700; letter-spacing:.1em}
.wa-group:first-child{padding-top:.4rem}
.wa-nav button{display:flex; align-items:center; gap:.55rem; width:100%; min-height:36px;
  padding:.4rem .55rem; border:0; border-radius:8px; background:transparent; color:var(--wa-ink2);
  font:inherit; font-size:.855rem; font-weight:600; text-align:left; cursor:pointer; transition:background .12s ease,color .12s ease}
.wa-nav button:hover{background:var(--wa-accent-soft); color:var(--wa-accent)}
.wa-nav button.active{background:var(--wa-accent); color:#fff}
.wa-nav button.active .wa-num{background:rgba(255,255,255,.24); color:#fff}
.wa-ico{display:grid; place-items:center; width:18px; height:18px; flex:0 0 auto; border-radius:5px;
  background:var(--wa-accent-soft); color:var(--wa-accent); font-size:.62rem; font-weight:700; line-height:1}
.wa-nav button.active .wa-ico{background:rgba(255,255,255,.22); color:#fff}
.wa-nav button>span:nth-child(2){flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
.wa-num{flex:0 0 auto; min-width:20px; padding:1px 6px; border-radius:999px; background:var(--wa-line-soft);
  color:var(--wa-ink3); font-size:.68rem; font-weight:700; text-align:center}

.wa-me{display:flex; align-items:center; gap:.5rem; padding:.7rem .8rem; border-top:1px solid var(--wa-line-soft)}
.wa-avatar{display:grid; place-items:center; width:32px; height:32px; flex:0 0 auto; border-radius:50%;
  background:var(--wa-accent-soft); color:var(--wa-accent); font-size:.82rem; font-weight:700}
.wa-me-info{flex:1; min-width:0}
.wa-me-info b{display:block; font-size:.83rem; font-weight:700; overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
.wa-me-info small{display:block; color:var(--wa-ink3); font-size:.68rem}
.wa-me .wa-mini{flex:0 0 auto}

/* ---------------- 主面板 ---------------- */
/* 工作台是全宽布局：覆盖 Layout 里 `main { max-width:800px; margin:0 auto; min-height:... }` 的默认正文栏约束。
   选择器 `.wa-main`（类，0-1-0）优先级高于 `main`（元素，0-0-1），无需 !important。 */
.wa-main{min-width:0; max-width:none; margin:0; min-height:0; padding:1.2rem clamp(1rem,2.4vw,2rem) 3rem}
.wa-head{display:flex; align-items:baseline; gap:.7rem; flex-wrap:wrap; margin-bottom:.75rem}
.wa-head h1{margin:0; font-size:1.28rem; font-weight:700; letter-spacing:-.015em}
.wa-head-meta{color:var(--wa-ink3); font-size:.78rem}
.wa-head-actions{margin-left:auto; display:flex; gap:.45rem; flex-wrap:wrap; align-items:center}

.wa-tabs{display:flex; gap:1.1rem; border-bottom:1px solid var(--wa-line); margin-bottom:.9rem; overflow-x:auto}
.wa-tabs button{padding:.5rem 1px; border:0; border-bottom:2px solid transparent; background:transparent;
  color:var(--wa-ink2); font:inherit; font-size:.9rem; font-weight:700; cursor:pointer; white-space:nowrap; margin-bottom:-1px}
.wa-tabs button:hover{color:var(--wa-ink)}
.wa-tabs button.active{color:var(--wa-accent); border-bottom-color:var(--wa-accent)}
.wa-tabs button .wa-tabnum{display:inline-block; margin-left:.35rem; padding:0 .35rem; border-radius:999px;
  background:var(--wa-line-soft); color:var(--wa-ink3); font-size:.68rem; font-weight:700; vertical-align:1px}
.wa-tabs button.active .wa-tabnum{background:var(--wa-accent-soft); color:var(--wa-accent)}

.wa-toolbar{display:flex; align-items:center; gap:.5rem; flex-wrap:wrap; margin-bottom:.85rem}
.wa-toolbar-note{margin-left:auto; color:var(--wa-ink3); font-size:.75rem; line-height:1.5}

/* ---------------- 控件 ---------------- */
.wa-btn{min-height:34px; padding:.36rem .8rem; border-radius:8px; border:1px solid var(--wa-line);
  background:#fff; color:var(--wa-ink); font:inherit; font-size:.82rem; font-weight:600; cursor:pointer;
  transition:background .12s ease,border-color .12s ease}
.wa-btn:hover{border-color:#b9cdf0; background:var(--wa-accent-soft)}
.wa-btn.primary{border-color:var(--wa-accent); background:var(--wa-accent); color:#fff}
.wa-btn.primary:hover{background:var(--wa-accent-dark)}
.wa-btn.danger{border-color:#f0d0d0; background:#fff5f5; color:var(--wa-danger)}
.wa-btn.danger:hover{background:#fdecec}
.wa-btn.plain{border-color:transparent; background:transparent; color:var(--wa-accent); padding-inline:.5rem}
.wa-btn.plain:hover{background:var(--wa-accent-soft)}
.wa-btn.xs{min-height:26px; padding:.18rem .5rem; font-size:.74rem; border-radius:7px}
.wa-btn[disabled]{opacity:.5; cursor:not-allowed}

.wa-input{padding:.36rem .6rem; border:1px solid var(--wa-line); border-radius:8px; background:#fff;
  color:var(--wa-ink); font:inherit; font-size:.82rem; outline:none}
.wa-input:focus{border-color:var(--wa-accent); box-shadow:0 0 0 3px rgba(29,78,216,.1)}
.wa-search{min-width:210px; width:min(280px,40vw)}

.wa-chips{display:flex; gap:.35rem; flex-wrap:wrap}
.wa-chip{padding:.24rem .62rem; border:1px solid var(--wa-line); border-radius:999px; background:#fff;
  color:var(--wa-ink2); font:inherit; font-size:.76rem; font-weight:600; cursor:pointer; white-space:nowrap}
.wa-chip:hover{border-color:#b9cdf0; color:var(--wa-accent)}
.wa-chip.active{border-color:var(--wa-accent); background:var(--wa-accent); color:#fff}

/* ---------------- 面板 / 卡片 ---------------- */
.wa-panel{background:var(--wa-surface); border:1px solid var(--wa-line); border-radius:12px; overflow:hidden}
.wa-panel+.wa-panel{margin-top:.85rem}
.wa-panel-head{display:flex; align-items:center; gap:.7rem; flex-wrap:wrap; padding:.85rem 1rem; border-bottom:1px solid var(--wa-line-soft)}
.wa-panel-head h2{margin:0; font-size:.98rem; font-weight:700}
.wa-panel-head p{margin:0; color:var(--wa-ink3); font-size:.78rem}
.wa-panel-head .right{margin-left:auto; display:flex; gap:.45rem; align-items:center; flex-wrap:wrap}
.wa-panel-body{padding:1rem}
.wa-panel.flush .wa-panel-body{padding:0}

.wa-stats{display:grid; grid-template-columns:repeat(auto-fit,minmax(170px,1fr)); gap:.7rem}
.wa-stat{padding:.9rem 1rem; border:1px solid var(--wa-line); border-radius:12px; background:#fff}
.wa-stat span{display:block; color:var(--wa-ink3); font-size:.76rem}
.wa-stat strong{display:block; margin-top:.3rem; font-size:1.75rem; font-weight:700; line-height:1.15; letter-spacing:-.02em}
.wa-stat small{display:block; margin-top:.3rem; color:var(--wa-ink3); font-size:.72rem}
.wa-stat.accent{background:#172b52; border-color:#172b52; color:#fff}
.wa-stat.accent span,.wa-stat.accent small{color:#b6cffb}

/* ---------------- 表格 ---------------- */
.wa-table-wrap{overflow-x:auto}
.wa-table{width:100%; margin:0; border-collapse:collapse}
/* 台账列宽：活动名称给足空间，进度条压缩，操作列不折行；紧凑内边距避免窄屏横向滚动 */
.wa-table.ledger th, .wa-table.ledger td{padding-left:.6rem; padding-right:.6rem}
.wa-table.ledger .wa-progress{min-width:88px}
.wa-table.ledger th:first-child, .wa-table.ledger td:first-child{min-width:196px}
.wa-table.ledger th:nth-child(4), .wa-table.ledger td:nth-child(4){min-width:96px}
.wa-table.ledger th:nth-child(5), .wa-table.ledger td:nth-child(5){min-width:100px}
.wa-table.ledger th:nth-child(6), .wa-table.ledger td:nth-child(6){min-width:96px}
.wa-table.ledger th:nth-child(8), .wa-table.ledger td:nth-child(8){min-width:78px}
.wa-table.ledger th:last-child, .wa-table.ledger td:last-child{width:1px; white-space:nowrap}
/* 报名线索列宽：短字段一律不换行，两个多选字段给足宽度再换行，操作列固定不折行。 */
.wa-table.enroll th, .wa-table.enroll td{padding-left:.6rem; padding-right:.6rem}
.wa-table.enroll th:nth-child(1), .wa-table.enroll td:nth-child(1){white-space:nowrap}
.wa-table.enroll th:nth-child(2), .wa-table.enroll td:nth-child(2){min-width:120px}
.wa-table.enroll th:nth-child(3), .wa-table.enroll td:nth-child(3),
.wa-table.enroll th:nth-child(4), .wa-table.enroll td:nth-child(4),
.wa-table.enroll th:nth-child(5), .wa-table.enroll td:nth-child(5){white-space:nowrap}
.wa-table.enroll th:last-child, .wa-table.enroll td:last-child{width:1px; white-space:nowrap}
.wa-table th{padding:.55rem .75rem; background:#fafbfd; border-bottom:1px solid var(--wa-line);
  color:var(--wa-ink3); font-size:.75rem; font-weight:600; text-align:left; white-space:nowrap}
.wa-table td{padding:.7rem .75rem; border-bottom:1px solid var(--wa-line-soft); font-size:.815rem;
  color:var(--wa-ink); vertical-align:middle}
.wa-table tbody tr:last-child td{border-bottom:0}
.wa-table tbody tr:hover td{background:#fbfcfe}
.wa-table tr.clickable{cursor:pointer}
.wa-table td b{font-weight:700}
.wa-table td small{display:block; margin-top:2px; color:var(--wa-ink3); font-size:.72rem}
.wa-table .num{font-variant-numeric:tabular-nums; white-space:nowrap}
.wa-row-actions{display:flex; gap:.35rem; flex-wrap:wrap}
/* 表格里的操作列不能在单元格里折行，否则会把整行高度撑到两倍。 */
.wa-table td .wa-row-actions{flex-wrap:nowrap}
.wa-empty{padding:2rem 1rem; color:var(--wa-ink3); font-size:.82rem; text-align:center}
/* 长文本列：单行截断 + title 提示，避免一个多选字段把整行拉高三行。 */
.wa-clip{display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; max-width:130px}
.wa-table a,.wa-cust a{color:var(--wa-accent); text-decoration:none}
.wa-table a:hover{text-decoration:underline}
.wa-table a.wa-btn{color:var(--wa-ink)}
.wa-table code{padding:0 4px; border-radius:4px; background:var(--wa-line-soft); color:var(--wa-ink2); font-size:.74rem}

/* ---------------- 徽章 / 进度 ---------------- */
.wa-badge{display:inline-block; padding:1px 8px; border-radius:999px; font-size:.72rem; font-weight:700; white-space:nowrap}
.wa-badge.applied,.wa-badge.pending{background:var(--wa-warn-soft); color:var(--wa-warn)}
.wa-badge.approved,.wa-badge.ongoing{background:var(--wa-accent-soft); color:var(--wa-accent)}
.wa-badge.reported{background:var(--wa-info-soft); color:var(--wa-info)}
.wa-badge.closed,.wa-badge.paid,.wa-badge.ok{background:var(--wa-ok-soft); color:var(--wa-ok)}
.wa-badge.rejected,.wa-badge.bad{background:var(--wa-danger-soft); color:var(--wa-danger)}
.wa-badge.mute{background:var(--wa-line-soft); color:var(--wa-ink3)}

.wa-progress{display:flex; align-items:center; gap:.5rem; min-width:132px}
.wa-bar{flex:1; height:6px; border-radius:999px; background:#eef1f6; overflow:hidden}
.wa-bar i{display:block; height:100%; border-radius:999px; background:var(--wa-accent)}
.wa-bar i.ok{background:var(--wa-ok)}
.wa-bar i.warn{background:#d9a441}
.wa-bar i.bad{background:var(--wa-danger)}
.wa-progress em{flex:0 0 auto; font-size:.74rem; font-weight:700; color:var(--wa-ink2); font-style:normal; min-width:34px; text-align:right}
.wa-steps{display:flex; gap:2px; min-width:120px}
.wa-steps i{flex:1; height:6px; border-radius:2px; background:#eef1f6}
.wa-steps i.on{background:var(--wa-accent)}

/* ---------------- 甘特 / 时间线 ---------------- */
.wa-gantt{overflow-x:auto}
.wa-gantt table{width:100%; margin:0; border-collapse:collapse; min-width:880px}
.wa-gantt th{padding:.45rem .6rem; border-bottom:1px solid var(--wa-line); color:var(--wa-ink3);
  font-size:.72rem; font-weight:600; text-align:center; white-space:nowrap; background:#fafbfd}
.wa-gantt th:first-child{text-align:left; min-width:210px}
.wa-gantt td{padding:.55rem .6rem; border-bottom:1px solid var(--wa-line-soft); font-size:.8rem}
.wa-gantt td:first-child b{display:block; font-weight:700}
.wa-gantt td:first-child small{color:var(--wa-ink3); font-size:.72rem}
.wa-gantt .track{position:relative; height:24px; border-left:1px solid var(--wa-line-soft)}
.wa-gantt .track span{position:absolute; top:3px; height:18px; border-radius:5px; background:var(--wa-accent);
  color:#fff; font-size:.7rem; font-weight:700; line-height:18px; padding:0 .5rem; overflow:hidden; white-space:nowrap;
  min-width:64px; box-sizing:border-box; display:flex; align-items:center}
.wa-gantt .track span.applied{background:#e0a63c}
.wa-gantt .track span.approved,.wa-gantt .track span.ongoing{background:var(--wa-accent)}
.wa-gantt .track span.reported{background:#6b73dd}
.wa-gantt .track span.closed{background:var(--wa-ok)}
.wa-gantt .track span.rejected{background:#d98080}
.wa-today{position:absolute; top:0; bottom:0; width:1px; background:var(--wa-danger); opacity:.55}

/* ---------------- 看板 ---------------- */
/* 看板：五列等宽单行排布，窄屏横向滚动（不折行） */
.wa-board{display:grid; grid-auto-flow:column; grid-auto-columns:minmax(172px,1fr); gap:.7rem;
  align-items:start; overflow-x:auto; padding-bottom:.2rem}
.wa-col{display:flex; flex-direction:column; gap:.5rem; padding:.7rem; border:1px solid var(--wa-line);
  border-radius:12px; background:#fbfcfe}
.wa-col-head{display:flex; align-items:center; gap:.4rem; padding-bottom:.5rem; border-bottom:1px solid var(--wa-line-soft)}
.wa-col-head b{font-size:.82rem; font-weight:700; flex:1}
.wa-col-head .wa-num{margin-left:auto}
.wa-card{padding:.65rem .7rem; border:1px solid var(--wa-line); border-radius:10px; background:#fff; cursor:pointer;
  transition:border-color .12s ease,box-shadow .12s ease}
.wa-card:hover{border-color:#b9cdf0; box-shadow:0 4px 14px rgba(18,74,145,.09)}
.wa-card b{display:block; font-size:.84rem; font-weight:700; line-height:1.45}
.wa-card small{display:block; margin-top:.3rem; color:var(--wa-ink3); font-size:.72rem}
.wa-card .wa-card-tags{display:flex; gap:.3rem; flex-wrap:wrap; margin-top:.45rem}
.wa-tag{padding:1px 6px; border-radius:6px; background:var(--wa-accent-soft); color:#31537f; font-size:.68rem; font-weight:600}

/* ---------------- 列表块 ---------------- */
.wa-rows{display:grid}
.wa-row{display:flex; align-items:center; gap:.8rem; padding:.65rem .9rem; border-bottom:1px solid var(--wa-line-soft)}
.wa-row:last-child{border-bottom:0}
.wa-row-main{flex:1; min-width:0}
.wa-row-main b{display:block; font-size:.83rem; font-weight:700; overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
.wa-row-main small{display:block; margin-top:2px; color:var(--wa-ink3); font-size:.72rem}

.wa-note{padding:.6rem .8rem; border-radius:9px; background:var(--wa-warn-soft); color:#8a6418; font-size:.78rem; line-height:1.65}
.wa-hint{padding:.6rem .8rem; border-radius:9px; background:#f7f9fd; color:var(--wa-ink2); font-size:.78rem; line-height:1.65}
.wa-quote{padding:.6rem .85rem; border-left:3px solid var(--wa-accent); border-radius:0 9px 9px 0;
  background:#f7faff; font-size:.815rem; line-height:1.8; white-space:pre-wrap}
.wa-facts{display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); gap:.6rem}
.wa-fact{padding:.6rem .75rem; border:1px solid var(--wa-line); border-radius:10px; background:#fff}
.wa-fact span{display:block; color:var(--wa-ink3); font-size:.72rem}
.wa-fact strong{display:block; margin-top:.2rem; font-size:.84rem; font-weight:700; line-height:1.5}

.wa-thumbs{display:grid; grid-template-columns:repeat(auto-fill,minmax(140px,1fr)); gap:.6rem}
.wa-thumb{padding:.45rem; border:1px solid var(--wa-line); border-radius:10px; background:#fbfcfe; text-align:center}
.wa-thumb img{width:100%; height:92px; object-fit:cover; border-radius:7px; background:#eef3fb}
.wa-thumb a{display:block; margin-top:.35rem; color:var(--wa-accent); font-size:.72rem; font-weight:600;
  text-decoration:none; word-break:break-all}
.wa-file{display:flex; align-items:center; gap:.5rem; padding:.45rem .6rem; border:1px solid var(--wa-line);
  border-radius:9px; background:#fbfcfe; font-size:.78rem}
.wa-file b{font-weight:600}
.wa-file small{color:var(--wa-ink3); font-size:.72rem}
.wa-file a{margin-left:auto}

.wa-item{padding:.8rem .9rem; border:1px solid var(--wa-line); border-radius:11px; background:#fff}
.wa-items{display:grid; gap:.6rem}
.wa-item-top{display:flex; align-items:flex-start; gap:.7rem; flex-wrap:wrap}
.wa-item-top b{flex:1; min-width:0; font-size:.87rem; font-weight:700}
.wa-item-meta{display:flex; gap:.8rem; flex-wrap:wrap; margin-top:.3rem; color:var(--wa-ink3); font-size:.74rem}
.wa-item-text{margin:.5rem 0 0; color:#3d5170; font-size:.815rem; line-height:1.75; white-space:pre-wrap}
.wa-item-foot{display:flex; gap:.35rem; flex-wrap:wrap; margin-top:.6rem; padding-top:.55rem; border-top:1px solid var(--wa-line-soft)}

/* ---------------- 对话框 ---------------- */
.wa-dialog{width:min(720px,calc(100vw - 2rem)); max-height:calc(100vh - 3rem); padding:0; border:0;
  border-radius:14px; background:#fff; color:var(--wa-ink); box-shadow:0 30px 80px rgba(10,35,80,.26)}
.wa-dialog::backdrop{background:rgba(14,32,64,.45); backdrop-filter:blur(2px)}
.wa-dialog form{display:grid; grid-template-columns:repeat(6,minmax(0,1fr)); gap:.75rem .9rem;
  padding:1.1rem 1.2rem; max-height:calc(100vh - 3rem); overflow:auto}
/* 表单用 6 栏基准栅格，各行的字段才能跨行对齐；.wa-fields 容器在这里透明化。 */
.wa-dialog .wa-fields{display:contents}
.wa-dialog .wa-fields.cols2>.wa-field{grid-column:span 3}
.wa-dialog .wa-fields.cols3>.wa-field{grid-column:span 2}
.wa-dialog form>.wa-field,
.wa-dialog form>.wa-upload,
.wa-dialog form>.wa-dialog-head,
.wa-dialog form>.wa-status,
.wa-dialog form>.wa-dialog-actions,
.wa-dialog form>.wa-note,
.wa-dialog form>.wa-hint,
.wa-dialog form>.wa-choices,
.wa-dialog form>.wa-check{grid-column:1/-1}
.wa-dialog form>.wa-fields.cols2>.wa-field.wide{grid-column:span 6}
.wa-dialog-head{display:flex; align-items:flex-start; gap:.6rem}
.wa-dialog-head h2{margin:0; font-size:1.02rem; font-weight:700}
.wa-dialog-head p{margin:.15rem 0 0; color:var(--wa-ink3); font-size:.76rem}
.wa-dialog-head button{margin-left:auto; flex:0 0 auto; width:30px; height:30px; border:1px solid var(--wa-line);
  border-radius:8px; background:#fff; color:var(--wa-ink3); font:inherit; font-size:1rem; cursor:pointer}
.wa-fields{display:grid; gap:.7rem}
.wa-fields.cols2{grid-template-columns:1fr 1fr}
.wa-fields.cols3{grid-template-columns:repeat(3,1fr)}
.wa-field{display:grid; gap:.28rem}
.wa-field>span{font-size:.76rem; font-weight:600; color:var(--wa-ink2)}
.wa-field input,.wa-field select,.wa-field textarea{width:100%; padding:.5rem .6rem; border:1px solid var(--wa-line);
  border-radius:8px; background:#fff; color:var(--wa-ink); font:inherit; font-size:.83rem; outline:none}
.wa-field textarea{min-height:84px; resize:vertical; line-height:1.7}
.wa-field input:focus,.wa-field select:focus,.wa-field textarea:focus{border-color:var(--wa-accent); box-shadow:0 0 0 3px rgba(29,78,216,.1)}
.wa-upload{padding:.65rem .75rem; border:1px dashed #c2d5f2; border-radius:9px; background:#f9fbff}
.wa-upload input[type=file]{width:100%; font:inherit; font-size:.78rem}
.wa-upload .wa-up-note{display:block; margin-top:.35rem; color:var(--wa-ink3); font-size:.72rem}
.wa-dialog-actions{display:flex; justify-content:flex-end; gap:.45rem; padding-top:.7rem; border-top:1px solid var(--wa-line-soft)}
.wa-status{margin:0; min-height:1.05em; color:var(--wa-ink3); font-size:.76rem}
.wa-status.error{color:var(--wa-danger)}
.wa-status.success{color:var(--wa-ok)}

/* ---------------- 会员运维 / 报名线索 ---------------- */
a.wa-btn{display:inline-flex; align-items:center; justify-content:center; text-decoration:none; white-space:nowrap}
.wa-field.inline{display:flex; align-items:center; gap:.4rem}
.wa-field.inline>span{margin:0; white-space:nowrap}
.wa-field.inline input{width:auto}

.wa-choices{margin:0; padding:.6rem .7rem; border:1px solid var(--wa-line); border-radius:9px; background:#fbfcfe}
.wa-choices legend{padding:0 .3rem; color:var(--wa-ink2); font-size:.76rem; font-weight:600}
.wa-choice-row{display:flex; gap:.4rem 1rem; flex-wrap:wrap; margin-top:.25rem}
.wa-choice{display:inline-flex; align-items:center; gap:.35rem; color:var(--wa-ink); font-size:.79rem; cursor:pointer}
.wa-choice input,.wa-check input{accent-color:var(--wa-accent)}
.wa-check{display:flex; align-items:flex-start; gap:.45rem; color:var(--wa-ink2); font-size:.78rem; line-height:1.6; cursor:pointer}
.wa-check input{margin-top:.15rem; flex:0 0 auto}
.wa-sub h4{margin:0 0 .4rem; font-size:.84rem; font-weight:700}
.wa-sub{margin-top:.2rem}

/* 客户卡片：一行摘要 + 展开详情 */
.wa-cust{border:1px solid var(--wa-line); border-radius:12px; background:#fff; overflow:hidden}
.wa-cust>summary{display:flex; align-items:center; gap:.9rem; flex-wrap:wrap; padding:.75rem .9rem; cursor:pointer; list-style:none}
.wa-cust>summary::-webkit-details-marker{display:none}
.wa-cust>summary:hover{background:#fbfcfe}
.wa-cust[open]>summary{border-bottom:1px solid var(--wa-line-soft)}
.wa-cust>summary>.wa-row-main{flex:1 1 220px}
.wa-cust-body{padding:.9rem; display:grid; gap:.6rem}
.wa-cust-state{flex:0 0 auto; display:grid; gap:.2rem; justify-items:end; text-align:right}
.wa-cust-state small{color:var(--wa-ink3); font-size:.72rem}
.wa-cust-num{flex:0 0 auto; display:grid; gap:.2rem; justify-items:end; text-align:right; min-width:84px}
.wa-cust-num b{font-size:.95rem; font-weight:700; font-variant-numeric:tabular-nums}
.wa-cust-num small{color:var(--wa-ink3); font-size:.72rem}
.wa-cust-latest{flex:0 1 auto; display:grid; gap:.2rem; justify-items:end; text-align:right; max-width:230px}
.wa-cust-latest small{color:var(--wa-ink3); font-size:.72rem; overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
.wa-cust-more{flex:0 0 auto; color:var(--wa-accent); font-size:.75rem; font-weight:700}
/* 展开/收起文案用 CSS 切，JS 只输出空 span。 */
.wa-cust-more::after{content:'详情'}
.wa-cust[open] .wa-cust-more::after{content:'收起'}
.wa-rungroup .wa-cust-more::after{content:'展开'}
.wa-rungroup[open] .wa-cust-more::after{content:'收起'}
.wa-mini-tag{margin-left:.4rem; padding:1px 6px; border-radius:6px; background:var(--wa-info-soft);
  color:var(--wa-info); font-size:.66rem; font-style:normal; font-weight:700}
.wa-results{display:grid; gap:.45rem; margin-top:.5rem}
.wa-results h4{margin:.2rem 0 0; font-size:.83rem; font-weight:700}

/* 任务日志：分组卡片 + 单条折行 */
.wa-rungroup{border:1px solid var(--wa-line); border-radius:11px; background:#fff; overflow:hidden}
.wa-rungroup+.wa-rungroup{margin-top:.6rem}
.wa-rungroup>summary{display:flex; align-items:center; gap:.8rem; flex-wrap:wrap; padding:.7rem .85rem; cursor:pointer; list-style:none}
.wa-rungroup>summary::-webkit-details-marker{display:none}
.wa-rungroup>summary:hover{background:#fbfcfe}
.wa-rungroup[open]>summary{border-bottom:1px solid var(--wa-line-soft)}
.wa-rungroup-body{padding:.85rem; display:grid; gap:.55rem}

.wa-run-list{display:grid; gap:.35rem}
.wa-run{border:1px solid var(--wa-line); border-radius:9px; background:#fbfcfe; overflow:hidden}
.wa-run>summary{display:flex; align-items:center; gap:.6rem; flex-wrap:wrap; padding:.45rem .6rem; cursor:pointer; list-style:none}
.wa-run>summary::-webkit-details-marker{display:none}
.wa-run[open]>summary{border-bottom:1px solid var(--wa-line-soft); background:#fff}
.wa-run-time{color:var(--wa-ink2); font-size:.75rem; font-weight:600; font-variant-numeric:tabular-nums}
.wa-run-src{color:var(--wa-ink3); font-size:.73rem}
.wa-run-phase{color:var(--wa-ink2); font-size:.74rem}
.wa-run-dur{margin-left:auto; color:var(--wa-ink3); font-size:.73rem; font-variant-numeric:tabular-nums}
.wa-run-err{color:var(--wa-ink3); font-size:.72rem}
.wa-run-body{padding:.6rem .7rem; background:#fff}
.wa-run-ctx{display:flex; gap:.9rem; flex-wrap:wrap; color:var(--wa-ink3); font-size:.73rem}
.wa-run-events{margin:.5rem 0 0; padding-left:1.15rem; display:grid; gap:.3rem}
.wa-run-events li{color:var(--wa-ink2); font-size:.76rem}
.wa-run-events li time{margin-right:.4rem; color:var(--wa-ink3); font-variant-numeric:tabular-nums}
.wa-run-events li span{margin-right:.4rem; color:var(--wa-ink3)}
.wa-run-events li strong{color:var(--wa-ink)}
.wa-run-events li p{margin:.1rem 0 0}
.wa-run-events li code{padding:0 4px; border-radius:4px; background:var(--wa-danger-soft); color:var(--wa-danger); font-size:.72rem}

/* ---------------- 登录 ---------------- */
.wa-login{display:grid; grid-template-columns:minmax(0,1.08fr) minmax(390px,.92fr); gap:4.5rem; align-items:center;
  margin:-2.5rem -1rem -5rem; min-height:min(760px, calc(100vh - 96px)); padding:4.5rem max(2rem,6vw) 5rem; background:#f6f8fc}
.wa-login-story{min-width:0}
.wa-login-story>h1{margin:0; color:#17233d; font-size:clamp(2.6rem,5vw,4.5rem); font-weight:800; line-height:1.05; letter-spacing:-.04em}
.wa-login-story>p{max-width:44rem; margin:1rem 0 2rem; color:#5f718d; font-size:1rem; line-height:1.8}
.wa-login-feature-grid{display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); border:1px solid #d8e1ee; background:#fff}
.wa-login-feature-grid article{min-height:190px; padding:1.5rem; border-right:1px solid #d8e1ee; border-bottom:1px solid #d8e1ee}
.wa-login-feature-grid article:nth-child(2n){border-right:0}
.wa-login-feature-grid article:nth-last-child(-n+2){border-bottom:0}
.wa-login-feature-grid span{color:#0f8a70; font-size:.72rem; font-weight:800; letter-spacing:.12em}
.wa-login-feature-grid h2{margin:1.6rem 0 .5rem; color:#17233d; font-size:1.1rem; letter-spacing:-.02em}
.wa-login-feature-grid p{margin:0; color:#667792; font-size:.82rem; line-height:1.75}
.wa-login-card{position:relative; width:100%; padding:2.5rem 2.2rem 2.1rem; border:1px solid #d8e1ee; border-radius:16px; background:#fff;
  box-shadow:0 28px 54px -38px rgba(16,38,78,.48)}
.wa-login-card h2{margin:1.8rem 0 .45rem; font-size:clamp(1.55rem,2.4vw,1.85rem); font-weight:800; letter-spacing:-.03em; color:#14213d}
.wa-login-card>p{margin:0 0 1.5rem; color:#5f718d; font-size:.86rem; line-height:1.75}
.wa-login-card>.wa-login-role{margin:0; color:#1d4ed8; font-size:.8rem; font-weight:800}
.wa-login-card .wa-fields{gap:.85rem}
.wa-login-card .wa-field>span{color:#2b3d5c; font-size:.8rem; font-weight:700}
.wa-login-card .wa-field input{min-height:46px; border-color:#cfdcee; border-radius:11px; font-size:.94rem}
.wa-login-card .wa-field input:focus{border-color:#1d4ed8; box-shadow:0 0 0 3px rgba(29,78,216,.14); outline:0}
.wa-login-card .wa-btn.primary{width:100%; min-height:48px; margin-top:.6rem; border:0; border-radius:11px; font-size:.95rem; font-weight:800; background:#17233d; box-shadow:none}
.wa-login-card .wa-btn.primary:hover{background:#1d4ed8}
.wa-login-foot{margin-top:1.4rem; padding-top:1.1rem; border-top:1px solid #eef3fa; color:#93a3ba; font-size:.76rem; line-height:1.7}
@media(max-width:900px){.wa-login{grid-template-columns:1fr; gap:2rem; align-items:start}}
@media(max-width:560px){
  .wa-login{margin-inline:0; padding:2.5rem 1rem 3.5rem; min-height:0}
  .wa-login-feature-grid{grid-template-columns:1fr}
  .wa-login-feature-grid article{min-height:0; border-right:0}
  .wa-login-feature-grid article:nth-last-child(2){border-bottom:1px solid #d8e1ee}
  .wa-login-card{padding:1.9rem 1.4rem 1.6rem; border-radius:18px}
}

/* ---------------- AI 阅读 · 读书进度 ---------------- */
/* 六项指标固定排 3 列 2 行：交给 auto-fit 会自动排成 5+1，最后一张孤零零占一行，很难看。 */
.wa-stats.six{grid-template-columns:repeat(3,minmax(0,1fr))}
/* 封面卡按网格铺开，窄屏自动减少列数；用分类色做封面色块，不依赖任何图片资源。 */
.wa-shelf{display:grid; grid-template-columns:repeat(auto-fill,minmax(146px,1fr)); gap:.7rem}
.wa-book{display:grid; gap:.45rem; padding:.45rem; border:1px solid var(--wa-line); border-radius:12px;
  background:#fff; font:inherit; text-align:left; cursor:pointer; transition:border-color .12s ease,box-shadow .12s ease}
.wa-book:hover{border-color:#b9cdf0; box-shadow:0 6px 18px rgba(18,74,145,.1)}
.wa-book-cover{position:relative; display:flex; flex-direction:column; justify-content:space-between; gap:.4rem;
  aspect-ratio:5/3; padding:.55rem .6rem; border-radius:9px; overflow:hidden; background:var(--wa-book);
  background-image:linear-gradient(140deg,rgba(255,255,255,.18),rgba(0,0,0,.26))}
.wa-book-cover em{color:rgba(255,255,255,.9); font-size:.62rem; font-style:normal; font-weight:700; letter-spacing:.04em}
.wa-book-cover b{display:-webkit-box; -webkit-line-clamp:3; -webkit-box-orient:vertical; overflow:hidden;
  color:#fff; font-size:.8rem; font-weight:700; line-height:1.35; text-shadow:0 1px 2px rgba(0,0,0,.28)}
.wa-book-meter{position:absolute; left:0; right:0; bottom:0; height:4px; background:rgba(255,255,255,.3)}
.wa-book-meter i{display:block; height:100%; background:#fff}
/* 书名只在封面上印一次，meta 里不再重复，免得同一张卡片把书名显示两遍。 */
.wa-book-meta{display:grid; gap:.28rem; padding:0 .15rem .1rem}
.wa-book-meta small{overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:var(--wa-ink3); font-size:.7rem}
.wa-book-meta>span{display:flex; gap:.3rem}

.wa-cats{display:grid; grid-template-columns:repeat(auto-fill,minmax(184px,1fr)); gap:.55rem}
.wa-cat{display:grid; grid-template-columns:9px minmax(0,1fr) auto; gap:.3rem .5rem; align-items:center;
  padding:.5rem .62rem; border:1px solid var(--wa-line); border-radius:10px; background:#fff;
  font:inherit; text-align:left; cursor:pointer; transition:border-color .12s ease}
.wa-cat:hover{border-color:#b9cdf0}
/* 选中态要明显：分类卡和工具栏下拉是同一个筛选，点了卡片必须看得出选中了谁。 */
.wa-cat.active{border-color:var(--wa-accent); background:var(--wa-accent-soft); box-shadow:inset 0 0 0 1px var(--wa-accent)}
.wa-cat.active .wa-cat-name{color:var(--wa-accent)}
.wa-cat>i{width:9px; height:9px; border-radius:3px}
.wa-cat-name{overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:.79rem; font-weight:600; color:var(--wa-ink)}
.wa-cat>b{font-size:.82rem; font-weight:700; font-variant-numeric:tabular-nums}
.wa-cat-bar{grid-column:1/-1; display:block; height:5px; border-radius:999px; background:#eef1f6; overflow:hidden}
.wa-cat-bar i{display:block; height:100%; border-radius:999px}
.wa-cat small{grid-column:1/-1; min-height:.9rem; color:var(--wa-ink3); font-size:.68rem}

.wa-viewswitch{display:inline-flex; border:1px solid var(--wa-line); border-radius:8px; overflow:hidden; flex:0 0 auto}
.wa-viewswitch button{min-height:34px; padding:0 .75rem; border:0; border-right:1px solid var(--wa-line);
  background:#fff; color:var(--wa-ink2); font:inherit; font-size:.78rem; font-weight:600; cursor:pointer}
.wa-viewswitch button:last-child{border-right:0}
.wa-viewswitch button:hover{background:var(--wa-accent-soft); color:var(--wa-accent)}
.wa-viewswitch button.active{background:var(--wa-accent); color:#fff}

.wa-table.reading th:first-child, .wa-table.reading td:first-child{min-width:196px}
.wa-table.reading th:nth-child(5), .wa-table.reading td:nth-child(5),
.wa-table.reading th:nth-child(6), .wa-table.reading td:nth-child(6){white-space:nowrap}
.wa-table.reading th:last-child, .wa-table.reading td:last-child{width:1px; white-space:nowrap}

/* ---------------- AI 阅读 · 读书内容 ---------------- */
.wa-lib{display:grid; grid-template-columns:minmax(240px,300px) minmax(0,1fr); gap:.85rem; align-items:start}
.wa-lib-side{display:flex; flex-direction:column; gap:.6rem; padding:.85rem; border:1px solid var(--wa-line);
  border-radius:12px; background:#fff}
.wa-lib-search input{width:100%}
.wa-lib-list{display:grid; gap:4px; max-height:min(60vh,600px); overflow:auto; margin:0 -.2rem; padding:0 .2rem}
.wa-lib-item{display:grid; grid-template-columns:auto minmax(0,1fr); gap:1px 8px; width:100%;
  padding:.5rem .55rem; border:1px solid transparent; border-radius:9px; background:transparent;
  color:inherit; font:inherit; text-align:left; cursor:pointer}
.wa-lib-item:hover{background:#f7faff; border-color:var(--wa-line-soft)}
.wa-lib-item.active{background:var(--wa-accent-soft); border-color:#bfd9f7; box-shadow:inset 3px 0 var(--wa-accent)}
.wa-lib-kind{grid-row:1/3; align-self:center; color:var(--wa-accent); font-size:.62rem; font-weight:700; white-space:nowrap}
.wa-lib-item strong{overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:.82rem; font-weight:600}
.wa-lib-item small{overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:var(--wa-ink3); font-size:.7rem}

.wa-lib-reader{min-width:0; padding:1.1rem 1.3rem 1.6rem; border:1px solid var(--wa-line); border-radius:12px; background:#fff}
.wa-lib-reader-head{padding-bottom:.8rem; border-bottom:1px solid var(--wa-line-soft)}
.wa-lib-reader-head p{margin:0 0 .25rem; color:var(--wa-accent); font-size:.68rem; font-weight:700; letter-spacing:.06em}
.wa-lib-reader-head h2{margin:0; font-size:1.15rem; font-weight:700; line-height:1.35; letter-spacing:-.01em}
.wa-lib-reader-head time{display:block; margin-top:.3rem; color:var(--wa-ink3); font-size:.72rem}
.wa-tags{display:flex; flex-wrap:wrap; gap:.35rem; margin:.8rem 0 1.1rem}
.wa-tags span{padding:2px 8px; border-radius:6px; background:var(--wa-accent-soft); color:#31537f; font-size:.7rem; font-weight:600}

/* 笔记正文：块级元素留白沿用工作台的紧凑尺度，不做成阅读器那种大行距。 */
.wa-prose{max-width:780px; color:#3d5170; font-size:.86rem; line-height:1.9}
.wa-prose h1, .wa-prose h2, .wa-prose h3{color:var(--wa-ink); line-height:1.4; letter-spacing:-.01em}
.wa-prose h1{margin:1.7rem 0 .75rem; font-size:1.26rem}
.wa-prose h2{margin:1.55rem 0 .6rem; padding-left:.6rem; border-left:3px solid var(--wa-accent); font-size:1.06rem}
.wa-prose h3{margin:1.25rem 0 .45rem; font-size:.93rem}
.wa-prose p{margin:0 0 .85rem}
.wa-prose ul, .wa-prose ol{margin:.2rem 0 .9rem; padding-left:1.35rem}
.wa-prose li+li{margin-top:.25rem}
.wa-prose blockquote{margin:1rem 0; padding:.6rem .85rem; border-left:3px solid var(--wa-accent);
  border-radius:0 9px 9px 0; background:#f7faff; color:var(--wa-ink2); font-size:.83rem}
.wa-prose code{padding:1px 5px; border-radius:5px; background:var(--wa-line-soft); color:#31537f; font-size:.85em}
.wikilink{border:0; padding:0; background:none; color:var(--wa-accent); text-decoration:underline; cursor:pointer; font:inherit}

/* ---------------- 无表单对话框（藏书详情 / 同步令牌） ---------------- */
.wa-dialog-body{display:grid; gap:.75rem; padding:1.1rem 1.2rem; max-height:calc(100vh - 3rem); overflow:auto}
.wa-token{display:block; overflow-wrap:anywhere; padding:.7rem .8rem; border:1px solid var(--wa-line);
  border-radius:9px; background:#f7faff; color:#31537f; font-size:.76rem}

@media(max-width:1024px){
  .wa{grid-template-columns:1fr}
  .wa-side{position:static; height:auto; border-right:0; border-bottom:1px solid var(--wa-line)}
  .wa-nav{display:grid; grid-template-columns:1fr 1fr; gap:.25rem .5rem; padding-bottom:.6rem}
  .wa-group{grid-column:1/-1}
  .wa-main{padding:1rem .85rem 3rem}
  .wa-cust-state,.wa-cust-num,.wa-cust-latest{justify-items:start; text-align:left}
}
@media(max-width:900px){
  /* 读书内容在窄屏改成上下排：书目在上、正文在下，比左右分栏留出的正文宽得多。 */
  .wa-lib{grid-template-columns:1fr}
  .wa-lib-list{max-height:none}
  .wa-lib-reader{padding:.95rem 1rem 1.4rem}
  .wa-shelf{grid-template-columns:repeat(auto-fill,minmax(132px,1fr))}
}
@media(max-width:620px){
  .wa-fields.cols2,.wa-fields.cols3{grid-template-columns:1fr}
  .wa-dialog form{grid-template-columns:1fr}
  .wa-dialog .wa-fields.cols2>.wa-field,
  .wa-dialog .wa-fields.cols3>.wa-field,
  .wa-dialog form>.wa-fields.cols2>.wa-field.wide{grid-column:1/-1}
  .wa-nav{grid-template-columns:1fr}
  .wa-stats.six{grid-template-columns:repeat(2,minmax(0,1fr))}
  .wa-head h1{font-size:1.15rem}
  .wa-stat strong{font-size:1.5rem}
  .wa-toolbar-note{margin-left:0; width:100%}
  .wa-cust-latest{display:none}
  .wa-run-dur{margin-left:0}
}
