/* ======================================== ARIA - VOICE CALL UI (Premium Aesthetics) ======================================== */ .voice-call-overlay { position: fixed; inset: 0; z-index: 1000; background: #020617; /* Deepest blue/black */ display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 2rem; text-align: center; overflow: hidden; font-family: 'Inter', sans-serif; } /* Atmospheric Background Elements */ .voice-call-bg { position: absolute; inset: 0; z-index: -1; overflow: hidden; } .voice-call-orb { position: absolute; border-radius: 50%; filter: blur(140px); opacity: 0.15; animation: orb-flow 25s infinite alternate ease-in-out; } .orb-gold { width: 60vw; height: 60vw; background: #F5CE4D; top: -20%; left: -10%; animation-duration: 30s; } .orb-blue { width: 50vw; height: 50vw; background: #6366f1; bottom: -10%; right: -5%; animation-duration: 35s; animation-delay: -5s; } .orb-purple { width: 40vw; height: 40vw; background: #a855f7; top: 40%; left: 30%; animation-duration: 40s; animation-delay: -10s; } /* Star/Particle Effect */ .voice-call-stars { position: absolute; inset: 0; background-image: radial-gradient(1px 1px at 20px 30px, #eee, rgba(0,0,0,0)), radial-gradient(1px 1px at 40px 70px, #fff, rgba(0,0,0,0)), radial-gradient(2px 2px at 50px 160px, #ddd, rgba(0,0,0,0)), radial-gradient(2px 2px at 90px 40px, #fff, rgba(0,0,0,0)), radial-gradient(1px 1px at 130px 80px, #fff, rgba(0,0,0,0)), radial-gradient(2px 2px at 160px 120px, #ddd, rgba(0,0,0,0)); background-repeat: repeat; background-size: 200px 200px; opacity: 0.1; animation: stars-twinkle 4s infinite alternate; } @keyframes stars-twinkle { from { opacity: 0.05; transform: scale(1); } to { opacity: 0.2; transform: scale(1.1); } } @keyframes orb-flow { 0% { transform: translate(0, 0) scale(1) rotate(0deg); } 50% { transform: translate(100px, 50px) scale(1.1) rotate(60deg); } 100% { transform: translate(-50px, 100px) scale(0.9) rotate(-30deg); } } /* Central Avatar & Pulse System */ .avatar-container { position: relative; display: flex; align-items: center; justify-content: center; margin-bottom: 3rem; transition: transform 0.5s cubic-bezier(0.34, 1.56, 0.64, 1); } .avatar-container.speaking { transform: scale(1.05); } .avatar-glow { position: absolute; width: 300px; height: 300px; border-radius: 50%; background: radial-gradient(circle, rgba(245, 206, 77, 0.3) 0%, transparent 70%); opacity: 0.5; transition: all 0.5s ease; } .avatar-container.active .avatar-glow { animation: breathing-glow 4s infinite ease-in-out; } .avatar-container.speaking .avatar-glow { background: radial-gradient(circle, rgba(245, 206, 77, 0.6) 0%, transparent 70%); animation: resonance-glow 0.8s infinite alternate ease-in-out; } @keyframes breathing-glow { 0%, 100% { opacity: 0.3; transform: scale(1); } 50% { opacity: 0.5; transform: scale(1.2); } } @keyframes resonance-glow { 0% { opacity: 0.5; transform: scale(1.1); } 100% { opacity: 0.8; transform: scale(1.3); } } .avatar-image-wrapper { width: 240px; height: 240px; border-radius: 50%; padding: 8px; background: rgba(255, 255, 255, 0.05); backdrop-filter: blur(10px); border: 1px solid rgba(255, 255, 255, 0.1); box-shadow: 0 0 50px rgba(0, 0, 0, 0.5); position: relative; z-index: 5; overflow: hidden; } .avatar-image { width: 100%; height: 100%; border-radius: 50%; object-fit: cover; transition: filter 1s ease; } .avatar-image.inactive { filter: grayscale(0.8) contrast(0.8); } /* Visualization Rings */ .ring { position: absolute; border: 1px solid rgba(245, 206, 77, 0.2); border-radius: 50%; pointer-events: none; } .ring-1 { width: 280px; height: 280px; animation: rotate-slow 20s infinite linear; } .ring-2 { width: 320px; height: 320px; border-style: dashed; animation: rotate-slow 30s infinite linear reverse; } .ring-3 { width: 400px; height: 400px; opacity: 0.1; animation: pulse-out 3s infinite ease-out; } @keyframes rotate-slow { from { transform: rotate(0deg); } to { transform: rotate(360deg); } } @keyframes pulse-out { 0% { transform: scale(1); opacity: 0.3; } 100% { transform: scale(1.5); opacity: 0; } } /* Typography & Info */ .voice-call-info { max-width: 600px; width: 100%; z-index: 10; } .status-label { font-size: 0.8rem; letter-spacing: 0.4em; color: #F5CE4D; text-transform: uppercase; font-weight: 800; margin-bottom: 0.5rem; opacity: 0.8; } .call-title { font-family: 'Playfair Display', serif; color: white; font-size: 3.5rem; margin-bottom: 2rem; letter-spacing: -0.02em; font-weight: 500; text-shadow: 0 10px 30px rgba(0,0,0,0.5); } .transcript-panel { min-height: 120px; padding: 2rem; border-radius: 32px; background: rgba(255, 255, 255, 0.03); backdrop-filter: blur(20px); border: 1px solid rgba(255, 255, 255, 0.08); color: rgba(255, 255, 255, 0.8); font-size: 1.25rem; line-height: 1.6; display: flex; align-items: center; justify-content: center; font-style: italic; font-weight: 300; box-shadow: 0 20px 80px rgba(0,0,0,0.4); transition: all 0.5s ease; animation: fade-in 1s ease-out; } @keyframes fade-in { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } } /* Controls */ .controls-bar { margin-top: auto; margin-bottom: 3rem; display: flex; gap: 2.5rem; align-items: center; padding: 1.25rem 2.5rem; border-radius: 100px; background: rgba(255, 255, 255, 0.05); border: 1px solid rgba(255, 255, 255, 0.12); backdrop-filter: blur(25px); box-shadow: 0 25px 70px rgba(0,0,0,0.6); z-index: 100; animation: slide-up 0.8s cubic-bezier(0.16, 1, 0.3, 1); } @keyframes slide-up { from { transform: translateY(100px); opacity: 0; } to { transform: translateY(0); opacity: 1; } } .control-btn { display: flex; align-items: center; justify-content: center; cursor: pointer; transition: all 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275); border: none; outline: none; } .control-btn:hover { transform: scale(1.1); } .btn-mute { width: 64px; height: 64px; border-radius: 50%; background: rgba(255, 255, 255, 0.1); color: white; } .btn-mute.muted { background: #F5CE4D; color: #020617; box-shadow: 0 0 30px rgba(245, 206, 77, 0.4); } .btn-end { width: 84px; height: 84px; border-radius: 50%; background: #ef4444; color: white; box-shadow: 0 0 50px rgba(239, 68, 68, 0.4); } .btn-end:hover { background: #f87171; box-shadow: 0 0 60px rgba(239, 68, 68, 0.6); transform: scale(1.1) rotate(90deg); } .encryption-text { position: absolute; bottom: 2rem; color: rgba(255, 255, 255, 0.4); font-size: 0.7rem; letter-spacing: 0.25em; display: flex; align-items: center; gap: 0.75rem; text-transform: uppercase; font-weight: 500; } .sparkle-icon { color: #F5CE4D; animation: pulse 2s infinite; } @keyframes pulse { 0%, 100% { opacity: 0.5; transform: scale(1); } 50% { opacity: 1; transform: scale(1.2); } } /* Audio Waveform Simulation */ .waveform-container { height: 40px; display: flex; align-items: center; gap: 4px; margin-bottom: 2rem; } .wave-bar { width: 4px; height: 8px; background: #F5CE4D; border-radius: 2px; transition: height 0.1s ease; } .wave-bar.speaking { animation: wave-bounce 0.5s infinite alternate ease-in-out; } @keyframes wave-bounce { from { height: 8px; } to { height: 40px; } }