openfree commited on
Commit
ac5c0c0
·
verified ·
1 Parent(s): 2f9dd35

Update app.css

Browse files
Files changed (1) hide show
  1. app.css +421 -172
app.css CHANGED
@@ -1,25 +1,38 @@
1
  /* Modern color scheme */
2
  :root {
3
- --primary: #0066cc;
4
- --secondary: #3385ff;
5
- --accent: #66a3ff;
6
- --tertiary: #5d2e8c;
7
- --background: #f7f9fc;
8
- --surface: #ffffff;
9
- --text-primary: #2c3e50;
10
- --text-secondary: #546e7a;
11
- --text-tertiary: #78909c;
12
- --success: #34c759;
13
- --warning: #ff9500;
14
- --error: #ff3b30;
 
 
 
 
 
 
 
 
 
15
  --neutral-100: #f8f9fa;
16
  --neutral-200: #e9ecef;
17
  --neutral-300: #dee2e6;
18
  --neutral-400: #ced4da;
 
 
19
  --shadow-sm: 0 2px 4px rgba(0, 0, 0, 0.05);
20
  --shadow-md: 0 4px 8px rgba(0, 0, 0, 0.08);
21
  --shadow-lg: 0 8px 16px rgba(0, 0, 0, 0.1);
22
  --shadow-xl: 0 12px 24px rgba(0, 0, 0, 0.12);
 
 
23
  --radius-sm: 6px;
24
  --radius-md: 8px;
25
  --radius-lg: 12px;
@@ -33,11 +46,14 @@ body {
33
  line-height: 1.5;
34
  }
35
 
 
36
  .left_header {
37
  display: flex;
38
  flex-direction: column;
 
39
  align-items: center;
40
  background: linear-gradient(135deg, var(--surface), var(--neutral-100));
 
41
  border-radius: 24px;
42
  padding: 2rem;
43
  box-shadow: 0 8px 32px rgba(0, 0, 0, 0.08);
@@ -46,256 +62,489 @@ body {
46
  margin-bottom: 2rem;
47
  }
48
 
49
- .equal-height-container {display: flex; min-height: 900px;}
50
- .equal-height-col {display: flex; flex-direction: column; height: 100%;}
 
 
 
 
51
 
52
- /* ------------------------- */
53
- /* 상단 헤더 */
54
- .app-header {
55
- text-align: center;
56
- padding: 1.5rem 1rem;
57
- margin-bottom: 0.5rem;
58
- background: linear-gradient(to right, var(--primary), var(--secondary));
59
- border-radius: var(--radius-lg);
60
- box-shadow: var(--shadow-md);
61
- color: white;
62
  }
63
- .app-header h1 {
64
- font-size: 2rem;
65
- margin: 0 0 0.5rem;
 
 
66
  }
67
- .app-header p {font-size: 1rem; margin: 0;}
68
 
69
- /* ------------------------- */
70
- /* 배포 결과 배너 */
71
- .deploy-banner {
72
- background: #fff;
73
- border-radius: var(--radius-md);
74
- margin: 0.5rem auto 1.5rem auto;
75
- box-shadow: var(--shadow-md);
76
- max-width: 1200px;
77
- border: 1px solid #ddd;
78
- overflow: hidden;
79
- transition: all 0.3s ease;
80
  }
81
- .deploy-banner.success {border-left: 5px solid var(--success);}
82
- .deploy-banner.error {border-left: 5px solid var(--error);}
83
- .deploy-banner.loading {border-left: 5px solid var(--secondary);}
84
- .deploy-banner-content {
85
- display: flex; align-items: center;
86
- padding: 15px 20px;
87
- }
88
- .deploy-banner-icon {font-size: 24px; margin-right: 15px;}
89
- .deploy-banner-info {flex: 1;}
90
- .deploy-banner-title {font-weight: bold; font-size: 16px; margin-bottom: 5px;}
91
- .deploy-banner-message {color: #666;}
92
- .deploy-banner-url-container {
93
- background: #f5f8ff; padding: 10px 15px; border-radius: 8px;
94
- display: flex; align-items: center; max-width: 400px; margin-top: 8px;
95
- }
96
- .deploy-banner-url {
97
- color: #0066cc; text-decoration: none; font-weight: 500;
98
- word-break: break-all; flex: 1;
99
- }
100
- .deploy-banner-copy-btn {
101
- background: #0066cc; color: #fff; border: none; border-radius: 4px;
102
- padding: 5px 10px; margin-left: 10px; cursor: pointer; font-size: 12px;
103
- }
104
- .deploy-banner-copy-btn:hover {background: #0052a3;}
105
-
106
- /* ------------------------- */
107
- /* 렌더 헤더 */
108
  .render_header {
109
- height: 30px; width: 100%; padding: 5px 16px;
 
 
110
  background: linear-gradient(to right, var(--neutral-100), var(--neutral-200));
111
  border-radius: var(--radius-lg) var(--radius-lg) 0 0;
 
112
  box-shadow: var(--shadow-sm);
113
  border-bottom: 1px solid var(--neutral-300);
114
  }
115
- .render_header > .header_btn {
116
- display: inline-block; height: 10px; width: 10px;
117
- border-radius: 50%; margin-right: 4px;
118
- box-shadow: 0 1px 2px rgba(0,0,0,0.1);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
119
  }
120
- .render_header > .header_btn:nth-child(1) { background-color: var(--error);}
121
- .render_header > .header_btn:nth-child(2) { background-color: var(--warning);}
122
- .render_header > .header_btn:nth-child(3) { background-color: var(--success);}
123
 
124
- /* ------------------------- */
125
- /* 탭 영역 */
126
  .right_panel {
127
- position: relative; height: 900px;
128
- display: flex; flex-direction: column; padding-top: 0;
 
 
 
129
  }
 
130
  .panel {
131
- display: flex; flex-direction: column; height: 900px;
132
- background: var(--surface); border-radius: var(--radius-lg);
133
- box-shadow: var(--shadow-lg); border: 1px solid var(--neutral-300);
 
 
 
 
134
  overflow: hidden;
135
  }
136
- .right_content {
137
- flex: 1; height: 870px;
138
- display: flex; flex-direction: column; align-items: center; justify-content: center;
139
- background: var(--surface); border-radius: 0 0 var(--radius-lg) var(--radius-lg);
 
 
 
 
 
 
 
 
 
140
  }
 
141
  .html_content {
142
- flex: 1; height: 870px; overflow: hidden;
143
- box-shadow: inset 0 2px 4px rgba(0,0,0,0.05);
 
 
 
144
  background: var(--surface);
145
  }
146
 
147
- /* ------------------------- */
148
- /* 우측 패널의 버튼들 */
149
  .right-top-buttons {
150
  margin-bottom: 15px;
151
  background: linear-gradient(to right, var(--neutral-100), var(--neutral-200));
152
- padding: 15px; border-radius: var(--radius-lg);
 
153
  box-shadow: var(--shadow-md);
154
  border: 1px solid var(--neutral-300);
155
  }
 
 
156
  .setting-buttons {
157
- display: flex; gap: 8px; padding: 8px 0; justify-content: space-between;
 
 
 
158
  border-bottom: 2px dashed var(--neutral-300);
 
159
  margin-bottom: 12px;
160
  }
 
161
  .setting-buttons .ant-btn {
162
  background: linear-gradient(135deg, var(--surface), var(--neutral-100));
163
  border: 1px solid var(--neutral-300);
164
- color: var(--text-primary); font-weight: 600; box-shadow: var(--shadow-sm);
165
- min-width: 100px; height: 38px; border-radius: var(--radius-lg);
 
 
 
 
166
  }
 
167
  .setting-buttons .ant-btn:hover {
168
  background: linear-gradient(135deg, var(--neutral-100), var(--neutral-200));
169
- transform: translateY(-2px); box-shadow: var(--shadow-md);
 
170
  }
171
- .action-buttons {margin-top:5px; margin-bottom:8px; display:flex; flex-wrap:wrap; gap:8px;}
 
 
 
 
 
 
 
 
172
  .action-buttons .ant-btn {
173
- min-width:80px; height:40px; font-weight:600; border-radius:var(--radius-md);
174
- box-shadow: var(--shadow-sm); text-transform:uppercase; letter-spacing:0.5px; font-size:0.85em;
 
 
 
 
 
 
175
  }
 
176
  .action-buttons .ant-btn-primary {
177
- background: linear-gradient(to right,var(--primary),var(--secondary));
178
- border:none; color:white;
 
179
  }
 
180
  .action-buttons .ant-btn-primary:hover {
181
  background: linear-gradient(to right, var(--secondary), var(--primary));
182
  transform: translateY(-2px);
183
- box-shadow:0 4px 12px rgba(0,102,204,0.3);
184
  }
 
185
  .action-buttons .ant-btn-default {
186
- background: var(--surface); border:1px solid var(--neutral-300); color: var(--text-primary);
 
 
187
  }
 
188
  .action-buttons .ant-btn-default:hover {
189
- border-color: var(--secondary); color: var(--secondary);
190
- transform: translateY(-2px); box-shadow: var(--shadow-md);
 
 
191
  }
192
- /* 각 버튼별 커스텀 */
 
193
  .send-btn {
194
- background: linear-gradient(to right, var(--primary), var(--secondary))!important;
195
- border:none!important; color:white!important;
 
196
  }
 
197
  .boost-btn {
198
- background: linear-gradient(to right, var(--tertiary), #9966cc)!important;
199
- border:none!important; color:white!important;
 
200
  }
 
201
  .execute-btn {
202
- background: linear-gradient(to right, var(--success), #66d9a8)!important;
203
- border:none!important; color:white!important;
 
204
  }
 
205
  .deploy-btn {
206
- background: linear-gradient(to right, var(--warning), #ffcc66)!important;
207
- border:none!important; color:white!important;
 
208
  }
 
209
  .clear-btn {
210
- background: linear-gradient(to right, #f44336, #ff7961)!important;
211
- border:none!important; color:white!important;
 
212
  }
213
 
214
- /* ------------------------- */
215
- /* 입력 영역 (textarea 등) */
216
- .input-panel {
217
- display: flex; flex-direction: column;
218
- background: var(--surface); border-radius: var(--radius-lg);
219
- border: 1px solid var(--neutral-300); box-shadow: var(--shadow-lg);
220
- padding: 15px; height: 870px!important; max-height:870px!important; overflow:hidden;
 
221
  }
 
 
222
  #component-0 textarea,
223
  .gradio-container textarea,
224
  .ant-input-textarea-large textarea {
225
- height: 730px!important; min-height:300px!important; resize:vertical!important;
226
- border: 2px solid var(--neutral-200); border-radius: var(--radius-lg);
227
- background: var(--surface); color: var(--text-primary);
228
- padding: 1rem; flex-grow:1; box-shadow: inset 0 2px 4px rgba(0,0,0,0.03);
 
 
 
 
 
 
 
229
  }
 
230
  #component-0 textarea:focus,
231
  .gradio-container textarea:focus,
232
  .ant-input-textarea-large textarea:focus {
233
- border-color: var(--accent); box-shadow:0 0 0 3px rgba(102,163,255,0.2);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
234
  }
 
 
235
  .help-text {
 
236
  background-color: var(--neutral-100);
 
 
 
 
237
  border-left: 3px solid var(--accent);
238
- padding: 8px 12px; border-radius: var(--radius-md);
239
- color: var(--text-secondary); font-style: italic; margin-top: 8px;
240
  }
241
 
242
- /* ------------------------- */
243
- /* 배포 결과 박스 */
244
- .deploy-section {
245
  margin-top: 10px;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
246
  }
247
- .deploy-header {
248
- font-weight: bold; margin-bottom: 5px; font-size: 14px;
 
 
 
 
249
  }
250
- .deploy-result-box {
251
- background: var(--neutral-100); padding:10px; border-radius:var(--radius-md);
252
- border-left:3px solid var(--primary); min-height:60px; box-shadow: var(--shadow-sm);
 
 
 
 
 
 
 
 
253
  }
254
- .no-deploy {color:#999; font-style:italic;}
255
- .deploy-success {color: var(--success); padding:10px; background:rgba(52,199,89,0.1); border-radius: var(--radius-md);}
256
- .deploy-error {color: var(--error); padding:10px; background:rgba(255,59,48,0.1); border-radius: var(--radius-md);}
257
- .success-icon, .error-icon {font-size:20px; margin-right:6px;}
258
 
259
- /* ------------------------- */
260
- /* Drawer / Template */
261
- .ant-drawer-content-wrapper {border-radius:16px 0 0 16px;}
262
  .ant-drawer-header {
263
- background: linear-gradient(to right,var(--primary),var(--tertiary));
264
- color:#fff; border-radius:16px 0 0 0;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
265
  }
266
- .ant-drawer-title {color:#fff; font-weight:600;}
267
- .ant-drawer-close {color:#fff;}
268
- .ant-drawer-body {background: var(--surface);}
269
 
270
- .ant-tabs-content {height:100%;}
271
  .ant-tabs-tabpane {
272
- height:100%; display:flex; flex-direction:column;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
273
  }
274
- .history_chatbot button {background:none; border:none;}
275
- .session-drawer .chatbot {height:calc(100vh-200px); overflow:auto;}
276
- .session-history {height:700px; overflow:auto; padding:1rem;}
277
 
278
- /* ------------------------- */
279
- /* 템플릿 카드 */
280
  .prompt-grid {
281
- display:grid; grid-template-columns:repeat(auto-fit,minmax(280px,1fr));
282
- gap:1.5rem; padding:1.5rem;
 
 
283
  }
 
284
  .prompt-card {
285
- background: var(--surface); border-radius: var(--radius-lg);
286
- padding:1.25rem; cursor:pointer; transition:all 0.3s; box-shadow: var(--shadow-sm);
287
- min-height:300px; border:1px solid var(--neutral-200);
288
- }
289
- .prompt-card:hover {transform: translateY(-4px); box-shadow: var(--shadow-lg);}
290
- ::-webkit-scrollbar {width:8px; height:8px;}
291
- ::-webkit-scrollbar-track {background: var(--neutral-100); border-radius:4px;}
292
- ::-webkit-scrollbar-thumb {background: var(--neutral-300); border-radius:4px;}
293
- ::-webkit-scrollbar-thumb:hover {background: var(--neutral-400);}
294
-
295
- /* ------------------------- */
296
- /* 반응형 */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
297
  @media (max-width: 768px) {
 
 
 
 
 
 
 
 
 
 
 
 
298
  .setting-buttons .ant-btn,
299
- .action-buttons .ant-btn {min-width: calc(50% - 8px); margin:4px;}
300
- }
301
- footer, .footer, div[class*="footer"], #footer {display:none!important;}
 
 
 
1
  /* Modern color scheme */
2
  :root {
3
+ /* 주요 브랜드 컬러 */
4
+ --primary: #0066cc; /* 메인 브랜드 컬러 */
5
+ --secondary: #3385ff; /* 밝은 액센트 */
6
+ --accent: #66a3ff; /* 부드러운 포인트 컬러 */
7
+ --tertiary: #5d2e8c; /* 포인트 컬러 */
8
+
9
+ /* 배경 컬러 */
10
+ --background: #f7f9fc; /* 메인 배경 */
11
+ --surface: #ffffff; /* 카드 배경 */
12
+
13
+ /* 텍스트 컬러 */
14
+ --text-primary: #2c3e50; /* 주요 텍스트 */
15
+ --text-secondary: #546e7a; /* 부가 텍스트 */
16
+ --text-tertiary: #78909c; /* 덜 중요한 텍스트 */
17
+
18
+ /* 기능성 컬러 */
19
+ --success: #34c759; /* 성공/확인 */
20
+ --warning: #ff9500; /* 경고/주의 */
21
+ --error: #ff3b30; /* 오류/삭제 */
22
+
23
+ /* 중립 컬러 */
24
  --neutral-100: #f8f9fa;
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;
 
46
  line-height: 1.5;
47
  }
48
 
49
+ /* 헤더 및 레이아웃 */
50
  .left_header {
51
  display: flex;
52
  flex-direction: column;
53
+ justify-content: center;
54
  align-items: center;
55
  background: linear-gradient(135deg, var(--surface), var(--neutral-100));
56
+ backdrop-filter: blur(10px);
57
  border-radius: 24px;
58
  padding: 2rem;
59
  box-shadow: 0 8px 32px rgba(0, 0, 0, 0.08);
 
62
  margin-bottom: 2rem;
63
  }
64
 
65
+ .left_header img {
66
+ width: 180px;
67
+ margin-bottom: 1rem;
68
+ border-radius: 12px;
69
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
70
+ }
71
 
72
+ .left_header h1 {
73
+ margin: 0.5rem 0;
74
+ font-weight: 600;
75
+ color: var(--text-primary);
76
+ }
77
+
78
+ /* 패널 레이아웃 높이 */
79
+ .equal-height-container {
80
+ display: flex;
81
+ min-height: 900px;
82
  }
83
+
84
+ .equal-height-col {
85
+ display: flex;
86
+ flex-direction: column;
87
+ height: 100%;
88
  }
 
89
 
90
+ .fixed-height {
91
+ height: 900px !important;
92
+ }
93
+
94
+ .fixed-content-height {
95
+ height: 870px !important; /* 헤더(30px)를 제외한 높이 */
96
+ }
97
+
98
+ .fixed-input-height {
99
+ height: 730px !important;
100
+ max-height: 730px !important;
101
  }
102
+
103
+ /* 좌측 패널 상단 헤더 */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
104
  .render_header {
105
+ height: 30px;
106
+ width: 100%;
107
+ padding: 5px 16px;
108
  background: linear-gradient(to right, var(--neutral-100), var(--neutral-200));
109
  border-radius: var(--radius-lg) var(--radius-lg) 0 0;
110
+ margin-top: 0;
111
  box-shadow: var(--shadow-sm);
112
  border-bottom: 1px solid var(--neutral-300);
113
  }
114
+
115
+ .header_btn {
116
+ display: inline-block;
117
+ height: 10px;
118
+ width: 10px;
119
+ border-radius: 50%;
120
+ margin-right: 4px;
121
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);
122
+ }
123
+
124
+ .render_header > .header_btn:nth-child(1) {
125
+ background-color: var(--error);
126
+ }
127
+
128
+ .render_header > .header_btn:nth-child(2) {
129
+ background-color: var(--warning);
130
+ }
131
+
132
+ .render_header > .header_btn:nth-child(3) {
133
+ background-color: var(--success);
134
+ }
135
+
136
+ .right_content {
137
+ height: 870px; /* 헤더(30px)를 제외한 높이 */
138
+ display: flex;
139
+ flex-direction: column;
140
+ justify-content: center;
141
+ align-items: center;
142
+ background: var(--surface);
143
+ border-radius: 0 0 var(--radius-lg) var(--radius-lg);
144
  }
 
 
 
145
 
146
+ /* 패널 스타일 */
 
147
  .right_panel {
148
+ position: relative;
149
+ height: 900px;
150
+ display: flex;
151
+ flex-direction: column;
152
+ padding-top: 0;
153
  }
154
+
155
  .panel {
156
+ display: flex;
157
+ flex-direction: column;
158
+ height: 900px;
159
+ background: var(--surface);
160
+ border-radius: var(--radius-lg);
161
+ box-shadow: var(--shadow-lg);
162
+ border: 1px solid var(--neutral-300);
163
  overflow: hidden;
164
  }
165
+
166
+ .input-panel {
167
+ display: flex;
168
+ flex-direction: column;
169
+ margin-top: 0;
170
+ background: var(--surface);
171
+ border-radius: var(--radius-lg);
172
+ border: 1px solid var(--neutral-300);
173
+ box-shadow: var(--shadow-lg);
174
+ padding: 15px;
175
+ height: 870px !important; /* 버튼 영역 제외한 높이 */
176
+ max-height: 870px !important;
177
+ overflow: hidden;
178
  }
179
+
180
  .html_content {
181
+ flex: 1;
182
+ height: 870px; /* 헤더(30px)를 제외한 높이 */
183
+ border-radius: 0 0 var(--radius-lg) var(--radius-lg);
184
+ overflow: hidden;
185
+ box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.05);
186
  background: var(--surface);
187
  }
188
 
189
+ /* 버튼 영역 스타일 */
 
190
  .right-top-buttons {
191
  margin-bottom: 15px;
192
  background: linear-gradient(to right, var(--neutral-100), var(--neutral-200));
193
+ padding: 15px;
194
+ border-radius: var(--radius-lg);
195
  box-shadow: var(--shadow-md);
196
  border: 1px solid var(--neutral-300);
197
  }
198
+
199
+ /* 상단 메뉴 버튼과 하단 액션 버튼 구분 */
200
  .setting-buttons {
201
+ display: flex;
202
+ gap: 8px;
203
+ padding: 8px 0;
204
+ justify-content: space-between;
205
  border-bottom: 2px dashed var(--neutral-300);
206
+ padding-bottom: 12px;
207
  margin-bottom: 12px;
208
  }
209
+
210
  .setting-buttons .ant-btn {
211
  background: linear-gradient(135deg, var(--surface), var(--neutral-100));
212
  border: 1px solid var(--neutral-300);
213
+ color: var(--text-primary);
214
+ font-weight: 600;
215
+ box-shadow: var(--shadow-sm);
216
+ min-width: 100px;
217
+ height: 38px;
218
+ border-radius: var(--radius-lg);
219
  }
220
+
221
  .setting-buttons .ant-btn:hover {
222
  background: linear-gradient(135deg, var(--neutral-100), var(--neutral-200));
223
+ transform: translateY(-2px);
224
+ box-shadow: var(--shadow-md);
225
  }
226
+
227
+ .action-buttons {
228
+ margin-top: 5px;
229
+ margin-bottom: 8px;
230
+ display: flex;
231
+ flex-wrap: wrap;
232
+ gap: 8px;
233
+ }
234
+
235
  .action-buttons .ant-btn {
236
+ min-width: 80px;
237
+ height: 40px;
238
+ font-weight: 600;
239
+ border-radius: var(--radius-md);
240
+ box-shadow: var(--shadow-sm);
241
+ text-transform: uppercase;
242
+ letter-spacing: 0.5px;
243
+ font-size: 0.85em;
244
  }
245
+
246
  .action-buttons .ant-btn-primary {
247
+ background: linear-gradient(to right, var(--primary), var(--secondary));
248
+ border: none;
249
+ color: white;
250
  }
251
+
252
  .action-buttons .ant-btn-primary:hover {
253
  background: linear-gradient(to right, var(--secondary), var(--primary));
254
  transform: translateY(-2px);
255
+ box-shadow: 0 4px 12px rgba(0, 102, 204, 0.3);
256
  }
257
+
258
  .action-buttons .ant-btn-default {
259
+ background: var(--surface);
260
+ border: 1px solid var(--neutral-300);
261
+ color: var(--text-primary);
262
  }
263
+
264
  .action-buttons .ant-btn-default:hover {
265
+ border-color: var(--secondary);
266
+ color: var(--secondary);
267
+ transform: translateY(-2px);
268
+ box-shadow: var(--shadow-md);
269
  }
270
+
271
+ /* 각 버튼 스타일 커스텀 - 클래스 기반 */
272
  .send-btn {
273
+ background: linear-gradient(to right, var(--primary), var(--secondary)) !important;
274
+ border: none !important;
275
+ color: white !important;
276
  }
277
+
278
  .boost-btn {
279
+ background: linear-gradient(to right, var(--tertiary), #9966cc) !important;
280
+ border: none !important;
281
+ color: white !important;
282
  }
283
+
284
  .execute-btn {
285
+ background: linear-gradient(to right, var(--success), #66d9a8) !important;
286
+ border: none !important;
287
+ color: white !important;
288
  }
289
+
290
  .deploy-btn {
291
+ background: linear-gradient(to right, var(--warning), #ffcc66) !important;
292
+ border: none !important;
293
+ color: white !important;
294
  }
295
+
296
  .clear-btn {
297
+ background: linear-gradient(to right, #f44336, #ff7961) !important;
298
+ border: none !important;
299
+ color: white !important;
300
  }
301
 
302
+ /* 메뉴 버튼 추가 스타일 */
303
+ .code-btn, .history-btn, .template-btn {
304
+ transition: all 0.3s ease;
305
+ }
306
+
307
+ .code-btn:hover, .history-btn:hover, .template-btn:hover {
308
+ transform: translateY(-2px);
309
+ box-shadow: var(--shadow-md);
310
  }
311
+
312
+ /* 텍스트 영역 스타일링 */
313
  #component-0 textarea,
314
  .gradio-container textarea,
315
  .ant-input-textarea-large textarea {
316
+ height: 730px !important;
317
+ min-height: 300px !important;
318
+ resize: vertical !important;
319
+ border: 2px solid var(--neutral-200);
320
+ border-radius: var(--radius-lg);
321
+ transition: all 0.3s;
322
+ background: var(--surface);
323
+ color: var(--text-primary);
324
+ padding: 1rem;
325
+ flex-grow: 1;
326
+ box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.03);
327
  }
328
+
329
  #component-0 textarea:focus,
330
  .gradio-container textarea:focus,
331
  .ant-input-textarea-large textarea:focus {
332
+ border-color: var(--accent);
333
+ box-shadow: 0 0 0 3px rgba(102, 163, 255, 0.2);
334
+ }
335
+
336
+ /* 우측 박스 텍스트 폰트 크기 20% 감소 */
337
+ .input-panel textarea,
338
+ .input-panel .ant-input-textarea-large textarea,
339
+ .input-panel .help-text {
340
+ font-size: 0.8em; /* 기본 폰트 크기에서 20% 감소 */
341
+ }
342
+
343
+ .ant-input-textarea {
344
+ display: flex;
345
+ flex-direction: column;
346
+ flex: 1;
347
+ }
348
+
349
+ .input-panel .ant-input-textarea {
350
+ flex: 1;
351
+ display: flex;
352
+ flex-direction: column;
353
+ }
354
+
355
+ .input-panel .ant-input-textarea-large {
356
+ flex: 1;
357
+ }
358
+
359
+ .input-panel textarea {
360
+ flex-grow: 1;
361
+ height: calc(100% - 120px) !important; /* 도움말 텍스트와 배포 결과 공간 확보 */
362
+ min-height: 300px !important;
363
  }
364
+
365
+ /* 도움말 텍스트 스타일 */
366
  .help-text {
367
+ padding: 8px 12px;
368
  background-color: var(--neutral-100);
369
+ border-radius: var(--radius-md);
370
+ color: var(--text-secondary);
371
+ font-style: italic;
372
+ margin-top: 8px;
373
  border-left: 3px solid var(--accent);
 
 
374
  }
375
 
376
+ /* 배포 결과 스타일링 */
377
+ .deploy-result {
 
378
  margin-top: 10px;
379
+ height: 90px;
380
+ max-height: 90px;
381
+ overflow-y: auto;
382
+ background-color: var(--neutral-100);
383
+ padding: 10px;
384
+ border-radius: var(--radius-md);
385
+ border-left: 3px solid var(--primary);
386
+ }
387
+
388
+ #deploy-result a {
389
+ color: var(--primary);
390
+ font-weight: bold;
391
+ text-decoration: underline;
392
+ }
393
+
394
+ [label="배포 결과"] {
395
+ margin-top: 15px;
396
+ padding: 12px;
397
+ background-color: var(--neutral-100);
398
+ border-radius: var(--radius-md);
399
+ border-left: 3px solid var(--primary);
400
  }
401
+
402
+ .deploy-success {
403
+ color: var(--success);
404
+ padding: 10px;
405
+ background-color: rgba(52, 199, 89, 0.1);
406
+ border-radius: var(--radius-md);
407
  }
408
+
409
+ .deploy-error {
410
+ color: var(--error);
411
+ padding: 10px;
412
+ background-color: rgba(255, 59, 48, 0.1);
413
+ border-radius: var(--radius-md);
414
+ }
415
+
416
+ /* Drawer customization */
417
+ .ant-drawer-content-wrapper {
418
+ border-radius: 16px 0 0 16px;
419
  }
 
 
 
 
420
 
 
 
 
421
  .ant-drawer-header {
422
+ background: linear-gradient(to right, var(--primary), var(--tertiary));
423
+ color: white;
424
+ border-radius: 16px 0 0 0;
425
+ }
426
+
427
+ .ant-drawer-title {
428
+ color: white;
429
+ font-weight: 600;
430
+ letter-spacing: 0.5px;
431
+ }
432
+
433
+ .ant-drawer-close {
434
+ color: white;
435
+ }
436
+
437
+ .ant-drawer-body {
438
+ background: var(--surface);
439
+ }
440
+
441
+ /* 탭 컨텐츠 높이 조정 */
442
+ .ant-tabs-content {
443
+ height: 100%;
444
  }
 
 
 
445
 
 
446
  .ant-tabs-tabpane {
447
+ height: 100%;
448
+ display: flex;
449
+ flex-direction: column;
450
+ }
451
+
452
+ /* 히스토리와 템플릿 스타일링 */
453
+ .history_chatbot button {
454
+ background: none;
455
+ border: none;
456
+ }
457
+
458
+ .session-drawer .chatbot {
459
+ height: calc(100vh - 200px);
460
+ overflow-y: auto;
461
+ }
462
+
463
+ .session-history {
464
+ height: 700px;
465
+ overflow-y: auto;
466
+ padding: 1rem;
467
  }
 
 
 
468
 
 
 
469
  .prompt-grid {
470
+ display: grid;
471
+ grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
472
+ gap: 1.5rem;
473
+ padding: 1.5rem;
474
  }
475
+
476
  .prompt-card {
477
+ background: var(--surface);
478
+ border-radius: var(--radius-lg);
479
+ padding: 1.25rem;
480
+ cursor: pointer;
481
+ transition: all 0.3s;
482
+ box-shadow: var(--shadow-sm);
483
+ min-height: 300px;
484
+ border: 1px solid var(--neutral-200);
485
+ }
486
+
487
+ .prompt-card:hover {
488
+ transform: translateY(-4px);
489
+ box-shadow: var(--shadow-lg);
490
+ }
491
+
492
+ /* 스크롤바 스타일링 */
493
+ ::-webkit-scrollbar {
494
+ width: 8px;
495
+ height: 8px;
496
+ }
497
+
498
+ ::-webkit-scrollbar-track {
499
+ background: var(--neutral-100);
500
+ border-radius: 4px;
501
+ }
502
+
503
+ ::-webkit-scrollbar-thumb {
504
+ background: var(--neutral-300);
505
+ border-radius: 4px;
506
+ }
507
+
508
+ ::-webkit-scrollbar-thumb:hover {
509
+ background: var(--neutral-400);
510
+ }
511
+
512
+ /* 애니메이션 */
513
+ @keyframes fadeIn {
514
+ from { opacity: 0; transform: translateY(10px); }
515
+ to { opacity: 1; transform: translateY(0); }
516
+ }
517
+
518
+ .fade-in {
519
+ animation: fadeIn 0.5s ease-out;
520
+ }
521
+
522
+ @keyframes spin {
523
+ to { transform: rotate(360deg); }
524
+ }
525
+
526
+ /* 푸터 숨기기 */
527
+ footer, .footer, div[class*="footer"], #footer {
528
+ display: none !important;
529
+ }
530
+
531
+ /* 반응형 조정 */
532
  @media (max-width: 768px) {
533
+ .left_header {
534
+ padding: 1rem;
535
+ }
536
+
537
+ .prompt-grid {
538
+ grid-template-columns: 1fr;
539
+ }
540
+
541
+ .setting-buttons, .action-buttons {
542
+ flex-wrap: wrap;
543
+ }
544
+
545
  .setting-buttons .ant-btn,
546
+ .action-buttons .ant-btn {
547
+ min-width: calc(50% - 8px);
548
+ margin: 4px;
549
+ }
550
+ }