/* Custom styles for the multimedia control system */ /* Smooth transitions */ * { transition: all 0.3s ease; } /* Hover effects for cards */ .hover-lift:hover { transform: translateY(-2px); box-shadow: 0 10px 25px rgba(0,0,0,0.1); } /* Custom scrollbar */ ::-webkit-scrollbar { width: 8px; height: 8px; } ::-webkit-scrollbar-track { background: #f1f1f1; border-radius: 4px; } ::-webkit-scrollbar-thumb { background: #888; border-radius: 4px; } ::-webkit-scrollbar-thumb:hover { background: #555; } /* Progress bar animation */ @keyframes progress { 0% { width: 0%; } 100% { width: var(--progress); } } .progress-animated { animation: progress 1s ease-in-out; } /* Pulse animation for status indicators */ @keyframes pulse { 0% { opacity: 1; } 50% { opacity: 0.5; } 100% { opacity: 1; } } .pulse { animation: pulse 2s infinite; } /* Loading screen blur effect */ .backdrop-blur { backdrop-filter: blur(5px); } /* Button hover effects */ .btn-hover:hover { transform: scale(1.05); } .btn-hover:active { transform: scale(0.95); } /* Status indicator colors */ .status-connected { color: #10b981; } .status-playing { color: #3b82f6; } .status-paused { color: #f59e0b; } .status-offline { color: #ef4444; } /* Gradient text effect */ .gradient-text { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; } /* Card shadow effects */ .card-shadow { box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06); } .card-shadow-lg { box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05); } /* Custom range slider */ input[type="range"] { -webkit-appearance: none; appearance: none; background: transparent; cursor: pointer; } input[type="range"]::-webkit-slider-track { background: #e5e7eb; height: 6px; border-radius: 3px; } input[type="range"]::-webkit-slider-thumb { -webkit-appearance: none; appearance: none; background: #7c3aed; height: 20px; width: 20px; border-radius: 50%; margin-top: -7px; } input[type="range"]::-moz-range-track { background: #e5e7eb; height: 6px; border-radius: 3px; } input[type="range"]::-moz-range-thumb { background: #7c3aed; height: 20px; width: 20px; border-radius: 50%; border: none; } /* Animations */ @keyframes fadeIn { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } } .fade-in { animation: fadeIn 0.5s ease-out; } /* Responsive adjustments */ @media (max-width: 768px) { .container { padding: 0 1rem; } .grid-cols-3 { grid-template-columns: 1fr; } .lg\\:col-span-2 { grid-column: span 1; } } /* Focus styles */ .focus-ring:focus { outline: 2px solid #7c3aed; outline-offset: 2px; } /* Loading animation */ @keyframes spin { to { transform: rotate(360deg); } } .animate-spin { animation: spin 1s linear infinite; } /* Custom badge styles */ .badge { display: inline-flex; align-items: center; padding: 0.25rem 0.75rem; border-radius: 9999px; font-size: 0.875rem; font-weight: 500; } /* Hover effect for playlist items */ .playlist-item:hover { background-color: #f3f4f6; border-color: #9ca3af; } /* Status message animations */ .status-message { animation: slideIn 0.3s ease-out; } @keyframes slideIn { from { transform: translateX(-100%); opacity: 0; } to { transform: translateX(0); opacity: 1; } }