/* Sessions Management Styles */ .sessions-header { display: flex; align-items: center; justify-content: space-between; cursor: pointer; padding: 12px 16px; background: linear-gradient(135deg, var(--gray-50) 0%, white 100%); border: 2px solid var(--gray-200); border-radius: 12px; transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); } .sessions-header:hover { border-color: var(--primary-300); background: linear-gradient(135deg, var(--primary-50) 0%, white 100%); transform: translateY(-1px); box-shadow: 0 4px 12px rgba(14, 165, 233, 0.15); } .sessions-header .form-label { margin: 0; display: flex; align-items: center; font-weight: 600; color: var(--gray-800); } .sessions-toggle { background: none; border: none; cursor: pointer; padding: 4px; border-radius: 6px; transition: all 0.2s ease; color: var(--gray-600); } .sessions-toggle:hover { background: var(--gray-100); color: var(--primary-600); } .sessions-toggle.expanded { transform: rotate(180deg); } .sessions-container { max-height: 0; overflow: hidden; transition: max-height 0.3s cubic-bezier(0.4, 0, 0.2, 1); background: white; border-left: 2px solid var(--gray-200); border-right: 2px solid var(--gray-200); border-bottom: 2px solid var(--gray-200); border-radius: 0 0 12px 12px; margin-top: -2px; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.04); } .sessions-container.expanded { max-height: 450px; border-color: var(--primary-300); } .sessions-list { max-height: 350px; overflow-y: auto; padding: 16px; } .session-item { display: flex; align-items: center; padding: 14px 16px; border-radius: 10px; cursor: pointer; transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1); margin-bottom: 8px; border: 1px solid transparent; position: relative; min-height: 68px; } .session-item:hover { background: var(--gray-50); border-color: var(--gray-200); transform: translateX(2px); box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06); } .session-item.current-session { background: linear-gradient(135deg, var(--primary-50) 0%, var(--primary-25) 100%); border-color: var(--primary-200); } .session-item.current-session:hover { background: linear-gradient(135deg, var(--primary-100) 0%, var(--primary-50) 100%); border-color: var(--primary-300); } .session-item.active-solving { background: linear-gradient(135deg, var(--success-50) 0%, var(--success-25) 100%); border-color: var(--success-200); animation: pulse-session 2s ease-in-out infinite; } @keyframes pulse-session { 0%, 100% { box-shadow: 0 0 0 0 rgba(34, 197, 94, 0.4); } 50% { box-shadow: 0 0 0 4px rgba(34, 197, 94, 0.1); } } .session-item.selected { background: linear-gradient(135deg, var(--primary-500) 0%, var(--primary-600) 100%) !important; color: white !important; border: 2px solid var(--primary-700) !important; box-shadow: 0 4px 16px rgba(14, 165, 233, 0.4) !important; transform: scale(1.02) !important; position: relative !important; animation: selected-pulse 2s ease-in-out infinite alternate !important; } .session-item.selected .session-title, .session-item.selected .session-meta { color: white !important; opacity: 1 !important; visibility: visible !important; display: block !important; text-shadow: 0 1px 2px rgba(0, 0, 0, 0.2) !important; } .session-item.selected .session-icon { background: rgba(255, 255, 255, 0.25) !important; color: white !important; border: 1px solid rgba(255, 255, 255, 0.3) !important; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1) !important; } .session-item.selected .status-dot { background: white !important; box-shadow: 0 0 0 2px var(--primary-600) !important; } .session-item.selected:hover { background: linear-gradient(135deg, var(--primary-600) 0%, var(--primary-700) 100%) !important; box-shadow: 0 6px 20px rgba(14, 165, 233, 0.5) !important; transform: scale(1.03) translateX(2px) !important; } /* Additional visual enhancement for selected sessions */ .session-item.selected::before { content: ''; position: absolute; left: 0; top: 0; bottom: 0; width: 4px; background: white !important; border-radius: 0 2px 2px 0; box-shadow: 0 0 8px rgba(255, 255, 255, 0.5); } .session-item.selected { position: relative; animation: selected-pulse 2s ease-in-out infinite alternate; } @keyframes selected-pulse { 0% { box-shadow: 0 4px 16px rgba(14, 165, 233, 0.4); } 100% { box-shadow: 0 4px 16px rgba(14, 165, 233, 0.6); } } .session-icon { width: 36px; height: 36px; background: var(--gray-100); border-radius: 8px; display: flex; align-items: center; justify-content: center; margin-right: 12px; transition: all 0.2s ease; color: var(--gray-600); flex-shrink: 0; } .session-item.current-session .session-icon { background: var(--primary-100); color: var(--primary-600); } .session-info { flex: 1; min-width: 0; padding-right: 8px; } .session-title { font-weight: 600; font-size: 14px; color: var(--gray-900); margin-bottom: 4px; line-height: 1.3; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; word-break: break-word; } .session-meta { font-size: 12px; color: var(--gray-500); line-height: 1.3; display: -webkit-box; -webkit-line-clamp: 1; -webkit-box-orient: vertical; overflow: hidden; word-break: break-word; } .session-status { display: flex; align-items: center; justify-content: center; margin-left: auto; margin-right: 8px; flex-shrink: 0; } .status-dot { width: 10px; height: 10px; border-radius: 50%; background: var(--gray-400); } .session-status.active .status-dot { background: var(--success-500); animation: pulse-dot 2s ease-in-out infinite; } .session-status.solving .status-dot { background: var(--warning-500); animation: pulse-dot 1s ease-in-out infinite; } .session-status.completed .status-dot { background: var(--primary-500); } .session-status.interrupted .status-dot { background: var(--error-500); } @keyframes pulse-dot { 0%, 100% { opacity: 1; transform: scale(1); } 50% { opacity: 0.7; transform: scale(1.3); } } /* Session management actions (bottom of sessions panel) */ .sessions-actions { display: flex; gap: 10px; padding: 16px; border-top: 1px solid var(--gray-200); background: linear-gradient(135deg, var(--gray-25) 0%, var(--gray-50) 100%); } /* Session action buttons container */ .session-actions { display: flex; align-items: center; gap: 4px; opacity: 0; transform: translateX(8px); transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1); margin-left: 8px; flex-shrink: 0; } .session-item:hover .session-actions { opacity: 1; transform: translateX(0); } /* Always show actions on selected items */ .session-item.selected .session-actions { opacity: 1; transform: translateX(0); } /* Base styling for action buttons */ .session-download, .session-delete { transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1); padding: 6px; border-radius: 8px; background: none; border: none; cursor: pointer; flex-shrink: 0; display: flex; align-items: center; justify-content: center; width: 32px; height: 32px; position: relative; overflow: hidden; } .session-download i, .session-download svg, .session-delete i, .session-delete svg { width: 14px !important; height: 14px !important; stroke-width: 2; } .session-download::before, .session-delete::before { content: ''; position: absolute; top: 0; left: 0; right: 0; bottom: 0; border-radius: inherit; background: currentColor; opacity: 0; transition: opacity 0.2s ease; z-index: -1; } /* Download button styling */ .session-download { color: var(--primary-500); } .session-download:hover { color: var(--primary-600); transform: translateY(-1px); box-shadow: 0 2px 8px rgba(14, 165, 233, 0.25); } .session-download:hover::before { opacity: 0.1; } .session-download:active { transform: translateY(0); box-shadow: 0 1px 4px rgba(14, 165, 233, 0.3); } /* Delete button styling */ .session-delete { color: var(--error-500); } .session-delete:hover { color: var(--error-600); transform: translateY(-1px); box-shadow: 0 2px 8px rgba(239, 68, 68, 0.25); } .session-delete:hover::before { opacity: 0.1; } .session-delete:active { transform: translateY(0); box-shadow: 0 1px 4px rgba(239, 68, 68, 0.3); } /* Selected session button styling */ .session-item.selected .session-actions { opacity: 1; } .session-item.selected .session-download, .session-item.selected .session-delete { color: rgba(255, 255, 255, 0.9); background: rgba(255, 255, 255, 0.1); border: 1px solid rgba(255, 255, 255, 0.2); } .session-item.selected .session-download:hover, .session-item.selected .session-delete:hover { color: white; background: rgba(255, 255, 255, 0.2); border-color: rgba(255, 255, 255, 0.3); transform: translateY(-1px) scale(1.05); box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2); } .session-item.selected .session-download:hover::before, .session-item.selected .session-delete:hover::before { opacity: 0.15; } /* Responsive adjustments */ @media (max-width: 768px) { .session-download, .session-delete { width: 28px; height: 28px; padding: 4px; } .session-actions { gap: 2px; margin-left: 4px; } } .session-item.completed-session { background: linear-gradient(135deg, var(--success-25) 0%, var(--success-50) 100%); border-color: var(--success-200); } .session-item.completed-session:hover { background: linear-gradient(135deg, var(--success-50) 0%, var(--success-100) 100%); border-color: var(--success-300); } .session-item.completed-session .session-icon { background: var(--success-100); color: var(--success-700); } .session-item.interrupted-session { background: linear-gradient(135deg, var(--warning-25) 0%, var(--warning-50) 100%); border-color: var(--warning-200); } .session-item.interrupted-session:hover { background: linear-gradient(135deg, var(--warning-50) 0%, var(--warning-100) 100%); border-color: var(--warning-300); } .session-item.interrupted-session .session-icon { background: var(--warning-100); color: var(--warning-700); } /* Add styling and animation for solving sessions */ .session-item.solving-session { background: linear-gradient(135deg, var(--primary-25) 0%, var(--primary-50) 100%); border-color: var(--primary-200); } .session-item.solving-session:hover { background: linear-gradient(135deg, var(--primary-50) 0%, var(--primary-100) 100%); border-color: var(--primary-300); } .session-item.solving-session .session-icon { background: var(--primary-100); color: var(--primary-700); } .session-item.solving-session .session-icon i, .session-item.solving-session .session-icon svg { animation: spin 0.8s linear infinite; } /* Custom scrollbar for sessions list */ .sessions-list::-webkit-scrollbar { width: 4px; } .sessions-list::-webkit-scrollbar-track { background: var(--gray-100); border-radius: 2px; } .sessions-list::-webkit-scrollbar-thumb { background: var(--gray-300); border-radius: 2px; } .sessions-list::-webkit-scrollbar-thumb:hover { background: var(--gray-400); } /* Sessions help text improvement */ .form-group .form-help { margin-top: 8px; font-size: 12px; color: var(--gray-500); line-height: 1.4; padding-left: 4px; } /* Read-only session message */ .session-readonly-message { display: flex; align-items: center; justify-content: center; background: var(--warning-50); border: 1px solid var(--warning-200); border-radius: 8px; padding: 12px; margin-top: 8px; font-size: 13px; color: var(--warning-700); text-align: center; transition: all 0.3s ease; box-shadow: 0 2px 4px rgba(251, 191, 36, 0.1); } .session-readonly-message:hover { background: var(--warning-100); border-color: var(--warning-300); transform: translateY(-1px); box-shadow: 0 4px 8px rgba(251, 191, 36, 0.15); } .session-readonly-message i { flex-shrink: 0; margin-right: 6px; }