/* ===== e聊通运营管理平台 - 共用样式 ===== */
*{margin:0;padding:0;box-sizing:border-box}html,body{height:100%}
body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI','PingFang SC','Hiragino Sans GB','Microsoft YaHei',sans-serif;background:#f0f2f5;color:#1d2129}
[v-cloak]{display:none}

/* 登录 */
.login-wrap{height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#0e42d2,#1a6dff 50%,#4c91ff)}
.login-card{width:400px;padding:40px 36px 32px;background:#fff;border-radius:12px;box-shadow:0 8px 40px rgba(0,0,0,.12)}
.login-card h2{font-size:26px;font-weight:700;text-align:center;margin-bottom:4px}
.login-card p{text-align:center;color:#86909c;font-size:14px;margin-bottom:32px}
.login-card .el-checkbox__inner{background:transparent}

/* 最近登录账号 */
.recent-accounts{margin-top:20px;padding-top:16px;border-top:1px solid #f0f0f0}
.recent-accounts-title{font-size:12px;color:#86909c;margin-bottom:8px}
.recent-account-item{display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:6px;cursor:pointer;font-size:13px;color:#4e5969}
.recent-account-item:hover{background:#f5f7fa}
.recent-account-phone{flex:1;font-weight:500}
.recent-account-pwd{color:#c9cdd4;font-size:12px}
.recent-account-del{width:20px;height:20px;line-height:18px;text-align:center;border-radius:50%;color:#c9cdd4;font-size:16px;flex-shrink:0}
.recent-account-del:hover{color:#f53f3f;background:#fff2f0}
.login-app-download{display:flex;align-items:center;gap:14px;margin-top:20px;padding:16px;border-top:1px solid #f0f0f0;background:#f7f9fc;border-radius:8px}
.login-app-download img{width:112px;height:112px;padding:4px;background:#fff;border:1px solid #e5e6eb;border-radius:6px;flex-shrink:0}
.login-app-download-info{min-width:0;display:flex;flex-direction:column;align-items:flex-start;gap:6px}
.login-app-download-title{font-size:15px;font-weight:600;color:#1d2129}
.login-app-download-version{font-size:12px;color:#86909c}
.login-app-download-info a{font-size:13px;color:#1a6dff;text-decoration:none}
.login-app-download-info a:hover{text-decoration:underline}

/* 案件媒体区：数量徽标与锁定提示 */
.media-count{display:inline-block;padding:2px 10px;margin-bottom:4px;border-radius:4px;background:#ecf5ff;color:#1a6dff;font-size:12px;font-weight:500}
.media-lock-tip{font-size:12px;color:#c9cdd4}

/* 布局 */
.layout{display:flex;height:100vh}
.sidebar{width:220px;background:#001529;flex-shrink:0;display:flex;flex-direction:column}
.sidebar-logo{height:56px;display:flex;align-items:center;padding:0 20px;border-bottom:1px solid rgba(255,255,255,.08)}
.sidebar-logo-icon{width:32px;height:32px;background:#1a6dff;border-radius:6px;display:flex;align-items:center;justify-content:center;color:#fff;font-size:16px;font-weight:700;margin-right:10px;flex-shrink:0}
.sidebar-logo span{color:#fff;font-size:16px;font-weight:600;white-space:nowrap}
.sidebar-menu{flex:1;padding:8px 0;overflow-y:auto}
.sidebar-item{display:flex;align-items:center;gap:10px;padding:0 20px;height:44px;color:rgba(255,255,255,.65);cursor:pointer;transition:all .2s;font-size:14px}
.sidebar-item:hover{color:#fff;background:rgba(255,255,255,.06)}
.sidebar-item.active{color:#fff;background:#1a6dff;font-weight:500}
.sidebar-item.expanded{color:#fff}
.sidebar-item .sidebar-arrow{margin-left:auto;font-size:10px;transition:transform .2s}
.sidebar-item.expanded .sidebar-arrow{transform:rotate(180deg)}
.sidebar-sub{padding:4px 0;background:rgba(0,0,0,.15)}
.sidebar-sub-item{display:flex;align-items:center;gap:10px;padding:0 20px 0 36px;height:38px;color:rgba(255,255,255,.55);cursor:pointer;transition:all .2s;font-size:13px}
.sidebar-sub-item:hover{color:#fff;background:rgba(255,255,255,.04)}
.sidebar-sub-item.active{color:#fff;background:rgba(26,109,255,.3);font-weight:500}
.sidebar-sub-item.legacy-menu{opacity:.55;font-style:italic}

/* 主区域 */
.main-area{flex:1;display:flex;flex-direction:column;overflow:hidden}
.topbar{height:56px;background:#fff;border-bottom:1px solid #e5e6eb;display:flex;align-items:center;justify-content:space-between;padding:0 24px;flex-shrink:0}
.topbar-breadcrumb{font-size:16px;font-weight:600;color:#1d2129}
.topbar-right{display:flex;align-items:center;gap:12px}
.topbar-user{display:flex;align-items:center;gap:8px;padding:4px 12px 4px 8px;border-radius:6px;cursor:pointer}
.topbar-user:hover{background:#f2f3f5}
.avatar-sm{width:28px;height:28px;border-radius:50%;background:#1a6dff;color:#fff;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600}
.content{flex:1;padding:5px 24px;overflow-y:auto}

/* 通用组件 */
.card{background:#fff;border-radius:8px;padding:5px 24px;box-shadow:0 1px 4px rgba(0,0,0,.04)}.card+.card{margin-top:16px}
.toolbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px;flex-wrap:wrap;gap:12px}
.toolbar-left{display:flex;align-items:center;gap:12px}
.status-filter-label{font-size:13px;color:#606266;white-space:nowrap;margin-right:4px}
/* checkbox-button 平铺紧凑样式 */
.toolbar-left .el-checkbox-button .el-checkbox-button__inner{font-size:12px;padding:5px 12px}
.toolbar-right{display:flex;align-items:center;gap:12px}
.status-dot{display:inline-block;width:6px;height:6px;border-radius:50%;margin-right:6px}.status-dot.on{background:#00b42a}.status-dot.off{background:#c9cdd4}
.role-badge{display:inline-flex;align-items:center;padding:2px 10px;border-radius:4px;font-size:12px;font-weight:500}
.role-badge.operator{background:#e8f3ff;color:#1a6dff}.role-badge.police{background:#fff7e8;color:#ff7d00}.role-badge.insurance{background:#e8ffea;color:#00b42a}.role-badge.admin{background:#f2f3f5;color:#4e5969}
.stat-row{display:flex;gap:16px;margin-bottom:20px}
.stat-card{flex:1;background:#fff;border-radius:8px;padding:16px 20px;box-shadow:0 1px 4px rgba(0,0,0,.04)}
.stat-card .label{font-size:13px;color:#86909c;margin-bottom:4px}
.stat-card .value{font-size:28px;font-weight:700;color:#1d2129}
.stat-card .value.primary{color:#1a6dff}.stat-card .value.success{color:#00b42a}.stat-card .value.warning{color:#ff7d00}
.invite-result{background:#f7f8fa;border-radius:8px;padding:16px;margin-top:16px}
.invite-result .link{word-break:break-all;font-family:monospace;font-size:13px;color:#1a6dff;user-select:all}

/* ===== 首页（工作台） ===== */
.home-page{max-width:1280px;margin:0 auto}
.home-section-title{font-size:15px;font-weight:600;color:#1d2129;margin:0 0 12px}
.home-section-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}
.home-section-head .home-section-title{margin:0}
.home-stat-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-bottom:24px}
.home-stat-card{background:#fff;border-radius:10px;padding:18px 22px;box-shadow:0 1px 4px rgba(0,0,0,.05);transition:box-shadow .2s,transform .2s}
.home-stat-card:hover{box-shadow:0 6px 16px rgba(0,0,0,.1);transform:translateY(-2px)}
.home-stat-head{display:flex;align-items:center;gap:10px;margin-bottom:14px}
.home-stat-icon{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;border-radius:9px}
.home-stat-name{font-size:14px;font-weight:600;color:#1d2129}
.home-stat--primary .home-stat-icon{background:#e8f3ff;color:#1a6dff}
.home-stat--primary .home-metric-num{color:#1a6dff}
.home-stat--info .home-stat-icon{background:#eff3f8;color:#4e5969}
.home-stat--info .home-metric-num{color:#1d2129}
.home-stat--danger .home-stat-icon{background:#ffece8;color:#f53f3f}
.home-stat--danger .home-metric-num{color:#f53f3f}
.home-stat-body{display:flex;align-items:center}
.home-metric{flex:1;cursor:pointer;border-radius:8px;padding:6px 10px;transition:background .15s}
.home-metric:hover{background:#f7f8fa}
.home-metric-num{font-size:30px;font-weight:700;line-height:1.2;font-variant-numeric:tabular-nums}
.home-metric-label{font-size:12px;color:#86909c;margin-top:2px}
.home-metric-divider{width:1px;height:44px;background:#f0f1f3;margin:0 6px}

/* 页面加载中 */
.page-loading{min-height:200px;display:flex;align-items:center;justify-content:center;color:#86909c;font-size:14px}

/* 我的信息 */
.my-info-list{border:1px solid #e5e6eb;border-radius:4px;overflow:hidden}
.my-info-row{display:flex;border-bottom:1px solid #e5e6eb}
.my-info-row:last-child{border-bottom:none}
.my-info-label{width:120px;min-width:120px;padding:12px 16px;background:#fafafa;color:#606266;font-size:14px;font-weight:500;white-space:nowrap;border-right:1px solid #e5e6eb;flex-shrink:0}
.my-info-value{flex:1;padding:12px 16px;color:#303133;font-size:14px;word-break:break-word}

/* 页签系统 */
.tab-bar{height:38px;background:#f5f6f7;border-bottom:1px solid #e5e6eb;display:flex;align-items:center;padding:0 12px;flex-shrink:0;overflow:hidden}
.tab-bar-scroll{display:flex;gap:0;white-space:nowrap;overflow-x:auto;scrollbar-width:none}
.tab-bar-scroll::-webkit-scrollbar{display:none}
.tab-bar-item{display:inline-flex;align-items:center;gap:6px;padding:5px 14px;background:#e4e6eb;border-radius:6px 6px 0 0;cursor:pointer;font-size:13px;color:#606266;border:1px solid #d9d9d9;border-bottom:none;white-space:nowrap;transition:all .15s;margin-right:2px}
.tab-bar-item:hover{background:#eceef2;color:#1d2129}
.tab-bar-item.active{background:#fff;color:#1a6dff;border-color:#e5e6eb;font-weight:500}
.tab-bar-title{max-width:180px;overflow:hidden;text-overflow:ellipsis}
.tab-bar-close{margin-left:2px;font-size:15px;line-height:1;cursor:pointer;color:#999;border-radius:2px;padding:0 2px;transition:all .15s}
.tab-bar-close:hover{color:#f53f3f;background:rgba(245,63,63,.1)}

/* 分栏布局 */
.content-split{flex:1;display:flex;overflow:hidden}
.content-left{border-right:1px solid #e5e6eb;overflow-y:auto;padding:5px 20px;min-width:0;flex:1}
.content-right{width:58%;min-width:520px;overflow-y:auto;padding:5px 24px;background:#fafbfc}

/* 状态标签（通用） */
.status-tag{display:inline-block;padding:2px 10px;border-radius:4px;font-size:12px;font-weight:500;line-height:1.6}
/* 案件管理：案件状态 TAB 条（2026.11.07） */
.status-tab-bar{display:flex;align-items:center;gap:32px;overflow-x:auto}
.status-tab-item{padding:12px 2px;font-size:14px;color:#4e5969;cursor:pointer;border-bottom:2px solid transparent;white-space:nowrap;user-select:none}
.status-tab-item:hover{color:#1a6dff}
.status-tab-item.active{color:#1a6dff;font-weight:600;border-bottom-color:#1a6dff}
.status-tab-count{margin-left:2px;font-size:13px}
/* 案件管理列表：内容不折行，超长以省略号截断（当事人列的姓名/电话两行为有意换行，不受影响） */
.cases-table .el-table__cell .cell{white-space:nowrap}
/* 案件状态 */
.status-tag.case-new{background:#e8f3ff;color:#1a6dff}
.status-tag.case-insurance_viewed{background:#e8ffea;color:#00b42a}
.status-tag.case-insurance_entrusted{background:#fff7e8;color:#ff7d00}
.status-tag.case-completed{background:#e8ffea;color:#00b42a}
/* 审核状态 */
.status-tag.audit-draft{background:#f2f3f5;color:#86909c}
.status-tag.audit-pending_review1,.status-tag.audit-pending_review2{background:#fff7e8;color:#ff7d00}
.status-tag.audit-rejected{background:#ffece8;color:#f53f3f}
.status-tag.audit-approved{background:#e8ffea;color:#00b42a}
.status-tag.audit-partial_approved{background:#fff3e8;color:#d46b08}
.audit-status-large{font-size:15px;padding:4px 16px}
/* 保单跟踪状态 */
.status-tag.track-investigating,.status-tag.track-assessing,.status-tag.track-deep-investigating{background:#e8f3ff;color:#1a6dff}
.status-tag.track-injury-treating,.status-tag.track-collecting,.status-tag.track-injury-mediating,.status-tag.track-pre-litigation,.status-tag.track-adjusting{background:#fff7e8;color:#ff7d00}
.status-tag.track-litigation-first{background:#ffece8;color:#f53f3f}
.status-tag.track-settled-paid{background:#e8ffea;color:#00b42a}
.status-tag.track-zero-settled,.status-tag.track-cancelled{background:#f2f3f5;color:#86909c}
.status-tag-default{background:#f2f3f5;color:#4e5969}

/* 案件详情页签 */
.case-detail-wrap{display:flex;flex-direction:column;height:100%}
.case-detail-header{display:flex;justify-content:space-between;align-items:center;padding-bottom:10px;margin-bottom:8px;border-bottom:1px solid #e5e6eb;flex-wrap:wrap;gap:8px}
.case-detail-header-left{display:flex;align-items:center;gap:10px}
.case-detail-no{font-size:16px;font-weight:600;color:#1d2129}
.case-detail-meta{display:flex;gap:20px;font-size:13px;color:#86909c;margin-bottom:12px;flex-wrap:wrap}
.case-photo-grid{display:flex;flex-wrap:wrap;gap:8px}
.case-thumb{width:64px;height:64px;object-fit:cover;border-radius:4px;border:1px solid #e5e6eb;cursor:pointer}
.case-thumb:hover{border-color:#1a6dff}
/* 案件主信息描述表：label 列完整展示不折行，内容列可折行 */
.case-main-desc .el-descriptions__label{white-space:nowrap;min-width:96px}
.case-main-desc .el-descriptions__content{word-break:break-all;white-space:normal}

/* 影像记录面板（media-panel） */
.media-group-title{font-size:14px;font-weight:600;color:#1d2129;margin:0 0 10px;padding-left:8px;border-left:3px solid #1a6dff}
.media-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px}
.media-card{border:1px solid #e5e6eb;border-radius:8px;overflow:hidden;cursor:pointer;background:#fff;transition:all .15s}
.media-card:hover{border-color:#1a6dff;box-shadow:0 2px 8px rgba(26,109,255,.12)}
.media-thumb{width:100%;height:110px;background:#f2f3f5;display:flex;align-items:center;justify-content:center;overflow:hidden}
.media-thumb img{width:100%;height:100%;object-fit:cover}
.media-file-card{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;font-size:13px;color:#4e5969;width:100%;height:100%}
.media-play{font-size:22px;color:#1a6dff}
.media-broken{color:#f56c6c;font-size:12px}
.media-name{font-size:12px;color:#1d2129;padding:6px 8px 2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.media-source{font-size:11px;color:#86909c;padding:0 8px 8px}

/* 左右分栏（保单/调解列表） */
.split-layout{display:flex;gap:0;min-height:400px}
.split-left{width:280px;min-width:280px;border-right:1px solid #e5e6eb;padding-right:16px;overflow-y:auto}
.split-right{flex:1;padding-left:20px;overflow-y:auto}
.split-card{padding:14px 16px;border:0.5px solid #e5e6eb;border-radius:8px;margin-bottom:8px;cursor:pointer;transition:all .15s;background:#fff;position:relative}
.split-card:hover{border-color:#1a6dff;background:#f8faff}
.split-card.active{border-color:#1a6dff;background:#eef3ff;box-shadow:inset 0 0 0 1px #1a6dff}
.split-card-title{font-size:14px;font-weight:500;color:#1d2129;margin-bottom:6px;display:flex;align-items:center;gap:8px}
.split-card-sub{font-size:12px;color:#4e5969;margin-bottom:4px;display:flex;gap:4px}
.split-card-sub .label{color:#86909c;min-width:60px;text-align:left}
.split-card-sub .value{flex:1;text-align:right}
.split-card-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.split-card-row span{color:#4e5969;font-size:12px}
.split-card-tag{flex-shrink:0}
.split-card-amount{font-size:12px;color:#4e5969;margin-top:4px;display:flex;gap:12px;flex-wrap:wrap}
.split-card-suggest{}

/* 调解记录列表行 */
.mediation-row{display:flex;align-items:center;justify-content:space-between;font-size:12px;margin-bottom:3px}
.mediation-row .label{color:#86909c}
.mediation-row .value{color:#1d2129}
.mediation-row .value.amount{color:#1d2129;font-weight:500}

/* 案件表单弹窗 - 已统一使用 policy-dialog-full 样式 */

/* 表单弹窗通用底部 */
.case-form-footer{display:flex;justify-content:flex-end;gap:8px}

/* 弹窗 - 全屏高度（保单/调解/案件通用） */
.policy-dialog-full .el-dialog__body{padding:0;max-height:calc(90vh - 120px);overflow-y:auto}
.policy-form-body{padding:5px 28px}
.policy-dialog-full .el-dialog__footer{border-top:1px solid #e5e6eb;padding:16px 28px}
.policy-dialog-full .el-form-item__label{font-size:14px;color:#4e5969}
.policy-dialog-full .el-input__inner,.policy-dialog-full .el-select .el-select__wrapper,.policy-dialog-full .el-cascader .el-input__inner{height:40px}
.policy-dialog-full .el-textarea__inner{font-size:14px}

/* 表单分组卡片 */
.form-section{background:#fff;border:1px solid #e5e6eb;border-radius:8px;padding:16px 20px;margin-bottom:16px}
.form-section-title{font-size:15px;font-weight:600;color:#1d2129;margin-bottom:16px;padding-bottom:8px;border-bottom:1px solid #f0f0f0}
.form-section .el-form-item{margin-bottom:16px}
.form-section .el-form-item:last-child{margin-bottom:0}

/* 保单/调解详情分组卡片 */
.detail-section{background:#fff;border:1px solid #e5e6eb;border-radius:8px;padding:14px 16px;margin-bottom:12px}
.detail-section-title{font-size:14px;font-weight:600;color:#1d2129;margin-bottom:12px;padding-bottom:6px;border-bottom:1px solid #f0f0f0}
.detail-row{display:flex;align-items:center;gap:8px;margin-bottom:8px}
.detail-row:last-child{margin-bottom:0}
.detail-label{font-size:13px;color:#86909c;min-width:64px;flex-shrink:0}
.detail-value{font-size:14px;color:#1d2129}

/* ===== OA 风格审核进度垂直时间线 ===== */
.oa-audit-progress{padding:8px 0;max-width:520px}
.oa-timeline{position:relative;padding-left:0}
.oa-timeline-item{position:relative;display:flex;align-items:flex-start;min-height:70px;padding-bottom:0}
/* 左侧图标 */
.oa-timeline-icon{position:relative;z-index:1;width:24px;height:24px;min-width:24px;border-radius:50%;display:flex;align-items:center;justify-content:center;margin-top:14px;margin-right:16px;font-size:12px;flex-shrink:0;transition:all .2s}
.oa-timeline-icon--completed{background:#00b42a;color:#fff}
.oa-timeline-icon--in_progress{background:#1a6dff;color:#fff;box-shadow:0 0 0 4px rgba(26,109,255,.2);animation:oa-pulse 2s ease-in-out infinite}
.oa-timeline-icon--rejected{background:#f53f3f;color:#fff}
.oa-timeline-icon--pending{background:#e5e6eb;color:#86909c}
@keyframes oa-pulse{0%,100%{box-shadow:0 0 0 4px rgba(26,109,255,.2)}50%{box-shadow:0 0 0 8px rgba(26,109,255,.08)}}
.oa-timeline-dot{width:8px;height:8px;border-radius:50%;background:#c9cdd4}
/* 连接线 */
.oa-timeline-line{position:absolute;left:36px;top:38px;width:2px;height:calc(100% - 24px);background:#e5e6eb}
.oa-timeline-line--active{background:#00b42a}
/* 右侧内容 */
.oa-timeline-content{flex:1;min-width:0;padding:12px 16px;margin-bottom:4px;border-radius:8px;background:#fff;border:1px solid #f0f0f0;transition:all .2s}
.oa-timeline-item:last-child .oa-timeline-content{margin-bottom:0}
.oa-timeline-content:hover{border-color:#d0d5dd}
.oa-timeline-header{display:flex;align-items:center;gap:10px;margin-bottom:6px}
.oa-timeline-title{font-size:15px;font-weight:600;color:#1d2129}
.oa-timeline-tag{font-size:11px;padding:1px 8px;border-radius:10px;font-weight:500;flex-shrink:0}
.oa-timeline-tag--completed{background:#e8ffea;color:#00b42a}
.oa-timeline-tag--rejected{background:#ffece8;color:#f53f3f}
.oa-timeline-body{font-size:13px;color:#4e5969;line-height:1.8}
.oa-timeline-label{color:#86909c}
.oa-timeline-reviewer{color:#1d2129;font-weight:500}
.oa-timeline-status{display:inline-block;font-size:11px;padding:0 8px;border-radius:4px;margin-left:8px;vertical-align:middle}
.oa-timeline-status--completed{background:#e8ffea;color:#00b42a}
.oa-timeline-status--in_progress{background:#e8f3ff;color:#1a6dff}
.oa-timeline-status--rejected{background:#ffece8;color:#f53f3f}
.oa-timeline-time{color:#4e5969;font-size:13px;margin-top:2px}
.oa-timeline-opinion{margin-top:4px;padding:6px 10px;background:#f7f8fa;border-radius:4px;font-size:13px;line-height:1.6}
.oa-timeline-opinion-label{color:#86909c}
.oa-timeline-opinion-text{color:#1d2129}
.oa-timeline-waiting{color:#c9cdd4;font-size:13px}
/* 审核记录 timeline */
.audit-log-item{display:flex;align-items:center;gap:8px}
.audit-log-action{font-weight:500;color:#1d2129}
.audit-log-reviewer{font-size:12px;color:#86909c}

/* 审核流水（按 round 分组） */
.oa-audit-rounds{display:flex;flex-direction:column;gap:16px}
.oa-audit-round{border:1px solid #e5e6eb;border-radius:8px;padding:14px 16px;background:#fff;transition:all .2s}
.oa-audit-round--in_progress{border-color:#1a6dff;box-shadow:0 0 0 3px rgba(26,109,255,.08)}
.oa-audit-round--drafting{border-color:#c9cdd4;background:#fafbfc}
.oa-audit-round--rejected{border-color:#f53f3f}
.oa-audit-round--withdrawn{border-color:#ff7d00;opacity:.85}
.oa-audit-round--approved{background:#fafbfc}
.oa-audit-round-header{display:flex;align-items:center;gap:12px;margin-bottom:14px;padding-bottom:10px;border-bottom:1px dashed #e5e6eb}
.oa-audit-round-title{font-size:15px;font-weight:600;color:#1d2129}
.oa-audit-round-tag{font-size:11px;padding:2px 10px;border-radius:10px;font-weight:500}
.oa-audit-round-tag--in_progress{background:#e8f3ff;color:#1a6dff}
.oa-audit-round-tag--drafting{background:#f0f2f5;color:#4e5969}
.oa-audit-round-tag--rejected{background:#ffece8;color:#f53f3f}
.oa-audit-round-tag--withdrawn{background:#fff3e0;color:#ff7d00}
.oa-audit-round-tag--approved{background:#e8ffea;color:#00b42a}
.oa-audit-round-time{margin-left:auto;font-size:12px;color:#86909c}
.oa-audit-round-time:first-of-type{margin-left:auto}
.oa-audit-round-time:nth-of-type(2){margin-left:0}
.oa-audit-round .oa-timeline{padding-left:0}
.oa-audit-round .oa-timeline-item:last-child{padding-bottom:8px}
.oa-timeline-row{font-size:13px;line-height:1.7;color:#4e5969}

/* APP版本管理 */
.app-version-qr{width:92px;height:92px;display:block;margin:0 auto;border:1px solid #e5e6eb;border-radius:4px;padding:4px;background:#fff}
.app-version-qr-large{width:180px;height:180px;display:block;border:1px solid #e5e6eb;border-radius:6px;padding:8px;background:#fff}
.app-version-detail{border:1px solid #e5e6eb;border-radius:4px;overflow:hidden}
.app-version-break{word-break:break-all;line-height:1.6}
.app-version-log{white-space:pre-wrap;line-height:1.7}

/* 系统日志 */
.system-logs-page .card{height:calc(100vh - 96px);display:flex;flex-direction:column;min-height:520px}
.system-log-toolbar{flex-shrink:0}
.log-meta{font-size:12px;color:#86909c}

/* 运营看板 - 排名徽章 */
.rank-badge{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:50%;font-size:12px;font-weight:600;color:#606266;background:#f0f0f0}
.rank-0{color:#fff;background:#FF6B6B}
.rank-1{color:#fff;background:#FFA940}
.rank-2{color:#fff;background:#FFD666}

/* 运营看板 - 通用布局 */
.ops-page{max-width:1400px}
.filter-label{color:#606266;font-size:14px;white-space:nowrap}
.stat-cards{display:grid;grid-template-columns:repeat(7,1fr);gap:12px;margin-bottom:16px}
.stat-card{background:#fff;border-radius:8px;padding:5px 16px;text-align:center;box-shadow:0 1px 4px rgba(0,0,0,.04)}
.stat-card-value{font-size:28px;font-weight:700;line-height:1.2}
.stat-card-label{font-size:13px;color:#909399;margin-top:6px}
.stat-row{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:16px}
.stat-panel{padding:16px}
.stat-panel-title{font-size:15px;font-weight:600;margin-bottom:12px;color:#1d2129}
.stat-empty{color:#c0c4cc;text-align:center;padding:24px 0;font-size:13px}
.stat-rank-item{display:flex;align-items:center;gap:8px;margin-bottom:8px}
.stat-rank-name{flex:1;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#1d2129}
.stat-rank-count{font-size:13px;font-weight:600;min-width:40px;text-align:right;color:#1d2129}
.stat-rank-bar{width:100px}
.stat-dot{display:inline-block;width:10px;height:10px;border-radius:2px;flex-shrink:0}
.log-meta-danger{color:#f53f3f}
.log-path{flex-shrink:0;margin:-4px 0 12px;padding:8px 10px;background:#f7f8fa;border-radius:4px;color:#4e5969;font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.log-viewer{flex:1;min-height:320px;padding:12px 14px;background:#111827;color:#d1d5db;border-radius:8px;overflow:auto;font-family:SFMono-Regular,Menlo,Consolas,'Liberation Mono',monospace;font-size:12px;line-height:1.55;white-space:pre-wrap;word-break:break-all;border:1px solid #1f2937}
.log-empty{height:100%;display:flex;align-items:center;justify-content:center;color:#6b7280;font-size:13px}
.log-line{min-height:18px;color:#d1d5db}
.log-line-info{color:#d1d5db}
.log-line-warn{color:#fbbf24}
.log-line-error{color:#f87171}
.log-line-debug{color:#93c5fd}
.log-status-bar{flex-shrink:0;display:flex;align-items:center;gap:16px;margin-top:10px;color:#86909c;font-size:12px;flex-wrap:wrap}

/* 表单提示文字 */
.form-tip{margin-top:6px;font-size:12px;color:#86909c}

/* 需求管理状态标签 */
.status-tag.req-pending{background:#fff7e8;color:#ff7d00}
.status-tag.req-verifying{background:#e8f3ff;color:#1a6dff}
.status-tag.req-resolved{background:#e8ffea;color:#00b42a}
.status-tag.req-suspended{background:#f2f3f5;color:#86909c}
.status-tag.req-invalid{background:#ffece8;color:#f53f3f}
/* 需求详情内容预览 */
.req-content-preview{max-height:400px;overflow-y:auto;line-height:1.7;font-size:14px}
.req-content-preview img{max-width:100%;height:auto;border-radius:4px;margin:8px 0;cursor:zoom-in;transition:box-shadow .15s}
.req-content-preview img:hover{box-shadow:0 0 0 2px #409eff}
/* 图片预览浮层 */
.req-img-preview-mask{position:fixed;top:0;left:0;width:100vw;height:100vh;background:rgba(0,0,0,.75);z-index:9999;display:flex;flex-direction:column;align-items:center;justify-content:center}
.req-img-preview-bar{position:absolute;top:16px;display:flex;align-items:center;gap:8px;z-index:10001;flex-wrap:nowrap}
.req-img-preview-bar button{background:rgba(255,255,255,.15);color:#fff;border:1px solid rgba(255,255,255,.3);border-radius:4px;padding:6px 14px;cursor:pointer;font-size:14px;backdrop-filter:blur(4px)}
.req-img-preview-bar button:hover{background:rgba(255,255,255,.3)}
.req-img-preview-bar label{margin-left:4px;margin-right:2px}
.req-img-preview-bar input{appearance:textfield;color:#303133;flex-shrink:0}
.req-img-preview-bar input::-webkit-inner-spin-button{opacity:1}
.req-img-preview-img{transition:transform .15s;object-fit:contain;cursor:default}
/* 详情右侧面板：覆盖视口右2/3，不挤压列表 */
.req-detail-panel{position:fixed;top:0;right:0;bottom:0;left:33vw;z-index:2000;display:flex;flex-direction:column;background:#fff;border-left:2px solid #d3d4d6;box-shadow:-4px 0 16px rgba(0,0,0,.1)}
/* 需求列表卡片：flex布局，分页吸底 */
.req-page-wrap{display:flex;flex-direction:column;height:calc(100vh - 56px - 40px)}
.req-card{flex:1;min-height:0;display:flex;flex-direction:column}
.req-card>.toolbar{flex-shrink:0}
.req-card>.el-table{flex:1;min-height:0}
.req-pagination{flex-shrink:0;margin-top:12px;display:flex;justify-content:flex-end;border-top:1px solid #ebeef5;padding-top:12px}
.req-detail-header{display:flex;align-items:center;justify-content:space-between;padding:12px 20px;border-bottom:1px solid #ebeef5;background:#fafbfc;flex-shrink:0}
.req-detail-title{font-size:16px;font-weight:600;color:#303133}
.req-detail-body{flex:1;overflow-y:auto;padding:5px}
.req-detail-body .el-descriptions__cell{white-space:nowrap}
/* 富文本编辑器（contenteditable） */
.req-editor-wrap{border:1px solid #dcdfe6;border-radius:4px;position:relative;width:100%}
.req-editor-toolbar{display:flex;align-items:center;gap:2px;padding:4px 8px;background:#f5f7fa;border-bottom:1px solid #dcdfe6}
.req-editor-toolbar button{width:28px;height:28px;border:none;background:none;cursor:pointer;border-radius:4px;font-size:14px;color:#606266;display:flex;align-items:center;justify-content:center}
.req-editor-toolbar button:hover{background:#e8eaec;color:#303133}
.req-editor-sep{width:1px;height:18px;background:#dcdfe6;margin:0 4px}
.req-editor-body{min-height:200px;max-height:none;overflow-y:auto;padding:8px 12px;font-size:14px;line-height:1.7;outline:none;color:#303133}
.req-editor-body:empty::before{content:attr(data-placeholder);color:#c0c4cc;pointer-events:none}
.req-editor-body img{max-width:100%;height:auto;border-radius:4px;margin:4px 0;cursor:pointer;transition:outline .15s}
.req-editor-body img.req-img-selected{outline:2px solid #409eff;outline-offset:2px}
.req-img-resize-handle{position:absolute;width:12px;height:12px;background:#409eff;border:2px solid #fff;border-radius:2px;cursor:se-resize;z-index:10;box-shadow:0 1px 3px rgba(0,0,0,.3)}
.req-img-size-panel{position:absolute;display:flex;align-items:center;gap:6px;z-index:11;background:#fff;border:1px solid #dcdfe6;border-radius:6px;padding:4px 10px;box-shadow:0 2px 8px rgba(0,0,0,.12);white-space:nowrap;font-size:13px}
.req-img-size-panel label{color:#606266;font-size:13px;flex-shrink:0}
.req-img-size-panel input{width:56px;padding:2px 4px;border:1px solid #dcdfe6;border-radius:3px;text-align:center;font-size:13px;color:#303133;appearance:textfield;-moz-appearance:textfield}
.req-img-size-panel input::-webkit-inner-spin-button,.req-img-size-panel input::-webkit-outer-spin-button{opacity:1}
/* 需求状态 tabs */
.req-status-tabs{display:flex;align-items:center;gap:0;margin-bottom:12px;border-bottom:2px solid #e5e6eb}
.req-status-tab{position:relative;padding:8px 18px;font-size:14px;color:#606266;cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-2px;transition:all .15s;white-space:nowrap;user-select:none}
.req-status-tab:hover{color:#1a6dff}
.req-status-tab.active{color:#1a6dff;font-weight:600;border-bottom-color:#1a6dff}
.req-tab-count{font-size:12px;color:#86909c;margin-left:2px}
.req-status-tab.active .req-tab-count{color:#1a6dff}
/* 新建/编辑弹窗 - 头吸顶、按钮吸底、内容滚动 */
.req-dialog-fixed{display:flex;flex-direction:column;max-height:90vh;margin-top:5vh!important}
.req-dialog-fixed .el-dialog__header{flex-shrink:0;padding-bottom:12px;border-bottom:1px solid #ebeef5}
.req-dialog-fixed .el-dialog__body{flex:1;overflow-y:auto;min-height:0;padding:16px 24px}
.req-dialog-fixed .el-dialog__footer{flex-shrink:0;padding-top:12px;border-top:1px solid #ebeef5}

/* ===== 权限配置分组卡片式布局 ===== */
.perm-nav-group {
  margin-bottom: 12px;
  border: 1px solid #e5e6eb;
  border-radius: 6px;
  overflow: hidden;
  background: #fff;
}
.perm-nav-header {
  padding: 8px 16px;
  font-weight: 600;
  font-size: 14px;
  color: #1d2129;
  background: #f7f8fa;
  border-bottom: 1px solid #e5e6eb;
  display: flex;
  align-items: center;
  gap: 8px;
}
.perm-page-group {
  padding: 4px 0;
}
.perm-page-group + .perm-page-group {
  border-top: 1px dashed #f0f0f0;
}
.perm-page-title {
  padding: 6px 24px 2px;
  font-size: 12px;
  color: #86909c;
}
.perm-checkbox-grid {
  padding: 4px 20px 8px;
  display: flex;
  flex-wrap: wrap;
  gap: 2px 0;
}
.perm-label-name {
  font-size: 13px;
}
.perm-label-code {
  font-size: 11px;
  color: #86909c;
  margin-left: 4px;
  font-family: Consolas, Monaco, monospace;
}

/* 交警材料已有链接 */
.cert-existing-link {
  display: inline-flex; align-items: center; justify-content: center;
  width: 80px; height: 80px; border: 1px dashed #d9d9d9; border-radius: 6px;
  color: #1a6dff; font-size: 12px; text-decoration: none;
}
.cert-existing-link:hover { border-color: #1a6dff; background: #f0f5ff; }

/* 图片画廊 — 固定尺寸 + 内部缩放 */
.gallery-wrap {
  position: relative; display: flex; align-items: center; justify-content: center;
  height: 78vh; background: #0a0a0a; border-radius: 4px; overflow: hidden;
}
.gallery-content {
  display: flex; align-items: center; justify-content: center;
  transition: transform .2s; transform-origin: center center;
}
.gallery-img {
  max-width: 95%; max-height: 76vh; object-fit: contain;
  user-select: none; -webkit-user-drag: none;
}
.gallery-video {
  max-width: 95%; max-height: 76vh; outline: none;
}
/* 画廊文档类附件（txt/pdf 等）：iframe 内嵌预览 */
.gallery-doc {
  width: 95%; height: 76vh; border: 0; background: #fff; border-radius: 4px;
}
/* 画廊顶部当前文件名（与页码并排展示） */
.gallery-name {
  position: absolute; top: 14px; left: 16px; z-index: 20;
  color: #fff; font-size: 13px; max-width: 40%;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  background: rgba(0,0,0,.5); padding: 4px 14px; border-radius: 99px;
}
/* 画廊水印：斜向平铺半透明，仅覆盖展示层，不拦截交互 */
.gallery-watermark {
  position: absolute; inset: 0; z-index: 5; overflow: hidden; pointer-events: none;
  display: flex; flex-wrap: wrap; align-content: center; justify-content: center;
  gap: 26px 44px;
}
.gallery-watermark span {
  transform: rotate(-22deg);
  color: rgba(255,255,255,.14);
  font-size: 15px; white-space: nowrap; user-select: none;
}
/* 画廊弹窗：无标题栏（标题栏会显示多余文字，工具栏里已有关闭按钮） */
.gallery-dialog .el-dialog__header { display: none; }
.gallery-dialog .el-dialog__body { padding: 12px; }
.gallery-toolbar {
  position: absolute; top: 10px; right: 14px; z-index: 20;
  display: flex; gap: 4px;
}
.gallery-tool-btn {
  width: 30px; height: 30px; line-height: 30px; text-align: center;
  color: #fff; font-size: 16px; cursor: pointer; border-radius: 4px;
  background: rgba(255,255,255,.15); user-select: none;
}
.gallery-tool-btn:hover { background: rgba(255,255,255,.35); }

/* 视频/材料缩略图（非图片） */
.case-thumb-video, .case-thumb-cert {
  display: inline-flex; align-items: center; justify-content: center;
  width: 72px; height: 72px; border: 1px dashed #d9d9d9;
  border-radius: 6px; cursor: pointer; font-size: 12px;
  color: #4e5969; background: #f7f8fa;
}
.case-thumb-video:hover, .case-thumb-cert:hover {
  border-color: #1a6dff; color: #1a6dff; background: #f0f5ff;
}
.gallery-counter {
  position: absolute; top: 14px; left: 50%; transform: translateX(-50%); z-index: 20;
  color: #fff; font-size: 14px; background: rgba(0,0,0,.5); padding: 4px 14px; border-radius: 99px;
}
.gallery-arrow {
  position: absolute; top: 50%; transform: translateY(-50%); z-index: 10;
  width: 44px; height: 44px; line-height: 42px; text-align: center;
  color: #fff; font-size: 32px; cursor: pointer; border-radius: 50%;
  background: rgba(0,0,0,.4); user-select: none;
}
.gallery-arrow:hover { background: rgba(255,255,255,.25); }
.gallery-arrow-left { left: 8px; }
.gallery-arrow-right { right: 8px; }
/* ===== 案件草稿中心 ===== */
.draft-center-wrap{height:100%;display:flex;flex-direction:column}
.draft-center-header{height:56px;background:#fff;border-bottom:1px solid #e5e6eb;display:flex;align-items:center;justify-content:space-between;padding:0 24px;flex-shrink:0}
.draft-center-back{color:#1a6dff;font-size:14px;cursor:pointer;margin-right:8px;white-space:nowrap}
.draft-center-back:hover{color:#0e42d2}
.draft-center-title{font-size:16px;font-weight:600;color:#1d2129}
.draft-tabs{flex:1;display:flex;flex-direction:column;min-height:0}
.draft-tabs>.el-tabs__content{flex:1;overflow-y:auto;padding:16px 24px;background:#f5f6fa}
.draft-tabs>.el-tabs__header{margin-bottom:0}
.draft-form-body{padding:8px 0}
.draft-tab-toolbar{margin-bottom:12px}
.draft-card{background:#fff;border:1px solid #e5e6eb;border-radius:8px;margin-bottom:12px;overflow:hidden}
.draft-card.deleted{opacity:.55;background:#f5f6fa}
.draft-card-header{display:flex;align-items:center;justify-content:space-between;padding:14px 20px;cursor:pointer;background:#fff;border-bottom:1px solid transparent;transition:border-color .2s}
.draft-card:not(.deleted) .draft-card-header:hover{border-bottom-color:#e5e6eb}
.draft-card-body{padding:16px 20px}
.draft-tag{font-size:12px;padding:2px 8px;border-radius:4px;margin-left:8px}
.draft-tag-add{background:#e8ffea;color:#00b42a}
.draft-tag-update{background:#e8f0fe;color:#1a6dff}
.draft-tag-delete{background:#fff2f0;color:#f53f3f}
.draft-draf{background:#f2f3f5;color:#4e5969}
.draft-pending_review1{background:#fff7e8;color:#ff7d00}
.draft-pending_review2{background:#fff7e8;color:#ff7d00}
.draft-rejected{background:#fff2f0;color:#f53f3f}
.draft-approved{background:#e8ffea;color:#00b42a}

/* 草稿中心弹窗 - 固定高度 */
.draft-dialog{margin:0!important;position:fixed!important;top:8px!important;left:96px!important;right:96px!important;bottom:8px!important;width:auto!important;height:auto!important;max-width:none!important;border-radius:8px!important;display:flex;flex-direction:column;padding:0!important}
.draft-dialog .el-dialog__header{margin:0;padding:16px 24px;border-bottom:1px solid #e5e6eb}
.draft-dialog .el-dialog__body{padding:0!important;flex:1;min-height:0;overflow:hidden;display:flex;flex-direction:column}
.draft-dialog .el-tabs--border-card>.el-tabs__content{padding:0!important}
.draft-dialog .el-tabs{flex:1;display:flex;flex-direction:column;min-height:0}
.draft-dialog .el-tabs__content{flex:1;overflow-y:auto;min-height:0;scrollbar-gutter:stable}
.draft-dialog .el-tabs__header{margin-bottom:0}
.draft-dialog .el-dialog__footer{margin:0;padding:12px 24px;border-top:1px solid #e5e6eb;background:#fff}
.draft-form-body{padding:4px 4px 0}
.draft-dialog .draft-form-body{flex:1;display:flex;flex-direction:column;min-height:0}
.draft-form-body .case-form-footer{flex-shrink:0;padding:12px 0 16px;margin-top:8px;background:#fff;border-top:1px solid #e5e6eb;display:flex;justify-content:flex-end;gap:8px}
/* 案件列表操作列：相邻按钮间距统一用 gap 控制（覆盖 Element Plus 默认 margin-left:12px） */
.op-cell .el-button+.el-button{margin-left:0}
/* 日期/时间选择面板：短视口下保证底部按钮（此刻/确定）始终可见可点 */
.el-picker-panel{max-height:calc(100vh - 20px);overflow:hidden}
.el-picker-panel__body-wrapper{max-height:calc(100vh - 140px);overflow:auto}
.el-picker-panel__footer{flex-shrink:0}
/* ===== 上传组件修正 ===== */
/* Element Plus 键盘无障碍提示「按 delete 键可删除」在文件项聚焦时显示，绝对定位与文件名重叠，观感差；鼠标用户有 hover 删除按钮，直接隐藏 */
.el-upload-list__item .el-icon--close-tip{display:none !important}

/* ===== 文件预览弹窗（图片/视频/附件）：尺寸参考案件编辑弹窗（draft-dialog） ===== */
.file-preview-dialog{margin:0!important;position:fixed!important;top:8px!important;left:96px!important;right:96px!important;bottom:8px!important;width:auto!important;height:auto!important;max-width:none!important;border-radius:8px!important;display:flex;flex-direction:column}
.file-preview-dialog .el-dialog__header{margin:0;padding:14px 24px;border-bottom:1px solid #e5e6eb}
.file-preview-dialog .el-dialog__body{padding:0!important;flex:1;min-height:0;overflow:hidden;display:flex}
.file-preview-dialog .el-dialog__footer{margin:0;padding:12px 24px;border-top:1px solid #e5e6eb;background:#fff}

/* ===== 案件列表：案件编号一键复制小按钮（与编号文字同行同高） ===== */
.cases-table .case-no-copy{display:inline-flex;align-items:center;cursor:pointer;color:#a9abb2;height:1em;transition:color .15s}
.cases-table .case-no-copy:hover{color:var(--el-color-primary,#409eff)}
/* 编号/单号一键复制图标（通用）：置于编号前方，与编号文字同行同高；所在单元格不折行 */
.cell-copy{display:inline-flex;align-items:center;cursor:pointer;color:#a9abb2;height:1em;margin-right:2px;transition:color .15s;vertical-align:-2px}
.cell-copy:hover{color:var(--el-color-primary,#409eff)}
.el-table .cell:has(.cell-copy){white-space:nowrap}

/* ===== 案件预览画廊 + 委托服务办理/查看弹窗：尺寸对齐案件编辑弹窗（draft-dialog 固定定位铺满） ===== */
.gallery-dialog, .sp-edit-dialog {
  margin:0!important; position:fixed!important; top:8px!important; left:96px!important; right:96px!important; bottom:8px!important;
  width:auto!important; max-width:none!important; height:auto!important;
  border-radius:8px!important; display:flex; flex-direction:column; padding:0!important;
}
/* 画廊弹窗：隐藏 header，body 铺满 */
.gallery-dialog .el-dialog__header{display:none}
.gallery-dialog .el-dialog__body{padding:12px!important; flex:1; min-height:0; display:flex}
.gallery-dialog .gallery-wrap{flex:1; height:auto}
/* 委托服务办理/查看弹窗：header/footer 与 draft-dialog 一致，body 内部滚动 */
.sp-edit-dialog .el-dialog__header{margin:0; padding:16px 24px; border-bottom:1px solid #e5e6eb}
.sp-edit-dialog .el-dialog__body{padding:16px 24px!important; flex:1; min-height:0; overflow:hidden}
.sp-edit-dialog .el-dialog__footer{margin:0; padding:12px 24px; border-top:1px solid #e5e6eb; background:#fff}
.sp-edit-dialog .sp-dlg-body{max-height:none; height:100%; overflow:auto}
.fp-header{display:flex;align-items:center;gap:10px;min-width:0}
.fp-badge{flex-shrink:0;font-size:12px;padding:2px 10px;border-radius:4px;background:#e8f0fe;color:#1a6dff}
.fp-title{font-size:15px;font-weight:600;color:#1d2129;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fp-body{flex:1;min-height:0;width:100%;display:flex;align-items:center;justify-content:center;overflow:auto}
.fp-body--image{background:#2b2f36}
.fp-body--video{background:#000}
.fp-img{max-width:100%;max-height:100%;object-fit:contain;cursor:zoom-in;user-select:none;-webkit-user-drag:none}
.fp-img.zoomed{max-width:none;max-height:none;cursor:zoom-out}
.fp-video{width:100%;height:100%;object-fit:contain;background:#000;outline:none}
.fp-frame{width:100%;height:100%;border:0;background:#fff}
/* PDF（pdf.js 渲染）：容器内部滚动，页面等比缩放适配弹窗，单页垂直居中 */
.fp-body--pdf{background:#2b2f36;overflow:hidden}
.fp-pdf{width:100%;height:100%;overflow:auto;display:flex;flex-direction:column;align-items:center;justify-content:safe center;gap:12px;padding:16px;box-sizing:border-box}
.fp-pdf-page{background:#fff;box-shadow:0 2px 12px rgba(0,0,0,.35);flex-shrink:0}
.fp-pdf-tip{color:#a8abb2;font-size:14px;flex-shrink:0}
.fp-footer{display:flex;align-items:center;justify-content:space-between}
.fp-hint{font-size:12px;color:#86909c}
.fp-actions .el-button+.el-button{margin-left:12px}
