@import "tailwindcss"; /* ========================================================================== VibeVoice React Studio CSS Styling Combines Tailwind v4 utility engine with custom high-end visuals and glows ========================================================================== */ @layer utilities { .text-neon-cyan { color: hsl(185, 95%, 48%); text-shadow: 0 0 10px hsla(185, 95%, 48%, 0.4); } .text-neon-purple { color: hsl(265, 88%, 64%); text-shadow: 0 0 10px hsla(265, 88%, 64%, 0.4); } .text-neon-pink { color: hsl(330, 92%, 60%); text-shadow: 0 0 10px hsla(330, 92%, 60%, 0.4); } .bg-glass { background: rgba(13, 17, 28, 0.45); border: 1px solid rgba(255, 255, 255, 0.08); backdrop-filter: blur(24px); box-shadow: 0 20px 50px rgba(0, 0, 0, 0.3); } .bg-glass-card { background: rgba(255, 255, 255, 0.02); border: 1px solid rgba(255, 255, 255, 0.04); } .bg-glass-card:hover { background: rgba(255, 255, 255, 0.03); border-color: rgba(255, 255, 255, 0.08); } } /* Animations */ @keyframes orbPulse { 0% { transform: scale(1); } 50% { transform: scale(1.08); } 100% { transform: scale(1); } } @keyframes orbSpin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } @keyframes orbGlowScale { 0% { transform: scale(0.95); opacity: 0.4; } 100% { transform: scale(1.2); opacity: 0.75; } } @keyframes waveExpand { 0% { transform: scale(0.9); opacity: 0.9; } 100% { transform: scale(1.8); opacity: 0; } } @keyframes floatGlow { 0% { transform: translate(0, 0) scale(1); } 50% { transform: translate(100px, 80px) scale(1.15); } 100% { transform: translate(-50px, 150px) scale(0.9); } } /* Classes for visual states */ .animate-float-glow-1 { animation: floatGlow 25s infinite alternate ease-in-out; } .animate-float-glow-2 { animation: floatGlow 30s infinite alternate-reverse ease-in-out; } /* Custom Orb styling states */ .orb-state-idle { background: radial-gradient(circle, #00f2fe 0%, rgba(0, 150, 255, 0.3) 100%); box-shadow: 0 0 20px rgba(0, 242, 254, 0.35); animation: orbPulse 4s infinite ease-in-out; } .orb-state-thinking { background: radial-gradient(circle, #fff 0%, #a259ff 70%, #00f2fe 100%); box-shadow: 0 0 35px rgba(162, 89, 255, 0.35); animation: orbSpin 2s infinite linear, orbPulse 1s infinite ease-in-out; } .orb-state-speaking { background: radial-gradient(circle, #fff 0%, #ff5c8d 60%, #a259ff 100%); box-shadow: 0 0 30px rgba(255, 92, 141, 0.35); animation: orbPulse 0.4s infinite ease-in-out; } .orb-state-listening { background: radial-gradient(circle, #fff 0%, #00e673 70%); box-shadow: 0 0 25px rgba(0, 230, 115, 0.4); animation: orbPulse 1.2s infinite ease-in-out; } /* Scrollbar customizations */ ::-webkit-scrollbar { width: 5px; height: 5px; } ::-webkit-scrollbar-track { background: transparent; } ::-webkit-scrollbar-thumb { background: rgba(255, 255, 255, 0.08); border-radius: 10px; } ::-webkit-scrollbar-thumb:hover { background: rgba(255, 255, 255, 0.15); } /* Custom Modal animations */ @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } } @keyframes scaleUp { from { transform: scale(0.95); opacity: 0; } to { transform: scale(1); opacity: 1; } } .animate-fade-in { animation: fadeIn 0.25s cubic-bezier(0.16, 1, 0.3, 1) forwards; } .animate-scale-up { animation: scaleUp 0.35s cubic-bezier(0.34, 1.56, 0.64, 1) forwards; }