ssboost commited on
Commit
ee5358a
·
verified ·
1 Parent(s): 2c51ce3

Update style.css

Browse files
Files changed (1) hide show
  1. style.css +316 -97
style.css CHANGED
@@ -1,19 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  body {
2
- font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
3
  line-height: 1.6;
4
  margin: 0;
5
  padding: 0;
6
- background-color: #f0f0f0;
7
- color: #333;
8
  }
9
 
10
  .container {
11
- max-width: 1200px; /* 페이지 전체 컨테이너 최대 너비 */
12
  margin: 20px auto;
13
  padding: 20px;
14
  background-color: white;
15
- box-shadow: 0 0 10px rgba(0,0,0,0.1);
16
- border-radius: 8px;
17
  display: flex;
18
  flex-direction: column;
19
  }
@@ -28,6 +42,28 @@ p {
28
  margin-bottom: 20px;
29
  }
30
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
31
  .upload-container {
32
  display: flex;
33
  flex-wrap: wrap;
@@ -39,22 +75,23 @@ p {
39
  .upload-box {
40
  flex: 1;
41
  min-width: 300px;
42
- border: 2px dashed #3498db;
43
- border-radius: 5px;
44
  padding: 20px;
45
  text-align: center;
46
  transition: background-color 0.3s;
 
47
  }
48
 
49
  .upload-box:hover {
50
- background-color: #ecf0f1;
51
  }
52
 
53
  .upload-label {
54
  display: block;
55
  font-weight: bold;
56
  margin-bottom: 10px;
57
- color: #2980b9;
58
  }
59
 
60
  .file-input {
@@ -63,77 +100,104 @@ p {
63
 
64
  .upload-button {
65
  display: inline-block;
66
- background-color: #3498db;
67
  color: white;
68
  padding: 10px 20px;
69
- border-radius: 5px;
70
  cursor: pointer;
71
- transition: background-color 0.3s;
 
 
72
  }
73
 
74
  .upload-button:hover {
75
- background-color: #2980b9;
 
76
  }
77
 
78
  /* 작업 영역 래퍼 */
79
  .workspace-wrapper {
80
- display: flex; /* 캔버스+컨트롤 영역과 미리보기 영역을 가로로 배치 */
81
- flex-wrap: wrap; /* 화면이 작을 경우 줄바꿈 허용 */
82
  gap: 20px;
83
  margin-bottom: 20px;
84
  }
85
 
86
  /* 캔버스와 컨트롤 패널들을 묶는 영역 */
87
  .canvas-and-controls {
88
- flex: 3; /* 가로 배치 시 비율 (캔버스 영역이 더 넓게) */
89
  display: flex;
90
- flex-direction: column; /* 캔버스 아래에 컨트롤 패널 배치 (필요시 구조 변경) */
91
- min-width: 0; /* flex item의 내용이 넘칠 때 수축하도록 함 */
92
  }
93
 
94
  .canvas-container {
95
  position: relative;
96
- width: 100%; /* 부모 너비에 맞춤 */
97
- /* max-width: 800px; /* 캔버스 최대 너비는 JS에서 설정된 CANVAS_WIDTH에 따름 */
98
- border: 2px solid #333;
99
- border-radius: 4px;
100
- overflow: hidden; /* 캔버스가 넘치지 않도록 */
101
- margin-bottom: 20px; /* 컨트롤 패널과의 간격 */
102
  }
103
 
104
  #canvas {
105
- display: block; /* 하단 여백 제거 */
106
- width: 100%; /* canvas-container에 꽉 차게 */
107
- height: auto; /* 비율 유지 */
108
  background-color: #ffffff;
109
  cursor: default;
110
  }
111
 
112
- /* 컨트롤 패널들을 모아두는 사이드바 역할 (또는 캔버스 아래 영역) */
113
  .control-panel-sidebar {
114
  display: flex;
115
  flex-direction: column;
116
  gap: 15px;
117
- /* flex: 1; /* canvas-and-controls 내에서 비율 (필요시) */
118
  }
119
 
120
-
121
  .control-group {
122
  display: flex;
123
  flex-direction: column;
124
- /* align-items: center; 항목들이 중앙 정렬되지 않도록 제거 또는 수정 */
125
- border: 1px solid #ddd;
126
  padding: 15px;
127
- border-radius: 5px;
128
- background-color: #f9f9f9;
129
- /* min-width: 250px; /* 최소 너비는 상황에 따라 조정 */
130
  }
131
 
132
  .control-group h3 {
133
  margin: 0 0 15px 0;
134
- font-size: 1rem;
135
  text-align: center;
136
  width: 100%;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
137
  }
138
 
139
  .slider-container {
@@ -148,21 +212,25 @@ p {
148
 
149
  .slider-container label {
150
  font-weight: bold;
151
- min-width: 50px; /* "회전:" 등 레이블이 잘리지 않도록 충분히 */
152
  text-align: left;
153
  flex-shrink: 0;
 
154
  }
155
 
156
  .slider-container input[type="range"] {
157
- flex-grow: 1; /* 슬라이더가 남은 공간을 모두 차지 */
158
- width: auto; /* flex-grow가 작동하도록 auto로 설정 */
159
- margin: 0 5px; /* 좌우 약간의 여백 */
 
160
  }
161
 
162
  .slider-container .value-display {
163
- min-width: 40px; /* 값 표시 영역 너비 */
164
- text-align: right; /* 값을 오른쪽에 표시 */
165
  flex-shrink: 0;
 
 
166
  }
167
 
168
  /* 레이어 목록 스타일 */
@@ -170,12 +238,13 @@ p {
170
  width: 100%;
171
  max-height: 150px;
172
  overflow-y: auto;
173
- border: 1px solid #ddd;
174
- border-radius: 4px;
 
175
  }
176
 
177
  .layer-item {
178
- padding: 8px;
179
  border-bottom: 1px solid #eee;
180
  cursor: pointer;
181
  display: flex;
@@ -183,67 +252,159 @@ p {
183
  align-items: center;
184
  }
185
  .layer-item:last-child { border-bottom: none; }
186
- .layer-item:hover { background-color: #f5f5f5; }
187
- .layer-item.active { background-color: #e3f2fd; font-weight: bold; }
188
  .layer-name { flex-grow: 1; padding-left: 5px; }
189
  .layer-controls { display: flex; gap: 5px; }
190
  .layer-button {
191
- background-color: #f0f0f0; border: 1px solid #ddd; border-radius: 3px;
192
- padding: 2px 5px; cursor: pointer; font-size: 11px; color: #555;
 
 
 
 
 
193
  transition: all 0.2s ease;
194
  }
195
- .layer-button:hover { background-color: #e0e0e0; }
196
-
 
 
197
 
198
  /* 필터 패널 스타일 */
199
  .filter-panel {
200
- /* width: 100%; /* 부모(.control-panel-sidebar)에 의해 너비 결정 */
201
  padding: 15px;
202
- border: 1px solid #ddd;
203
- border-radius: 5px;
204
- background-color: #f9f9f9;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
205
  }
206
- .filter-panel h3 { margin: 0 0 15px 0; text-align: center; }
207
- .filter-sliders { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 15px; }
208
- .filter-slider-container { display: flex; flex-direction: column; gap: 5px; width: 100%; padding: 0 5px; box-sizing: border-box; }
209
- .filter-slider-container label { font-size: 14px; margin-bottom: 5px; text-align: left; }
210
- .large-slider { width: 100%; height: 20px; /* 슬라이더 높이 조정 */ }
211
- .filter-slider-container .value-display { text-align: right; font-weight: bold; }
212
- .filter-buttons { display: flex; justify-content: center; margin-top: 15px; }
213
- #reset-filter-btn { width: auto; padding: 8px 15px; flex-grow: 1; max-width: 200px; }
214
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
215
 
216
  /* 미리보기 섹션 */
217
  .preview-section {
218
- flex: 2; /* 가로 배치 시 비율 (캔버스 영역보다 작게) */
219
- display: flex; /* 내부 컨테이너 정렬 위함 */
220
  flex-direction: column;
221
- align-items: center; /* 미리보기 컨테이너를 중앙에 */
222
- min-width: 0; /* flex item의 내용이 넘칠 때 수축하도록 함 */
223
  }
224
 
225
  .preview-container {
226
- width: 100%; /* preview-section 너비에 맞춤 */
227
- margin-top: 0; /* workspace-wrapper에서 gap으로 처리 */
228
- display: none; /* 초기에는 숨김 (JS로 제어) */
229
  flex-direction: column;
230
  align-items: center;
231
- padding: 10px;
232
- border: 1px dashed #ccc;
233
- border-radius: 4px;
234
- background-color: #f9f9f9;
 
235
  }
236
 
237
  .preview-container h3 {
238
- margin-bottom: 10px;
 
 
 
 
 
 
 
 
 
 
 
 
239
  }
240
 
241
  #preview-img {
242
  max-width: 100%;
243
- max-height: 400px; /* 미리보기 이미지 최대 높이 제한 */
244
- border: 2px solid #333;
245
- border-radius: 4px;
246
- object-fit: contain; /* 이미지 비율 유지 */
 
247
  }
248
 
249
  /* 하단 버튼 컨테이너 */
@@ -251,42 +412,100 @@ p {
251
  display: flex;
252
  justify-content: center;
253
  gap: 15px;
254
- margin-top: 20px; /* workspace-wrapper 와의 간격 */
255
  flex-wrap: wrap;
256
  }
257
 
258
  button {
259
  padding: 10px 20px;
260
  border: none;
261
- border-radius: 5px;
262
  cursor: pointer;
263
  font-weight: bold;
264
- transition: background-color 0.3s;
 
265
  }
266
- .primary-btn { background-color: #27ae60; color: white; }
267
- .primary-btn:hover { background-color: #219653; }
268
- .danger-btn { background-color: #e74c3c; color: white; }
269
- .danger-btn:hover { background-color: #c0392b; }
270
- .info-btn { background-color: #3498db; color: white; }
271
- .info-btn:hover { background-color: #2980b9; }
272
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
273
 
274
  /* 모바일 대응 */
275
- @media (max-width: 900px) { /* 좀 더 넓은 화면에서부터 레이아웃 변경 고려 */
276
  .workspace-wrapper {
277
- flex-direction: column; /* 작업 영역과 미리보기를 세로로 배치 */
278
- align-items: center; /* 중앙 정렬 */
279
  }
280
  .canvas-and-controls, .preview-section {
281
- flex-basis: auto; /* flex 비율 초기화 */
282
- width: 100%; /* 전체 너비 사용 */
283
- max-width: 600px; /* 모바일에서 너무 넓어지지 않도록 */
284
  }
285
  .control-panel-sidebar {
286
- width: 100%; /* 전체 너비 사용 */
287
  }
288
  .filter-sliders {
289
- grid-template-columns: 1fr; /* 필터 슬라이더 한 줄로 */
290
  }
291
  }
292
 
 
1
+ /* FontAwesome 아이콘 포함 */
2
+ @import url("https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css");
3
+
4
+ :root {
5
+ --primary-color: #FF7F00;
6
+ --secondary-color: #ff9a8b;
7
+ --accent-color: #FF6B6B;
8
+ --background-color: #FFFFFF;
9
+ --card-bg: #ffffff;
10
+ --text-color: #334155;
11
+ --border-radius: 18px;
12
+ --shadow: 0 8px 30px rgba(251, 127, 13, 0.08);
13
+ }
14
+
15
  body {
16
+ font-family: 'Pretendard', 'Noto Sans KR', -apple-system, BlinkMacSystemFont, sans-serif;
17
  line-height: 1.6;
18
  margin: 0;
19
  padding: 0;
20
+ background-color: var(--background-color);
21
+ color: var(--text-color);
22
  }
23
 
24
  .container {
25
+ max-width: 1200px;
26
  margin: 20px auto;
27
  padding: 20px;
28
  background-color: white;
29
+ box-shadow: var(--shadow);
30
+ border-radius: var(--border-radius);
31
  display: flex;
32
  flex-direction: column;
33
  }
 
42
  margin-bottom: 20px;
43
  }
44
 
45
+ /* 헤더 섹션 스타일 */
46
+ .container > h1 {
47
+ background: linear-gradient(135deg, var(--primary-color), var(--secondary-color));
48
+ color: white;
49
+ padding: 2rem;
50
+ border-radius: 15px;
51
+ margin-bottom: 20px;
52
+ box-shadow: var(--shadow);
53
+ font-size: 2.5rem;
54
+ font-weight: 700;
55
+ }
56
+
57
+ .container > p {
58
+ background-color: #FFF6F0;
59
+ border-radius: var(--border-radius);
60
+ padding: 1.5rem;
61
+ margin-bottom: 1.5rem;
62
+ border: 1px solid rgba(255, 127, 0, 0.1);
63
+ color: var(--text-color);
64
+ font-size: 1.1rem;
65
+ }
66
+
67
  .upload-container {
68
  display: flex;
69
  flex-wrap: wrap;
 
75
  .upload-box {
76
  flex: 1;
77
  min-width: 300px;
78
+ border: 2px solid var(--primary-color);
79
+ border-radius: var(--border-radius);
80
  padding: 20px;
81
  text-align: center;
82
  transition: background-color 0.3s;
83
+ background-color: #FFF6F0;
84
  }
85
 
86
  .upload-box:hover {
87
+ background-color: #FFF0E6;
88
  }
89
 
90
  .upload-label {
91
  display: block;
92
  font-weight: bold;
93
  margin-bottom: 10px;
94
+ color: var(--primary-color);
95
  }
96
 
97
  .file-input {
 
100
 
101
  .upload-button {
102
  display: inline-block;
103
+ background: linear-gradient(135deg, var(--primary-color), var(--secondary-color));
104
  color: white;
105
  padding: 10px 20px;
106
+ border-radius: 30px;
107
  cursor: pointer;
108
+ transition: all 0.3s ease;
109
+ font-weight: 600;
110
+ box-shadow: 0 4px 8px rgba(251, 127, 13, 0.25);
111
  }
112
 
113
  .upload-button:hover {
114
+ transform: translateY(-2px);
115
+ box-shadow: 0 6px 12px rgba(251, 127, 13, 0.3);
116
  }
117
 
118
  /* 작업 영역 래퍼 */
119
  .workspace-wrapper {
120
+ display: flex;
121
+ flex-wrap: wrap;
122
  gap: 20px;
123
  margin-bottom: 20px;
124
  }
125
 
126
  /* 캔버스와 컨트롤 패널들을 묶는 영역 */
127
  .canvas-and-controls {
128
+ flex: 3;
129
  display: flex;
130
+ flex-direction: column;
131
+ min-width: 0;
132
  }
133
 
134
  .canvas-container {
135
  position: relative;
136
+ width: 100%;
137
+ border: 2px solid var(--primary-color);
138
+ border-radius: var(--border-radius);
139
+ overflow: hidden;
140
+ margin-bottom: 20px;
141
+ box-shadow: var(--shadow);
142
  }
143
 
144
  #canvas {
145
+ display: block;
146
+ width: 100%;
147
+ height: auto;
148
  background-color: #ffffff;
149
  cursor: default;
150
  }
151
 
152
+ /* 컨트롤 패널들을 모아두는 사이드바 역할 */
153
  .control-panel-sidebar {
154
  display: flex;
155
  flex-direction: column;
156
  gap: 15px;
 
157
  }
158
 
 
159
  .control-group {
160
  display: flex;
161
  flex-direction: column;
162
+ border: 1px solid rgba(255, 127, 0, 0.2);
 
163
  padding: 15px;
164
+ border-radius: var(--border-radius);
165
+ background-color: #FFF6F0;
166
+ box-shadow: var(--shadow);
167
  }
168
 
169
  .control-group h3 {
170
  margin: 0 0 15px 0;
171
+ font-size: 1.1rem;
172
  text-align: center;
173
  width: 100%;
174
+ color: var(--primary-color);
175
+ font-weight: 700;
176
+ padding-bottom: 8px;
177
+ border-bottom: 2px solid var(--primary-color);
178
+ display: flex;
179
+ align-items: center;
180
+ justify-content: center;
181
+ }
182
+
183
+ /* 각 컨트롤 그룹 아이콘 추가 */
184
+ .control-group h3::before {
185
+ font-family: "Font Awesome 6 Free";
186
+ margin-right: 10px;
187
+ color: var(--primary-color);
188
+ font-weight: 900;
189
+ }
190
+
191
+ .control-group:nth-of-type(1) h3::before {
192
+ content: "\f547"; /* 크기 조절 아이콘 */
193
+ }
194
+
195
+ .control-group:nth-of-type(2) h3::before {
196
+ content: "\f03e"; /* 이미지 아이콘 */
197
+ }
198
+
199
+ #layers-panel h3::before {
200
+ content: "\f5fd"; /* 레이어 아이콘 */
201
  }
202
 
203
  .slider-container {
 
212
 
213
  .slider-container label {
214
  font-weight: bold;
215
+ min-width: 50px;
216
  text-align: left;
217
  flex-shrink: 0;
218
+ color: #444;
219
  }
220
 
221
  .slider-container input[type="range"] {
222
+ flex-grow: 1;
223
+ width: auto;
224
+ margin: 0 5px;
225
+ accent-color: var(--primary-color);
226
  }
227
 
228
  .slider-container .value-display {
229
+ min-width: 40px;
230
+ text-align: right;
231
  flex-shrink: 0;
232
+ font-weight: 600;
233
+ color: var(--primary-color);
234
  }
235
 
236
  /* 레이어 목록 스타일 */
 
238
  width: 100%;
239
  max-height: 150px;
240
  overflow-y: auto;
241
+ border: 1px solid rgba(255, 127, 0, 0.1);
242
+ border-radius: var(--border-radius);
243
+ background-color: white;
244
  }
245
 
246
  .layer-item {
247
+ padding: 10px;
248
  border-bottom: 1px solid #eee;
249
  cursor: pointer;
250
  display: flex;
 
252
  align-items: center;
253
  }
254
  .layer-item:last-child { border-bottom: none; }
255
+ .layer-item:hover { background-color: #FFF0E6; }
256
+ .layer-item.active { background-color: rgba(255, 127, 0, 0.1); font-weight: bold; color: var(--primary-color); }
257
  .layer-name { flex-grow: 1; padding-left: 5px; }
258
  .layer-controls { display: flex; gap: 5px; }
259
  .layer-button {
260
+ background-color: white;
261
+ border: 1px solid var(--primary-color);
262
+ border-radius: 10px;
263
+ padding: 2px 8px;
264
+ cursor: pointer;
265
+ font-size: 11px;
266
+ color: var(--primary-color);
267
  transition: all 0.2s ease;
268
  }
269
+ .layer-button:hover {
270
+ background-color: var(--primary-color);
271
+ color: white;
272
+ }
273
 
274
  /* 필터 패널 스타일 */
275
  .filter-panel {
 
276
  padding: 15px;
277
+ border: 1px solid rgba(255, 127, 0, 0.2);
278
+ border-radius: var(--border-radius);
279
+ background-color: #FFF6F0;
280
+ box-shadow: var(--shadow);
281
+ }
282
+
283
+ .filter-panel h3 {
284
+ margin: 0 0 15px 0;
285
+ text-align: center;
286
+ color: var(--primary-color);
287
+ font-weight: 700;
288
+ padding-bottom: 8px;
289
+ border-bottom: 2px solid var(--primary-color);
290
+ display: flex;
291
+ align-items: center;
292
+ justify-content: center;
293
+ }
294
+
295
+ .filter-panel h3::before {
296
+ content: "\f06e"; /* 필터 아이콘 */
297
+ font-family: "Font Awesome 6 Free";
298
+ margin-right: 10px;
299
+ color: var(--primary-color);
300
+ font-weight: 900;
301
+ }
302
+
303
+ .filter-sliders {
304
+ display: grid;
305
+ grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
306
+ gap: 15px;
307
+ }
308
+
309
+ .filter-slider-container {
310
+ display: flex;
311
+ flex-direction: column;
312
+ gap: 5px;
313
+ width: 100%;
314
+ padding: 0 5px;
315
+ box-sizing: border-box;
316
+ }
317
+
318
+ .filter-slider-container label {
319
+ font-size: 14px;
320
+ margin-bottom: 5px;
321
+ text-align: left;
322
+ font-weight: 600;
323
+ color: #444;
324
+ }
325
+
326
+ .large-slider {
327
+ width: 100%;
328
+ height: 20px;
329
+ accent-color: var(--primary-color);
330
  }
 
 
 
 
 
 
 
 
331
 
332
+ .filter-slider-container .value-display {
333
+ text-align: right;
334
+ font-weight: bold;
335
+ color: var(--primary-color);
336
+ }
337
+
338
+ .filter-buttons {
339
+ display: flex;
340
+ justify-content: center;
341
+ margin-top: 15px;
342
+ }
343
+
344
+ #reset-filter-btn {
345
+ width: auto;
346
+ padding: 8px 15px;
347
+ flex-grow: 1;
348
+ max-width: 200px;
349
+ background: linear-gradient(135deg, #e74c3c, #c0392b);
350
+ color: white;
351
+ border-radius: 30px;
352
+ border: none;
353
+ font-weight: 600;
354
+ box-shadow: 0 4px 8px rgba(231, 76, 60, 0.25);
355
+ transition: all 0.3s ease;
356
+ }
357
+
358
+ #reset-filter-btn:hover {
359
+ transform: translateY(-2px);
360
+ box-shadow: 0 6px 12px rgba(231, 76, 60, 0.3);
361
+ }
362
 
363
  /* 미리보기 섹션 */
364
  .preview-section {
365
+ flex: 2;
366
+ display: flex;
367
  flex-direction: column;
368
+ align-items: center;
369
+ min-width: 0;
370
  }
371
 
372
  .preview-container {
373
+ width: 100%;
374
+ margin-top: 0;
375
+ display: none;
376
  flex-direction: column;
377
  align-items: center;
378
+ padding: 20px;
379
+ border: 2px solid var(--primary-color);
380
+ border-radius: var(--border-radius);
381
+ background-color: #FFF6F0;
382
+ box-shadow: var(--shadow);
383
  }
384
 
385
  .preview-container h3 {
386
+ margin-bottom: 15px;
387
+ color: var(--primary-color);
388
+ font-weight: 700;
389
+ display: flex;
390
+ align-items: center;
391
+ }
392
+
393
+ .preview-container h3::before {
394
+ content: "\f06e"; /* 미리보기 아이콘 */
395
+ font-family: "Font Awesome 6 Free";
396
+ margin-right: 10px;
397
+ color: var(--primary-color);
398
+ font-weight: 900;
399
  }
400
 
401
  #preview-img {
402
  max-width: 100%;
403
+ max-height: 400px;
404
+ border: 2px solid var(--primary-color);
405
+ border-radius: var(--border-radius);
406
+ object-fit: contain;
407
+ box-shadow: var(--shadow);
408
  }
409
 
410
  /* 하단 버튼 컨테이너 */
 
412
  display: flex;
413
  justify-content: center;
414
  gap: 15px;
415
+ margin-top: 20px;
416
  flex-wrap: wrap;
417
  }
418
 
419
  button {
420
  padding: 10px 20px;
421
  border: none;
422
+ border-radius: 30px;
423
  cursor: pointer;
424
  font-weight: bold;
425
+ transition: all 0.3s ease;
426
+ box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15);
427
  }
 
 
 
 
 
 
428
 
429
+ button:hover {
430
+ transform: translateY(-2px);
431
+ box-shadow: 0 6px 12px rgba(0, 0, 0, 0.2);
432
+ }
433
+
434
+ .primary-btn {
435
+ background: linear-gradient(135deg, var(--primary-color), var(--secondary-color));
436
+ color: white;
437
+ box-shadow: 0 4px 8px rgba(251, 127, 13, 0.25);
438
+ }
439
+
440
+ .primary-btn:hover {
441
+ box-shadow: 0 6px 12px rgba(251, 127, 13, 0.3);
442
+ }
443
+
444
+ .danger-btn {
445
+ background: linear-gradient(135deg, #e74c3c, #c0392b);
446
+ color: white;
447
+ box-shadow: 0 4px 8px rgba(231, 76, 60, 0.25);
448
+ }
449
+
450
+ .danger-btn:hover {
451
+ box-shadow: 0 6px 12px rgba(231, 76, 60, 0.3);
452
+ }
453
+
454
+ .info-btn {
455
+ background: linear-gradient(135deg, #3498db, #2980b9);
456
+ color: white;
457
+ box-shadow: 0 4px 8px rgba(52, 152, 219, 0.25);
458
+ }
459
+
460
+ .info-btn:hover {
461
+ box-shadow: 0 6px 12px rgba(52, 152, 219, 0.3);
462
+ }
463
+
464
+ /* 예시 이미지 스타일 */
465
+ #example-images-container img {
466
+ border: 2px solid #ddd;
467
+ border-radius: 10px;
468
+ transition: all 0.3s ease;
469
+ }
470
+
471
+ #example-images-container img:hover {
472
+ transform: scale(1.05);
473
+ border-color: var(--primary-color);
474
+ box-shadow: 0 4px 10px rgba(251, 127, 13, 0.2);
475
+ }
476
+
477
+ /* 스크롤바 스타일링 */
478
+ ::-webkit-scrollbar {
479
+ width: 8px;
480
+ height: 8px;
481
+ }
482
+
483
+ ::-webkit-scrollbar-track {
484
+ background: rgba(0, 0, 0, 0.05);
485
+ border-radius: 10px;
486
+ }
487
+
488
+ ::-webkit-scrollbar-thumb {
489
+ background: var(--primary-color);
490
+ border-radius: 10px;
491
+ }
492
 
493
  /* 모바일 대응 */
494
+ @media (max-width: 900px) {
495
  .workspace-wrapper {
496
+ flex-direction: column;
497
+ align-items: center;
498
  }
499
  .canvas-and-controls, .preview-section {
500
+ flex-basis: auto;
501
+ width: 100%;
502
+ max-width: 600px;
503
  }
504
  .control-panel-sidebar {
505
+ width: 100%;
506
  }
507
  .filter-sliders {
508
+ grid-template-columns: 1fr;
509
  }
510
  }
511