.image-uploader .message{border-radius:4px;margin-bottom:12px;padding:8px 12px;font-size:14px}.image-uploader .message.message-success{color:#52c41a;background:#f6ffed;border:1px solid #b7eb8f}.image-uploader .message.message-error{color:#ff4d4f;background:#fff2f0;border:1px solid #ffccc7}.image-uploader .message.message-warning{color:#faad14;background:#fffbe6;border:1px solid #ffe58f}.image-uploader .message.message-info{color:#1890ff;background:#e6f7ff;border:1px solid #91d5ff}.image-uploader .file-input{display:none}.image-uploader .upload-methods{margin-bottom:16px}.image-uploader .upload-button{cursor:pointer;background:#fafafa;border:2px dashed #d9d9d9;border-radius:8px;align-items:center;gap:8px;padding:8px 16px;font-size:14px;transition:all .3s;display:flex}.image-uploader .upload-button:hover:not(.disabled){background:#f0f8ff;border-color:#1890ff}.image-uploader .upload-button.disabled{opacity:.5;cursor:not-allowed}.image-uploader .upload-button .upload-icon{font-size:16px}.image-uploader .upload-button .upload-text{text-align:left}.image-uploader .upload-button .upload-text .upload-hint{color:#999;font-size:12px}.image-uploader .upload-actions{gap:8px;margin-bottom:16px;display:flex}.image-uploader .upload-actions button{cursor:pointer;background:#fff;border:1px solid #d9d9d9;border-radius:4px;padding:6px 12px;font-size:14px;transition:all .3s}.image-uploader .upload-actions button:disabled{opacity:.5;cursor:not-allowed}.image-uploader .upload-actions button.upload-start-btn{color:#fff;background:#1890ff;border-color:#1890ff}.image-uploader .upload-actions button.upload-start-btn:hover:not(:disabled){background:#40a9ff;border-color:#40a9ff}.image-uploader .upload-actions button.clear-btn{color:#ff4d4f;background:#fff;border-color:#ff4d4f}.image-uploader .upload-actions button.clear-btn:hover:not(:disabled){color:#fff;background:#ff4d4f}.image-uploader .file-list .file-grid{grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:12px;display:grid}.image-uploader .file-list .file-item{background:#fff;border:1px solid #e8e8e8;border-radius:8px;transition:all .3s;position:relative;overflow:hidden}.image-uploader .file-list .file-item:hover{border-color:#1890ff;box-shadow:0 2px 8px rgba(24,144,255,.2)}.image-uploader .file-list .file-item .file-preview{width:120px;height:120px;position:relative;overflow:hidden}.image-uploader .file-list .file-item .file-preview .file-thumbnail{object-fit:cover;width:100%;height:100%}.image-uploader .file-list .file-item .file-preview .file-placeholder{color:#d9d9d9;font-size:32px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.image-uploader .file-list .file-item .file-preview .delete-btn{color:#fff;cursor:pointer;z-index:10;background:rgba(255,77,79,.9);border:none;border-radius:50%;justify-content:center;align-items:center;width:20px;height:20px;font-size:12px;font-weight:700;transition:all .3s;display:flex;position:absolute;top:4px;right:4px}.image-uploader .file-list .file-item .file-preview .delete-btn:hover:not(:disabled){background:#ff4d4f;transform:scale(1.1)}.image-uploader .file-list .file-item .file-preview .delete-btn:disabled{opacity:.5;cursor:not-allowed}.image-uploader .file-list .file-item .file-preview .upload-progress-overlay{color:#fff;background:rgba(0,0,0,.7);border-radius:4px;padding:8px 12px;font-size:12px;font-weight:700;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.image-uploader .file-list .file-item .file-preview .error-overlay{color:#fff;background:rgba(255,77,79,.9);border-radius:4px;padding:8px 12px;font-size:12px;font-weight:700;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.image-uploader .file-list .file-item .file-name{color:#666;text-align:center;white-space:nowrap;text-overflow:ellipsis;background:#fafafa;padding:8px;font-size:12px;overflow:hidden}.image-uploader .status-icon{border-radius:50%;justify-content:center;align-items:center;width:20px;height:20px;font-size:12px;font-weight:700;display:flex}.image-uploader .status-icon.success{color:#fff;background:#52c41a}.image-uploader .status-icon.error{color:#fff;background:#ff4d4f}.image-uploader .status-icon.pending{color:#fff;background:#1890ff}.image-uploader .upload-progress{background:#1890ff;border-radius:50%;justify-content:center;align-items:center;width:20px;height:20px;display:flex}.image-uploader .upload-progress .progress-text{color:#fff;font-size:10px;font-weight:700}@media (max-width:768px){.image-uploader .file-list .file-grid{grid-template-columns:repeat(auto-fill,minmax(100px,1fr));gap:8px}.image-uploader .file-item .file-preview{width:100px;height:100px}}
