/* Dialog animations */ @keyframes modalFadeIn { from { opacity: 0; } to { opacity: 1; } } @keyframes modalSlideIn { from { transform: scale(0.95) translateY(-10px); opacity: 0; } to { transform: scale(1) translateY(0); opacity: 1; } } /* Dialog (Rename / Move / Confirm) — Modern Style */ .rename-dialog { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: var(--color-overlay-light); display: flex; align-items: center; justify-content: center; z-index: 3000; backdrop-filter: blur(2px); animation: modalFadeIn 0.2s ease; } .rename-dialog-content { background-color: var(--color-bg-surface); border-radius: var(--radius-3xl); width: 420px; max-width: 90%; box-shadow: 0 20px 60px var(--color-shadow-2xl); overflow: hidden; animation: modalSlideIn 0.25s ease; } .rename-dialog-header { font-size: 17px; font-weight: var(--weight-semibold); color: var(--color-text-heading); padding: var(--space-5) var(--space-6); border-bottom: 1px solid var(--color-border); display: flex; align-items: center; gap: var(--space-3); } .rename-dialog-body { padding: var(--space-6); } .rename-dialog input { width: 100%; padding: var(--space-3) var(--space-4); border: 2px solid var(--color-border); border-radius: var(--radius-xl); font-size: 15px; background: var(--color-bg-hover); color: var(--color-text-heading); transition: all 0.15s ease; outline: none; } .rename-dialog input:focus { border-color: var(--color-accent); background: var(--color-bg-surface); box-shadow: 0 0 0 3px var(--color-accent-ring); } .rename-dialog input--error { border-color: var(--color-error-text); } .rename-dialog-buttons { display: flex; justify-content: flex-end; gap: var(--space-3); padding: var(--space-4) var(--space-6); background: var(--color-bg-hover); border-top: 1px solid var(--color-border); } .rename-dialog-buttons .btn-outline { background: transparent; color: var(--color-text-secondary); border: 1px solid var(--color-border-medium); } .rename-dialog-buttons .btn-outline:hover { background: var(--color-bg-alt); border-color: var(--color-text-placeholder); } /* Share Dialog — Modern Style */ .share-dialog { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: var(--color-overlay-light); display: flex; justify-content: center; align-items: center; z-index: 3000; backdrop-filter: blur(2px); animation: modalFadeIn 0.2s ease; } .share-dialog-content { background-color: var(--color-bg-surface); border-radius: var(--radius-3xl); width: 480px; max-width: 90%; box-shadow: 0 20px 60px var(--color-shadow-2xl); overflow: hidden; animation: modalSlideIn 0.25s ease; max-height: 85vh; overflow-y: auto; } .share-dialog-header { font-size: 17px; font-weight: var(--weight-semibold); color: var(--color-text-heading); padding: var(--space-5) var(--space-6); border-bottom: 1px solid var(--color-border); display: flex; align-items: center; gap: var(--space-3); } .share-dialog input, .share-dialog textarea { width: 100%; padding: var(--space-2-5) var(--space-3-5); border: 2px solid var(--color-border); border-radius: var(--radius-xl); font-size: var(--text-base); background: var(--color-bg-input); color: var(--color-text-heading); transition: all 0.15s ease; outline: none; } .share-dialog input:focus, .share-dialog textarea:focus { border-color: var(--color-accent); background: var(--color-bg-surface); box-shadow: 0 0 0 3px var(--color-accent-ring); } .share-dialog-buttons { display: flex; justify-content: flex-end; gap: var(--space-3); padding: var(--space-4) var(--space-6); background: var(--color-bg-hover); border-top: 1px solid var(--color-border); } .shared-item-info { padding: var(--space-3) var(--space-6); background: var(--color-bg-hover); border-bottom: 1px solid var(--color-border); font-size: var(--text-base); } .share-options { padding: var(--space-5) var(--space-6) var(--space-5); } .share-options > #share-confirm-btn { display: block; margin-left: auto; margin-top: var(--space-4); } .share-options h3, #existing-shares-section h3, #new-share-section h3 { font-size: var(--text-sm); font-weight: var(--weight-semibold); margin-bottom: var(--space-2-5); color: var(--color-text-secondary); text-transform: uppercase; letter-spacing: 0.5px; } #existing-shares-section, #new-share-section { padding: 0 var(--space-6); } .share-dialog .form-group { padding: 0; } /* Shared View Dialog (edit/notification dialogs inside sharedView component) */ .shared-dialog { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: var(--color-overlay-light); display: flex; justify-content: center; align-items: center; z-index: 3000; backdrop-filter: blur(2px); animation: modalFadeIn 0.2s ease; } .shared-dialog-content { background-color: var(--color-bg-surface); border-radius: var(--radius-3xl); width: 480px; max-width: 90%; box-shadow: 0 20px 60px var(--color-shadow-2xl); overflow: hidden; animation: modalSlideIn 0.25s ease; max-height: 85vh; overflow-y: auto; padding: 0; } .shared-dialog-header { font-size: 17px; font-weight: var(--weight-semibold); color: var(--color-text-heading); padding: var(--space-5) var(--space-6); border-bottom: 1px solid var(--color-border); display: flex; align-items: center; gap: var(--space-3); } .shared-dialog-header .close-dialog-btn { margin-left: auto; background: none; border: none; font-size: 22px; cursor: pointer; color: var(--color-text-muted); padding: var(--space-1) var(--space-2); border-radius: var(--radius-md); transition: all 0.15s; } .shared-dialog-header .close-dialog-btn:hover { background: var(--color-bg-empty); color: var(--color-text-heading); } .shared-dialog .share-link-section, .shared-dialog .share-permissions-section, .shared-dialog .share-password-section, .shared-dialog .share-expiration-section, .shared-dialog .notification-form { padding: var(--space-4) var(--space-6); } .shared-dialog .share-link-section label, .shared-dialog .share-permissions-section h4, .shared-dialog .notification-form label { display: block; font-weight: var(--weight-semibold); margin-bottom: var(--space-2); color: var(--color-text); font-size: var(--text-base); } .shared-dialog .share-link-input { display: flex; gap: var(--space-2); } .shared-dialog .share-link-input input { flex: 1; padding: var(--space-2) var(--space-3); border: 2px solid var(--color-border); border-radius: var(--radius-lg); font-size: var(--text-sm); background: var(--color-bg-hover); color: var(--color-text-heading); } .shared-dialog .share-permissions-section label, .shared-dialog .share-password-section label, .shared-dialog .share-expiration-section label { display: flex; align-items: center; gap: var(--space-2); margin-bottom: var(--space-2); font-size: var(--text-base); color: var(--color-text-secondary); } .shared-dialog .password-input-group { display: flex; gap: var(--space-2); margin-top: var(--space-2); } .shared-dialog .password-input-group input { flex: 1; padding: var(--space-2) var(--space-3); border: 2px solid var(--color-border); border-radius: var(--radius-lg); font-size: var(--text-sm); background: var(--color-bg-hover); } .shared-dialog .share-expiration-section input[type="date"] { padding: var(--space-2) var(--space-3); border: 2px solid var(--color-border); border-radius: var(--radius-lg); font-size: var(--text-sm); background: var(--color-bg-hover); margin-top: var(--space-2); } .shared-dialog .share-actions, .shared-dialog .notification-actions { display: flex; justify-content: flex-end; gap: var(--space-3); padding: var(--space-4) var(--space-6); background: var(--color-bg-hover); border-top: 1px solid var(--color-border); } .shared-dialog .notification-form input, .shared-dialog .notification-form textarea { width: 100%; padding: var(--space-2-5) var(--space-3-5); border: 2px solid var(--color-border); border-radius: var(--radius-xl); font-size: var(--text-base); background: var(--color-bg-hover); color: var(--color-text-heading); outline: none; transition: all 0.15s ease; box-sizing: border-box; } .shared-dialog .notification-form input:focus, .shared-dialog .notification-form textarea:focus { border-color: var(--color-accent); background: var(--color-bg-surface); box-shadow: 0 0 0 3px var(--color-accent-ring); } .shared-dialog .notification-form .form-group { padding: 0; margin-bottom: 15px; } /* Move dialog breadcrumb navigation */ .move-dialog-breadcrumb { display: none; /* Hidden by default, shown via JS when navigating into subfolders */ align-items: center; flex-wrap: wrap; gap: var(--space-1); padding: var(--space-2) var(--space-3); background: var(--color-bg-hover); border-radius: var(--radius-lg); margin-bottom: var(--space-3); font-size: var(--text-sm); overflow-x: auto; } .move-breadcrumb-item { color: var(--color-text-secondary); cursor: pointer; padding: var(--space-0-5) var(--space-1-5); border-radius: var(--radius-sm); transition: all 0.15s ease; white-space: nowrap; } .move-breadcrumb-item:hover { background: var(--color-bg-hover); color: var(--color-text-heading); } .move-breadcrumb-item.current { color: var(--color-accent); font-weight: var(--weight-semibold); cursor: default; } .move-breadcrumb-separator { color: var(--color-text-placeholder); margin: 0 var(--space-0-5); } /* Folder select items in move dialog */ .folder-select-item { display: flex; align-items: center; gap: var(--space-2-5); padding: var(--space-2-5) var(--space-3-5); border-radius: var(--radius-lg); cursor: pointer; transition: all 0.15s ease; color: var(--color-text-secondary); font-size: var(--text-base); } .folder-select-item:hover { background-color: var(--color-bg-hover); } .folder-select-item.selected { background-color: var(--color-accent-ring); color: var(--color-accent); font-weight: var(--weight-semibold); } .folder-select-item i { color: var(--color-cal-1); font-size: var(--text-md); } .folder-select-item.selected i { color: var(--color-accent); } /* "Select this folder" option */ .folder-select-item.folder-select-current { background-color: var(--color-success-ring); color: var(--color-success-text-strong); font-weight: var(--weight-medium); } .folder-select-item.folder-select-current:hover { background-color: var(--color-success-ring-dark); } .folder-select-item.folder-select-current i { color: var(--color-success-border); } /* Navigate up option */ .folder-select-item.folder-navigate-up { color: var(--color-text-muted); font-style: italic; } .folder-select-item.folder-navigate-up:hover { color: var(--color-text-secondary); } .folder-select-item.folder-navigate-up i { color: var(--color-text-placeholder); } /* Folder navigation item (click to enter) */ .folder-select-item.folder-navigate { justify-content: space-between; } .folder-select-item.folder-navigate .folder-name { flex: 1; } .folder-select-item.folder-navigate .folder-navigate-icon { color: var(--color-text-placeholder); font-size: var(--text-xs); opacity: 0; transition: opacity 0.15s ease; } .folder-select-item.folder-navigate:hover .folder-navigate-icon { opacity: 1; } /* Empty folder message */ .folder-select-empty { display: flex; align-items: center; justify-content: center; gap: var(--space-2); padding: var(--space-6); color: var(--color-text-placeholder); font-size: var(--text-base); } .folder-select-empty i { font-size: var(--text-xl); } /* Playlist track count in selector */ .playlist-track-count { margin-left: auto; font-size: var(--text-xs); color: var(--color-text-muted); } /* Custom confirm dialog */ .confirm-dialog { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: var(--color-overlay-light); display: flex; align-items: center; justify-content: center; z-index: 4000; backdrop-filter: blur(2px); animation: modalFadeIn 0.2s ease; } .confirm-dialog.active { display: flex; opacity: 1; } .confirm-dialog-content { background: var(--color-bg-surface); border-radius: var(--radius-3xl); width: 400px; max-width: 90%; box-shadow: 0 20px 60px var(--color-shadow-2xl); overflow: hidden; animation: modalSlideIn 0.25s ease; text-align: center; } .confirm-dialog-icon { padding: var(--space-7) var(--space-6) var(--space-3); } .confirm-dialog-icon i { font-size: var(--text-5xl); color: var(--color-danger-bg); } .confirm-dialog-title { font-size: 17px; font-weight: var(--weight-semibold); color: var(--color-text-heading); padding: 0 var(--space-6) var(--space-2); } .confirm-dialog-message { font-size: var(--text-base); color: var(--color-text-muted); padding: 0 var(--space-6) var(--space-5); line-height: var(--leading-normal); } .confirm-dialog-buttons { display: flex; gap: var(--space-3); padding: var(--space-4) var(--space-6); background: var(--color-bg-hover); border-top: 1px solid var(--color-border); justify-content: flex-end; } .confirm-dialog-buttons .btn-danger { background: linear-gradient(135deg, var(--color-danger-bg) 0%, var(--color-danger-bg-hover) 100%); color: var(--color-danger-text); border: none; padding: var(--space-2-5) var(--space-5); border-radius: var(--radius-xl); font-weight: var(--weight-medium); cursor: pointer; transition: all 0.15s ease; box-shadow: 0 2px 8px var(--color-danger-ring); } .confirm-dialog-buttons .btn-danger:hover { box-shadow: 0 4px 12px var(--color-danger-ring-lg); transform: translateY(-1px); } /* Dialog styles */ .dialog { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: var(--color-overlay); display: flex; align-items: center; justify-content: center; z-index: 1000; } .dialog-content { background-color: var(--color-bg-surface); border-radius: var(--radius-xl); box-shadow: 0 10px 25px var(--color-shadow); width: 500px; max-width: 90%; max-height: 90vh; overflow-y: auto; } .dialog-header { padding: 15px var(--space-5); border-bottom: 1px solid var(--color-border); display: flex; align-items: center; justify-content: space-between; } .dialog-header h3 { font-size: var(--text-lg); color: var(--color-text); margin: 0; } .close-dialog-btn { background: none; border: none; font-size: var(--text-2xl); cursor: pointer; color: var(--color-text-placeholder); } .dialog-body { padding: var(--space-5); } .share-item-info { display: flex; align-items: center; gap: var(--space-2-5); margin-bottom: var(--space-5); } .share-link-container { display: flex; gap: var(--space-2-5); } .share-link-container input { flex-grow: 1; padding: var(--space-2-5); border: 1px solid var(--color-border); border-radius: var(--radius-md); font-size: var(--text-base); }