*{margin:0;padding:0;box-sizing:border-box;}body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI','Microsoft YaHei',sans-serif;background:#f5f5f5;overflow:hidden;}/* 加载动画层 */
.loading-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:linear-gradient(135deg,#64748b 0%,#475569 100%);display:flex;align-items:center;justify-content:center;z-index:9999;transition:opacity 0.5s ease,visibility 0.5s ease;}.loading-overlay.hidden{opacity:0;visibility:hidden;}.loading-container{text-align:center;}.bouncing-balls{display:flex;align-items:center;justify-content:center;gap:12px;margin-bottom:24px;}.ball{width:20px;height:20px;background:white;border-radius:50%;animation:bounce 1.4s ease-in-out infinite;}.ball:nth-child(1){animation-delay:0s;}.ball:nth-child(2){animation-delay:0.2s;}.ball:nth-child(3){animation-delay:0.4s;}@keyframes bounce{0%,80%,100%{transform:translateY(0) scale(1);opacity:1;}40%{transform:translateY(-30px) scale(1.1);opacity:0.8;}}.loading-text{color:white;font-size:16px;font-weight:500;letter-spacing:1px;animation:pulse 1.5s ease-in-out infinite;}@keyframes spin{from{transform:rotate(0deg);}to{transform:rotate(360deg);}}@keyframes pulse{0%,100%{opacity:1;}50%{opacity:0.6;}}.container{display:flex;height:100vh;transition:all 0.3s ease;}/* 半屏模式 */
.container.half-screen-mode{margin-left:0;}.container.half-screen-mode .sidebar{width:0;min-width:0;max-width:0;transform:translateX(-100%);opacity:0;pointer-events:none;overflow:hidden;}.container.half-screen-mode .main-content{margin-left:0;flex:1;}/* 左侧边栏 */
.sidebar{width:440px;min-width:440px;max-width:440px;flex-shrink:0;background:#fff;border-right:1px solid #e0e0e0;display:flex;flex-direction:column;box-shadow:2px 0 8px rgba(0,0,0,0.05);transition:all 0.3s ease;}.header{padding:10px 10px;border-bottom:none;background:linear-gradient(135deg,#64748b 0%,#475569 50%,#334155 100%);background-size:200% 200%;color:white;transition:all 0.4s ease;position:relative;overflow:hidden;display:flex;align-items:center;justify-content:space-between;}.header::before{content:'';position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,0.15),transparent);transition:left 0.6s ease;}.header:hover::before{left:100%;}.header:hover{background-position:100% 50%;box-shadow:0 4px 20px rgba(100,116,139,0.4);transform:translateY(-1px);}.header h2{font-size:22px;font-weight:700;display:flex;align-items:center;gap:14px;margin:0;text-shadow:0 2px 8px rgba(0,0,0,0.15);letter-spacing:1px;position:relative;z-index:1;}.header-icon{width:42px;height:42px;object-fit:contain;border-radius:10px;box-shadow:0 4px 12px rgba(0,0,0,0.2);transition:transform 0.3s ease;border:2px solid rgba(255,255,255,0.3);}.header:hover .header-icon{transform:scale(1.08) rotate(2deg);}/* 上传区域 */
.upload-section{padding:8px 10px;border-bottom:1px solid #f0f0f0;}/* 上传区域 - 一行布局 */
.upload-section.upload-row{display:flex;gap:10px;align-items:center;}.filter-btn-all{padding:6px 12px;font-size:13px;min-width:80px;line-height:1.4;}.upload-btn{flex:1;display:flex;align-items:center;justify-content:center;gap:8px;padding:12px;background:linear-gradient(135deg,#64748b 0%,#475569 100%);color:white;border-radius:8px;cursor:pointer;transition:all 0.3s;font-weight:500;border:none;}.upload-btn:hover{transform:translateY(-2px);box-shadow:0 4px 12px rgba(100,116,139,0.4);}/* 筛选区域 */
.filter-section{padding:20px;border-bottom:1px solid #f0f0f0;}.filter-section h3{font-size:14px;color:#666;margin-bottom:12px;font-weight:600;}.filter-buttons{display:flex;gap:6px;flex-wrap:nowrap;}.filter-btn{flex:1;padding:8px 6px;border:1px solid #e0e0e0;background:white;border-radius:6px;cursor:pointer;font-size:14px;transition:all 0.2s;color:#666;white-space:nowrap;position:relative;display:flex;align-items:center;justify-content:center;gap:4px;}.filter-btn:hover{border-color:#334155;color:#334155;}.filter-btn.active{background:#334155;color:white;border-color:#334155;}.filter-btn .badge{background:rgba(0,0,0,0.15);color:inherit;padding:2px 6px;border-radius:10px;font-size:11px;font-weight:600;min-width:20px;text-align:center;line-height:1;}.filter-btn.active .badge{background:rgba(255,255,255,0.3);color:white;}/* 文件列表 */
.file-list-section{flex:1;overflow:hidden;display:flex;flex-direction:column;padding:8px 10px;}/* 劳务+审核状态筛选区域 */
.filter-area{flex:1;display:flex;flex-direction:row;gap:10px;overflow:hidden;}/* 劳务筛选侧边栏 */
.labor-filter-sidebar{width:42px;min-width:42px;flex-shrink:0;display:flex;flex-direction:column;background:#f8f9fa;border-radius:6px;padding:3px;overflow:hidden;}.labor-filter-sidebar:has(.labor-filter-list:empty){display:none;}.labor-filter-list{display:flex;flex-direction:column;flex:1;gap:2px;}.labor-filter-list:empty{display:none;}.labor-filter-btn{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:4px 0;border:1px solid #d0d0d0;background:#fff;border-radius:4px;cursor:pointer;transition:all 0.2s;min-height:0;position:relative;overflow:hidden;box-shadow:0 1px 2px rgba(0,0,0,0.06);}.labor-filter-btn:hover{background:linear-gradient(135deg,#cffafe 0%,#a5f3fc 100%);border-color:#334155;transform:scale(1.03);box-shadow:0 3px 8px rgba(51,65,85,0.25);}.labor-filter-btn.active{background:linear-gradient(135deg,#64748b 0%,#475569 100%);color:white;border-color:transparent;box-shadow:0 2px 6px rgba(51,65,85,0.4);}.labor-filter-btn .labor-name{writing-mode:vertical-rl;text-orientation:mixed;font-size:13px;font-weight:600;text-align:center;line-height:1.2;max-height:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;}.labor-filter-btn .labor-badge{writing-mode:vertical-rl;text-orientation:mixed;font-size:10px;background:rgba(0,0,0,0.08);padding:3px 1px;border-radius:4px;margin-top:4px;font-weight:500;}.labor-filter-btn.active .labor-badge{background:rgba(255,255,255,0.3);}/* 劳务筛选"全部"按钮特殊样式 */
.labor-filter-btn.labor-all-btn{flex:none;min-height:90px;border-bottom:2px solid #334155;margin-bottom:6px;}.labor-filter-btn.labor-all-btn .labor-name{color:#334155;font-weight:700;}.labor-filter-btn.labor-all-btn.active .labor-name{color:white;}/* 审核状态+文件列表区域 */
.status-file-area{flex:1;display:flex;flex-direction:column;overflow:hidden;min-width:0;}.file-list-header{display:flex;align-items:center;gap:10px;margin-bottom:8px;}.file-list-section h3{font-size:14px;color:#666;margin:0;font-weight:600;white-space:nowrap;}.file-list-section .filter-buttons{margin-bottom:8px;}.file-search-input{width:100%;max-width:none;padding:8px 12px;border:1px solid #e0e0e0;border-radius:6px;font-size:13px;outline:none;transition:all 0.2s;margin-bottom:8px;box-sizing:border-box;}.file-search-input:focus{border-color:#334155;box-shadow:0 0 0 2px rgba(51,65,85,0.1);}.file-search-input::placeholder{color:#aaa;}.file-list{flex:1;overflow-y:auto;padding-right:5px;}.file-list::-webkit-scrollbar{width:6px;}.file-list::-webkit-scrollbar-track{background:#f5f5f5;border-radius:3px;}.file-list::-webkit-scrollbar-thumb{background:#ccc;border-radius:3px;}.file-list::-webkit-scrollbar-thumb:hover{background:#999;}/* ✅ 虚拟滚动容器 */
.virtual-scroll-container{position:relative;width:100%;}.virtual-scroll-content{position:absolute;top:0;left:0;right:0;}/* 虚拟滚动模式下的文件项样式调整 */
.virtual-scroll-content .file-item{box-sizing:border-box;margin-bottom:0;margin-right:5px;}.empty-state{text-align:center;color:#999;padding:40px 20px;font-size:14px;}.file-item{padding:7px 12px 8px 12px;margin-bottom:8px;background:#ffffff;border-radius:8px;cursor:pointer;transition:all 0.3s ease;border:1px solid #e0e0e0;position:relative;overflow:hidden;box-shadow:0 1px 3px rgba(0,0,0,0.08),0 1px 2px rgba(0,0,0,0.06);}.file-item:hover{background:#f8f9fa;border-color:#cbd5e1;box-shadow:0 4px 6px rgba(0,0,0,0.1),0 2px 4px rgba(0,0,0,0.08);transform:translateY(-1px);}.file-item.active{background:linear-gradient(135deg,#e7f0ff 0%,#f0f7ff 100%);border-color:#334155;border-width:2px;box-shadow:0 4px 8px rgba(51,65,85,0.15),0 2px 4px rgba(51,65,85,0.1);}.file-item-content{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;width:100%;}.file-item-left{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px;}.file-item-right{display:flex;flex-direction:column;align-items:flex-end;gap:4px;flex-shrink:0;}.file-item-row{display:flex;align-items:center;gap:8px;width:100%;}.file-name-row{display:flex;align-items:center;justify-content:space-between;gap:8px;}.file-name{font-size:13px;font-weight:500;color:#333;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;}.file-status-container{display:flex;flex-direction:column;align-items:flex-end;gap:4px;flex-shrink:0;position:relative;}.file-status{padding:2px 7px;border-radius:3px;font-size:11px;font-weight:500;}.file-status.pending{background:#fff3cd;color:#856404;}.file-status.approved{background:#d4edda;color:#155724;}.file-status.rejected{background:#f8d7da;color:#721c24;}/* 构件类型徽章 */
.file-element-badge{padding:2px 7px;border-radius:3px;font-size:11px;font-weight:500;background:#d1f2eb;color:#0d7377;white-space:nowrap;}/* 料单分类徽章 */
.file-tag-badge{padding:2px 7px;border-radius:3px;font-size:11px;font-weight:500;background:#4a5568;color:#ffffff;white-space:nowrap;}.file-date{font-size:11px;color:#999;flex:1;display:flex;align-items:center;gap:8px;}.file-time{color:#999;}/* 文件重量显示 */
.file-weight{color:#334155;font-weight:600;font-size:11px;cursor:pointer;padding:2px 6px;border-radius:3px;background:#f0f4ff;transition:all 0.2s;margin-right:8px;}.file-weight:hover{background:#334155;color:white;transform:scale(1.05);}/* 文件元信息行 */
.file-meta-row{margin-top:0;}.file-meta{display:flex;gap:8px;flex-wrap:wrap;width:100%;}.file-meta-item{font-size:10px;color:#666;background:#f0f0f0;padding:2px 6px;border-radius:3px;}/* 可编辑的元信息样式 */
.file-meta-item.editable-meta{cursor:pointer;transition:all 0.2s;user-select:none;}.file-meta-item.editable-meta:hover{background:#334155;color:white;transform:translateY(-1px);box-shadow:0 2px 4px rgba(51,65,85,0.3);}.file-meta-item.add-info{background:#e8eaf6;color:#334155;border:1px dashed #334155;font-weight:500;}.file-meta-item.add-info:hover{background:#334155;color:white;border-color:#334155;border-style:solid;}/* 施工状态徽章 - 添加点击样式 */
.construction-status{display:inline-block;padding:2px 7px;border-radius:3px;font-size:10px;font-weight:500;cursor:pointer;transition:all 0.2s;user-select:none;}.construction-status:hover{transform:scale(1.05);box-shadow:0 2px 4px rgba(0,0,0,0.15);}/* 反馈建议（已移除，现在在设置对话框中） */

/* 反馈建议 */
.feedback-section{padding:6px 10px;border-top:1px solid #e0e0e0;background:#f8f9fa;display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:12px;color:#666;min-height:42px;}.feedback-left{display:flex;align-items:center;gap:6px;flex:1;min-width:0;}.feedback-icon{flex-shrink:0;stroke:#334155;}.feedback-text{color:#666;font-size:16px;font-weight:500;}.feedback-phone{color:#334155;text-decoration:none;font-size:16px;font-weight:600;transition:all 0.2s;}.feedback-phone:hover{color:#475569;text-decoration:underline;}.feedback-right{display:flex;align-items:center;gap:8px;}.setting-btn{width:40px;height:40px;display:flex;align-items:center;justify-content:center;background:white;border:1px solid #e0e0e0;border-radius:6px;cursor:pointer;transition:all 0.2s;padding:0;}.setting-btn:hover{background:#334155;border-color:#334155;}.setting-btn:hover svg{stroke:white;}.setting-btn svg{width:20px;height:20px;stroke:#334155;transition:all 0.2s;}/* 用户头像容器 */
.user-avatar-container{position:relative;}.user-avatar{width:40px;height:40px;display:flex;align-items:center;justify-content:center;background:white;border:1px solid #e0e0e0;border-radius:50%;cursor:pointer;transition:all 0.2s;color:#334155;}.user-avatar:hover{background:#f5f5f5;border-color:#334155;transform:scale(1.05);}.user-avatar svg{width:24px;height:24px;stroke:currentColor;}/* 用户下拉菜单 */
.user-dropdown-menu{position:absolute;top:calc(100% + 8px);right:0;min-width:200px;background:white;border:1px solid #e0e0e0;border-radius:8px;box-shadow:0 4px 20px rgba(0,0,0,0.15);z-index:1000;overflow:hidden;}.user-dropdown-header{display:flex;align-items:center;gap:12px;padding:16px;background:#f8f9fa;}.user-avatar-small{width:40px;height:40px;display:flex;align-items:center;justify-content:center;background:white;border:1px solid #e0e0e0;border-radius:50%;color:#334155;flex-shrink:0;}.user-avatar-small svg{width:24px;height:24px;stroke:currentColor;}.user-info-text{flex:1;min-width:0;}.user-name{font-size:14px;font-weight:600;color:#333;margin-bottom:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.user-role{font-size:12px;color:#666;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.user-dropdown-divider{height:1px;background:#e0e0e0;margin:0;}.user-permissions-section{padding:12px 16px;background:#fafbfc;}.user-permission-item{display:flex;justify-content:space-between;align-items:center;padding:6px 0;font-size:13px;}.permission-label{color:#666;font-weight:500;}.permission-value{font-weight:600;padding:2px 8px;border-radius:4px;font-size:12px;}.permission-value.permission-yes{color:#28a745;background:#d4edda;}.permission-value.permission-no{color:#dc3545;background:#f8d7da;}.permission-value.permission-warning{color:#ff9800;background:#fff3e0;}.user-dropdown-item{width:100%;display:flex;align-items:center;padding:12px 16px;background:none;border:none;cursor:pointer;transition:all 0.2s;font-size:14px;color:#333;text-align:left;}.user-dropdown-item:hover{background:#f5f5f5;}.logout-dropdown-btn{color:#ff5252;}.logout-dropdown-btn:hover{background:#fff5f5;color:#ff5252;}.logout-dropdown-btn svg{stroke:currentColor;}/* 主内容区 */
.main-content{flex:1;display:flex;flex-direction:column;background:#fafafa;}/* 工具栏 */
.toolbar{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;background:white;border-bottom:1px solid #e0e0e0;box-shadow:0 2px 4px rgba(0,0,0,0.05);}.toolbar-left,.toolbar-right{display:flex;align-items:center;gap:6px;}.tool-btn{padding:8px 12px;background:white;border:1px solid #e0e0e0;border-radius:6px;cursor:pointer;transition:all 0.2s;display:flex;align-items:center;justify-content:center;color:#555;}.tool-btn:hover{background:#f5f5f5;border-color:#334155;color:#334155;}.tool-btn.active{background:#334155;color:white;border-color:#334155;}.approve-btn-toolbar{background:#28a745;color:white;border-color:#28a745;}.approve-btn-toolbar:hover{background:#218838;border-color:#218838;}.reject-btn-toolbar{background:#dc3545;color:white;border-color:#dc3545;}.reject-btn-toolbar:hover{background:#c82333;border-color:#c82333;}.tool-btn svg{stroke:currentColor;}.page-info,.zoom-level{padding:6px 8px;font-size:13px;color:#666;min-width:50px;text-align:center;background:#f8f9fa;border-radius:6px;}.divider{width:1px;height:24px;background:#e0e0e0;margin:0 4px;}#pen-color{width:40px;height:36px;border:1px solid #e0e0e0;border-radius:6px;cursor:pointer;}#pen-width{padding:8px;border:1px solid #e0e0e0;border-radius:6px;background:white;cursor:pointer;font-size:13px;}#text-size{padding:8px;border:1px solid #e0e0e0;border-radius:6px;background:white;cursor:pointer;font-size:13px;}/* 统计功能下拉菜单 */
.stats-menu,.export-menu{padding:9px 10px;border:1px solid #d0d0d0;border-radius:8px;background:linear-gradient(180deg,#ffffff 0%,#f8f9fa 100%);cursor:pointer;font-size:13px;color:#333;font-weight:500;transition:all 0.3s cubic-bezier(0.4,0,0.2,1);min-width:100px;max-width:100px;box-shadow:0 1px 3px rgba(0,0,0,0.08);appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%23667eea' d='M6 8L2 4h8z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 8px center;padding-right:26px;}/* 工程管理菜单样式 */
.project-menu{padding:12px 10px;border:1px solid #d0d0d0;border-radius:8px;background:linear-gradient(180deg,#ffffff 0%,#f8f9fa 100%);cursor:pointer;font-size:13px;color:#333;font-weight:500;transition:all 0.3s cubic-bezier(0.4,0,0.2,1);min-width:100px;max-width:120px;box-shadow:0 1px 3px rgba(0,0,0,0.08);appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%23667eea' d='M6 8L2 4h8z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 8px center;padding-right:26px;height:44px;}.stats-menu:hover,.project-menu:hover,.export-menu:hover{border-color:#334155;background:linear-gradient(180deg,#ffffff 0%,#f0f2ff 100%);box-shadow:0 3px 10px rgba(51,65,85,0.2);transform:translateY(-1px);}.stats-menu:focus,.project-menu:focus,.export-menu:focus{outline:none;border-color:#334155;box-shadow:0 0 0 3px rgba(51,65,85,0.15),0 2px 8px rgba(51,65,85,0.25);}/* 用户菜单 */
.user-menu{position:relative;display:flex;align-items:center;gap:4px;padding:8px 12px;background:linear-gradient(180deg,#ffffff 0%,#f8f9fa 100%);border:1px solid #d0d0d0;border-radius:8px;cursor:pointer;transition:all 0.2s;margin-left:8px;}.user-menu:hover{border-color:#334155;background:linear-gradient(180deg,#f8f9ff 0%,#f0f2ff 100%);}.user-status{font-size:13px;color:#555;font-weight:500;}.user-menu>svg{color:#888;transition:transform 0.2s;}.user-menu:hover>svg{color:#334155;}.user-dropdown{position:absolute;top:calc(100% + 8px);right:0;min-width:180px;background:white;border-radius:10px;box-shadow:0 8px 30px rgba(0,0,0,0.15);padding:12px;display:none;z-index:1000;}.user-menu:hover .user-dropdown{display:block;}.user-info-item{display:flex;justify-content:space-between;align-items:center;padding:8px 0;}.user-label{font-size:12px;color:#888;}.user-value{font-size:13px;color:#333;font-weight:500;}.user-divider{height:1px;background:#eee;margin:8px 0;}.user-logout-btn{width:100%;padding:8px 12px;background:#f5f5f5;border:none;border-radius:6px;color:#e74c3c;font-size:13px;cursor:pointer;transition:all 0.2s;}.user-logout-btn:hover{background:#fee;}.stats-menu:active,.project-menu:active,.export-menu:active{transform:translateY(0);box-shadow:0 1px 3px rgba(0,0,0,0.12);}/* 美化下拉选项 */
.stats-menu option,.project-menu option,.export-menu option{padding:8px 12px;background:white;color:#333;font-weight:500;}.stats-menu option:first-child,.project-menu option:first-child,.export-menu option:first-child{color:#999;font-weight:400;}.stats-menu option:not(:first-child):hover,.project-menu option:not(:first-child):hover,.export-menu option:not(:first-child):hover{background:#f0f2ff;color:#334155;}/* PDF查看器容器 */
.pdf-viewer-container{flex:1;overflow:auto;padding:20px;padding-bottom:50px;display:flex;justify-content:center;align-items:flex-start;background:#e9ecef;position:relative;}/* 底部控制栏：页码和缩放 */
.pdf-bottom-controls{position:fixed;bottom:30px;left:calc(400px + (100vw - 400px) / 2);/* 左侧菜单400px + 右侧区域的一半 */
  transform:translateX(-50%);display:flex;align-items:center;gap:6px;background:rgba(40,44,52,0.9);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);padding:8px 16px;border-radius:24px;box-shadow:0 4px 20px rgba(0,0,0,0.25);z-index:100;transition:left 0.3s ease;}/* 半屏模式下，底部控件居中于整个视口 */
.container.half-screen-mode .pdf-bottom-controls{left:50vw;}.ctrl-btn{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border:none;background:transparent;color:rgba(255,255,255,0.85);border-radius:8px;cursor:pointer;transition:all 0.2s;}.ctrl-btn:hover{background:rgba(255,255,255,0.15);color:#fff;}.ctrl-btn:active{transform:scale(0.95);}.page-info-bottom{color:rgba(255,255,255,0.9);font-size:13px;font-weight:500;min-width:60px;text-align:center;}.zoom-level-bottom{color:rgba(255,255,255,0.9);font-size:12px;min-width:45px;text-align:center;}.ctrl-divider{width:1px;height:20px;background:rgba(255,255,255,0.2);margin:0 6px;}/* 工具栏统计菜单 */
.toolbar-stats-menu{background:transparent;border:1px solid #d0d0d0;border-radius:8px;padding:9px 28px 9px 10px;font-size:13px;color:#555;cursor:pointer;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3E%3Cpath fill='%23666' d='M4 6L1 2h6z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 8px center;transition:all 0.2s;}.toolbar-stats-menu:hover{border-color:#334155;color:#334155;}.toolbar-stats-menu:focus{outline:none;border-color:#334155;}.pdf-viewer{position:relative;background:white;box-shadow:0 4px 20px rgba(0,0,0,0.1);border-radius:8px;overflow:hidden;}/* PDF加载状态样式 */
.pdf-loading-state{position:absolute;top:0;left:0;right:0;bottom:0;display:flex;flex-direction:column;align-items:center;justify-content:center;background:rgba(255,255,255,0.95);z-index:10;color:#64748b;}.pdf-loading-state .loading-spinner{margin-bottom:20px;}.pdf-loading-state .spinner{width:40px;height:40px;border:4px solid #e2e8f0;border-top-color:#3b82f6;border-radius:50%;animation:spin 1s linear infinite;}@keyframes spin{to{transform:rotate(360deg);}}.pdf-loading-state .loading-message{font-size:16px;font-weight:500;margin-bottom:8px;color:#475569;}.pdf-loading-state .loading-file-name{font-size:14px;color:#94a3b8;margin-bottom:8px;}.pdf-loading-state .loading-retry-info{font-size:12px;color:#cbd5e1;margin-top:8px;}.welcome-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:100px;color:#999;}.welcome-state svg{stroke:#ccc;margin-bottom:20px;}.welcome-state p{font-size:16px;}#pdf-canvas,#annotation-canvas{display:block;max-width:100%;}#annotation-canvas{position:absolute;top:0;left:0;cursor:default;}/* 标注画布鼠标样式 */
#annotation-canvas.tool-pen{cursor:crosshair;}#annotation-canvas.tool-rect{cursor:crosshair;}#annotation-canvas.tool-text{cursor:text;}#annotation-canvas.dragging{cursor:move;}#annotation-canvas.resizing{cursor:nwse-resize;}/* 二维码容器样式 */
.qrcode-container{position:absolute;top:0;left:0;width:80px;height:80px;z-index:100;cursor:grab;user-select:none;pointer-events:auto;}.qrcode-container:active{cursor:grabbing;}.qrcode-container #qrcode{width:80px;height:80px;background:white;border:2px solid #334155;border-radius:4px;box-shadow:0 2px 8px rgba(0,0,0,0.2);position:relative;}.qrcode-center-icon{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:20px;height:20px;background:white;border-radius:4px;display:flex;align-items:center;justify-content:center;padding:2px;box-shadow:0 1px 3px rgba(0,0,0,0.2);z-index:10;}.qrcode-center-icon img{width:100%;height:100%;object-fit:cover;border-radius:2px;}/* 对比视图 */
.compare-view{width:100%;height:100%;display:flex;flex-direction:column;background:white;}/* 对比视图 */
.compare-view{width:100%;height:100%;display:flex;flex-direction:column;overflow:hidden;}.compare-header{display:flex;justify-content:space-between;align-items:center;padding:15px 20px;background:#f8f9fa;border-bottom:2px solid #e0e0e0;}.compare-title{display:flex;align-items:center;gap:20px;font-size:16px;font-weight:600;}.compare-label{padding:6px 16px;border-radius:20px;font-size:14px;font-weight:600;}.rejected-label{background:#f8d7da;color:#721c24;}.approved-label{background:#d4edda;color:#155724;}.pending-label{background:#fff3cd;color:#856404;}.new-label{background:#d4edda;color:#155724;}.compare-vs{font-weight:700;color:#334155;font-size:18px;}.compare-container{flex:1;display:flex;overflow:hidden;position:relative;min-height:0;}.compare-panel{flex:1;overflow:auto;position:relative;background:#f5f5f5;display:flex;flex-direction:column;align-items:center;padding:20px;}.right-panel{position:relative;}.canvas-wrapper{position:relative;display:block;background:white;box-shadow:0 2px 10px rgba(0,0,0,0.1);margin-bottom:20px;}.canvas-wrapper canvas{display:block;vertical-align:top;}.right-panel>canvas{display:block;}#compare-canvas-left,#compare-canvas-right{background:white;display:block;}.compare-panel canvas{display:block;background:white;}.compare-divider{width:3px;background:linear-gradient(180deg,#64748b 0%,#475569 100%);flex-shrink:0;}.panel-label{position:sticky;top:0;background:rgba(255,255,255,0.95);padding:8px 16px;border-radius:6px;font-weight:600;color:#334155;margin-bottom:15px;box-shadow:0 2px 8px rgba(0,0,0,0.1);z-index:10;}#compare-annotation-canvas{position:absolute;top:0;left:0;cursor:crosshair;pointer-events:auto;background:transparent;}#compare-annotation-canvas-left{position:absolute;top:0;left:0;cursor:default;pointer-events:none;background:transparent;}/* 模态对话框 */
.modal{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,0.6);display:flex;align-items:center;justify-content:center;z-index:1000;}/* 施工状态修改对话框（更高层级，确保在进度统计弹窗之上） */
#construction-status-modal{z-index:1100;}/* 批量修改施工状态对话框（从施工状态弹窗打开，需要更高层级） */
#batch-status-modal{z-index:1200;}.modal-content{background:white;border-radius:12px;width:90%;max-width:600px;max-height:80vh;display:flex;flex-direction:column;box-shadow:0 10px 40px rgba(0,0,0,0.3);}/* 系统设置弹窗 - 加宽 100px */
#settings-modal .modal-content{max-width:800px;}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:20px 24px;border-bottom:1px solid #e0e0e0;}.modal-header h3{margin:0;font-size:18px;font-weight:600;color:#333;}.modal-close{background:none;border:none;font-size:28px;color:#999;cursor:pointer;padding:0;width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:all 0.2s;}.modal-close:hover{background:#f5f5f5;color:#333;}/* 可拖动弹窗样式 */
.draggable-header{user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;}.draggable-header:active{cursor:grabbing !important;}/* 重量清单弹窗遮罩 - 更淡的背景，方便看清后面的数据 */
#weight-list-modal{background:rgba(0,0,0,0.25);}.weight-modal-content{position:fixed !important;transition:none !important;}/* ============================================
   重量核对弹窗样式
   ============================================ */

.weight-check-modal-content{position:fixed !important;transition:none !important;max-width:90vw;width:90vw;max-height:85vh;height:85vh;display:flex;flex-direction:column;}.weight-check-modal-content .modal-body{flex:1;min-height:0;overflow:hidden;}.weight-check-left{background:white;height:100%;display:flex;flex-direction:column;}/* 重量核对弹窗中的表格容器，需要完全填充剩余空间 */
.weight-check-left .weight-list-container{flex:1;overflow-y:auto;overflow-x:auto;margin:0;border:none;border-radius:0;max-height:none;min-height:0;}/* 重量核对弹窗中的总重量显示，固定在底部 */
.weight-check-left .weight-total{flex-shrink:0;margin:0;border-top:1px solid #e0e0e0;border-radius:0;}.weight-check-right{background:#e9ecef;height:100%;}#weight-check-pdf-canvas{display:block;max-width:100%;background:white;}.modal-body{padding:24px;flex:1;overflow-y:auto;}.modal-desc{margin:0 0 16px 0;color:#666;font-size:14px;}/* 施工状态弹窗 - 详细信息显示区域 */
.status-file-details{background:#f8f9fa;border:1px solid #e0e0e0;border-radius:8px;padding:16px;margin-bottom:20px;}.file-details-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;}.file-detail-item{display:flex;align-items:center;gap:8px;}.file-detail-label{font-size:13px;color:#666;font-weight:500;min-width:80px;flex-shrink:0;}.file-detail-value{font-size:13px;color:#333;font-weight:600;flex:1;word-break:break-all;}/* 模态对话框筛选区域 */
.modal-filter{margin-bottom:16px;padding:12px;background:#f8f9fa;border-radius:8px;}.modal-filter-buttons{display:flex;gap:8px;margin-bottom:12px;}.modal-filter-btn{flex:1;padding:8px 12px;border:1px solid #e0e0e0;background:white;border-radius:6px;cursor:pointer;font-size:13px;transition:all 0.2s;color:#666;white-space:nowrap;}.modal-filter-btn:hover{border-color:#334155;color:#334155;}.modal-filter-btn.active{background:#334155;color:white;border-color:#334155;}.modal-search{position:relative;}.modal-search-input{width:100%;padding:10px 36px 10px 12px;border:1px solid #e0e0e0;border-radius:6px;font-size:14px;outline:none;transition:all 0.2s;}.modal-search-input:focus{border-color:#334155;box-shadow:0 0 0 3px rgba(51,65,85,0.1);}.modal-search .search-icon{position:absolute;right:12px;top:50%;transform:translateY(-50%);color:#999;pointer-events:none;}.file-select-list{display:flex;flex-direction:column;gap:8px;max-height:400px;overflow-y:auto;}.file-select-item{padding:12px 16px;border:2px solid #e0e0e0;border-radius:8px;cursor:pointer;transition:all 0.2s;display:flex;gap:12px;align-items:center;margin-bottom:10px;}.file-select-item:hover{border-color:#334155;background:#f8f9ff;}.file-select-item.selected{border-color:#334155;background:#f0f4ff;}/* 复选框样式 */
.file-select-checkbox{width:20px;height:20px;border:2px solid #d0d0d0;border-radius:4px;display:flex;align-items:center;justify-content:center;color:white;font-size:14px;font-weight:bold;transition:all 0.2s;flex-shrink:0;}.file-select-checkbox.checked{background:#334155;border-color:#334155;}.file-select-info{flex:1;min-width:0;}.file-select-name{font-weight:500;color:#333;margin-bottom:4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.file-select-meta{font-size:12px;color:#999;display:flex;align-items:center;gap:10px;}.file-select-date{color:#999;}/* 批量选择模式的复选框样式 */
.batch-file-checkbox{display:flex;align-items:center;gap:12px;cursor:pointer;flex:1;}.batch-file-checkbox input[type="checkbox"]{width:18px;height:18px;cursor:pointer;accent-color:#334155;}.file-select-item-info{flex:1;}.file-select-item-name{font-weight:500;color:#333;margin-bottom:4px;}.file-select-item-meta{font-size:12px;color:#999;}.modal-footer{padding:16px 24px;border-top:1px solid #e0e0e0;display:flex;align-items:center;gap:12px;}.modal-btn{padding:10px 24px;border:none;border-radius:6px;cursor:pointer;font-weight:500;font-size:14px;transition:all 0.2s;display:flex;align-items:center;justify-content:center;}.modal-btn.batch-btn{background:linear-gradient(135deg,#64748b 0%,#475569 100%);color:white;padding:10px 20px;}.modal-btn.batch-btn:hover{transform:translateY(-1px);box-shadow:0 2px 8px rgba(51,65,85,0.3);}.modal-btn.batch-btn svg{stroke:white;}.cancel-btn{background:#f5f5f5;color:#666;}.cancel-btn:hover{background:#e0e0e0;}.confirm-btn{background:#334155;color:white;}.confirm-btn:hover{background:#5568d3;}/* 设置对话框 */
.settings-item{margin-bottom:20px;}.settings-item:last-child{margin-bottom:0;}.settings-item h4{font-size:15px;font-weight:600;color:#333;margin-bottom:12px;}.settings-item .reviewer-input{width:100%;padding:10px 12px;border:1px solid #e0e0e0;border-radius:6px;font-size:14px;transition:all 0.2s;outline:none;}.settings-item .reviewer-input:focus{border-color:#334155;box-shadow:0 0 0 3px rgba(51,65,85,0.1);}.settings-item .reviewer-input::placeholder{color:#999;}.settings-hint{margin-top:8px;font-size:12px;color:#999;}/* 文件删除按钮 */
/* 文件删除按钮 */
.file-delete-btn{padding:2px 8px;background:rgba(255,255,255,0.95);border:1px solid #dc3545;color:#dc3545;font-size:11px;cursor:pointer;transition:all 0.2s ease;opacity:0;border-radius:3px;font-weight:500;flex-shrink:0;position:absolute;right:0;top:0;z-index:10;pointer-events:none;white-space:nowrap;box-shadow:0 2px 4px rgba(0,0,0,0.1);}.file-item:hover .file-delete-btn,.file-item:hover .file-resubmit-btn{opacity:1;pointer-events:auto;}.file-delete-btn:hover{background:#dc3545;color:white;box-shadow:0 2px 6px rgba(220,53,69,0.3);}.file-resubmit-btn{padding:2px 8px;background:rgba(255,255,255,0.95);border:1px solid #28a745;color:#28a745;font-size:11px;cursor:pointer;transition:all 0.2s ease;opacity:0;border-radius:3px;font-weight:500;flex-shrink:0;position:absolute;right:0;top:0;z-index:10;pointer-events:none;white-space:nowrap;box-shadow:0 2px 4px rgba(0,0,0,0.1);}.file-resubmit-btn:hover{background:#28a745;color:white;box-shadow:0 2px 6px rgba(40,167,69,0.3);}.confirm-btn{background:#334155;color:white;}.confirm-btn:hover{background:#5568d3;}/* 设置对话框 */
.settings-item{margin-bottom:20px;}.settings-item:last-child{margin-bottom:0;}.settings-item h4{font-size:15px;font-weight:600;color:#333;margin-bottom:12px;}.settings-item .reviewer-input{width:100%;padding:10px 12px;border:1px solid #e0e0e0;border-radius:6px;font-size:14px;transition:all 0.2s;outline:none;}.settings-item .reviewer-input:focus{border-color:#334155;box-shadow:0 0 0 3px rgba(51,65,85,0.1);}.settings-item .reviewer-input::placeholder{color:#999;}.settings-hint{margin-top:8px;font-size:12px;color:#999;}/* 文件配置对话框 */
.config-select{width:100%;padding:10px 12px;border:1px solid #e0e0e0;border-radius:6px;font-size:14px;transition:all 0.2s;outline:none;background:white;cursor:pointer;}.config-select:focus{border-color:#334155;box-shadow:0 0 0 3px rgba(51,65,85,0.1);}/* 施工状态徽章 */
.construction-status.unprocessed{background:#ffeaa7;color:#d63031;}.construction-status.processed{background:#74b9ff;color:#0984e3;}.construction-status.bound{background:#a29bfe;color:#6c5ce7;}.construction-status.poured{background:#00b894;color:white;}/* 响应式设计 */

/* 形象进度统计样式 */
.stats-modal-content{max-width:100%;width:100%;max-height:100vh;height:100vh;margin:0;border-radius:0;display:flex;flex-direction:column;}#stats-modal .modal-header{flex-shrink:0;}.stats-modal-body{flex:1;overflow:hidden;padding:0;display:flex;flex-direction:column;min-height:0;}.stats-filter{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:20px 24px 16px;border-bottom:2px solid #e0e0e0;background:white;flex-shrink:0;position:relative;z-index:10;}.stats-filter-left{display:flex;align-items:center;gap:12px;}.stats-filter label{font-size:14px;font-weight:600;color:#333;white-space:nowrap;}.stats-select{padding:8px 12px;border:1px solid #e0e0e0;border-radius:6px;font-size:14px;background:white;cursor:pointer;outline:none;transition:all 0.2s;min-width:150px;}.stats-select:focus{border-color:#334155;box-shadow:0 0 0 3px rgba(51,65,85,0.1);}.stats-date-input{padding:8px 12px;border:1px solid #e0e0e0;border-radius:6px;font-size:14px;background:white;cursor:pointer;outline:none;transition:all 0.2s;}.stats-date-input:focus{border-color:#334155;box-shadow:0 0 0 3px rgba(51,65,85,0.1);}.stats-chart-container{flex:1;overflow-y:auto;overflow-x:auto;background:#fafbfc;padding:20px 24px;border-radius:0;min-height:0;}/* 楼栋容器 */
.buildings-container{display:flex;gap:30px;align-items:flex-end;justify-content:center;padding:20px;background:white;border-radius:8px;min-height:500px;}/* 单个楼栋 */
.building-column{display:flex;flex-direction:column;align-items:center;gap:8px;}/* 楼栋标题 */
.building-title{font-size:14px;font-weight:600;color:#333;padding:8px 12px;background:linear-gradient(135deg,#64748b 0%,#475569 100%);color:white;border-radius:6px;min-width:120px;text-align:center;margin-top:10px;}/* 楼层堆叠区域 */
.floors-stack{display:flex;flex-direction:column-reverse;gap:4px;align-items:stretch;}/* 单个楼层 */
.floor-row{display:flex;align-items:center;gap:8px;padding:6px 0;}/* 楼层标签 */
.floor-label{font-size:13px;font-weight:600;color:#555;min-width:60px;text-align:right;padding:4px 8px;background:#f1f3f5;border-radius:4px;}/* 料单格子容器 */
.floor-cells{display:flex;gap:4px;}/* 料单格子 */
.file-cell{width:35px;height:35px;border-radius:4px;cursor:pointer;transition:all 0.2s;border:2px solid rgba(255,255,255,0.5);position:relative;box-shadow:0 2px 4px rgba(0,0,0,0.1);}.file-cell:hover{transform:scale(1.15);box-shadow:0 4px 12px rgba(0,0,0,0.25);z-index:10;border-width:3px;}.file-cell.unprocessed{background:#ffeaa7;border-color:#fdcb6e;}.file-cell.processed{background:#74b9ff;border-color:#0984e3;}.file-cell.bound{background:#a29bfe;border-color:#6c5ce7;}.file-cell.poured{background:#00b894;border-color:#00a383;}/* ==================== 文件树图样式（参考形象进度：左侧楼层，右侧文件名称竖向排列） ==================== */

/* 文件树图容器 */
.buildings-tree-container{display:flex;gap:30px;align-items:flex-end;justify-content:center;padding:30px 20px;background:white;border-radius:8px;min-height:500px;}/* 单个楼栋树 */
.building-tree-column{display:flex;flex-direction:column;align-items:center;min-width:280px;max-width:350px;}/* 楼层堆叠区域（使用 column-reverse 实现从下往上，底部对齐） */
.tree-floors-stack{display:flex;flex-direction:column-reverse;gap:8px;width:100%;margin-bottom:16px;}/* 每个楼层的独立容器 */
.tree-floor-block{border:1px solid #e0e0e0;border-radius:6px;padding:8px;background:#f8f9fa;}/* 楼层行（参考形象进度的 floor-row） */
.tree-floor-row{display:flex;align-items:center;gap:12px;}/* 左侧：楼层标签（参考形象进度的 floor-label） */
.tree-floor-label{font-size:13px;font-weight:600;color:#555;min-width:60px;text-align:right;padding-right:8px;flex-shrink:0;display:flex;align-items:center;justify-content:flex-end;}/* 右侧：文件列表（竖向单列排列） */
.tree-files-list{display:flex;flex-direction:column;gap:4px;flex:1;min-width:0;}/* 文件名称 */
.tree-file-name{display:block;font-size:11px;padding:4px 8px;border-radius:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer;transition:all 0.2s;border:1px solid transparent;font-weight:500;line-height:1.4;text-align:center;}.tree-file-name:hover{transform:translateX(2px);box-shadow:0 2px 4px rgba(0,0,0,0.15);z-index:10;position:relative;}/* 加工状态颜色 */
.tree-file-name.unprocessed{background:#ffeaa7;color:#d63031;border-color:#fdcb6e;}.tree-file-name.processed{background:#74b9ff;color:#0984e3;border-color:#0984e3;}.tree-file-name.bound{background:#a29bfe;color:#6c5ce7;border-color:#6c5ce7;}.tree-file-name.poured{background:#00b894;color:white;border-color:#00a383;}/* 楼栋标题 */
.tree-building-title{font-size:14px;font-weight:600;color:#333;padding:10px 20px;background:linear-gradient(135deg,#64748b 0%,#475569 100%);color:white;border-radius:6px;min-width:120px;text-align:center;box-shadow:0 2px 8px rgba(0,0,0,0.1);margin-top:8px;}/* 图例 */
.stats-legend{display:flex;justify-content:center;gap:20px;margin-top:20px;padding:16px;background:#f8f9fa;border-radius:8px;}.legend-item{display:flex;align-items:center;gap:8px;}.legend-color{width:24px;height:24px;border-radius:4px;border:1px solid #e0e0e0;}.legend-text{font-size:13px;color:#666;font-weight:500;}/* 响应式设计 */
@media (max-width:768px){.toolbar{flex-wrap:wrap;gap:8px;}.review-actions{flex-wrap:wrap;}.weight-check-modal-content{width:95vw;max-width:95vw;}.weight-check-modal-content .modal-body{flex-direction:column;}.weight-check-left,.weight-check-right{flex:1 1 50% !important;min-height:300px;}}/* 重量清单对话框样式 */
.weight-modal-content{max-width:800px;width:90%;}.weight-list-container{overflow-x:auto;margin:16px 0;border:1px solid #e0e0e0;border-radius:6px;max-height:400px;overflow-y:auto;}.weight-table{width:100%;border-collapse:collapse;background:white;}.weight-table th{background:#f8f9fa;padding:10px 8px;text-align:center;font-size:13px;font-weight:600;color:#333;border-bottom:2px solid #e0e0e0;position:sticky;top:0;z-index:10;}.weight-table td{padding:8px;text-align:center;border-bottom:1px solid #f0f0f0;}.weight-table tbody tr:hover{background:#f8f9fa;}.weight-table input{width:100%;padding:6px 8px;border:1px solid #e0e0e0;border-radius:4px;font-size:13px;text-align:center;}.weight-table input:focus{outline:none;border-color:#334155;box-shadow:0 0 0 2px rgba(51,65,85,0.1);}.weight-table input[type="text"]{text-align:left;}/* 隐藏number输入框的上下箭头（spinner） */
.weight-table input[type="number"]{-moz-appearance:textfield;/* Firefox */}.weight-table input[type="number"]::-webkit-inner-spin-button,.weight-table input[type="number"]::-webkit-outer-spin-button{-webkit-appearance:none;/* Chrome,Safari,Edge */
  margin:0;}.weight-delete-btn{padding:4px 8px;background:#dc3545;color:white;border:none;border-radius:4px;cursor:pointer;font-size:12px;transition:all 0.2s;}.weight-delete-btn:hover{background:#c82333;transform:scale(1.05);}.add-row-btn{display:inline-flex;align-items:center;padding:8px 16px;background:#28a745;color:white;border:none;border-radius:6px;cursor:pointer;font-size:13px;transition:all 0.2s;margin-bottom:12px;}.add-row-btn:hover{background:#218838;transform:translateY(-1px);box-shadow:0 4px 8px rgba(40,167,69,0.3);}.weight-total{text-align:right;font-size:15px;color:#333;padding:12px;background:#f8f9fa;border-radius:6px;border:1px solid #e0e0e0;}.weight-total strong{color:#334155;font-size:18px;margin-left:8px;}/* 总量统计对话框全屏样式 */
#total-stats-modal .stats-modal-content,#weight-diff-stats-modal .stats-modal-content{max-width:100%;width:100%;max-height:100vh;height:100vh;margin:0;border-radius:0;display:flex;flex-direction:column;}#total-stats-modal .modal-header,#weight-diff-stats-modal .modal-header{flex-shrink:0;}#total-stats-modal .modal-body,#weight-diff-stats-modal .modal-body{flex:1;overflow:hidden;padding:0;display:flex;flex-direction:column;min-height:0;}#total-stats-modal .stats-filter,#weight-diff-stats-modal .stats-filter{position:relative;background:white;z-index:10;padding:20px 30px 16px;margin:0;border-bottom:2px solid #e0e0e0;flex-shrink:0;}/* 汇总信息卡片 - 放在表格上方 */
.total-stats-summary-wrapper{flex-shrink:0;padding:16px 30px;background:white;margin:0;}/* 表格容器 - 延伸到底部，占据剩余空间 */
.total-stats-table-wrapper{flex:1;overflow-y:auto;overflow-x:auto;padding:0 30px 20px;min-height:0;background:white;}.total-stats-table{width:100%;border-collapse:collapse;background:white;border:1px solid #e8eaf0;border-radius:8px;overflow:hidden;font-size:13px;box-shadow:0 1px 3px rgba(0,0,0,0.05);}.total-stats-table th{background:#ffffff;color:#2c3e50;padding:16px 12px;text-align:center;font-size:13px;font-weight:600;border-bottom:2px solid #334155;white-space:nowrap;position:sticky;top:0;z-index:5;letter-spacing:0.5px;box-shadow:0 2px 4px rgba(0,0,0,0.03);}.total-stats-table td{padding:12px 10px;text-align:center;border-bottom:1px solid #f5f6f8;font-size:12px;white-space:nowrap;color:#4a5568;}.total-stats-table tbody tr:hover{background:#f7f8fc;transition:background 0.2s ease;}.total-stats-table tbody tr:last-child td{border-bottom:none;}.total-stats-summary{padding:16px 20px;background:linear-gradient(135deg,#f8f9fa 0%,#e9ecef 100%);border-radius:8px;border:1px solid #e0e0e0;box-shadow:0 2px 8px rgba(0,0,0,0.08);}.total-stats-summary h4{margin:0 0 12px 0;font-size:15px;font-weight:600;color:#334155;display:flex;align-items:center;gap:8px;}.total-stats-summary h4::before{content:'';display:inline-block;width:4px;height:16px;background:linear-gradient(135deg,#64748b 0%,#475569 100%);border-radius:2px;}.total-stats-summary-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;}.total-stats-summary-item{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;background:white;border-radius:6px;border:1px solid #e0e0e0;transition:all 0.2s;}.total-stats-summary-item:hover{border-color:#334155;box-shadow:0 2px 8px rgba(51,65,85,0.15);transform:translateY(-1px);}.total-stats-summary-label{font-size:13px;color:#666;}.total-stats-summary-value{font-size:16px;font-weight:600;color:#334155;}/* 审核索引弹窗样式 */
.annotation-index-modal-content{max-width:600px;width:90%;max-height:80vh;}.annotation-index-modal-content .modal-body{padding:20px;max-height:calc(80vh - 80px);overflow:hidden;}/* 审核索引列表样式 */
.annotation-index-list{max-height:calc(80vh - 120px);overflow-y:auto;}.annotation-index-item{padding:10px 14px;margin-bottom:8px;background:white;border:1px solid #e0e0e0;border-radius:6px;cursor:pointer;transition:all 0.2s;}.annotation-index-item:hover{border-color:#334155;box-shadow:0 2px 8px rgba(51,65,85,0.15);background-color:#f8f9ff;}.annotation-index-item:active{background-color:#f0f2ff;}.annotation-index-page{font-size:12px;color:#999;margin-bottom:6px;font-weight:500;display:flex;align-items:center;gap:8px;}.annotation-index-text{font-size:14px;color:#333;line-height:1.5;word-break:break-word;font-weight:500;}.annotation-index-meta{display:inline-flex;align-items:center;gap:8px;font-size:11px;color:#999;}.annotation-index-color{display:inline-block;width:10px;height:10px;border-radius:2px;border:1px solid #ddd;vertical-align:middle;margin-right:3px;}/* 审核清单样式 */
/* 审核清单弹窗 - 去除遮罩 */
.checklist-modal-no-backdrop{background:transparent !important;pointer-events:none;}.checklist-modal-no-backdrop .modal-content{pointer-events:auto;}/* 审核清单弹窗 - 可拖动、可调整大小 */
#checklist-modal .checklist-draggable{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);max-width:900px;width:90%;max-height:85vh;height:85vh;margin:0;border-radius:12px;display:flex;flex-direction:column;box-shadow:0 4px 20px rgba(0,0,0,0.15);}.checklist-drag-header{cursor:move;user-select:none;}.checklist-drag-header:active{cursor:grabbing !important;}/* 调整大小手柄 */
.checklist-resize-handle{position:absolute;bottom:0;right:0;width:20px;height:20px;cursor:nwse-resize;background:linear-gradient(135deg,transparent 0%,transparent 40%,#ccc 40%,#ccc 45%,transparent 45%,transparent 55%,#ccc 55%,#ccc 60%,transparent 60%);border-radius:0 0 12px 0;z-index:10;}.checklist-resize-handle:hover{background:linear-gradient(135deg,transparent 0%,transparent 40%,#999 40%,#999 45%,transparent 45%,transparent 55%,#999 55%,#999 60%,transparent 60%);}#checklist-modal .modal-header{flex-shrink:0;}#checklist-modal .modal-body{flex:1;overflow:hidden;padding:0;display:flex;flex-direction:column;min-height:0;}/* 云端备份列表弹窗 - 不占满屏幕 */
#backup-list-modal .stats-modal-content{max-width:900px;width:90%;max-height:85vh;height:85vh;margin:auto;border-radius:12px;display:flex;flex-direction:column;}#backup-list-modal .modal-header{flex-shrink:0;}#backup-list-modal .stats-modal-body{flex:1;overflow:hidden;padding:0;display:flex;flex-direction:column;min-height:0;}#backup-list-modal .stats-filter{flex-shrink:0;}#backup-list-modal .total-stats-table-wrapper{flex:1;overflow-y:auto;max-height:none !important;height:100%;}.checklist-container{flex:1;overflow-y:auto;height:100%;min-height:0;}.checklist-section{border-bottom:1px solid #e0e0e0;}.checklist-section:last-child{border-bottom:none;}.checklist-title{padding:16px 24px;background:linear-gradient(135deg,#64748b 0%,#475569 100%);color:white;font-size:16px;font-weight:600;cursor:pointer;display:flex;align-items:center;justify-content:space-between;transition:all 0.3s;}.checklist-title:hover{background:linear-gradient(135deg,#5568d3 0%,#6a3f8f 100%);}.checklist-toggle{transition:transform 0.3s;}.checklist-toggle.collapsed{transform:rotate(-90deg);}.checklist-content{padding:16px 24px;background:#f8f9fa;}.checklist-item{padding:12px 0;border-bottom:1px solid #e0e0e0;display:flex;align-items:flex-start;gap:12px;}.checklist-item:last-child{border-bottom:none;}.checklist-bullet{flex-shrink:0;width:6px;height:6px;background:#334155;border-radius:50%;margin-top:8px;}.checklist-text{flex:1;font-size:14px;line-height:1.6;color:#333;}.checklist-images{margin-top:16px;display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px;}.checklist-image-item{border-radius:8px;overflow:hidden;box-shadow:0 2px 8px rgba(0,0,0,0.1);cursor:pointer;transition:all 0.3s;}.checklist-image-item:hover{transform:translateY(-4px);box-shadow:0 4px 16px rgba(0,0,0,0.15);}.checklist-image{width:100%;height:auto;display:block;}/* 文字标注历史记录样式 */
.text-annotation-history{margin-top:16px;border-top:1px solid #e0e0e0;padding-top:12px;}.text-annotation-history-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;}.text-annotation-clear-history{font-size:12px;color:#999;background:none;border:none;cursor:pointer;padding:4px 8px;border-radius:4px;transition:all 0.2s;}.text-annotation-clear-history:hover{color:#666;background:#f5f5f5;}.text-annotation-history-list{max-height:200px;overflow-y:auto;border:1px solid #e0e0e0;border-radius:4px;background:#fafafa;}.text-annotation-history-item{padding:8px 12px;cursor:pointer;border-bottom:1px solid #f0f0f0;font-size:13px;color:#333;transition:all 0.2s;word-break:break-all;display:flex;justify-content:space-between;align-items:center;gap:8px;}.text-annotation-history-item:last-child{border-bottom:none;}.text-annotation-history-item:hover{background:#e8f4f8;color:#1890ff;}.text-annotation-history-item:active{background:#d4edff;}.text-annotation-history-text{flex:1;min-width:0;word-break:break-all;}.text-annotation-history-delete{flex-shrink:0;width:20px;height:20px;display:flex;align-items:center;justify-content:center;font-size:18px;color:#999;cursor:pointer;border-radius:4px;transition:all 0.2s;line-height:1;font-weight:bold;}.text-annotation-history-delete:hover{color:#ff4d4f;background:#fff1f0;}.text-annotation-history-delete:active{background:#ffccc7;}