/* ===== 通用组件样式 ===== */

/* 模态框 */
.modal-mask{position:fixed;inset:0;background:rgba(15,23,42,.45);z-index:1000;display:flex;align-items:center;justify-content:center;padding:20px;}
.modal{background:var(--bg2);border-radius:var(--radius-lg);max-width:820px;width:100%;max-height:90vh;display:flex;flex-direction:column;box-shadow:0 20px 50px rgba(0,0,0,.2);}
.modal-header{padding:16px 22px;border-bottom:1px solid var(--rule);display:flex;justify-content:space-between;align-items:center;}
.modal-title{font-size:16px;font-weight:700;color:var(--ink);}
.modal-close{font-size:20px;color:var(--muted);cursor:pointer;width:30px;height:30px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-sm);}
.modal-close:hover{background:var(--bg);color:var(--ink);}
.modal-body{padding:22px;overflow-y:auto;flex:1;}
.modal-footer{padding:14px 22px;border-top:1px solid var(--rule);display:flex;justify-content:flex-end;gap:10px;}

/* 抽屉 */
.drawer-mask{position:fixed;inset:0;background:rgba(15,23,42,.4);z-index:900;}
.drawer{position:fixed;top:0;right:0;height:100%;width:560px;max-width:90vw;background:var(--bg2);z-index:901;box-shadow:-8px 0 24px rgba(0,0,0,.1);display:flex;flex-direction:column;}
.drawer-header{padding:16px 20px;border-bottom:1px solid var(--rule);display:flex;justify-content:space-between;align-items:center;}
.drawer-body{padding:20px;overflow-y:auto;flex:1;}
.drawer-footer{padding:14px 20px;border-top:1px solid var(--rule);display:flex;justify-content:flex-end;gap:10px;}

/* 表单组 */
.form-group{margin-bottom:16px;}
.form-row{display:grid;grid-template-columns:repeat(2,1fr);gap:0 20px;}
.form-row .form-group{margin-bottom:16px;}

/* Tag标签 */
.tag-list{display:flex;flex-wrap:wrap;gap:6px;}
.tag{display:inline-block;padding:2px 8px;font-size:11px;border-radius:10px;background:var(--bg3);color:var(--muted);border:1px solid var(--rule);}

/* 头像组 */
.avatar-group{display:flex;}
.avatar-group .avatar{border:2px solid var(--bg2);margin-left:-6px;}
.avatar-group .avatar:first-child{margin-left:0;}

/* 时间线 */
.timeline{position:relative;padding-left:24px;}
.timeline::before{content:'';position:absolute;left:6px;top:6px;bottom:6px;width:2px;background:var(--rule);}
.timeline-item{position:relative;padding:0 0 18px;}
.timeline-item::before{content:'';position:absolute;left:-22px;top:4px;width:12px;height:12px;border-radius:50%;background:var(--accent);border:2px solid var(--bg2);}
.timeline-item.done::before{background:var(--green);}
.timeline-item .ti-time{font-size:11px;color:var(--muted);margin-bottom:3px;}
.timeline-item .ti-title{font-size:13px;font-weight:600;color:var(--ink);margin-bottom:3px;}
.timeline-item .ti-desc{font-size:12px;color:var(--muted);}

/* 上传附件列表 */
.upload-list{display:flex;flex-direction:column;gap:8px;margin-top:8px;}
.upload-item{display:flex;align-items:center;gap:10px;padding:8px 10px;background:var(--bg3);border-radius:var(--radius-md);font-size:12px;}
.upload-item .ui-icon{font-size:16px;}
.upload-item .ui-name{flex:1;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.upload-item .ui-size{color:var(--muted);}
.upload-item .ui-del{color:var(--muted);cursor:pointer;}
.upload-item .ui-del:hover{color:var(--red);}

/* 提示消息 */
.toast{position:fixed;top:80px;left:50%;transform:translateX(-50%);z-index:2000;padding:10px 20px;border-radius:var(--radius-md);font-size:13px;font-weight:500;box-shadow:0 8px 24px rgba(0,0,0,.12);animation:toastIn .25s ease;}
.toast.success{background:var(--green);color:#fff;}
.toast.error{background:var(--red);color:#fff;}
.toast.warning{background:var(--yellow);color:#fff;}
.toast.info{background:var(--accent);color:#fff;}
@keyframes toastIn{from{opacity:0;transform:translate(-50%,-12px);}to{opacity:1;transform:translate(-50%,0);}}

/* 统计小卡片网格 */
.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px;}
.stat-card{background:var(--bg2);border:1px solid var(--rule);border-radius:var(--radius-lg);padding:14px 16px;}
.stat-card .sc-label{font-size:12px;color:var(--muted);margin-bottom:4px;}
.stat-card .sc-value{font-size:20px;font-weight:700;color:var(--ink);}
.stat-card .sc-bar{margin-top:10px;}

/* 信息卡片组 */
.info-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:14px;margin:16px 0;}
.info-card{background:var(--bg2);border:1px solid var(--rule);border-radius:var(--radius-lg);padding:16px 18px;border-top:3px solid var(--accent);}
.info-card .ic-icon{width:34px;height:34px;border-radius:var(--radius-md);background:var(--accent-soft);color:var(--accent);display:flex;align-items:center;justify-content:center;font-weight:700;font-size:15px;margin-bottom:10px;}
.info-card .ic-title{font-weight:700;font-size:14px;margin-bottom:6px;color:var(--ink);}
.info-card .ic-desc{font-size:12px;color:var(--muted);line-height:1.6;}

/* 模块卡片 */
.module-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:14px;margin:16px 0;}
.module-card{background:var(--bg2);border:1px solid var(--rule);border-radius:var(--radius-lg);padding:18px;transition:box-shadow .2s;cursor:pointer;}
.module-card:hover{box-shadow:0 4px 12px rgba(30,58,138,.1);border-color:var(--accent);}
.module-card .mc-num{font-size:11px;font-weight:700;color:var(--accent2);margin-bottom:6px;}
.module-card .mc-title{font-weight:700;font-size:15px;margin-bottom:6px;color:var(--ink);}
.module-card .mc-desc{font-size:12px;color:var(--muted);line-height:1.6;}

/* 图表容器 */
.chart-box{width:100%;min-height:280px;}

/* 分割线 */
.divider{height:1px;background:var(--rule);margin:18px 0;}
.divider-label{display:flex;align-items:center;gap:10px;margin:20px 0 14px;}
.divider-label::before,.divider-label::after{content:'';flex:1;height:1px;background:var(--rule);}
.divider-label span{font-size:12px;font-weight:600;color:var(--muted);padding:0 8px;}
