.modalOverlay { position: fixed; top: 0; left: 0; right: 0; bottom: 0; color: #333; background-color: rgba(0, 0, 0, 0.5); display: flex; justify-content: center; align-items: center; z-index: 1000; animation: fadeIn 0.3s ease-out; } @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } } .modalContent { background-color: white; border-radius: 8px; width: 800px; max-width: 90%; max-height: 80vh; overflow: hidden; box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); transform: translateY(-20px); animation: slideUp 0.3s ease-out forwards; position: relative; } @keyframes slideUp { from { transform: translateY(20px); opacity: 0; } to { transform: translateY(0); opacity: 1; } } .modalHeader { padding: 1rem; border-bottom: 1px solid #eee; display: flex; justify-content: space-between; align-items: center; background-color: #f8f9fa; } .closeButton { background: none; border: none; color: #962d21; font-size: 1.5rem; cursor: pointer; transition: transform 0.2s, color 0.2s; } .closeButton:hover:not(:disabled) { transform: scale(1.1); color: #c0392b; } .closeButton:disabled { opacity: 0.5; cursor: not-allowed; } .modalBody { padding: 1rem; max-height: 70vh; overflow-y: auto; } .authSection { margin-bottom: 1rem; padding: 1rem; background-color: #f8f9fa; border-radius: 6px; animation: fadeIn 0.5s ease-out; } .accountInfo { margin-bottom: 0.5rem; font-weight: 500; } .loginButton, .changeAccountButton, .newFileButton { padding: 0.5rem 1rem; background-color: #4CAF50; color: white; border: none; border-radius: 4px; cursor: pointer; transition: background-color 0.2s, transform 0.2s; } .loginButton:hover:not(:disabled), .changeAccountButton:hover:not(:disabled), .newFileButton:hover:not(:disabled) { background-color: #3e8e41; transform: translateY(-1px); } .loginButton:disabled, .changeAccountButton:disabled, .newFileButton:disabled { opacity: 0.6; cursor: not-allowed; transform: none; } .changeAccountButton { background-color: #f0ad4e; } .changeAccountButton:hover:not(:disabled) { background-color: #ec971f; } .loading, .noFiles { text-align: center; padding: 2rem; color: #666; } .fileListContainer { margin-top: 1rem; animation: fadeIn 0.5s ease-out; } .fileListHeader { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1rem; padding-bottom: 0.5rem; border-bottom: 1px solid #eee; } .projectTitle { cursor: pointer; border-bottom: 1px dashed #000; color: #333; } .fileList { display: grid; grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); gap: 1rem; } .fileItem { border: 1px solid #ddd; border-radius: 8px; padding: 1rem; display: flex; flex-direction: column; gap: 0.75rem; background: #fff; height: 100%; transition: transform 0.2s, box-shadow 0.2s; } .fileItem:hover { transform: translateY(-3px); box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); } .thumbnailContainer { position: relative; aspect-ratio: 4/3; max-height: 150px; overflow: hidden; border-radius: 4px; background-color: #f0f0f0; transition: all 0.3s ease; } .thumbnail { width: 100%; height: 100%; border-radius: 4px; object-fit: contain; background-color: #f0f0f0; transition: transform 0.3s ease; } .thumbnail:hover { transform: scale(1.05); } .thumbnailPlaceholder { width: 100%; height: 100%; background-color: #f0f0f0; display: flex; align-items: center; justify-content: center; border-radius: 4px; color: #666; } .fileName { margin: 0; text-align: center; font-weight: bold; color: #333; } .linkContainer { display: flex; flex-direction: column; gap: 0.25rem; margin-bottom: 0.5rem; } .linkHeader { display: flex; gap: 8px; align-items: center; margin-bottom: 8px; flex-wrap: wrap; } .copyButton { padding: 4px 8px; font-size: 12px; background-color: #50545e; color: white; border: none; border-radius: 4px; cursor: pointer; transition: background-color 0.2s; } .copyButton:hover:not(:disabled) { background-color: #3d4048; } .copyButton:disabled { opacity: 0.6; cursor: not-allowed; } .linkUrl { font-size: 0.9em; word-break: break-all; color: #1155cc; text-decoration: none; border-bottom: 1px solid #1155cc; transition: color 0.2s; } .linkUrl:hover { color: #0d3d8b; } .buttonGroup { display: grid; grid-template-columns: 1fr 1fr; gap: 0.5rem; } .actionButton { width: 100%; padding: 0.5rem; border: none; border-radius: 4px; cursor: pointer; transition: all 0.2s; } .actionButton:hover:not(:disabled) { transform: translateY(-1px); box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); } .actionButton:disabled { opacity: 0.6; cursor: not-allowed; transform: none; box-shadow: none; } .shareButton { background-color: #4CAF50; color: white; } .shareButton:hover:not(:disabled) { background-color: #3e8e41; } .deleteButton { background-color: #ff4444; color: white; } .deleteButton:hover:not(:disabled) { background-color: #cc0000; } .newFileSection { margin-bottom: 1rem; padding: 1rem; background-color: #f8f9fa; border-radius: 6px; } .newFileInputGroup { display: flex; flex-wrap: wrap; gap: 0.5rem; align-items: center; } .newFileNameInput { flex: 1; min-width: 200px; padding: 0.5rem; border: 1px solid #ddd; border-radius: 4px; transition: border-color 0.2s; } .newFileNameInput:focus { border-color: #4CAF50; outline: none; } .newFileNameInput:disabled { background-color: #f0f0f0; } .permissionDropdown { display: flex; align-items: center; gap: 0.5rem; } .permissionDropdown select { padding: 0.5rem; border: 1px solid #ddd; border-radius: 4px; background-color: white; transition: border-color 0.2s; } .permissionDropdown select:focus { border-color: #4CAF50; outline: none; } .permissionDropdown select:disabled { background-color: #f0f0f0; } .newFileSaveButton, .newFileCancelButton { padding: 0.5rem 1rem; border: none; border-radius: 4px; cursor: pointer; transition: all 0.2s; } .newFileSaveButton { background-color: #4CAF50; color: white; } .newFileSaveButton:hover:not(:disabled) { background-color: #3e8e41; transform: translateY(-1px); } .newFileSaveButton:disabled { opacity: 0.6; cursor: not-allowed; } .newFileCancelButton { background-color: #f0f0f0; color: #333; } .newFileCancelButton:hover:not(:disabled) { background-color: #e0e0e0; transform: translateY(-1px); } .newFileCancelButton:disabled { opacity: 0.6; cursor: not-allowed; } .processingOverlay { position: absolute; top: 0; left: 0; right: 0; bottom: 0; background-color: rgba(255, 255, 255, 0.8); display: flex; flex-direction: column; justify-content: center; align-items: center; z-index: 10; animation: fadeIn 0.3s ease-out; } .spinner { width: 40px; height: 40px; border: 4px solid rgba(0, 0, 0, 0.1); border-radius: 50%; border-top-color: #4CAF50; animation: spin 1s ease-in-out infinite; margin-bottom: 1rem; } @keyframes spin { to { transform: rotate(360deg); } } .saveButton { transition: all 0.2s; } .saveButton:hover { transform: translateY(-1px); box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); } .permissionDropdown { margin-top: 10px; padding: 5px; background-color: #f5f5f5; border-radius: 4px; } .permissionDropdown label { margin-right: 5px; font-size: 12px; } .permissionDropdown select { padding: 3px; border: 1px solid #ddd; border-radius: 3px; font-size: 12px; }