chansung commited on
Commit
4ea392c
·
verified ·
1 Parent(s): 41f1cb9

Update style.css

Browse files
Files changed (1) hide show
  1. style.css +875 -18
style.css CHANGED
@@ -1,28 +1,885 @@
 
 
 
 
 
 
 
1
  body {
2
- padding: 2rem;
3
- font-family: -apple-system, BlinkMacSystemFont, "Arial", sans-serif;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4
  }
5
 
6
- h1 {
7
- font-size: 16px;
8
- margin-top: 0;
9
  }
10
 
11
- p {
12
- color: rgb(107, 114, 128);
13
- font-size: 15px;
14
- margin-bottom: 10px;
15
- margin-top: 5px;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
16
  }
17
 
18
- .card {
19
- max-width: 620px;
20
- margin: 0 auto;
21
- padding: 16px;
22
- border: 1px solid lightgray;
23
- border-radius: 16px;
 
 
 
 
 
24
  }
25
 
26
- .card p:last-child {
27
- margin-bottom: 0;
 
28
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* Use Inter font */
2
+ html { font-family: 'Inter', sans-serif; }
3
+ @supports (font-variation-settings: normal) {
4
+ html { font-family: 'Inter var', sans-serif; }
5
+ }
6
+
7
+ /* --- Base Futuristic Theme --- */
8
  body {
9
+ /* background-color: #0f172a; */ /* slate-900 - Old background */
10
+ background-color: #02040a; /* Deepest space blue/black */
11
+ background-image: radial-gradient(ellipse at center,
12
+ #1a2035 0%, /* Inner glow - dark indigo */
13
+ #0f172a 40%, /* Mid-tone slate/blue */
14
+ #02040a 75% /* Fading to deep space */
15
+ );
16
+ background-attachment: fixed; /* Keeps the gradient fixed during scroll */
17
+ color: #cbd5e1; /* slate-300 */
18
+ overflow: hidden; /* Prevent body scroll, manage scrolling in sections */
19
+ min-height: 100vh; /* Ensure gradient covers full viewport height */
20
+ }
21
+
22
+ /* Apply justify-center to main-content when CTA is active */
23
+ #main-content.justify-center-cta-active {
24
+ justify-content: center;
25
+ }
26
+
27
+ /* --- Layout Heights --- */
28
+ :root {
29
+ --history-panel-expanded-height: 12rem; /* 192px */
30
+ --history-panel-collapsed-height: 0rem; /* Can be 0 or a small value for a visible collapsed bar */
31
+ --history-panel-toggle-button-height: 2.5rem; /* Height of the toggle button area */
32
+ --history-panel-current-height: var(--history-panel-collapsed-height); /* Initial state: collapsed */
33
+ }
34
+
35
+ #main-content {
36
+ height: calc(100vh - var(--history-panel-current-height) - var(--history-panel-toggle-button-height));
37
+ overflow-y: auto;
38
+ width: 100%;
39
+ margin-left: 0;
40
+ transition: height 0.3s ease-in-out;
41
+ }
42
+
43
+ /* Hide scrollbar for specific elements */
44
+ #history-panel::-webkit-scrollbar { display: none; }
45
+ #history-panel { -ms-overflow-style: none; scrollbar-width: none; }
46
+
47
+
48
+ /* Custom scrollbar for main content */
49
+ #main-content::-webkit-scrollbar { width: 8px; }
50
+ #main-content::-webkit-scrollbar-track { background: rgba(51, 65, 85, 0.5); border-radius: 10px; }
51
+ #main-content::-webkit-scrollbar-thumb { background: #475569; border-radius: 10px; }
52
+ #main-content::-webkit-scrollbar-thumb:hover { background: #64748b; }
53
+
54
+ /* History Panel Scrollbar */
55
+ #history-panel::-webkit-scrollbar { height: 6px; background-color: rgba(30, 41, 59, 0.5); }
56
+ #history-panel::-webkit-scrollbar-thumb { background-color: #475569; border-radius: 3px; }
57
+ #history-panel::-webkit-scrollbar-thumb:hover { background-color: #64748b; }
58
+ #history-panel { scrollbar-width: thin; scrollbar-color: #475569 rgba(30, 41, 59, 0.5); }
59
+
60
+ /* Code output styling in config modal */
61
+ #code-output-header {
62
+ display: flex;
63
+ justify-content: space-between;
64
+ align-items: center;
65
+ margin-bottom: 0.5rem; /* mb-2 */
66
+ }
67
+ #copy-code-button {
68
+ background-color: #334155; /* slate-700 */
69
+ color: #94a3b8; /* slate-400 */
70
+ padding: 0.25rem 0.75rem; /* py-1 px-3 */
71
+ font-size: 0.75rem; /* text-xs */
72
+ border-radius: 0.375rem; /* rounded-md */
73
+ transition: background-color 0.2s, color 0.2s;
74
+ line-height: 1; /* Ensure icon is vertically centered */
75
+ }
76
+ #copy-code-button:hover {
77
+ background-color: #475569; /* slate-600 */
78
+ color: #cbd5e1; /* slate-300 */
79
+ }
80
+ #copy-code-button.copied {
81
+ background-color: #059669; /* emerald-600 */
82
+ color: white;
83
+ }
84
+
85
+ #export-code-button {
86
+ background-color: #334155; /* slate-700 */
87
+ color: #94a3b8; /* slate-400 */
88
+ padding: 0.25rem 0.75rem; /* py-1 px-3 */
89
+ font-size: 0.75rem; /* text-xs */
90
+ border-radius: 0.375rem; /* rounded-md */
91
+ transition: background-color 0.2s, color 0.2s, opacity 0.2s;
92
+ line-height: 1; /* Ensure icon is vertically centered */
93
+ }
94
+ #export-code-button:hover:not(:disabled) {
95
+ background-color: #475569; /* slate-600 */
96
+ color: #cbd5e1; /* slate-300 */
97
+ }
98
+ #export-code-button:disabled {
99
+ opacity: 0.5;
100
+ cursor: not-allowed;
101
+ }
102
+
103
+ #code-output-container {
104
+ margin-top: 0.25rem;
105
+ height: 300px;
106
+ overflow-y: auto;
107
+ background-color: #020617;
108
+ border: 1px solid #334155;
109
+ border-radius: 0.375rem;
110
+ padding: 1rem;
111
+ scrollbar-width: thin;
112
+ scrollbar-color: #475569 rgba(30, 41, 59, 0.5);
113
+ }
114
+ #code-output-container::-webkit-scrollbar {
115
+ width: 6px; display: block;
116
+ }
117
+ #code-output-container::-webkit-scrollbar-track {
118
+ background: rgba(51, 65, 85, 0.3); border-radius: 3px;
119
+ }
120
+ #code-output-container::-webkit-scrollbar-thumb {
121
+ background: #475569; border-radius: 3px;
122
+ }
123
+ #code-output-container::-webkit-scrollbar-thumb:hover {
124
+ background: #64748b;
125
+ }
126
+
127
+ #code-output {
128
+ font-family: monospace;
129
+ color: #94a3b8;
130
+ white-space: pre-wrap;
131
+ word-wrap: break-word;
132
+ }
133
+ #code-output code.language-html {
134
+ font-size: 9pt;
135
+ color: #e2e8f0;
136
+ }
137
+
138
+ /* Preview frame styling */
139
+ .preview-frame {
140
+ width: 100%; height: 100%; flex-grow: 1; border: none;
141
+ background-color: #ffffff;
142
+ }
143
+ .preview-loader {
144
+ position: absolute; top: 0; left: 0; right: 0; bottom: 0;
145
+ background-color: rgba(15, 23, 42, 0.7);
146
+ display: flex; align-items: center; justify-content: center; z-index: 10;
147
+ }
148
+
149
+ /* Spinner */
150
+ .spinner {
151
+ width: 2rem; height: 2rem;
152
+ border: 4px solid rgba(71, 85, 105, 0.3);
153
+ border-left-color: #22d3ee; /* cyan-400 */
154
+ border-radius: 50%; animation: spin 1s linear infinite;
155
+ }
156
+ @keyframes spin { to { transform: rotate(360deg); } }
157
+
158
+ /* Refinement loading */
159
+ #refinement-loading-indicator {
160
+ position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%);
161
+ background-color: rgba(15, 23, 42, 0.85);
162
+ backdrop-filter: blur(5px); color: #e2e8f0;
163
+ padding: 1rem 1.5rem; border-radius: 0.5rem;
164
+ z-index: 1000; display: none; align-items: center; gap: 0.75rem;
165
+ border: 1px solid #334155; box-shadow: 0 0 20px rgba(34, 211, 238, 0.2);
166
+ }
167
+ #refinement-loading-indicator svg { color: #22d3ee; }
168
+
169
+ /* Slider value */
170
+ #interval-value, #num-variations-value { font-weight: 600; color: #22d3ee; }
171
+
172
+ /* Config Button (replaces sidebar toggle) */
173
+ #top-left-controls {
174
+ position: fixed; top: 1rem; left: 1rem; z-index: 60;
175
+ display: flex;
176
+ gap: 0.5rem; /* Space between buttons */
177
+ }
178
+
179
+ #config-button, #new-button, #show-prompt-modal-button {
180
+ background-color: rgba(51, 65, 85, 0.7);
181
+ backdrop-filter: blur(5px); border-radius: 9999px; padding: 0.5rem;
182
+ box-shadow: 0 2px 10px rgba(0,0,0,0.3); cursor: pointer;
183
+ border: 1px solid #475569;
184
+ transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
185
+ display: flex; /* Center icon */
186
+ align-items: center;
187
+ justify-content: center;
188
+ }
189
+ #config-button:hover, #new-button:hover, #show-prompt-modal-button:hover {
190
+ background-color: rgba(71, 85, 105, 0.8);
191
+ box-shadow: 0 0 10px rgba(34, 211, 238, 0.2);
192
+ }
193
+ #config-button svg, #new-button svg, #show-prompt-modal-button svg {
194
+ width: 1.25rem; height: 1.25rem; color: #94a3b8; transition: color 0.2s;
195
+ }
196
+ #config-button:hover svg, #new-button:hover svg, #show-prompt-modal-button:hover svg {
197
+ color: #22d3ee;
198
+ }
199
+
200
+
201
+ /* Full Screen Overlay */
202
+ #fullscreen-overlay {
203
+ position: fixed; top: 0; left: 0; width: 100vw; height: 100vh;
204
+ background-color: rgba(15, 23, 42, 0.95);
205
+ backdrop-filter: blur(8px); z-index: 900;
206
+ display: flex; flex-direction: column;
207
+ align-items: center; /* Center iframe horizontally */
208
+ justify-content: center; /* Center iframe vertically */
209
+ padding: 1rem; box-sizing: border-box; opacity: 0; visibility: hidden;
210
+ transition: opacity 0.3s ease-in-out, visibility 0.3s ease-in-out;
211
+ }
212
+ #fullscreen-overlay.visible { opacity: 1; visibility: visible; }
213
+ #fullscreen-iframe {
214
+ /* flex-grow: 1; width: 100%; height: 100%; Removed to set fixed mobile dimensions */
215
+ width: 375px; /* Typical mobile width */
216
+ height: 750px; /* Typical mobile height, adjust as desired */
217
+ max-width: 90vw; /* Ensure it doesn't overflow very small screens too much */
218
+ max-height: 85vh; /* Ensure it doesn't overflow very small screens too much */
219
+ border: 1px solid #334155;
220
+ border-radius: 0.75rem; /* Rounded corners like other previews */
221
+ background-color: white;
222
+ box-shadow: 0 10px 30px rgba(0,0,0,0.5); /* Enhanced shadow for fullscreen focus */
223
+ /* margin-top: 3rem; Removed as flex centering handles positioning */
224
+ }
225
+ #exit-fullscreen-btn {
226
+ position: absolute; top: 1.5rem; right: 1.5rem; z-index: 955; /* Above nav buttons */
227
+ background-color: #ef4444; color: white;
228
+ }
229
+ #exit-fullscreen-btn:hover { background-color: #dc2626; }
230
+
231
+ /* Fullscreen History Navigation Buttons */
232
+ #fullscreen-history-nav {
233
+ position: absolute;
234
+ top: 1.5rem;
235
+ left: 50%;
236
+ transform: translateX(-50%);
237
+ z-index: 950; /* Below exit button, above iframe */
238
+ display: none; /* Hidden by default */
239
+ gap: 1rem;
240
+ }
241
+ #fullscreen-history-nav.visible {
242
+ display: flex; /* Show when needed */
243
+ }
244
+ #fullscreen-history-nav button {
245
+ background-color: rgba(51, 65, 85, 0.8); /* slate-700/80 */
246
+ color: #cbd5e1; /* slate-300 */
247
+ border: 1px solid #64748b; /* slate-500 */
248
+ padding: 0.5rem 1rem; /* py-2 px-4 */
249
+ border-radius: 0.375rem; /* rounded-md */
250
+ font-size: 0.875rem; /* text-sm */
251
+ font-weight: 500;
252
+ transition: background-color 0.2s, border-color 0.2s, color 0.2s;
253
+ box-shadow: 0 2px 5px rgba(0,0,0,0.2);
254
+ }
255
+ #fullscreen-history-nav button:hover:not(:disabled) {
256
+ background-color: rgba(71, 85, 105, 0.9); /* slate-600/90 */
257
+ border-color: #94a3b8; /* slate-400 */
258
+ color: #fff;
259
+ }
260
+ #fullscreen-history-nav button:disabled {
261
+ background-color: rgba(51, 65, 85, 0.5);
262
+ border-color: #475569; /* slate-600 */
263
+ color: #64748b; /* slate-500 */
264
+ cursor: not-allowed;
265
+ opacity: 0.6;
266
+ }
267
+
268
+
269
+ body.fullscreen-active #top-left-controls { opacity: 0; pointer-events: none; }
270
+ body.fullscreen-active #main-content { overflow: hidden; }
271
+ body.fullscreen-active #history-panel { display: none; }
272
+
273
+
274
+ /* Perspective Grid Styles (for 4 variations) */
275
+ #perspective-viewport {
276
+ flex-grow: 1; min-height: 0; display: flex;
277
+ justify-content: center; /* Center the content (preview-grid-wrapper) horizontally */
278
+ align-items: center; /* Center the content (preview-grid-wrapper) vertically */
279
+ padding: 1rem; /* Increased padding for better spacing of mobile items */
280
+ /* perspective: 1500px; Perspective is not needed for mobile layout */
281
+ overflow-x: auto; /* Enable horizontal scrolling for mobile previews */
282
+ overflow-y: hidden;
283
+ }
284
+ #preview-grid-wrapper {
285
+ display: flex; /* Changed from grid to flex for horizontal layout */
286
+ /* width: 98%; max-width: 1200px; */ /* Width will be determined by content */
287
+ /* height: 95%; */ /* Height will be determined by content / item size */
288
+ /* transition: transform 0.5s ease-out; */ /* Transform transitions not needed for mobile layout */
289
+ gap: 1.5rem; /* Keep gap between items */
290
+ padding-bottom: 1rem; /* Add padding at the bottom for scrollbar visibility */
291
+ }
292
+
293
+ /* New class for mobile preview layout (replaces grid-mode and single-mode behavior) */
294
+ .mobile-preview-layout {
295
+ display: flex;
296
+ flex-direction: row;
297
+ align-items: flex-start; /* Align items to the top */
298
+ gap: 1.5rem;
299
+ height: auto; /* Let height be determined by content */
300
+ width: max-content; /* Allow the wrapper to grow with items */
301
+ }
302
+
303
+ #preview-grid-wrapper.grid-mode { /* This class is no longer primarily used for layout, but styles might be referenced */
304
+ /* grid-template-columns: repeat(2, 1fr); */
305
+ /* grid-template-rows: repeat(2, 1fr); gap: 1.5rem; */
306
+ /* transform-style: preserve-3d; */
307
+ /* transform: rotateX(10deg) rotateY(0deg) scale(0.95); */
308
+ }
309
+ #preview-grid-wrapper.single-mode { /* This class is still used for single large preview */
310
+ grid-template-columns: 1fr;
311
+ grid-template-rows: 1fr; gap: 0;
312
+ transform: none;
313
+ width: 100%; height: 100%; max-width: none; aspect-ratio: unset;
314
+ display: grid; /* Revert to grid for single mode */
315
+ place-items: center; /* Center the single preview item */
316
+ padding-bottom: 0; /* Reset padding */
317
+ }
318
+
319
+
320
+ .preview-item-perspective {
321
+ background-color: rgba(51, 65, 85, 0.6);
322
+ backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px);
323
+ border-radius: 0.75rem;
324
+ box-shadow: 0 8px 25px rgba(0, 0, 0, 0.3), 0 0 5px rgba(34, 211, 238, 0.1);
325
+ display: flex; flex-direction: column; overflow: hidden;
326
+ /* transform-style: preserve-3d; Removed */
327
+ transition: transform 0.3s ease, box-shadow 0.3s ease, border-color 0.3s ease;
328
+ border: 1px solid #475569;
329
+ /* height: 100%; Removed, fixed height for mobile form factor */
330
+ width: 360px; /* Further increased width for larger mobile preview */
331
+ height: 720px; /* Further increased height for portrait mobile aspect ratio */
332
+ flex-shrink: 0; /* Prevent items from shrinking in flex layout */
333
+ }
334
+ .preview-item-perspective:hover:not(.selected) {
335
+ transform: translateY(-8px) scale(1.03); /* Removed translateZ and 3D rotation */
336
+ box-shadow: 0 12px 35px rgba(0, 0, 0, 0.4), 0 0 15px rgba(34, 211, 238, 0.2);
337
+ border-color: #64748b;
338
+ }
339
+ .preview-item-perspective.selected {
340
+ border-color: #22d3ee;
341
+ transform: scale(1.06); /* Removed translateZ and 3D rotation */
342
+ box-shadow: 0 15px 40px rgba(34, 211, 238, 0.3), 0 0 25px rgba(34, 211, 238, 0.4), inset 0 0 10px rgba(34, 211, 238, 0.2);
343
+ z-index: 5;
344
+ }
345
+ .preview-header {
346
+ padding: 0.6rem 1rem; border-bottom: 1px solid #475569;
347
+ display: flex; justify-content: space-between; align-items: center;
348
+ flex-shrink: 0; background-color: rgba(71, 85, 105, 0.5);
349
+ }
350
+ .preview-header-title {
351
+ font-size: 0.9rem; font-weight: 600; color: #e2e8f0;
352
+ white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
353
+ }
354
+ .preview-header-buttons { display: flex; align-items: center; gap: 0.5rem; }
355
+ .preview-header-buttons button, .preview-header-buttons .fullscreen-btn {
356
+ padding: 0.25rem 0.5rem; border-radius: 0.375rem;
357
+ transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
358
+ }
359
+ .preview-header-buttons .fullscreen-btn { color: #94a3b8; }
360
+ .preview-header-buttons .fullscreen-btn:hover:not(:disabled) {
361
+ color: #22d3ee; background-color: rgba(51, 65, 85, 0.7);
362
+ }
363
+ .preview-header-buttons .fullscreen-btn:disabled { color: #475569; cursor: not-allowed; }
364
+ .preview-body {
365
+ position: relative; flex-grow: 1; min-height: 0;
366
+ display: flex; overflow: hidden;
367
+ align-items: center; /* Center iframe vertically */
368
+ justify-content: center; /* Center iframe horizontally */
369
+ }
370
+
371
+ /* Style for the iframe when in single large preview mode */
372
+ #preview-grid-wrapper.single-mode iframe#single-large-preview-frame {
373
+ height: 80%; /* Use 80% of available vertical space in its container */
374
+ aspect-ratio: 1 / 2; /* Maintain mobile aspect ratio */
375
+ max-width: 425px; /* Cap width to prevent it getting too wide */
376
+ max-height: 850px; /* Cap height for an absolute maximum */
377
+ /* width will be determined by height and aspect-ratio, up to max-width */
378
+ border: 1px solid #475569; /* Consistent border */
379
+ border-radius: 0.75rem; /* Consistent radius */
380
+ box-shadow: 0 8px 25px rgba(0, 0, 0, 0.3), 0 0 5px rgba(34, 211, 238, 0.1); /* Consistent shadow */
381
+ background-color: #ffffff; /* Ensure background for the iframe */
382
+ }
383
+
384
+ .single-preview-item {
385
+ width: 100%; height: 100%;
386
+ /* Removed fixed background and border, will be on the iframe if needed or use styles from preview-item-perspective */
387
+ }
388
+
389
+
390
+ /* Futuristic input/select styles */
391
+ .futuristic-input, .futuristic-select {
392
+ background-color: rgba(30, 41, 59, 0.8); border: 1px solid #475569;
393
+ color: #e2e8f0; border-radius: 0.375rem;
394
+ box-shadow: inset 0 1px 2px rgba(0,0,0,0.2);
395
+ transition: border-color 0.2s, box-shadow 0.2s;
396
+ padding: 0.5rem 0.75rem;
397
+ }
398
+ .futuristic-input::placeholder { color: #64748b; }
399
+ .futuristic-input:focus, .futuristic-select:focus {
400
+ outline: none; border-color: #22d3ee;
401
+ box-shadow: 0 0 0 2px rgba(34, 211, 238, 0.3), inset 0 1px 2px rgba(0,0,0,0.2);
402
+ }
403
+ .futuristic-select {
404
+ -webkit-appearance: none;
405
+ -moz-appearance: none;
406
+ appearance: none;
407
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24' fill='none' stroke='%2394a3b8' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");
408
+ background-repeat: no-repeat;
409
+ background-position: right 0.5rem center;
410
+ background-size: 1.2em 1.2em;
411
+ padding-right: 2.5rem;
412
+ }
413
+
414
+
415
+ /* Futuristic button styles */
416
+ .futuristic-button {
417
+ background-color: #0e7490; color: #f0f9ff;
418
+ font-weight: 500; border-radius: 0.375rem;
419
+ transition: background-color 0.2s, box-shadow 0.2s, transform 0.1s;
420
+ box-shadow: 0 2px 5px rgba(0,0,0,0.2), 0 0 0 0 rgba(34, 211, 238, 0.0);
421
+ }
422
+ .futuristic-button:hover:not(:disabled) {
423
+ background-color: #0891b2;
424
+ box-shadow: 0 4px 8px rgba(0,0,0,0.3), 0 0 10px 2px rgba(34, 211, 238, 0.3);
425
+ transform: translateY(-1px);
426
+ }
427
+ .futuristic-button:active:not(:disabled) {
428
+ transform: translateY(0px);
429
+ box-shadow: 0 2px 5px rgba(0,0,0,0.2), 0 0 5px 1px rgba(34, 211, 238, 0.2);
430
+ }
431
+ .futuristic-button:disabled {
432
+ background-color: #334155; color: #64748b;
433
+ cursor: not-allowed; opacity: 0.7;
434
+ }
435
+ .futuristic-button.selected-state {
436
+ background-color: #059669;
437
+ }
438
+ .futuristic-button.selected-state:hover:not(:disabled) {
439
+ background-color: #047857;
440
+ box-shadow: 0 4px 8px rgba(0,0,0,0.3), 0 0 10px 2px rgba(16, 185, 129, 0.3);
441
+ }
442
+
443
+
444
+ /* Range slider styling */
445
+ input[type="range"].futuristic-slider {
446
+ -webkit-appearance: none; appearance: none; width: 100%; height: 8px;
447
+ background: #334155; border-radius: 5px; outline: none;
448
+ opacity: 0.9; transition: opacity .2s;
449
+ }
450
+ input[type="range"].futuristic-slider:hover { opacity: 1; }
451
+ input[type="range"].futuristic-slider::-webkit-slider-thumb {
452
+ -webkit-appearance: none; appearance: none; width: 18px; height: 18px;
453
+ background: #22d3ee; border-radius: 50%; cursor: pointer;
454
+ border: 2px solid #0f172a; box-shadow: 0 0 5px rgba(34, 211, 238, 0.5);
455
+ }
456
+ input[type="range"].futuristic-slider::-moz-range-thumb {
457
+ width: 18px; height: 18px; background: #22d3ee;
458
+ border-radius: 50%; cursor: pointer; border: 2px solid #0f172a;
459
+ box-shadow: 0 0 5px rgba(34, 211, 238, 0.5);
460
+ }
461
+
462
+ /* --- History Panel (Bottom) --- */
463
+ #history-panel-controls {
464
+ height: var(--history-panel-toggle-button-height);
465
+ display: flex;
466
+ align-items: center;
467
+ justify-content: center; /* Center the group */
468
+ gap: 1rem; /* Space between nav arrows and toggle */
469
+ background-color: rgba(15, 23, 42, 0.9); /* Match history panel bg */
470
+ border-top: 1px solid #334155; /* Match history panel border */
471
+ position: relative; /* For potential absolute positioning of button if needed or pseudo-elements */
472
+ z-index: 51; /* Above history panel content, below modals */
473
+ }
474
+
475
+ #history-toggle-button {
476
+ background-color: rgba(51, 65, 85, 0.7); /* slate-700 with alpha */
477
+ border: 1px solid #475569; /* slate-600 */
478
+ border-radius: 9999px; /* pill shape */
479
+ padding: 0.375rem; /* py-1.5 px-1.5 (adjust based on icon size) */
480
+ cursor: pointer;
481
+ display: flex;
482
+ align-items: center;
483
+ justify-content: center;
484
+ color: #94a3b8; /* slate-400 for icon */
485
+ transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
486
+ box-shadow: 0 2px 5px rgba(0,0,0,0.2);
487
+ }
488
+
489
+ #history-toggle-button:hover {
490
+ background-color: rgba(71, 85, 105, 0.8);
491
+ color: #cbd5e1; /* slate-300 */
492
+ box-shadow: 0 0 10px rgba(34, 211, 238, 0.2);
493
+ }
494
+
495
+ #history-toggle-button svg {
496
+ width: 1.25rem; /* w-5 */
497
+ height: 1.25rem; /* h-5 */
498
+ }
499
+
500
+ #history-panel {
501
+ position: fixed;
502
+ bottom: 0;
503
+ left: 0;
504
+ right: 0;
505
+ height: var(--history-panel-current-height); /* Use CSS variable */
506
+ background-color: rgba(15, 23, 42, 0.9);
507
+ backdrop-filter: blur(10px);
508
+ -webkit-backdrop-filter: blur(10px);
509
+ /* border-top: 1px solid #334155; Removed as controls has it now */
510
+ padding: 1rem 2rem; /* Add more horizontal padding for fan effect */
511
+ z-index: 50;
512
+ overflow-x: auto;
513
+ overflow-y: hidden;
514
+ display: flex;
515
+ align-items: center;
516
+ /* gap: 1rem; Remove fixed gap, overlaps will be handled by transforms */
517
+ transition: height 0.3s ease-in-out, padding 0.3s ease-in-out, opacity 0.3s ease-in-out;
518
+ opacity: 1;
519
+ perspective: 1000px; /* Add perspective for 3D transforms */
520
+ }
521
+
522
+ #history-panel.history-collapsed {
523
+ /* height is controlled by --history-panel-current-height via JS */
524
+ padding-top: 0;
525
+ padding-bottom: 0;
526
+ opacity: 0;
527
+ overflow: hidden; /* Ensure content is clipped during collapse */
528
+ }
529
+
530
+ /* Hide thumbnails when panel is collapsed to prevent interaction/layout issues */
531
+ #history-panel.history-collapsed .history-thumbnail-item,
532
+ #history-panel.history-collapsed #history-panel-placeholder {
533
+ display: none;
534
+ }
535
+
536
+ .history-thumbnail-item {
537
+ position: relative; /* Keep for z-index */
538
+ flex-shrink: 0;
539
+ width: 6rem; /* Adjusted width for portrait aspect ratio */
540
+ height: 9rem; /* Adjusted height for portrait aspect ratio */
541
+ background-color: rgba(51, 65, 85, 0.5);
542
+ backdrop-filter: blur(8px);
543
+ -webkit-backdrop-filter: blur(8px);
544
+ border: 1px solid #475569;
545
+ border-radius: 0.5rem;
546
+ box-shadow: 0 6px 18px rgba(0,0,0,0.35),
547
+ inset 0 0 8px rgba(34, 211, 238, 0.15),
548
+ 0 0 2px rgba(34,211,238,0.1);
549
+ display: flex;
550
+ flex-direction: column;
551
+ overflow: hidden;
552
+ /* transform-style: preserve-3d; Remove this */
553
+ /* transform: perspective(600px) rotateY(-8deg) rotateX(3deg) translateZ(-15px); Remove static transform */
554
+ transition: transform 0.7s cubic-bezier(0.25, 0.8, 0.25, 1),
555
+ box-shadow 0.3s cubic-bezier(0.25, 0.8, 0.25, 1),
556
+ border-color 0.3s ease,
557
+ z-index 0.7s ease; /* Add z-index transition */
558
+ /* Add margin to handle potential overlap calculations if needed, maybe negative */
559
+ margin-left: -30px; /* Example: Pull items closer together */
560
+ }
561
+
562
+ /* Pull first item back to the left */
563
+ .history-thumbnail-item:first-child {
564
+ margin-left: 0;
565
+ }
566
+
567
+ .history-thumbnail-item:hover {
568
+ /* transform: perspective(600px) rotateY(-3deg) rotateX(1deg) translateZ(0px) scale(1.08); */ /* Remove old hover transform */
569
+ transform: translateY(-15px) scale(1.15) rotate(0deg); /* Bring up, scale, and un-rotate on hover */
570
+ box-shadow: 0 15px 40px rgba(0,0,0,0.5),
571
+ inset 0 0 12px rgba(34, 211, 238, 0.25),
572
+ 0 0 15px rgba(34,211,238,0.4);
573
+ border-color: #22d3ee;
574
+ z-index: 100; /* Ensure hovered item is on top */
575
+ }
576
+ .history-thumbnail-item.active-history-item {
577
+ border-color: #22d3ee;
578
+ /* transform: perspective(600px) rotateY(-4deg) rotateX(2deg) translateZ(0px) scale(1.06); */ /* Remove old active transform */
579
+ box-shadow: 0 10px 30px rgba(34, 211, 238, 0.3),
580
+ inset 0 0 15px rgba(34, 211, 238, 0.3),
581
+ 0 0 10px rgba(34,211,238,0.4);
582
+ /* Active item might need slightly different base transform/z-index set by JS */
583
+ z-index: 50; /* Ensure active is above others but below hover */
584
+ }
585
+ .history-thumbnail-preview-container {
586
+ width: 100%;
587
+ height: calc(100% - 2rem);
588
+ overflow: hidden;
589
+ position: relative;
590
+ border-bottom: 1px solid #334155;
591
+ cursor: pointer;
592
+ }
593
+ .history-thumbnail-preview {
594
+ width: 200%; /* Adjusted for new scale */
595
+ height: 200%; /* Adjusted for new scale */
596
+ transform: scale(0.5); /* Increased scale to zoom in further */
597
+ transform-origin: 0 0;
598
+ border: none;
599
+ pointer-events: none;
600
+ background-color: #fff;
601
+ }
602
+ .history-thumbnail-title {
603
+ font-size: 0.65rem;
604
+ color: #cbd5e1;
605
+ padding: 0.25rem 0.5rem;
606
+ text-align: center;
607
+ white-space: nowrap;
608
+ overflow: hidden;
609
+ text-overflow: ellipsis;
610
+ line-height: 1.25rem;
611
+ cursor: pointer;
612
+ }
613
+ .history-thumbnail-fullscreen-btn {
614
+ position: absolute;
615
+ top: 0.25rem;
616
+ right: 0.25rem;
617
+ padding: 0.15rem;
618
+ border-radius: 0.25rem;
619
+ background-color: rgba(30, 41, 59, 0.6);
620
+ color: #94a3b8;
621
+ opacity: 0;
622
+ transition: opacity 0.2s ease-in-out, background-color 0.2s, color 0.2s;
623
+ z-index: 15;
624
+ cursor: pointer;
625
+ }
626
+ .history-thumbnail-item:hover .history-thumbnail-fullscreen-btn {
627
+ opacity: 1;
628
+ }
629
+ .history-thumbnail-fullscreen-btn:hover {
630
+ background-color: rgba(51, 65, 85, 0.8);
631
+ color: #e2e8f0;
632
+ }
633
+ .history-thumbnail-fullscreen-btn svg {
634
+ width: 0.75rem;
635
+ height: 0.75rem;
636
+ }
637
+
638
+ #history-panel-placeholder {
639
+ display: flex;
640
+ align-items: center;
641
+ justify-content: center;
642
+ height: 100%;
643
+ width: 100%;
644
+ color: #64748b;
645
+ font-size: 0.875rem;
646
+ }
647
+
648
+ /* --- Modal Animation Effects --- */
649
+ @keyframes fadeInDistort {
650
+ from {
651
+ opacity: 0;
652
+ transform: scale(0.9) skewY(3deg);
653
+ }
654
+ to {
655
+ opacity: 1;
656
+ transform: scale(1) skewY(0deg);
657
+ }
658
+ }
659
+
660
+ @keyframes fadeOutDistort {
661
+ from {
662
+ opacity: 1;
663
+ transform: scale(1) skewY(0deg);
664
+ }
665
+ to {
666
+ opacity: 0;
667
+ transform: scale(0.95) skewY(-2deg);
668
+ }
669
+ }
670
+
671
+ .modal-anim-fade-in {
672
+ animation: fadeInDistort 0.4s cubic-bezier(0.25, 0.8, 0.25, 1) forwards;
673
  }
674
 
675
+ .modal-anim-fade-out {
676
+ animation: fadeOutDistort 0.3s cubic-bezier(0.75, 0.2, 0.75, 0.2) forwards;
 
677
  }
678
 
679
+
680
+ /* --- Modals (Prompt & Config) --- */
681
+ .modal-overlay { /* Common class for overlays */
682
+ position: fixed;
683
+ inset: 0;
684
+ background-color: rgba(15, 23, 42, 0.8);
685
+ backdrop-filter: blur(8px);
686
+ -webkit-backdrop-filter: blur(8px);
687
+ z-index: 1000;
688
+ display: none;
689
+ align-items: center;
690
+ justify-content: center;
691
+ padding: 2rem;
692
+ opacity: 0; /* Start transparent for animation */
693
+ }
694
+ .modal-overlay.visible {
695
+ display: flex;
696
+ opacity: 1;
697
+ }
698
+ .modal-content { /* Common class for content box */
699
+ background-color: #1e293b;
700
+ padding: 1.5rem 2rem;
701
+ border-radius: 0.75rem;
702
+ border: 1px solid #334155;
703
+ box-shadow: 0 10px 30px rgba(0,0,0,0.4);
704
+ width: 100%;
705
+ max-width: 42rem;
706
+ display: flex;
707
+ flex-direction: column;
708
+ gap: 1rem;
709
+ }
710
+ #modal-user-prompt { /* Specific to prompt modal */
711
+ min-height: 100px;
712
+ resize: vertical;
713
+ }
714
+ .modal-button-secondary {
715
+ background-color: #334155;
716
+ color: #cbd5e1;
717
+ border: 1px solid #475569;
718
+ }
719
+ .modal-button-secondary:hover:not(:disabled) {
720
+ background-color: #475569;
721
+ border-color: #64748b;
722
+ color: #fff;
723
  }
724
 
725
+ .history-nav-button {
726
+ background-color: transparent; /* Make nav buttons less prominent */
727
+ border: none;
728
+ border-radius: 9999px;
729
+ padding: 0.375rem;
730
+ cursor: pointer;
731
+ display: flex;
732
+ align-items: center;
733
+ justify-content: center;
734
+ color: #64748b; /* slate-500 for icon, less prominent */
735
+ transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
736
  }
737
 
738
+ .history-nav-button:hover:not(:disabled) {
739
+ background-color: rgba(51, 65, 85, 0.7);
740
+ color: #94a3b8; /* slate-400 */
741
  }
742
+
743
+ .history-nav-button:disabled {
744
+ color: #334155; /* slate-700 - very faded */
745
+ cursor: not-allowed;
746
+ opacity: 0.5;
747
+ }
748
+
749
+ /* Style for truncated prompt subtitle to indicate clickability */
750
+ #main-content-subtitle.prompt-truncated {
751
+ cursor: pointer;
752
+ text-decoration: underline dotted rgba(203, 213, 225, 0.5); /* slate-300 dotted underline */
753
+ transition: text-decoration-color 0.2s ease;
754
+ }
755
+ #main-content-subtitle.prompt-truncated:hover {
756
+ text-decoration-color: rgba(34, 211, 238, 0.8); /* cyan-400 */
757
+ }
758
+
759
+ /* Ensure prompt display modal text area is styled correctly */
760
+ #full-prompt-text {
761
+ scrollbar-width: thin;
762
+ scrollbar-color: #475569 rgba(30, 41, 59, 0.5);
763
+ }
764
+ #full-prompt-text::-webkit-scrollbar {
765
+ width: 6px;
766
+ }
767
+ #full-prompt-text::-webkit-scrollbar-track {
768
+ background: rgba(51, 65, 85, 0.3);
769
+ border-radius: 3px;
770
+ }
771
+ #full-prompt-text::-webkit-scrollbar-thumb {
772
+ background: #475569;
773
+ border-radius: 3px;
774
+ }
775
+ #full-prompt-text::-webkit-scrollbar-thumb:hover {
776
+ background: #64748b;
777
+ }
778
+
779
+ /* --- Initial Setup CTA Styles --- */
780
+ #initial-setup-cta {
781
+ /* Default to flex for when it becomes visible */
782
+ /* flex-grow is added by JS when active */
783
+ background-color: rgba(23, 37, 60, 0.75); /* Slightly bluer, less opaque than modals */
784
+ backdrop-filter: blur(10px);
785
+ -webkit-backdrop-filter: blur(10px);
786
+ border: 1px solid #334155; /* slate-700 */
787
+ border-radius: 0.75rem; /* rounded-xl */
788
+ box-shadow: 0 15px 35px rgba(0,0,0,0.3), inset 0 0 0 1px rgba(71, 85, 105, 0.4); /* slate-600 for inset border */
789
+ padding: 2rem; /* Increased padding */
790
+ width: 100%;
791
+ max-width: 48rem; /* Consistent max width, e.g., max-w-3xl */
792
+ margin-left: auto;
793
+ margin-right: auto;
794
+
795
+ opacity: 0;
796
+ transform: translateY(30px) scale(0.97);
797
+ transition: opacity 0.5s cubic-bezier(0.25, 0.8, 0.25, 1), transform 0.5s cubic-bezier(0.25, 0.8, 0.25, 1);
798
+ pointer-events: none;
799
+ }
800
+
801
+ #initial-setup-cta.active-cta {
802
+ opacity: 1;
803
+ transform: translateY(0) scale(1);
804
+ pointer-events: auto;
805
+ }
806
+
807
+ #gemini-logo-initial-cta {
808
+ height: 40px; /* Adjust as needed */
809
+ margin-bottom: 1.5rem; /* Space below the logo */
810
+ opacity: 0.85; /* Slightly see-through to blend a bit */
811
+ }
812
+
813
+ #initial-api-key-input {
814
+ /* Uses .futuristic-input, can add specifics if needed */
815
+ box-shadow: 0 0 15px rgba(34, 211, 238, 0.1); /* Subtle glow on input */
816
+ }
817
+
818
+ .example-prompt-button {
819
+ background-color: rgba(51, 65, 85, 0.7); /* slate-700 with alpha */
820
+ backdrop-filter: blur(5px);
821
+ border: 1px solid #475569; /* slate-600 */
822
+ color: #cbd5e1; /* slate-300 */
823
+ padding: 0.6rem 1.2rem; /* Adjusted padding */
824
+ border-radius: 9999px; /* pill shape */
825
+ font-size: 0.875rem; /* text-sm */
826
+ font-weight: 500;
827
+ cursor: pointer;
828
+ box-shadow: 0 2px 5px rgba(0,0,0,0.2);
829
+
830
+ opacity: 0;
831
+ transform: translateY(15px);
832
+ /* Add opacity and transform to existing transition */
833
+ transition: background-color 0.2s, color 0.2s, box-shadow 0.2s, transform 0.35s cubic-bezier(0.25, 0.8, 0.25, 1), opacity 0.35s cubic-bezier(0.25, 0.8, 0.25, 1);
834
+ }
835
+
836
+ .example-prompt-button.visible {
837
+ opacity: 1;
838
+ transform: translateY(0);
839
+ }
840
+
841
+ .example-prompt-button:hover {
842
+ background-color: rgba(71, 85, 105, 0.85); /* slate-600 with alpha */
843
+ color: #e2e8f0; /* slate-200 */
844
+ box-shadow: 0 0 12px rgba(34, 211, 238, 0.25), 0 4px 8px rgba(0,0,0,0.3);
845
+ transform: translateY(-2px); /* Keep existing translateY but ensure it combines with the initial one */
846
+ }
847
+
848
+ .example-prompt-button.visible:hover {
849
+ transform: translateY(-2px); /* Explicitly for visible state */
850
+ }
851
+
852
+
853
+ .example-prompt-button:active {
854
+ transform: translateY(0px); /* Reset or slightly depress */
855
+ box-shadow: 0 2px 5px rgba(0,0,0,0.2), 0 0 5px 1px rgba(34, 211, 238, 0.1);
856
+ }
857
+
858
+ .example-prompt-button.visible:active {
859
+ transform: translateY(0px);
860
+ }
861
+
862
+ /* Variation Navigation Buttons (Left/Right Arrows for Mobile Previews) */
863
+ .variation-nav-button {
864
+ background-color: rgba(30, 41, 59, 0.7); /* slate-800 with alpha */
865
+ backdrop-filter: blur(5px);
866
+ border: 1px solid #475569; /* slate-600 */
867
+ color: #cbd5e1; /* slate-300 */
868
+ border-radius: 9999px; /* pill shape */
869
+ padding: 0.75rem; /* p-3 */
870
+ cursor: pointer;
871
+ transition: background-color 0.2s, color 0.2s, opacity 0.2s, transform 0.2s;
872
+ box-shadow: 0 4px 10px rgba(0,0,0,0.3);
873
+ }
874
+
875
+ .variation-nav-button:hover:not(:disabled) {
876
+ background-color: rgba(51, 65, 85, 0.85); /* slate-700 with alpha */
877
+ color: #e2e8f0; /* slate-200 */
878
+ transform: scale(1.1);
879
+ }
880
+
881
+ .variation-nav-button:disabled {
882
+ opacity: 0.3;
883
+ cursor: not-allowed;
884
+ /* transform: scale(1); /* Ensure no transform on disabled hover */
885
+ }