File size: 2,661 Bytes
0d37119
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
@import url('https://fonts.googleapis.com/css2?family=Google+Sans:wght@400;500;700&family=Google+Sans+Text:wght@400;500&display=swap');

* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

body {
  background: #ffffff;
  color: #1f1f1f;
  font-family: 'Google Sans', 'Segoe UI', Roboto, sans-serif;
  min-height: 100vh;
}

:root {
  /* Gemini palette */
  --gemini-blue: #4285f4;
  --gemini-purple: #a142f4;
  --gemini-pink: #f439a0;
  --gemini-cyan: #24c1e0;
  --gemini-red: #ea4335;
  --gemini-yellow: #fbbc04;
  --gemini-green: #34a853;

  /* UI tokens — light theme */
  --bg: #ffffff;
  --card-bg: #f8f9fa;
  --surface: #f1f3f4;
  --border: #e0e0e0;
  --text: #1f1f1f;
  --text-dim: #5f6368;
  --text-faint: #9aa0a6;

  /* Legacy aliases */
  --green: var(--gemini-green);
  --red: var(--gemini-red);
  --orange: var(--gemini-yellow);
}

@keyframes pulse {
  0%, 100% { opacity: 1; }
  50% { opacity: 0.5; }
}

@keyframes slideIn {
  from { transform: translateX(-20px); opacity: 0; }
  to { transform: translateX(0); opacity: 1; }
}

@keyframes fadeIn {
  from { opacity: 0; }
  to { opacity: 1; }
}

@keyframes fadeInUp {
  from { opacity: 0; transform: translateY(10px); }
  to { opacity: 1; transform: translateY(0); }
}

/* Orb animations */
@keyframes breathe {
  0%, 100% { transform: scale(1); }
  50% { transform: scale(1.06); }
}

@keyframes listenPulse {
  0%, 100% { transform: scale(1); }
  50% { transform: scale(1.08); }
}

@keyframes ripple {
  0% { transform: scale(1); opacity: 0.5; }
  100% { transform: scale(2.2); opacity: 0; }
}

@keyframes thinkSpin {
  0% { filter: hue-rotate(0deg); transform: scale(1); }
  50% { filter: hue-rotate(60deg); transform: scale(1.04); }
  100% { filter: hue-rotate(0deg); transform: scale(1); }
}

@keyframes orbSpin {
  0% { transform: rotate(0deg); }
  100% { transform: rotate(360deg); }
}

@keyframes speakPulse {
  0%, 100% { transform: scaleY(1) scaleX(1); }
  30% { transform: scaleY(1.08) scaleX(0.97); }
  70% { transform: scaleY(0.95) scaleX(1.04); }
}

@keyframes geminiGradient {
  0% { background-position: 0% 50%; }
  50% { background-position: 100% 50%; }
  100% { background-position: 0% 50%; }
}

/* Avatar animations */
@keyframes blink {
  0% { transform: scaleY(0); }
  50% { transform: scaleY(1); }
  100% { transform: scaleY(0); }
}

@keyframes eyeSpin {
  0% { transform: rotate(0deg); }
  100% { transform: rotate(360deg); }
}

@keyframes mouthBar {
  0% { height: 20%; }
  100% { height: 90%; }
}

::-webkit-scrollbar {
  width: 6px;
}

::-webkit-scrollbar-track {
  background: #ffffff;
}

::-webkit-scrollbar-thumb {
  background: #dadce0;
  border-radius: 3px;
}