File size: 3,497 Bytes
cd5198d | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 | @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;
}
|