openfree commited on
Commit
eb507bf
·
verified ·
1 Parent(s): 512ff52

Update app.css

Browse files
Files changed (1) hide show
  1. app.css +183 -159
app.css CHANGED
@@ -4,6 +4,7 @@
4
  --primary: #0066cc; /* 메인 브랜드 컬러 */
5
  --secondary: #3385ff; /* 밝은 액센트 */
6
  --accent: #66a3ff; /* 부드러운 포인트 컬러 */
 
7
 
8
  /* 배경 컬러 */
9
  --background: #f7f9fc; /* 메인 배경 */
@@ -24,6 +25,18 @@
24
  --neutral-200: #e9ecef;
25
  --neutral-300: #dee2e6;
26
  --neutral-400: #ced4da;
 
 
 
 
 
 
 
 
 
 
 
 
27
  }
28
 
29
  body {
@@ -61,10 +74,10 @@ body {
61
  color: var(--text-primary);
62
  }
63
 
64
- /* 패널 레이아웃 조정 - 높이 50% 증가 및 양쪽 일치 */
65
  .equal-height-container {
66
  display: flex;
67
- min-height: 900px; /* 기존 600px에서 50% 증가 */
68
  }
69
 
70
  .equal-height-col {
@@ -73,13 +86,16 @@ body {
73
  height: 100%;
74
  }
75
 
 
76
  .render_header {
77
  height: 30px;
78
  width: 100%;
79
  padding: 5px 16px;
80
- background-color: var(--neutral-100);
81
- border-radius: 8px 8px 0 0;
82
  margin-top: 0;
 
 
83
  }
84
 
85
  .header_btn {
@@ -88,6 +104,7 @@ body {
88
  width: 10px;
89
  border-radius: 50%;
90
  margin-right: 4px;
 
91
  }
92
 
93
  .render_header > .header_btn:nth-child(1) {
@@ -109,7 +126,7 @@ body {
109
  justify-content: center;
110
  align-items: center;
111
  background: var(--surface);
112
- border-radius: 0 0 8px 8px;
113
  }
114
 
115
  .history_chatbot button {
@@ -123,7 +140,40 @@ footer, .footer, div[class*="footer"], #footer {
123
 
124
  /* 우측 상단 버튼 영역 */
125
  .right-top-buttons {
126
- margin-bottom: 10px;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
127
  }
128
 
129
  .action-buttons {
@@ -131,6 +181,74 @@ footer, .footer, div[class*="footer"], #footer {
131
  margin-bottom: 8px;
132
  display: flex;
133
  flex-wrap: wrap;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
134
  }
135
 
136
  #component-0 textarea,
@@ -141,12 +259,13 @@ footer, .footer, div[class*="footer"], #footer {
141
  min-height: 300px !important;
142
  resize: vertical !important;
143
  border: 2px solid var(--neutral-200);
144
- border-radius: 12px;
145
  transition: all 0.3s;
146
  background: var(--surface);
147
  color: var(--text-primary);
148
  padding: 1rem;
149
  flex-grow: 1;
 
150
  }
151
 
152
  #component-0 textarea:focus,
@@ -156,16 +275,9 @@ footer, .footer, div[class*="footer"], #footer {
156
  box-shadow: 0 0 0 3px rgba(102, 163, 255, 0.2);
157
  }
158
 
159
- .setting-buttons {
160
- display: flex;
161
- gap: 8px;
162
- padding: 8px 0;
163
- justify-content: flex-end;
164
- }
165
-
166
  .right_panel {
167
  position: relative;
168
- height: 900px; /* 좌측 패널과 동일하게 900px */
169
  display: flex;
170
  flex-direction: column;
171
  padding-top: 0;
@@ -174,28 +286,33 @@ footer, .footer, div[class*="footer"], #footer {
174
  .panel {
175
  display: flex;
176
  flex-direction: column;
177
- height: 900px; /* 좌측 패널과 동일하게 900px */
178
  background: var(--surface);
179
- border-radius: 8px;
180
- box-shadow: 0 4px 6px rgba(0, 0, 0, 0.05);
 
 
181
  }
182
 
183
  .input-panel {
184
  display: flex;
185
  flex-direction: column;
186
- height: 900px; /* 좌측 패널과 동일하게 900px */
187
- flex: 1;
188
- border-radius: 8px;
189
- margin-top: 0; /* 상단 여백 제거 */
 
 
 
190
  overflow: hidden;
191
  }
192
 
193
  .html_content {
194
  flex: 1;
195
  height: 870px; /* 헤더(30px)를 제외한 높이 */
196
- border-radius: 0 0 8px 8px;
197
  overflow: hidden;
198
- box-shadow: 0 4px 6px rgba(0, 0, 0, 0.05);
199
  background: var(--surface);
200
  }
201
 
@@ -212,23 +329,15 @@ footer, .footer, div[class*="footer"], #footer {
212
  font-size: 0.8em; /* 기본 폰트 크기에서 20% 감소 */
213
  }
214
 
215
- /* 버튼 크기 10% 감소 */
216
- .ant-btn {
217
- flex: 1;
218
- min-width: 72px; /* 기존 80px에서 10% 감소 */
219
- border-radius: 8px;
220
- font-weight: 500;
221
- transition: all 0.3s;
222
- height: 36px; /* 기존 40px에서 10% 감소 */
223
- display: flex;
224
- align-items: center;
225
- justify-content: center;
226
- font-size: 0.9em; /* 버튼 텍스트 크기도 10% 감소 */
227
- }
228
-
229
- /* 버튼에 작은 여백 추가 */
230
- .ant-flex .ant-btn {
231
- margin: 2px;
232
  }
233
 
234
  /* 탭 컨텐츠 높이 조정 */
@@ -242,38 +351,29 @@ footer, .footer, div[class*="footer"], #footer {
242
  flex-direction: column;
243
  }
244
 
245
- .ant-btn-primary {
246
- background: linear-gradient(to right, var(--primary), var(--secondary));
247
- border: none;
248
- color: white;
249
- }
250
-
251
- .ant-btn-primary:hover {
252
- transform: translateY(-2px);
253
- box-shadow: 0 4px 12px rgba(0, 102, 204, 0.3);
254
  }
255
 
256
- .ant-btn-default {
257
- background: var(--surface);
258
- border: 1px solid var(--primary);
259
- color: var(--primary);
260
  }
261
 
262
- .ant-btn-default:hover {
263
- color: var(--secondary);
264
- border-color: var(--secondary);
265
- transform: translateY(-2px);
266
- box-shadow: 0 4px 12px rgba(0, 102, 204, 0.1);
267
  }
268
 
269
- .ant-btn-default[title="Code 실행"] {
270
- background-color: var(--success);
271
  color: white;
272
- border: none;
273
  }
274
 
275
- .ant-btn-default[title="Code 실행"]:hover {
276
- background-color: #40d869;
277
  }
278
 
279
  .session-drawer .chatbot {
@@ -296,81 +396,18 @@ footer, .footer, div[class*="footer"], #footer {
296
 
297
  .prompt-card {
298
  background: var(--surface);
299
- border-radius: 16px;
300
  padding: 1.25rem;
301
  cursor: pointer;
302
  transition: all 0.3s;
303
- box-shadow: 0 4px 6px rgba(0, 0, 0, 0.05);
304
  min-height: 300px;
305
  border: 1px solid var(--neutral-200);
306
  }
307
 
308
  .prompt-card:hover {
309
  transform: translateY(-4px);
310
- box-shadow: 0 8px 16px rgba(0, 0, 0, 0.1);
311
- }
312
-
313
- .card-image {
314
- width: 100%;
315
- height: 200px;
316
- object-fit: cover;
317
- border-radius: 12px;
318
- margin-bottom: 1rem;
319
- box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
320
- }
321
-
322
- .card-name {
323
- font-weight: 600;
324
- margin-bottom: 0.8rem;
325
- font-size: 1.1rem;
326
- color: var(--text-primary);
327
- }
328
-
329
- .card-prompt-container {
330
- position: relative;
331
- padding-right: 60px;
332
- }
333
-
334
- .card-prompt {
335
- font-size: 0.9rem;
336
- color: var(--text-secondary);
337
- display: -webkit-box;
338
- -webkit-line-clamp: 3;
339
- -webkit-box-orient: vertical;
340
- overflow: hidden;
341
- background: var(--neutral-100);
342
- padding: 0.8rem;
343
- border-radius: 8px;
344
- line-height: 1.5;
345
- }
346
-
347
- .copy-btn {
348
- position: absolute;
349
- right: 0;
350
- top: 0;
351
- padding: 6px 12px;
352
- background: var(--accent);
353
- color: white;
354
- border: none;
355
- border-radius: 6px;
356
- cursor: pointer;
357
- font-size: 0.9em;
358
- transition: all 0.2s ease;
359
- }
360
-
361
- .copy-btn:hover {
362
- background: var(--primary);
363
- transform: translateY(-1px);
364
- }
365
-
366
- .copy-btn:active {
367
- transform: translateY(0);
368
- }
369
-
370
- .template-buttons {
371
- margin-top: 1rem;
372
- display: flex;
373
- gap: 0.5rem;
374
  }
375
 
376
  /* Custom scrollbar */
@@ -381,6 +418,7 @@ footer, .footer, div[class*="footer"], #footer {
381
 
382
  ::-webkit-scrollbar-track {
383
  background: var(--neutral-100);
 
384
  }
385
 
386
  ::-webkit-scrollbar-thumb {
@@ -392,30 +430,6 @@ footer, .footer, div[class*="footer"], #footer {
392
  background: var(--neutral-400);
393
  }
394
 
395
- /* Drawer customization */
396
- .ant-drawer-content-wrapper {
397
- border-radius: 16px 0 0 16px;
398
- }
399
-
400
- .ant-drawer-header {
401
- background: var(--primary);
402
- color: white;
403
- border-radius: 16px 0 0 0;
404
- }
405
-
406
- .ant-drawer-title {
407
- color: white;
408
- font-weight: 500;
409
- }
410
-
411
- .ant-drawer-close {
412
- color: white;
413
- }
414
-
415
- .ant-drawer-body {
416
- background: var(--surface);
417
- }
418
-
419
  /* Responsive adjustments */
420
  @media (max-width: 768px) {
421
  .left_header {
@@ -430,14 +444,15 @@ footer, .footer, div[class*="footer"], #footer {
430
  flex-wrap: wrap;
431
  }
432
 
433
- .ant-btn {
434
- min-width: 54px; /* 기존 60px에서 10% 감소 */
435
- font-size: 0.81rem; /* 0.9rem에서 10% 감소 */
436
- }
437
-
438
  .action-buttons {
439
  flex-wrap: wrap;
440
  }
 
 
 
 
 
 
441
  }
442
 
443
  /* Animations */
@@ -448,4 +463,13 @@ footer, .footer, div[class*="footer"], #footer {
448
 
449
  .fade-in {
450
  animation: fadeIn 0.5s ease-out;
 
 
 
 
 
 
 
 
 
451
  }
 
4
  --primary: #0066cc; /* 메인 브랜드 컬러 */
5
  --secondary: #3385ff; /* 밝은 액센트 */
6
  --accent: #66a3ff; /* 부드러운 포인트 컬러 */
7
+ --tertiary: #5d2e8c; /* 포인트 컬러 */
8
 
9
  /* 배경 컬러 */
10
  --background: #f7f9fc; /* 메인 배경 */
 
25
  --neutral-200: #e9ecef;
26
  --neutral-300: #dee2e6;
27
  --neutral-400: #ced4da;
28
+
29
+ /* 그림자 및 효과 */
30
+ --shadow-sm: 0 2px 4px rgba(0, 0, 0, 0.05);
31
+ --shadow-md: 0 4px 8px rgba(0, 0, 0, 0.08);
32
+ --shadow-lg: 0 8px 16px rgba(0, 0, 0, 0.1);
33
+ --shadow-xl: 0 12px 24px rgba(0, 0, 0, 0.12);
34
+
35
+ /* 둥근 모서리 */
36
+ --radius-sm: 6px;
37
+ --radius-md: 8px;
38
+ --radius-lg: 12px;
39
+ --radius-xl: 16px;
40
  }
41
 
42
  body {
 
74
  color: var(--text-primary);
75
  }
76
 
77
+ /* 패널 레이아웃 조정 - 높이 일치 */
78
  .equal-height-container {
79
  display: flex;
80
+ min-height: 900px;
81
  }
82
 
83
  .equal-height-col {
 
86
  height: 100%;
87
  }
88
 
89
+ /* 좌측 패널 상단 헤더 */
90
  .render_header {
91
  height: 30px;
92
  width: 100%;
93
  padding: 5px 16px;
94
+ background: linear-gradient(to right, var(--neutral-100), var(--neutral-200));
95
+ border-radius: var(--radius-lg) var(--radius-lg) 0 0;
96
  margin-top: 0;
97
+ box-shadow: var(--shadow-sm);
98
+ border-bottom: 1px solid var(--neutral-300);
99
  }
100
 
101
  .header_btn {
 
104
  width: 10px;
105
  border-radius: 50%;
106
  margin-right: 4px;
107
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);
108
  }
109
 
110
  .render_header > .header_btn:nth-child(1) {
 
126
  justify-content: center;
127
  align-items: center;
128
  background: var(--surface);
129
+ border-radius: 0 0 var(--radius-lg) var(--radius-lg);
130
  }
131
 
132
  .history_chatbot button {
 
140
 
141
  /* 우측 상단 버튼 영역 */
142
  .right-top-buttons {
143
+ margin-bottom: 15px;
144
+ background: linear-gradient(to right, var(--neutral-100), var(--neutral-200));
145
+ padding: 15px;
146
+ border-radius: var(--radius-lg);
147
+ box-shadow: var(--shadow-md);
148
+ border: 1px solid var(--neutral-300);
149
+ }
150
+
151
+ /* 상단 메뉴 버튼과 하단 액션 버튼 구분 */
152
+ .setting-buttons {
153
+ display: flex;
154
+ gap: 8px;
155
+ padding: 8px 0;
156
+ justify-content: flex-end;
157
+ border-bottom: 2px dashed var(--neutral-300);
158
+ padding-bottom: 12px;
159
+ margin-bottom: 12px;
160
+ }
161
+
162
+ .setting-buttons .ant-btn {
163
+ background: linear-gradient(135deg, var(--surface), var(--neutral-100));
164
+ border: 1px solid var(--neutral-300);
165
+ color: var(--text-primary);
166
+ font-weight: 600;
167
+ box-shadow: var(--shadow-sm);
168
+ min-width: 100px;
169
+ height: 38px;
170
+ border-radius: var(--radius-lg);
171
+ }
172
+
173
+ .setting-buttons .ant-btn:hover {
174
+ background: linear-gradient(135deg, var(--neutral-100), var(--neutral-200));
175
+ transform: translateY(-2px);
176
+ box-shadow: var(--shadow-md);
177
  }
178
 
179
  .action-buttons {
 
181
  margin-bottom: 8px;
182
  display: flex;
183
  flex-wrap: wrap;
184
+ gap: 8px;
185
+ }
186
+
187
+ .action-buttons .ant-btn {
188
+ min-width: 80px;
189
+ height: 40px;
190
+ font-weight: 600;
191
+ border-radius: var(--radius-md);
192
+ box-shadow: var(--shadow-sm);
193
+ text-transform: uppercase;
194
+ letter-spacing: 0.5px;
195
+ font-size: 0.85em;
196
+ }
197
+
198
+ .action-buttons .ant-btn-primary {
199
+ background: linear-gradient(to right, var(--primary), var(--secondary));
200
+ border: none;
201
+ color: white;
202
+ }
203
+
204
+ .action-buttons .ant-btn-primary:hover {
205
+ background: linear-gradient(to right, var(--secondary), var(--primary));
206
+ transform: translateY(-2px);
207
+ box-shadow: 0 4px 12px rgba(0, 102, 204, 0.3);
208
+ }
209
+
210
+ .action-buttons .ant-btn-default {
211
+ background: var(--surface);
212
+ border: 1px solid var(--neutral-300);
213
+ color: var(--text-primary);
214
+ }
215
+
216
+ .action-buttons .ant-btn-default:hover {
217
+ border-color: var(--secondary);
218
+ color: var(--secondary);
219
+ transform: translateY(-2px);
220
+ box-shadow: var(--shadow-md);
221
+ }
222
+
223
+ /* 각 버튼 스타일 커스텀 */
224
+ .ant-btn[title="전송"] {
225
+ background: linear-gradient(to right, var(--primary), var(--secondary));
226
+ border: none;
227
+ color: white;
228
+ }
229
+
230
+ .ant-btn[title="증강"] {
231
+ background: linear-gradient(to right, var(--tertiary), #9966cc);
232
+ border: none;
233
+ color: white;
234
+ }
235
+
236
+ .ant-btn[title="코드"] {
237
+ background: linear-gradient(to right, var(--success), #66d9a8);
238
+ border: none;
239
+ color: white;
240
+ }
241
+
242
+ .ant-btn[title="배포"] {
243
+ background: linear-gradient(to right, var(--warning), #ffcc66);
244
+ border: none;
245
+ color: white;
246
+ }
247
+
248
+ .ant-btn[title="클리어"] {
249
+ background: linear-gradient(to right, #f44336, #ff7961);
250
+ border: none;
251
+ color: white;
252
  }
253
 
254
  #component-0 textarea,
 
259
  min-height: 300px !important;
260
  resize: vertical !important;
261
  border: 2px solid var(--neutral-200);
262
+ border-radius: var(--radius-lg);
263
  transition: all 0.3s;
264
  background: var(--surface);
265
  color: var(--text-primary);
266
  padding: 1rem;
267
  flex-grow: 1;
268
+ box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.03);
269
  }
270
 
271
  #component-0 textarea:focus,
 
275
  box-shadow: 0 0 0 3px rgba(102, 163, 255, 0.2);
276
  }
277
 
 
 
 
 
 
 
 
278
  .right_panel {
279
  position: relative;
280
+ height: 900px;
281
  display: flex;
282
  flex-direction: column;
283
  padding-top: 0;
 
286
  .panel {
287
  display: flex;
288
  flex-direction: column;
289
+ height: 900px;
290
  background: var(--surface);
291
+ border-radius: var(--radius-lg);
292
+ box-shadow: var(--shadow-lg);
293
+ border: 1px solid var(--neutral-300);
294
+ overflow: hidden;
295
  }
296
 
297
  .input-panel {
298
  display: flex;
299
  flex-direction: column;
300
+ margin-top: 0;
301
+ background: var(--surface);
302
+ border-radius: var(--radius-lg);
303
+ border: 1px solid var(--neutral-300);
304
+ box-shadow: var(--shadow-lg);
305
+ padding: 15px;
306
+ height: 870px; /* 버튼 영역 제외한 높이 */
307
  overflow: hidden;
308
  }
309
 
310
  .html_content {
311
  flex: 1;
312
  height: 870px; /* 헤더(30px)를 제외한 높이 */
313
+ border-radius: 0 0 var(--radius-lg) var(--radius-lg);
314
  overflow: hidden;
315
+ box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.05);
316
  background: var(--surface);
317
  }
318
 
 
329
  font-size: 0.8em; /* 기본 폰트 크기에서 20% 감소 */
330
  }
331
 
332
+ /* 도움말 텍스트 스타일 */
333
+ .help-text {
334
+ padding: 8px 12px;
335
+ background-color: var(--neutral-100);
336
+ border-radius: var(--radius-md);
337
+ color: var(--text-secondary);
338
+ font-style: italic;
339
+ margin-top: 8px;
340
+ border-left: 3px solid var(--accent);
 
 
 
 
 
 
 
 
341
  }
342
 
343
  /* 탭 컨텐츠 높이 조정 */
 
351
  flex-direction: column;
352
  }
353
 
354
+ /* Drawer customization */
355
+ .ant-drawer-content-wrapper {
356
+ border-radius: 16px 0 0 16px;
 
 
 
 
 
 
357
  }
358
 
359
+ .ant-drawer-header {
360
+ background: linear-gradient(to right, var(--primary), var(--tertiary));
361
+ color: white;
362
+ border-radius: 16px 0 0 0;
363
  }
364
 
365
+ .ant-drawer-title {
366
+ color: white;
367
+ font-weight: 600;
368
+ letter-spacing: 0.5px;
 
369
  }
370
 
371
+ .ant-drawer-close {
 
372
  color: white;
 
373
  }
374
 
375
+ .ant-drawer-body {
376
+ background: var(--surface);
377
  }
378
 
379
  .session-drawer .chatbot {
 
396
 
397
  .prompt-card {
398
  background: var(--surface);
399
+ border-radius: var(--radius-lg);
400
  padding: 1.25rem;
401
  cursor: pointer;
402
  transition: all 0.3s;
403
+ box-shadow: var(--shadow-sm);
404
  min-height: 300px;
405
  border: 1px solid var(--neutral-200);
406
  }
407
 
408
  .prompt-card:hover {
409
  transform: translateY(-4px);
410
+ box-shadow: var(--shadow-lg);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
411
  }
412
 
413
  /* Custom scrollbar */
 
418
 
419
  ::-webkit-scrollbar-track {
420
  background: var(--neutral-100);
421
+ border-radius: 4px;
422
  }
423
 
424
  ::-webkit-scrollbar-thumb {
 
430
  background: var(--neutral-400);
431
  }
432
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
433
  /* Responsive adjustments */
434
  @media (max-width: 768px) {
435
  .left_header {
 
444
  flex-wrap: wrap;
445
  }
446
 
 
 
 
 
 
447
  .action-buttons {
448
  flex-wrap: wrap;
449
  }
450
+
451
+ .setting-buttons .ant-btn,
452
+ .action-buttons .ant-btn {
453
+ min-width: calc(50% - 8px);
454
+ margin: 4px;
455
+ }
456
  }
457
 
458
  /* Animations */
 
463
 
464
  .fade-in {
465
  animation: fadeIn 0.5s ease-out;
466
+ }
467
+
468
+ /* 배포 결과 영역 */
469
+ [label="배포 결과"] {
470
+ margin-top: 15px;
471
+ padding: 12px;
472
+ background-color: var(--neutral-100);
473
+ border-radius: var(--radius-md);
474
+ border-left: 3px solid var(--primary);
475
  }