/* ======================================== * 匯入參加人員頁面專屬樣式 * * 共同樣式已移至 Site.css: * - 搜尋面板 (.search-panel, .search-row, .search-field-inline, .search-label-inline, .search-input) * ======================================== */ /* 上傳面板 */ .upload-panel { display: flex; flex-direction: column; gap: var(--spacing-lg); } /* 上傳區域 */ .upload-area { border: 2px dashed #ddd; border-radius: 8px; padding: var(--spacing-lg); text-align: center; background: #f9f9f9; transition: all 0.3s ease; } .upload-area.dragging { border-color: #0066cc; background: #f0f7ff; } .upload-area:hover { border-color: #0066cc; } /* 上傳文字 */ .upload-text { display: block; color: #999; font-size: 14px; margin-top: 8px; } /* 檔案資訊 */ .file-info { display: flex; align-items: center; justify-content: center; gap: 8px; margin-top: var(--spacing-md); padding: 12px; background: white; border: 1px solid #ddd; border-radius: 4px; } .file-name { font-weight: 500; color: #333; } .file-size { color: #999; font-size: 12px; } /* 各步驟區域 */ .upload-section, .preview-section, .import-section, .result-section { background: white; border: 1px solid #ddd; border-radius: 8px; padding: var(--spacing-lg); } /* 區域標題 */ .section-title { margin: 0 0 var(--spacing-md) 0; font-size: 16px; font-weight: 600; color: #333; } /* 驗證摘要 */ .validation-summary { margin-bottom: var(--spacing-md); } .error-box { background: #fff5f5; border: 1px solid #ffdbdb; border-radius: 4px; padding: var(--spacing-md); } .error-title { color: #d32f2f; font-weight: 600; margin-bottom: 8px; } .error-list { max-height: 200px; overflow-y: auto; } .error-item { color: #d32f2f; font-size: 13px; margin-bottom: 4px; padding-left: 20px; position: relative; } .error-item::before { content: '\2717 '; /* ✗ */ position: absolute; left: 0; color: #d32f2f; } /* 預覽資訊 */ .preview-info { background: #f0f7ff; border: 1px solid #d4e4f9; border-radius: 4px; padding: 12px; margin-bottom: var(--spacing-md); color: #0066cc; font-size: 14px; font-weight: 500; } /* 預覽表格 */ .preview-table-wrapper { overflow-x: auto; max-height: 500px; overflow-y: auto; border: 1px solid #ddd; border-radius: 4px; } .preview-table { width: 100%; border-collapse: collapse; margin-top: 0; border: none; font-size: 14px; } .preview-table thead { background: #f5f5f5; position: sticky; top: 0; z-index: 10; } .preview-table th, .preview-table td { padding: 10px 12px; text-align: left; border: 1px solid #ddd; } .preview-table th { font-weight: 600; color: #333; } .preview-table tbody tr:hover { background: #f9f9f9; } .preview-table tbody tr.error-row { background: #fff5f5; } .preview-table .text-center { text-align: center; } /* 狀態徽章 */ .status-badge { display: inline-block; padding: 2px 8px; border-radius: 3px; font-size: 13px; font-weight: 600; } .status-badge.ok { background: #e6f7e6; color: #2e7d32; } .status-badge.error { background: #ffebee; color: #d32f2f; } /* 匯入選項 */ .import-options { background: #f9f9f9; border: 1px solid #e0e0e0; border-radius: 4px; padding: var(--spacing-md); margin-bottom: var(--spacing-md); } .checkbox-label { display: flex; align-items: center; gap: 8px; cursor: pointer; font-size: 14px; color: #333; user-select: none; } .checkbox-label input[type="checkbox"] { cursor: pointer; width: 18px; height: 18px; accent-color: #0066cc; } .checkbox-label input[type="checkbox"]:disabled { opacity: 0.5; cursor: not-allowed; } .checkbox-label:hover { color: #0066cc; } /* 匯入動作 */ .import-section { display: flex; gap: var(--spacing-md); flex-wrap: wrap; } .import-section .btn { flex: 1; min-width: 150px; } /* 結果框 */ .result-section { margin-top: var(--spacing-lg); } .result-box { border-left: 4px solid #ddd; padding: var(--spacing-md); border-radius: 4px; } .result-box.success { background: #f1f8f4; border-color: #4caf50; } .result-box.error { background: #fff5f5; border-color: #d32f2f; } .result-title { font-weight: 600; font-size: 16px; margin-bottom: 8px; } .result-box.success .result-title { color: #2e7d32; } .result-box.error .result-title { color: #d32f2f; } .result-message { color: #666; font-size: 14px; margin-bottom: 8px; } .result-details { font-size: 13px; color: #999; } .result-details span { margin-right: 16px; } /* 跳過記錄部分 */ .skipped-records { margin-top: var(--spacing-md); padding-top: var(--spacing-md); border-top: 1px solid #ddd; } .skipped-title { color: #f57c00; font-weight: 600; margin-bottom: 8px; font-size: 14px; } .skipped-list { max-height: 150px; overflow-y: auto; } .skipped-item { color: #f57c00; font-size: 13px; margin-bottom: 4px; padding-left: 20px; position: relative; } .skipped-item::before { content: '⊘ '; position: absolute; left: 0; }