:root { --primary: #6366f1; --secondary: #a855f7; --accent: #ec4899; --bg-dark: #0f172a; --text-light: #f8fafc; --glass-bg: rgba(255, 255, 255, 0.05); --glass-border: rgba(255, 255, 255, 0.1); --glass-highlight: rgba(255, 255, 255, 0.15); --toast-success: #22c55e; --toast-error: #ef4444; --toast-info: #3b82f6; } * { margin: 0; padding: 0; box-sizing: border-box; font-family: 'Outfit', sans-serif; } body { background-color: var(--bg-dark); color: var(--text-light); height: 100vh; display: flex; justify-content: center; align-items: center; overflow: hidden; position: relative; } /* Dynamic Background Blobs */ .background-blobs { position: absolute; top: 0; left: 0; width: 100%; height: 100%; z-index: -1; filter: blur(80px); } .blob { position: absolute; border-radius: 50%; opacity: 0.6; animation: float 10s infinite ease-in-out; } .blob-1 { width: 400px; height: 400px; background: var(--primary); top: -50px; left: -50px; } .blob-2 { width: 300px; height: 300px; background: var(--secondary); bottom: 50px; right: -50px; animation-delay: 2s; } .blob-3 { width: 200px; height: 200px; background: var(--accent); top: 40%; left: 40%; animation-delay: 4s; } @keyframes float { 0%, 100% { transform: translate(0, 0); } 50% { transform: translate(20px, -20px); } } /* Glass Container */ .glass-container { background: var(--glass-bg); backdrop-filter: blur(16px); -webkit-backdrop-filter: blur(16px); border: 1px solid var(--glass-border); border-radius: 24px; padding: 3rem; width: 90%; max-width: 500px; text-align: center; box-shadow: 0 8px 32px 0 rgba(0, 0, 0, 0.37); } .glass-card { background: var(--glass-bg); backdrop-filter: blur(16px); -webkit-backdrop-filter: blur(16px); border: 1px solid var(--glass-border); box-shadow: 0 8px 32px 0 rgba(0, 0, 0, 0.37); } header h1 { font-size: 3rem; margin-bottom: 0.5rem; } .highlight { background: linear-gradient(45deg, var(--primary), var(--accent)); background-clip: text; -webkit-background-clip: text; -webkit-text-fill-color: transparent; } header p { color: #cbd5e1; margin-bottom: 2rem; } /* Mic Button */ .mic-button { width: 100px; height: 100px; border-radius: 50%; border: none; background: linear-gradient(135deg, var(--primary), var(--secondary)); color: white; font-size: 2.5rem; cursor: pointer; box-shadow: 0 0 20px rgba(99, 102, 241, 0.5); transition: transform 0.2s, box-shadow 0.2s; outline: none; } .mic-button:hover { transform: scale(1.05); box-shadow: 0 0 30px rgba(99, 102, 241, 0.7); } .mic-button:active, .mic-button.recording { transform: scale(0.95); box-shadow: 0 0 10px rgba(99, 102, 241, 0.8); background: var(--accent); } .mic-button.recording { animation: pulse 1.5s infinite; } @keyframes pulse { 0% { box-shadow: 0 0 0 0 rgba(236, 72, 153, 0.7); } 70% { box-shadow: 0 0 0 20px rgba(236, 72, 153, 0); } 100% { box-shadow: 0 0 0 0 rgba(236, 72, 153, 0); } } /* Visualizer */ .visualizer { display: flex; justify-content: center; gap: 4px; height: 30px; align-items: center; margin-top: 10px; } .visualizer.hidden { visibility: hidden; } .bar { width: 4px; height: 10px; background: white; border-radius: 2px; animation: equalise 0.5s infinite; animation-play-state: paused; } .recording~.visualizer .bar { animation-play-state: running; } @keyframes equalise { 0%, 100% { height: 10px; } 50% { height: 25px; } } .bar:nth-child(1) { animation-delay: 0.1s; } .bar:nth-child(2) { animation-delay: 0.2s; } .bar:nth-child(3) { animation-delay: 0.3s; } .bar:nth-child(4) { animation-delay: 0.2s; } .bar:nth-child(5) { animation-delay: 0.1s; } /* Upload Area */ .divider { margin: 2rem 0; position: relative; color: #64748b; } .divider::before, .divider::after { content: ''; position: absolute; top: 50%; width: 40%; height: 1px; background: #475569; } .divider::before { left: 0; } .divider::after { right: 0; } .upload-area { border: 2px dashed #475569; border-radius: 12px; padding: 1.5rem; transition: all 0.3s; cursor: pointer; } .upload-area:hover, .upload-area.dragover { border-color: var(--secondary); background: rgba(168, 85, 247, 0.1); } .upload-area i { font-size: 2rem; color: #94a3b8; margin-bottom: 0.5rem; } .btn-secondary { margin-top: 1rem; padding: 0.5rem 1.5rem; border-radius: 8px; border: 1px solid var(--primary); background: transparent; color: var(--primary); cursor: pointer; transition: 0.2s; } .btn-secondary:hover { background: rgba(99, 102, 241, 0.2); } /* Modal */ .modal { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0, 0, 0, 0.7); display: flex; justify-content: center; align-items: center; z-index: 100; opacity: 1; transition: opacity 0.3s; } .modal.hidden { opacity: 0; pointer-events: none; } .modal-content { background: #1e293b; padding: 2rem; border-radius: 20px; text-align: center; width: 90%; max-width: 400px; position: relative; border: 1px solid var(--glass-border); } .close-btn { position: absolute; top: 10px; right: 15px; background: none; border: none; color: white; font-size: 1.5rem; cursor: pointer; } .emoji-display { font-size: 5rem; margin-bottom: 1rem; animation: pop 0.5s cubic-bezier(0.175, 0.885, 0.32, 1.275); } @keyframes pop { 0% { transform: scale(0); } 100% { transform: scale(1); } } .feedback-buttons { display: flex; justify-content: center; gap: 1rem; margin-top: 1rem; } .btn-feedback { padding: 0.5rem 1rem; border: none; border-radius: 8px; cursor: pointer; font-weight: 600; } .correct { background: #22c55e; color: white; } .incorrect { background: #ef4444; color: white; } #correctionArea { margin-top: 1rem; display: flex; flex-direction: column; gap: 0.5rem; } #emotionSelect { padding: 0.5rem; border-radius: 6px; border: 1px solid #475569; background: #0f172a; color: white; } /* Toast Notifications */ #toast-container { position: fixed; top: 20px; right: 20px; z-index: 1000; display: flex; flex-direction: column; gap: 10px; } .toast { background: rgba(15, 23, 42, 0.8); backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px); border: 1px solid var(--glass-border); color: white; padding: 12px 24px; border-radius: 12px; display: flex; align-items: center; gap: 12px; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06); animation: slideIn 0.3s ease-out forwards; min-width: 300px; overflow: hidden; position: relative; } .toast::before { content: ''; position: absolute; left: 0; top: 0; bottom: 0; width: 4px; background: var(--toast-info); } .toast.success::before { background: var(--toast-success); } .toast.error::before { background: var(--toast-error); } .toast.info::before { background: var(--toast-info); } .toast.hide { animation: slideOut 0.3s ease-in forwards; } @keyframes slideIn { from { transform: translateX(100%); opacity: 0; } to { transform: translateX(0); opacity: 1; } } @keyframes slideOut { from { transform: translateX(0); opacity: 1; } to { transform: translateX(100%); opacity: 0; } } .btn-primary, .btn-secondary, .btn-feedback { transition: all 0.2s ease; font-weight: 500; letter-spacing: 0.5px; } .btn-primary:active, .btn-secondary:active { transform: scale(0.98); } .modal-content { background: rgba(15, 23, 42, 0.95); box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.5); border: 1px solid var(--glass-highlight); } /* Training Terminal Styles */ .terminal-card { background: #0c0c0c; border: 1px solid #333; width: 90%; max-width: 700px; height: 400px; padding: 0; display: flex; flex-direction: column; overflow: hidden; box-shadow: 0 0 40px rgba(0, 255, 0, 0.1); } .terminal-header { background: #1a1a1a; padding: 10px 15px; display: flex; justify-content: space-between; align-items: center; border-bottom: 1px solid #333; } .terminal-title { color: #0f0; font-family: 'Consolas', monospace; font-size: 0.9rem; display: flex; align-items: center; gap: 8px; } .terminal-body { flex: 1; padding: 15px; background: #000; overflow-y: auto; text-align: left; font-family: 'Consolas', monospace; font-size: 0.9rem; color: #e0e0e0; } .log-line { display: block; margin-bottom: 4px; word-wrap: break-word; } .log-line::before { content: '> '; color: #0f0; } .terminal-body::-webkit-scrollbar { width: 8px; } .terminal-body::-webkit-scrollbar-track { background: #111; } .terminal-body::-webkit-scrollbar-thumb { background: #333; border-radius: 4px; } .terminal-body::-webkit-scrollbar-thumb:hover { background: #444; } .terminal-header .close-btn { position: static; font-size: 1.2rem; color: #666; } .terminal-header .close-btn:hover { color: #fff; } .nlp-container { margin-top: 1rem; text-align: left; background: rgba(0, 0, 0, 0.2); padding: 1rem; border-radius: 12px; } .transcription { font-style: italic; color: #e2e8f0; margin-bottom: 0.5rem; border-left: 3px solid var(--secondary); padding-left: 10px; } .nlp-emotion { font-weight: 500; } .confidence-small { font-size: 0.8rem; color: #94a3b8; } .password-input { width: 100%; padding: 10px; border-radius: 10px; border: 1px solid rgba(255, 255, 255, 0.2); background: rgba(255, 255, 255, 0.05); color: white; font-size: 1rem; outline: none; transition: all 0.3s ease; } .password-input:focus { border-color: var(--secondary); background: rgba(255, 255, 255, 0.1); } /* --- NEW WATERMARK CODE (3D Glassy) --- */ .watermark { position: fixed; bottom: 20px; right: 20px; padding: 12px 24px; background: rgba(255, 255, 255, 0.05); backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px); border: 1px solid rgba(255, 255, 255, 0.1); border-top: 1px solid rgba(255, 255, 255, 0.3); border-left: 1px solid rgba(255, 255, 255, 0.3); border-radius: 24px; box-shadow: 10px 10px 20px rgba(0, 0, 0, 0.3), -5px -5px 15px rgba(255, 255, 255, 0.02); color: rgba(255, 255, 255, 0.9); font-size: 0.9rem; font-weight: 500; pointer-events: auto; /* Allow hover */ z-index: 1000; font-family: 'Outfit', sans-serif; transform: perspective(1000px) rotateX(5deg) rotateY(-5deg); transition: all 0.4s ease; text-shadow: 0 2px 4px rgba(0, 0, 0, 0.5); letter-spacing: 0.5px; } .watermark:hover { transform: perspective(1000px) rotateX(0deg) rotateY(0deg) scale(1.05); background: rgba(255, 255, 255, 0.1); color: #fff; box-shadow: 0 0 30px rgba(255, 255, 255, 0.1), 0 10px 20px rgba(0, 0, 0, 0.4); cursor: default; }