chansung commited on
Commit
a47b0ee
·
verified ·
1 Parent(s): 52a2d9e

Update style.css

Browse files
Files changed (1) hide show
  1. style.css +686 -18
style.css CHANGED
@@ -1,28 +1,696 @@
 
 
 
 
 
 
 
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
+ /* --- Layout Heights --- */
23
+ :root {
24
+ --history-panel-expanded-height: 12rem; /* 192px */
25
+ --history-panel-collapsed-height: 0rem; /* Can be 0 or a small value for a visible collapsed bar */
26
+ --history-panel-toggle-button-height: 2.5rem; /* Height of the toggle button area */
27
+ --history-panel-current-height: var(--history-panel-collapsed-height); /* Initial state: collapsed */
28
+ }
29
+
30
+ #main-content {
31
+ height: calc(100vh - var(--history-panel-current-height) - var(--history-panel-toggle-button-height));
32
+ overflow-y: auto;
33
+ width: 100%;
34
+ margin-left: 0;
35
+ transition: height 0.3s ease-in-out;
36
+ }
37
+
38
+ /* Hide scrollbar for specific elements */
39
+ #history-panel::-webkit-scrollbar { display: none; }
40
+ #history-panel { -ms-overflow-style: none; scrollbar-width: none; }
41
+
42
+
43
+ /* Custom scrollbar for main content */
44
+ #main-content::-webkit-scrollbar { width: 8px; }
45
+ #main-content::-webkit-scrollbar-track { background: rgba(51, 65, 85, 0.5); border-radius: 10px; }
46
+ #main-content::-webkit-scrollbar-thumb { background: #475569; border-radius: 10px; }
47
+ #main-content::-webkit-scrollbar-thumb:hover { background: #64748b; }
48
+
49
+ /* History Panel Scrollbar */
50
+ #history-panel::-webkit-scrollbar { height: 6px; background-color: rgba(30, 41, 59, 0.5); }
51
+ #history-panel::-webkit-scrollbar-thumb { background-color: #475569; border-radius: 3px; }
52
+ #history-panel::-webkit-scrollbar-thumb:hover { background-color: #64748b; }
53
+ #history-panel { scrollbar-width: thin; scrollbar-color: #475569 rgba(30, 41, 59, 0.5); }
54
+
55
+ /* Code output styling in config modal */
56
+ #code-output-header {
57
+ display: flex;
58
+ justify-content: space-between;
59
+ align-items: center;
60
+ margin-bottom: 0.5rem; /* mb-2 */
61
+ }
62
+ #copy-code-button {
63
+ background-color: #334155; /* slate-700 */
64
+ color: #94a3b8; /* slate-400 */
65
+ padding: 0.25rem 0.75rem; /* py-1 px-3 */
66
+ font-size: 0.75rem; /* text-xs */
67
+ border-radius: 0.375rem; /* rounded-md */
68
+ transition: background-color 0.2s, color 0.2s;
69
+ line-height: 1; /* Ensure icon is vertically centered */
70
+ }
71
+ #copy-code-button:hover {
72
+ background-color: #475569; /* slate-600 */
73
+ color: #cbd5e1; /* slate-300 */
74
+ }
75
+ #copy-code-button.copied {
76
+ background-color: #059669; /* emerald-600 */
77
+ color: white;
78
+ }
79
+
80
+ #export-code-button {
81
+ background-color: #334155; /* slate-700 */
82
+ color: #94a3b8; /* slate-400 */
83
+ padding: 0.25rem 0.75rem; /* py-1 px-3 */
84
+ font-size: 0.75rem; /* text-xs */
85
+ border-radius: 0.375rem; /* rounded-md */
86
+ transition: background-color 0.2s, color 0.2s, opacity 0.2s;
87
+ line-height: 1; /* Ensure icon is vertically centered */
88
+ }
89
+ #export-code-button:hover:not(:disabled) {
90
+ background-color: #475569; /* slate-600 */
91
+ color: #cbd5e1; /* slate-300 */
92
+ }
93
+ #export-code-button:disabled {
94
+ opacity: 0.5;
95
+ cursor: not-allowed;
96
+ }
97
+
98
+ #code-output-container {
99
+ margin-top: 0.25rem;
100
+ height: 300px;
101
+ overflow-y: auto;
102
+ background-color: #020617;
103
+ border: 1px solid #334155;
104
+ border-radius: 0.375rem;
105
+ padding: 1rem;
106
+ scrollbar-width: thin;
107
+ scrollbar-color: #475569 rgba(30, 41, 59, 0.5);
108
+ }
109
+ #code-output-container::-webkit-scrollbar {
110
+ width: 6px; display: block;
111
+ }
112
+ #code-output-container::-webkit-scrollbar-track {
113
+ background: rgba(51, 65, 85, 0.3); border-radius: 3px;
114
+ }
115
+ #code-output-container::-webkit-scrollbar-thumb {
116
+ background: #475569; border-radius: 3px;
117
+ }
118
+ #code-output-container::-webkit-scrollbar-thumb:hover {
119
+ background: #64748b;
120
+ }
121
+
122
+ #code-output {
123
+ font-family: monospace;
124
+ color: #94a3b8;
125
+ white-space: pre-wrap;
126
+ word-wrap: break-word;
127
+ }
128
+ #code-output code.language-html {
129
+ font-size: 9pt;
130
+ color: #e2e8f0;
131
+ }
132
+
133
+ /* Preview frame styling */
134
+ .preview-frame {
135
+ width: 100%; height: 100%; flex-grow: 1; border: none;
136
+ background-color: #ffffff;
137
+ }
138
+ .preview-loader {
139
+ position: absolute; top: 0; left: 0; right: 0; bottom: 0;
140
+ background-color: rgba(15, 23, 42, 0.7);
141
+ display: flex; align-items: center; justify-content: center; z-index: 10;
142
+ }
143
+
144
+ /* Spinner */
145
+ .spinner {
146
+ width: 2rem; height: 2rem;
147
+ border: 4px solid rgba(71, 85, 105, 0.3);
148
+ border-left-color: #22d3ee; /* cyan-400 */
149
+ border-radius: 50%; animation: spin 1s linear infinite;
150
+ }
151
+ @keyframes spin { to { transform: rotate(360deg); } }
152
+
153
+ /* Refinement loading */
154
+ #refinement-loading-indicator {
155
+ position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%);
156
+ background-color: rgba(15, 23, 42, 0.85);
157
+ backdrop-filter: blur(5px); color: #e2e8f0;
158
+ padding: 1rem 1.5rem; border-radius: 0.5rem;
159
+ z-index: 1000; display: none; align-items: center; gap: 0.75rem;
160
+ border: 1px solid #334155; box-shadow: 0 0 20px rgba(34, 211, 238, 0.2);
161
+ }
162
+ #refinement-loading-indicator svg { color: #22d3ee; }
163
+
164
+ /* Slider value */
165
+ #interval-value, #num-variations-value { font-weight: 600; color: #22d3ee; }
166
+
167
+ /* Config Button (replaces sidebar toggle) */
168
+ #top-left-controls {
169
+ position: fixed; top: 1rem; left: 1rem; z-index: 60;
170
+ display: flex;
171
+ gap: 0.5rem; /* Space between buttons */
172
+ }
173
+
174
+ #config-button, #new-button {
175
+ background-color: rgba(51, 65, 85, 0.7);
176
+ backdrop-filter: blur(5px); border-radius: 9999px; padding: 0.5rem;
177
+ box-shadow: 0 2px 10px rgba(0,0,0,0.3); cursor: pointer;
178
+ border: 1px solid #475569;
179
+ transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
180
+ display: flex; /* Center icon */
181
+ align-items: center;
182
+ justify-content: center;
183
+ }
184
+ #config-button:hover, #new-button:hover {
185
+ background-color: rgba(71, 85, 105, 0.8);
186
+ box-shadow: 0 0 10px rgba(34, 211, 238, 0.2);
187
+ }
188
+ #config-button svg, #new-button svg {
189
+ width: 1.25rem; height: 1.25rem; color: #94a3b8; transition: color 0.2s;
190
+ }
191
+ #config-button:hover svg, #new-button:hover svg {
192
+ color: #22d3ee;
193
  }
194
 
195
+
196
+ /* Full Screen Overlay */
197
+ #fullscreen-overlay {
198
+ position: fixed; top: 0; left: 0; width: 100vw; height: 100vh;
199
+ background-color: rgba(15, 23, 42, 0.95);
200
+ backdrop-filter: blur(8px); z-index: 900; display: flex; flex-direction: column;
201
+ padding: 1rem; box-sizing: border-box; opacity: 0; visibility: hidden;
202
+ transition: opacity 0.3s ease-in-out, visibility 0.3s ease-in-out;
203
+ }
204
+ #fullscreen-overlay.visible { opacity: 1; visibility: visible; }
205
+ #fullscreen-iframe {
206
+ flex-grow: 1; width: 100%; height: 100%; border: 1px solid #334155;
207
+ border-radius: 0.5rem; background-color: white;
208
+ margin-top: 3rem; /* Add space for top buttons */
209
+ }
210
+ #exit-fullscreen-btn {
211
+ position: absolute; top: 1.5rem; right: 1.5rem; z-index: 955; /* Above nav buttons */
212
+ background-color: #ef4444; color: white;
213
+ }
214
+ #exit-fullscreen-btn:hover { background-color: #dc2626; }
215
+
216
+ /* Fullscreen History Navigation Buttons */
217
+ #fullscreen-history-nav {
218
+ position: absolute;
219
+ top: 1.5rem;
220
+ left: 50%;
221
+ transform: translateX(-50%);
222
+ z-index: 950; /* Below exit button, above iframe */
223
+ display: none; /* Hidden by default */
224
+ gap: 1rem;
225
+ }
226
+ #fullscreen-history-nav.visible {
227
+ display: flex; /* Show when needed */
228
+ }
229
+ #fullscreen-history-nav button {
230
+ background-color: rgba(51, 65, 85, 0.8); /* slate-700/80 */
231
+ color: #cbd5e1; /* slate-300 */
232
+ border: 1px solid #64748b; /* slate-500 */
233
+ padding: 0.5rem 1rem; /* py-2 px-4 */
234
+ border-radius: 0.375rem; /* rounded-md */
235
+ font-size: 0.875rem; /* text-sm */
236
+ font-weight: 500;
237
+ transition: background-color 0.2s, border-color 0.2s, color 0.2s;
238
+ box-shadow: 0 2px 5px rgba(0,0,0,0.2);
239
+ }
240
+ #fullscreen-history-nav button:hover:not(:disabled) {
241
+ background-color: rgba(71, 85, 105, 0.9); /* slate-600/90 */
242
+ border-color: #94a3b8; /* slate-400 */
243
+ color: #fff;
244
  }
245
+ #fullscreen-history-nav button:disabled {
246
+ background-color: rgba(51, 65, 85, 0.5);
247
+ border-color: #475569; /* slate-600 */
248
+ color: #64748b; /* slate-500 */
249
+ cursor: not-allowed;
250
+ opacity: 0.6;
251
+ }
252
+
253
+
254
+ body.fullscreen-active #top-left-controls { opacity: 0; pointer-events: none; }
255
+ body.fullscreen-active #main-content { overflow: hidden; }
256
+ body.fullscreen-active #history-panel { display: none; }
257
 
258
+
259
+ /* Perspective Grid Styles (for 4 variations) */
260
+ #perspective-viewport {
261
+ flex-grow: 1; min-height: 0; display: flex;
262
+ align-items: center; justify-content: center;
263
+ padding: 0.5rem; perspective: 1500px; overflow: hidden;
264
+ }
265
+ #preview-grid-wrapper {
266
+ display: grid;
267
+ width: 98%; max-width: 1200px; height: auto;
268
+ aspect-ratio: 16 / 10;
269
+ transition: transform 0.5s ease-out;
270
+ }
271
+ #preview-grid-wrapper.grid-mode {
272
+ grid-template-columns: repeat(2, 1fr);
273
+ grid-template-rows: repeat(2, 1fr); gap: 1.5rem;
274
+ transform-style: preserve-3d;
275
+ transform: rotateX(10deg) rotateY(0deg) scale(0.95);
276
+ }
277
+ #preview-grid-wrapper.single-mode {
278
+ grid-template-columns: 1fr;
279
+ grid-template-rows: 1fr; gap: 0;
280
+ transform: none;
281
+ width: 100%; height: 100%; max-width: none; aspect-ratio: unset;
282
  }
283
 
284
+
285
+ .preview-item-perspective {
286
+ background-color: rgba(51, 65, 85, 0.6);
287
+ backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px);
288
+ border-radius: 0.75rem;
289
+ box-shadow: 0 8px 25px rgba(0, 0, 0, 0.3), 0 0 5px rgba(34, 211, 238, 0.1);
290
+ display: flex; flex-direction: column; overflow: hidden;
291
+ transform-style: preserve-3d;
292
+ transition: transform 0.3s ease, box-shadow 0.3s ease, border-color 0.3s ease;
293
+ border: 1px solid #475569;
294
+ }
295
+ .preview-item-perspective:hover:not(.selected) {
296
+ transform: translateY(-8px) scale(1.03) translateZ(5px);
297
+ box-shadow: 0 12px 35px rgba(0, 0, 0, 0.4), 0 0 15px rgba(34, 211, 238, 0.2);
298
+ border-color: #64748b;
299
+ }
300
+ .preview-item-perspective.selected {
301
+ border-color: #22d3ee;
302
+ transform: scale(1.06) translateZ(20px);
303
+ 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);
304
+ z-index: 5;
305
+ }
306
+ .preview-header {
307
+ padding: 0.6rem 1rem; border-bottom: 1px solid #475569;
308
+ display: flex; justify-content: space-between; align-items: center;
309
+ flex-shrink: 0; background-color: rgba(71, 85, 105, 0.5);
310
+ }
311
+ .preview-header-title {
312
+ font-size: 0.9rem; font-weight: 600; color: #e2e8f0;
313
+ white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
314
+ }
315
+ .preview-header-buttons { display: flex; align-items: center; gap: 0.5rem; }
316
+ .preview-header-buttons button, .preview-header-buttons .fullscreen-btn {
317
+ padding: 0.25rem 0.5rem; border-radius: 0.375rem;
318
+ transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
319
+ }
320
+ .preview-header-buttons .fullscreen-btn { color: #94a3b8; }
321
+ .preview-header-buttons .fullscreen-btn:hover:not(:disabled) {
322
+ color: #22d3ee; background-color: rgba(51, 65, 85, 0.7);
323
+ }
324
+ .preview-header-buttons .fullscreen-btn:disabled { color: #475569; cursor: not-allowed; }
325
+ .preview-body {
326
+ position: relative; flex-grow: 1; min-height: 0;
327
+ display: flex; overflow: hidden;
328
  }
329
 
330
+ .single-preview-item {
331
+ width: 100%; height: 100%;
332
+ background-color: rgba(30, 41, 59, 0.5);
333
+ border: 1px solid #334155;
334
+ border-radius: 0.5rem;
335
+ display: flex; flex-direction: column; overflow: hidden;
336
  }
337
+
338
+
339
+ /* Futuristic input/select styles */
340
+ .futuristic-input, .futuristic-select {
341
+ background-color: rgba(30, 41, 59, 0.8); border: 1px solid #475569;
342
+ color: #e2e8f0; border-radius: 0.375rem;
343
+ box-shadow: inset 0 1px 2px rgba(0,0,0,0.2);
344
+ transition: border-color 0.2s, box-shadow 0.2s;
345
+ padding: 0.5rem 0.75rem;
346
+ }
347
+ .futuristic-input::placeholder { color: #64748b; }
348
+ .futuristic-input:focus, .futuristic-select:focus {
349
+ outline: none; border-color: #22d3ee;
350
+ box-shadow: 0 0 0 2px rgba(34, 211, 238, 0.3), inset 0 1px 2px rgba(0,0,0,0.2);
351
+ }
352
+ .futuristic-select {
353
+ -webkit-appearance: none;
354
+ -moz-appearance: none;
355
+ appearance: none;
356
+ 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");
357
+ background-repeat: no-repeat;
358
+ background-position: right 0.5rem center;
359
+ background-size: 1.2em 1.2em;
360
+ padding-right: 2.5rem;
361
+ }
362
+
363
+
364
+ /* Futuristic button styles */
365
+ .futuristic-button {
366
+ background-color: #0e7490; color: #f0f9ff;
367
+ font-weight: 500; border-radius: 0.375rem;
368
+ transition: background-color 0.2s, box-shadow 0.2s, transform 0.1s;
369
+ box-shadow: 0 2px 5px rgba(0,0,0,0.2), 0 0 0 0 rgba(34, 211, 238, 0.0);
370
+ }
371
+ .futuristic-button:hover:not(:disabled) {
372
+ background-color: #0891b2;
373
+ box-shadow: 0 4px 8px rgba(0,0,0,0.3), 0 0 10px 2px rgba(34, 211, 238, 0.3);
374
+ transform: translateY(-1px);
375
+ }
376
+ .futuristic-button:active:not(:disabled) {
377
+ transform: translateY(0px);
378
+ box-shadow: 0 2px 5px rgba(0,0,0,0.2), 0 0 5px 1px rgba(34, 211, 238, 0.2);
379
+ }
380
+ .futuristic-button:disabled {
381
+ background-color: #334155; color: #64748b;
382
+ cursor: not-allowed; opacity: 0.7;
383
+ }
384
+ .futuristic-button.selected-state {
385
+ background-color: #059669;
386
+ }
387
+ .futuristic-button.selected-state:hover:not(:disabled) {
388
+ background-color: #047857;
389
+ box-shadow: 0 4px 8px rgba(0,0,0,0.3), 0 0 10px 2px rgba(16, 185, 129, 0.3);
390
+ }
391
+
392
+
393
+ /* Range slider styling */
394
+ input[type="range"].futuristic-slider {
395
+ -webkit-appearance: none; appearance: none; width: 100%; height: 8px;
396
+ background: #334155; border-radius: 5px; outline: none;
397
+ opacity: 0.9; transition: opacity .2s;
398
+ }
399
+ input[type="range"].futuristic-slider:hover { opacity: 1; }
400
+ input[type="range"].futuristic-slider::-webkit-slider-thumb {
401
+ -webkit-appearance: none; appearance: none; width: 18px; height: 18px;
402
+ background: #22d3ee; border-radius: 50%; cursor: pointer;
403
+ border: 2px solid #0f172a; box-shadow: 0 0 5px rgba(34, 211, 238, 0.5);
404
+ }
405
+ input[type="range"].futuristic-slider::-moz-range-thumb {
406
+ width: 18px; height: 18px; background: #22d3ee;
407
+ border-radius: 50%; cursor: pointer; border: 2px solid #0f172a;
408
+ box-shadow: 0 0 5px rgba(34, 211, 238, 0.5);
409
+ }
410
+
411
+ /* --- History Panel (Bottom) --- */
412
+ #history-panel-controls {
413
+ height: var(--history-panel-toggle-button-height);
414
+ display: flex;
415
+ align-items: center;
416
+ justify-content: center; /* Center the group */
417
+ gap: 1rem; /* Space between nav arrows and toggle */
418
+ background-color: rgba(15, 23, 42, 0.9); /* Match history panel bg */
419
+ border-top: 1px solid #334155; /* Match history panel border */
420
+ position: relative; /* For potential absolute positioning of button if needed or pseudo-elements */
421
+ z-index: 51; /* Above history panel content, below modals */
422
+ }
423
+
424
+ #history-toggle-button {
425
+ background-color: rgba(51, 65, 85, 0.7); /* slate-700 with alpha */
426
+ border: 1px solid #475569; /* slate-600 */
427
+ border-radius: 9999px; /* pill shape */
428
+ padding: 0.375rem; /* py-1.5 px-1.5 (adjust based on icon size) */
429
+ cursor: pointer;
430
+ display: flex;
431
+ align-items: center;
432
+ justify-content: center;
433
+ color: #94a3b8; /* slate-400 for icon */
434
+ transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
435
+ box-shadow: 0 2px 5px rgba(0,0,0,0.2);
436
+ }
437
+
438
+ #history-toggle-button:hover {
439
+ background-color: rgba(71, 85, 105, 0.8);
440
+ color: #cbd5e1; /* slate-300 */
441
+ box-shadow: 0 0 10px rgba(34, 211, 238, 0.2);
442
+ }
443
+
444
+ #history-toggle-button svg {
445
+ width: 1.25rem; /* w-5 */
446
+ height: 1.25rem; /* h-5 */
447
+ }
448
+
449
+ #history-panel {
450
+ position: fixed;
451
+ bottom: 0;
452
+ left: 0;
453
+ right: 0;
454
+ height: var(--history-panel-current-height); /* Use CSS variable */
455
+ background-color: rgba(15, 23, 42, 0.9);
456
+ backdrop-filter: blur(10px);
457
+ -webkit-backdrop-filter: blur(10px);
458
+ /* border-top: 1px solid #334155; Removed as controls has it now */
459
+ padding: 1rem 2rem; /* Add more horizontal padding for fan effect */
460
+ z-index: 50;
461
+ overflow-x: auto;
462
+ overflow-y: hidden;
463
+ display: flex;
464
+ align-items: center;
465
+ /* gap: 1rem; Remove fixed gap, overlaps will be handled by transforms */
466
+ transition: height 0.3s ease-in-out, padding 0.3s ease-in-out, opacity 0.3s ease-in-out;
467
+ opacity: 1;
468
+ perspective: 1000px; /* Add perspective for 3D transforms */
469
+ }
470
+
471
+ #history-panel.history-collapsed {
472
+ /* height is controlled by --history-panel-current-height via JS */
473
+ padding-top: 0;
474
+ padding-bottom: 0;
475
+ opacity: 0;
476
+ overflow: hidden; /* Ensure content is clipped during collapse */
477
+ }
478
+
479
+ /* Hide thumbnails when panel is collapsed to prevent interaction/layout issues */
480
+ #history-panel.history-collapsed .history-thumbnail-item,
481
+ #history-panel.history-collapsed #history-panel-placeholder {
482
+ display: none;
483
+ }
484
+
485
+ .history-thumbnail-item {
486
+ position: relative; /* Keep for z-index */
487
+ flex-shrink: 0;
488
+ width: 10rem;
489
+ height: 7.5rem;
490
+ background-color: rgba(51, 65, 85, 0.5);
491
+ backdrop-filter: blur(8px);
492
+ -webkit-backdrop-filter: blur(8px);
493
+ border: 1px solid #475569;
494
+ border-radius: 0.5rem;
495
+ box-shadow: 0 6px 18px rgba(0,0,0,0.35),
496
+ inset 0 0 8px rgba(34, 211, 238, 0.15),
497
+ 0 0 2px rgba(34,211,238,0.1);
498
+ display: flex;
499
+ flex-direction: column;
500
+ overflow: hidden;
501
+ /* transform-style: preserve-3d; Remove this */
502
+ /* transform: perspective(600px) rotateY(-8deg) rotateX(3deg) translateZ(-15px); Remove static transform */
503
+ transition: transform 0.7s cubic-bezier(0.25, 0.8, 0.25, 1),
504
+ box-shadow 0.3s cubic-bezier(0.25, 0.8, 0.25, 1),
505
+ border-color 0.3s ease,
506
+ z-index 0.7s ease; /* Add z-index transition */
507
+ /* Add margin to handle potential overlap calculations if needed, maybe negative */
508
+ margin-left: -30px; /* Example: Pull items closer together */
509
+ }
510
+
511
+ /* Pull first item back to the left */
512
+ .history-thumbnail-item:first-child {
513
+ margin-left: 0;
514
+ }
515
+
516
+ .history-thumbnail-item:hover {
517
+ /* transform: perspective(600px) rotateY(-3deg) rotateX(1deg) translateZ(0px) scale(1.08); */ /* Remove old hover transform */
518
+ transform: translateY(-15px) scale(1.15) rotate(0deg); /* Bring up, scale, and un-rotate on hover */
519
+ box-shadow: 0 15px 40px rgba(0,0,0,0.5),
520
+ inset 0 0 12px rgba(34, 211, 238, 0.25),
521
+ 0 0 15px rgba(34,211,238,0.4);
522
+ border-color: #22d3ee;
523
+ z-index: 100; /* Ensure hovered item is on top */
524
+ }
525
+ .history-thumbnail-item.active-history-item {
526
+ border-color: #22d3ee;
527
+ /* transform: perspective(600px) rotateY(-4deg) rotateX(2deg) translateZ(0px) scale(1.06); */ /* Remove old active transform */
528
+ box-shadow: 0 10px 30px rgba(34, 211, 238, 0.3),
529
+ inset 0 0 15px rgba(34, 211, 238, 0.3),
530
+ 0 0 10px rgba(34,211,238,0.4);
531
+ /* Active item might need slightly different base transform/z-index set by JS */
532
+ z-index: 50; /* Ensure active is above others but below hover */
533
+ }
534
+ .history-thumbnail-preview-container {
535
+ width: 100%;
536
+ height: calc(100% - 2rem);
537
+ overflow: hidden;
538
+ position: relative;
539
+ border-bottom: 1px solid #334155;
540
+ cursor: pointer;
541
+ }
542
+ .history-thumbnail-preview {
543
+ width: 400%;
544
+ height: 400%;
545
+ transform: scale(0.25);
546
+ transform-origin: 0 0;
547
+ border: none;
548
+ pointer-events: none;
549
+ background-color: #fff;
550
+ }
551
+ .history-thumbnail-title {
552
+ font-size: 0.65rem;
553
+ color: #cbd5e1;
554
+ padding: 0.25rem 0.5rem;
555
+ text-align: center;
556
+ white-space: nowrap;
557
+ overflow: hidden;
558
+ text-overflow: ellipsis;
559
+ line-height: 1.25rem;
560
+ cursor: pointer;
561
+ }
562
+ .history-thumbnail-fullscreen-btn {
563
+ position: absolute;
564
+ top: 0.25rem;
565
+ right: 0.25rem;
566
+ padding: 0.15rem;
567
+ border-radius: 0.25rem;
568
+ background-color: rgba(30, 41, 59, 0.6);
569
+ color: #94a3b8;
570
+ opacity: 0;
571
+ transition: opacity 0.2s ease-in-out, background-color 0.2s, color 0.2s;
572
+ z-index: 15;
573
+ cursor: pointer;
574
+ }
575
+ .history-thumbnail-item:hover .history-thumbnail-fullscreen-btn {
576
+ opacity: 1;
577
+ }
578
+ .history-thumbnail-fullscreen-btn:hover {
579
+ background-color: rgba(51, 65, 85, 0.8);
580
+ color: #e2e8f0;
581
+ }
582
+ .history-thumbnail-fullscreen-btn svg {
583
+ width: 0.75rem;
584
+ height: 0.75rem;
585
+ }
586
+
587
+ #history-panel-placeholder {
588
+ display: flex;
589
+ align-items: center;
590
+ justify-content: center;
591
+ height: 100%;
592
+ width: 100%;
593
+ color: #64748b;
594
+ font-size: 0.875rem;
595
+ }
596
+
597
+ /* --- Modal Animation Effects --- */
598
+ @keyframes fadeInDistort {
599
+ from {
600
+ opacity: 0;
601
+ transform: scale(0.9) skewY(3deg);
602
+ }
603
+ to {
604
+ opacity: 1;
605
+ transform: scale(1) skewY(0deg);
606
+ }
607
+ }
608
+
609
+ @keyframes fadeOutDistort {
610
+ from {
611
+ opacity: 1;
612
+ transform: scale(1) skewY(0deg);
613
+ }
614
+ to {
615
+ opacity: 0;
616
+ transform: scale(0.95) skewY(-2deg);
617
+ }
618
+ }
619
+
620
+ .modal-anim-fade-in {
621
+ animation: fadeInDistort 0.4s cubic-bezier(0.25, 0.8, 0.25, 1) forwards;
622
+ }
623
+
624
+ .modal-anim-fade-out {
625
+ animation: fadeOutDistort 0.3s cubic-bezier(0.75, 0.2, 0.75, 0.2) forwards;
626
+ }
627
+
628
+
629
+ /* --- Modals (Prompt & Config) --- */
630
+ .modal-overlay { /* Common class for overlays */
631
+ position: fixed;
632
+ inset: 0;
633
+ background-color: rgba(15, 23, 42, 0.8);
634
+ backdrop-filter: blur(8px);
635
+ -webkit-backdrop-filter: blur(8px);
636
+ z-index: 1000;
637
+ display: none;
638
+ align-items: center;
639
+ justify-content: center;
640
+ padding: 2rem;
641
+ opacity: 0; /* Start transparent for animation */
642
+ }
643
+ .modal-overlay.visible {
644
+ display: flex;
645
+ opacity: 1;
646
+ }
647
+ .modal-content { /* Common class for content box */
648
+ background-color: #1e293b;
649
+ padding: 1.5rem 2rem;
650
+ border-radius: 0.75rem;
651
+ border: 1px solid #334155;
652
+ box-shadow: 0 10px 30px rgba(0,0,0,0.4);
653
+ width: 100%;
654
+ max-width: 42rem;
655
+ display: flex;
656
+ flex-direction: column;
657
+ gap: 1rem;
658
+ }
659
+ #modal-user-prompt { /* Specific to prompt modal */
660
+ min-height: 100px;
661
+ resize: vertical;
662
+ }
663
+ .modal-button-secondary {
664
+ background-color: #334155;
665
+ color: #cbd5e1;
666
+ border: 1px solid #475569;
667
+ }
668
+ .modal-button-secondary:hover:not(:disabled) {
669
+ background-color: #475569;
670
+ border-color: #64748b;
671
+ color: #fff;
672
+ }
673
+
674
+ .history-nav-button {
675
+ background-color: transparent; /* Make nav buttons less prominent */
676
+ border: none;
677
+ border-radius: 9999px;
678
+ padding: 0.375rem;
679
+ cursor: pointer;
680
+ display: flex;
681
+ align-items: center;
682
+ justify-content: center;
683
+ color: #64748b; /* slate-500 for icon, less prominent */
684
+ transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
685
+ }
686
+
687
+ .history-nav-button:hover:not(:disabled) {
688
+ background-color: rgba(51, 65, 85, 0.7);
689
+ color: #94a3b8; /* slate-400 */
690
+ }
691
+
692
+ .history-nav-button:disabled {
693
+ color: #334155; /* slate-700 - very faded */
694
+ cursor: not-allowed;
695
+ opacity: 0.5;
696
+ }