@bwg-ui/core 1.3.0 → 1.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/dist/chunks/{CMSearchIntfGwP01-_h2B12Ig.js → CMSearchIntfGwP01-Bx5cpkhH.js} +1 -1
  2. package/dist/chunks/{CMSearchIntfGwP01-D7XtXMLy.cjs → CMSearchIntfGwP01-Uhl4uqiV.cjs} +1 -1
  3. package/dist/chunks/{MenuReport-DuWbbKBC.cjs → MenuReport-CPwq8w-z.cjs} +1 -1
  4. package/dist/chunks/{MenuReport-Bw3AvR6b.js → MenuReport-DxJIaW8D.js} +1 -1
  5. package/dist/chunks/{common-components-BOJo6FH_.cjs → common-components-Dd_AsKs7.cjs} +99 -99
  6. package/dist/chunks/{common-components-BjfrRYiU.js → common-components-dzN5Nuq0.js} +7245 -7093
  7. package/dist/chunks/{layout-components-DNhUIx4u.js → layout-components-B25FFvXj.js} +1017 -768
  8. package/dist/chunks/layout-components-Cz7Zets7.cjs +35 -0
  9. package/dist/components/common/BwgDetail.d.ts.map +1 -1
  10. package/dist/components/common/BwgGrid.d.ts.map +1 -1
  11. package/dist/components/common/BwgPagination.d.ts.map +1 -1
  12. package/dist/components/common/index.cjs +1 -1
  13. package/dist/components/common/index.js +1 -1
  14. package/dist/components/guide/index.cjs +1 -1
  15. package/dist/components/guide/index.js +1 -1
  16. package/dist/components/layout/BwgPortal01.d.ts.map +1 -1
  17. package/dist/components/layout/custom/ConfigurableHeader.d.ts.map +1 -1
  18. package/dist/components/layout/custom/ConfigurableMenuTab.d.ts.map +1 -1
  19. package/dist/components/layout/custom/ConfigurableSidebar.d.ts.map +1 -1
  20. package/dist/components/layout/default/LoadingContainer.d.ts.map +1 -1
  21. package/dist/components/layout/index.cjs +1 -1
  22. package/dist/components/layout/index.js +1 -1
  23. package/dist/components/popup/index.cjs +1 -1
  24. package/dist/components/popup/index.js +1 -1
  25. package/dist/index.cjs +1 -1
  26. package/dist/index.js +2 -2
  27. package/dist/stores/index.cjs +2 -2
  28. package/dist/stores/index.d.ts +12 -2
  29. package/dist/stores/index.d.ts.map +1 -1
  30. package/dist/stores/index.js +312 -216
  31. package/dist/stores/menuViewStore.d.ts +12 -2
  32. package/dist/stores/menuViewStore.d.ts.map +1 -1
  33. package/dist/stores/userStore.d.ts +19 -0
  34. package/dist/stores/userStore.d.ts.map +1 -1
  35. package/dist/styles/assets/images/contents/icon/ico-tab-hashtag-grey.svg +11 -0
  36. package/dist/styles/assets/images/contents/icon/ico-tab-hashtag.svg +11 -0
  37. package/dist/styles/components.css +71 -0
  38. package/dist/styles/layout.css +1289 -1234
  39. package/dist/utils/gridUtils.d.ts +6 -6
  40. package/dist/utils/gridUtils.d.ts.map +1 -1
  41. package/dist/utils/index.cjs +1 -1
  42. package/dist/utils/index.d.ts.map +1 -1
  43. package/dist/utils/index.js +936 -971
  44. package/package.json +1 -1
  45. package/dist/chunks/layout-components-Ddn-4n36.cjs +0 -35
@@ -1,1234 +1,1289 @@
1
- /* 메인 레이아웃 스타일 */
2
- .main-layout {
3
- min-height: 100vh;
4
- overflow: hidden;
5
- min-width: 1280px;
6
- }
7
-
8
- /* 헤더 스타일 */
9
- .header-wrapper {
10
- height: 50px !important;
11
- line-height: 50px !important;
12
- background: var(--header-bg);
13
- padding: 0 30px 0 20px;
14
- border-bottom: 1px solid var(--border-color);
15
- display: flex;
16
- justify-content: space-between;
17
- align-items: center;
18
- z-index: 1000;
19
- gap: 24px;
20
- color: var(--header-text);
21
- }
22
-
23
- .header-search {
24
- flex-shrink: 0;
25
- }
26
-
27
- .header-title {
28
- font-size: 18px;
29
- font-weight: var(--font-weight-semibold);
30
- color: var(--text-primary);
31
- flex: 1;
32
- text-align: center;
33
- }
34
-
35
- /* 헤더 로고 영역 */
36
- .header-left {
37
- display: flex;
38
- align-items: center;
39
- min-width: 200px;
40
- }
41
-
42
- .logo-container {
43
- display: flex;
44
- align-items: center;
45
- height: 100%;
46
- gap: 10px;
47
- }
48
-
49
- .header-logo-image {
50
- width: 81px;
51
- height: 40px;
52
- object-fit: contain;
53
- }
54
-
55
- .logo-placeholder {
56
- font-size: 18px;
57
- font-weight: var(--font-weight-bold);
58
- color: var(--header-text);
59
- padding: 8px 12px;
60
- border: 2px dashed var(--header-text);
61
- border-radius: var(--border-radius-sm);
62
- opacity: 0.7;
63
- }
64
-
65
-
66
- /* 헤더 타이틀 영역 */
67
- .header-title {
68
- flex: 1;
69
- display: flex;
70
- align-items: center;
71
- justify-content: center;
72
- font-size: var(--font-size-md);
73
- font-weight: var(--font-weight-medium);
74
- color: var(--header-text);
75
- }
76
-
77
- /* 헤더 사용자 영역 */
78
- .header-right {
79
- display: flex;
80
- align-items: center;
81
- gap: 12px;
82
- min-width: 200px;
83
- justify-content: flex-end;
84
- }
85
-
86
- .header-wrapper .ant-btn {
87
- width: 30px;
88
- height: 30px;
89
- }
90
-
91
-
92
- /* 사이더 스타일 */
93
- .side-wrapper {
94
- height: calc(100vh - 50px); /* 헤더 높이(50px)를 제외 */
95
- overflow: visible; /* 토글 버튼이 짤리지 않도록 visible로 변경 */
96
- display: flex;
97
- flex-direction: column;
98
- background-color: var(--sidebar-bg) !important;
99
- position: relative; /* 토글 버튼의 absolute 포지셔닝을 위해 */
100
- border-right: 1px solid var(--border-color);
101
- }
102
-
103
- .sider-content {
104
- flex: 1;
105
- display: flex;
106
- flex-direction: column;
107
- overflow: hidden;
108
- }
109
-
110
- .sider-menu {
111
- border-inline-end: none !important;
112
- flex: 1;
113
- overflow-y: auto; /* 필요할 때만 스크롤바 표시 */
114
- overflow-x: hidden;
115
- max-height: calc(100vh - 160px); /* 헤더(50px) + 로고 높이 + 마진 고려 */
116
- padding-right: 0px !important; /* 스크롤바 너비만큼 여백 확보 */
117
- box-sizing: border-box; /* 패딩을 포함한 박스 모델 */
118
- }
119
- .sider-menu.ant-menu-inline-collapsed {
120
- max-height: calc(100vh - 50px);
121
- }
122
- .sider-segmented {
123
- padding: 5px;
124
- background-color: var(--sidebar-segmented-bg);
125
- border-radius: var(--border-radius-sm);
126
- font-size: 13px;
127
- color: var(--sidebar-segmented-text);
128
- }
129
- .sider-search-ipt {
130
- background: var(--sidebar-search-bg);
131
- border-radius: var(--border-radius-xl);
132
- border: 0;
133
- color: var(--sidebar-search-text);
134
- font-size: 13px;
135
- font-weight: var(--font-weight-medium);
136
- }
137
- .sider-segmented .ant-segmented-group {
138
- gap: 5px;
139
- }
140
-
141
- /* Ant Design 메뉴 스타일 오버라이드 */
142
-
143
- .sider-menu .ant-menu-item {
144
- height: 30px;
145
- transition: all 0.3s ease;
146
- }
147
-
148
- .sider-menu .ant-menu-submenu-title {
149
- height: 30px !important;
150
- line-height: 30px !important;
151
- }
152
-
153
- .sider-menu .ant-menu-submenu-title:hover {
154
- background-color: unset !important;
155
- }
156
-
157
- /* 사이드바 테마 적용 */
158
- .ant-layout-sider {
159
- background-color: var(--sidebar-bg);
160
- }
161
- .ant-layout-sider-collapsed {
162
- flex: 0 0 50px !important;
163
- max-width: 50px !important;
164
- min-width: 50px !important;
165
- width: 50px !important;
166
- padding: 10px 0;
167
- }
168
-
169
- .ant-menu-dark {
170
- background-color: var(--sidebar-bg);
171
- }
172
-
173
- /* 사이드바 메뉴 트리 전체 테마 적용 */
174
- .ant-layout-sider .ant-menu {
175
- background-color: var(--sidebar-bg);
176
- }
177
-
178
- .ant-layout-sider .ant-menu-submenu {
179
- border-radius: 0;
180
- margin: 0;
181
- width: 100%;
182
- }
183
-
184
- .ant-layout-sider .ant-menu-item {
185
- /* background-color: var(--sidebar-bg) !important; */
186
- /* color: var(--sidebar-text) !important; */
187
- }
188
-
189
- .ant-layout-sider .ant-menu-item:hover {
190
- background-color: unset !important;
191
- }
192
-
193
- /* .sider-menu가 아닌 경우에만 배경색 제거 (기존 스타일 유지) */
194
- .ant-layout-sider .ant-menu-item-selected {
195
- background-color: unset !important;
196
- }
197
-
198
- .ant-layout-sider .ant-menu-submenu-title:hover {
199
- background-color: unset !important;
200
- }
201
-
202
- .ant-layout-sider .ant-menu-submenu-open > .ant-menu-submenu-title {
203
- /* background-color: rgba(255, 255, 255, 0.15) !important; */
204
- }
205
-
206
- .ant-layout-sider .ant-menu-sub.ant-menu-inline {
207
- background: transparent !important;
208
- }
209
- /* 메뉴 공통 스타일 */
210
- .sider-menu .ant-menu-item,
211
- .sider-menu .ant-menu-submenu-title {
212
- margin: 0;
213
- width: 100%;
214
- border-radius: 0;
215
- }
216
- .sider-menu .ant-menu-item-active.ant-menu-item-only-child {
217
- background-color: var(--sidebar-menu-selected-bg);
218
- }
219
- .sider-menu .ant-menu-item-active.ant-menu-item-only-child:hover {
220
- background-color: var(--sidebar-menu-selected-bg) !important;
221
- }
222
- .sider-menu .ant-menu-item-active.ant-menu-item-only-child::before {
223
- content: '';
224
- position: absolute;
225
- top: 0;
226
- left: 0;
227
- width: 3px;
228
- height: 100%;
229
- background: var(--sidebar-menu-selected-bar);
230
- }
231
- .sider-menu .ant-menu-item-active.ant-menu-item-only-child .ant-menu-title-content {
232
- font-weight: var(--font-weight-medium);
233
- color: var(--sidebar-primary-text);
234
- }
235
-
236
- /* 선택된 메뉴 아이템 스타일 (selectedKeys로 선택된 경우) */
237
- .sider-menu .ant-menu-item-selected {
238
- background-color: var(--sidebar-menu-selected-bg) !important;
239
- color: var(--sidebar-primary-text) !important;
240
- }
241
-
242
- .sider-menu .ant-menu-item-selected::before {
243
- content: '';
244
- position: absolute;
245
- top: 0;
246
- left: 0;
247
- width: 3px;
248
- height: 100%;
249
- background: var(--sidebar-menu-selected-bar);
250
- }
251
-
252
- .sider-menu .ant-menu-item-selected .ant-menu-title-content {
253
- font-weight: var(--font-weight-medium);
254
- color: var(--sidebar-primary-text);
255
- }
256
-
257
- /* 서브메뉴 내부 선택된 아이템 */
258
- .sider-menu .ant-menu-sub .ant-menu-item-selected {
259
- background-color: var(--sidebar-menu-selected-bg) !important;
260
- color: var(--sidebar-primary-text) !important;
261
- }
262
-
263
- .sider-menu .ant-menu-sub .ant-menu-item-selected::before {
264
- content: '';
265
- position: absolute;
266
- top: 0;
267
- left: 0;
268
- width: 3px;
269
- height: 100%;
270
- background: var(--sidebar-menu-selected-bar);
271
- }
272
-
273
- .sider-menu .ant-menu-sub .ant-menu-item-selected .ant-menu-title-content {
274
- font-weight: var(--font-weight-medium);
275
- color: var(--sidebar-primary-text);
276
- }
277
-
278
- /* 3레벨 서브메뉴 내부 선택된 아이템 */
279
- .sider-menu .ant-menu-sub .ant-menu-sub .ant-menu-item-selected {
280
- background-color: var(--sidebar-menu-selected-bg) !important;
281
- color: var(--sidebar-primary-text) !important;
282
- }
283
-
284
- .sider-menu .ant-menu-sub .ant-menu-sub .ant-menu-item-selected::before {
285
- content: '';
286
- position: absolute;
287
- top: 0;
288
- left: 0;
289
- width: 3px;
290
- height: 100%;
291
- background: var(--sidebar-menu-selected-bar);
292
- }
293
-
294
- /* 1레벨 스타일 */
295
- .sider-menu > .ant-menu-item > .ant-menu-item-icon + span,
296
- .sider-menu > .ant-menu-submenu > .ant-menu-submenu-title .anticon + span {
297
- margin-inline-start: 6px;
298
- }
299
- /* 1레벨 활성화 스타일 */
300
- .ant-layout-sider .sider-menu > .ant-menu-item > .ant-menu-item-icon,
301
- .ant-layout-sider .sider-menu > .ant-menu-submenu > .ant-menu-submenu-title span.anticon {
302
- width: 30px;
303
- height: 30px;
304
- display: flex;
305
- align-items: center;
306
- justify-content: center;
307
- border-radius: 5px;
308
- }
309
- .ant-layout-sider .sider-menu > .ant-menu-item-active > .ant-menu-item-icon,
310
- .ant-layout-sider .sider-menu > .ant-menu-submenu-open > .ant-menu-submenu-title span.anticon,
311
- .ant-layout-sider .sider-menu > .ant-menu-submenu-active > .ant-menu-submenu-title span.anticon {
312
- background: var(--sidebar-active-icon-bg);
313
- color: var(--primary-color);
314
- }
315
- .ant-layout-sider .sider-menu > .ant-menu-item-active > .ant-menu-title-content,
316
- .ant-layout-sider .sider-menu > .ant-menu-submenu-open > .ant-menu-submenu-title span.ant-menu-title-content,
317
- .ant-layout-sider .sider-menu > .ant-menu-submenu-active > .ant-menu-submenu-title span.ant-menu-title-content {
318
- color: var(--primary-color);
319
- font-weight: var(--font-weight-semibold);
320
- }
321
- .ant-layout-sider .sider-menu > .ant-menu-submenu-open > .ant-menu-submenu-title {
322
- margin-bottom: 5px !important;
323
- }
324
- .ant-layout-sider .sider-menu > .ant-menu-item,
325
- .ant-layout-sider .sider-menu > .ant-menu-submenu {
326
- margin-bottom: 15px;
327
- }
328
- /* 2레벨 ul 스타일 */
329
- .ant-layout-sider .sider-menu > .ant-menu-submenu-open > .ant-menu-sub {
330
- background-color: var(--sidebar-open-menu-group-bg) !important;
331
- border-top: 1px solid var(--sidebar-open-menu-group-border) !important;
332
- border-bottom: 1px solid var(--sidebar-open-menu-group-border) !important;
333
- padding: 10px 0;
334
- }
335
- .ant-layout-sider .sider-menu > .ant-menu-submenu-open > .ant-menu-sub > .ant-menu-submenu-open > .ant-menu-submenu-title {
336
- margin-bottom: 5px;
337
- }
338
-
339
- /* 열린 메뉴 상위 텍스트 색상 */
340
- .ant-menu-submenu-open > .ant-menu-submenu-title .ant-menu-title-content {
341
- color: var(--text-high);
342
- font-weight: var(--font-weight-semibold);
343
- }
344
-
345
- /* 서브메뉴 내부 모든 요소 배경색 */
346
- .ant-layout-sider .ant-menu-sub .ant-menu-item,
347
- .ant-layout-sider .ant-menu-sub .ant-menu-submenu,
348
- .ant-layout-sider .ant-menu-sub .ant-menu-submenu-title {
349
- /* background-color: var(--sidebar-bg) !important; */
350
- }
351
-
352
- /* 메뉴 트리 전체 배경색 강제 적용 */
353
- .ant-layout-sider .ant-menu-dark .ant-menu-sub,
354
- .ant-layout-sider .ant-menu-dark .ant-menu-sub .ant-menu-item,
355
- .ant-layout-sider .ant-menu-dark .ant-menu-sub .ant-menu-submenu,
356
- .ant-layout-sider .ant-menu-dark .ant-menu-sub .ant-menu-submenu-title {
357
- /* background-color: var(--sidebar-bg) !important; */
358
- border-radius: 0;
359
- }
360
-
361
- /* 메뉴 레벨별 색상 깊이감 */
362
- /* 1레벨 메뉴 - 가장 진함 */
363
- .ant-layout-sider .ant-menu-item,
364
- .ant-layout-sider .ant-menu-submenu-title {
365
- /* color: var(--sidebar-text) !important; */
366
- color: var(--text-secondary);
367
- }
368
-
369
- /* 1레벨 active 스타일 */
370
- .ant-layout-sider .ant-menu-item,
371
- .ant-layout-sider .ant-menu-submenu-title
372
- .ant-layout-sider .sider-menu > .ant-menu-submenu-open > .ant-menu-submenu-title span {
373
- color: var(--primary-color);
374
- &.ant-menu-title-content {
375
- font-weight: var(--font-weight-semibold);
376
- }
377
- }
378
-
379
-
380
- /* 2레벨 메뉴*/
381
- .ant-layout-sider .ant-menu-sub .ant-menu-item,
382
- .ant-layout-sider .ant-menu-sub .ant-menu-submenu-title {
383
- padding-left: 20px !important;
384
- }
385
- .ant-layout-sider .ant-menu-sub .ant-menu-item.ant-menu-item-only-child {
386
- padding-left: 30px !important;
387
- }
388
- /* 3레벨 메뉴*/
389
- .ant-layout-sider .ant-menu-sub .ant-menu-sub .ant-menu-item,
390
- .ant-layout-sider .ant-menu-sub .ant-menu-sub .ant-menu-submenu-title {
391
- font-size: 13px !important;
392
- padding-left: 30px !important;
393
- }
394
-
395
- /* 4레벨 메뉴*/
396
- .ant-layout-sider .ant-menu-sub .ant-menu-sub .ant-menu-sub .ant-menu-item,
397
- .ant-layout-sider
398
- .ant-menu-sub
399
- .ant-menu-sub
400
- .ant-menu-sub
401
- .ant-menu-submenu-title {
402
- font-size: 12px !important;
403
- padding-left: 30px !important;
404
- }
405
- /* 4레벨 ul 스타일 */
406
- .ant-layout-sider .ant-menu-sub .ant-menu-sub .ant-menu-submenu-open .ant-menu-sub {
407
- /* background: var(--sidebar-last-open-menu-group-bg) !important; */
408
- }
409
-
410
- /* 메뉴 아이콘 색상 */
411
- .ant-layout-sider .ant-menu-item .anticon,
412
- .ant-layout-sider .ant-menu-submenu-title .anticon {
413
- color: #444 !important;
414
- }
415
-
416
- /* 메뉴 텍스트 색상 */
417
- .ant-layout-sider .ant-menu-item,
418
- .ant-layout-sider .ant-menu-submenu-title {
419
- color: var(--text-secondary) !important;
420
- }
421
-
422
- /* 메뉴 링크 색상 */
423
- .ant-layout-sider .ant-menu-item a,
424
- .ant-layout-sider .ant-menu-submenu-title a {
425
- color: var(--sidebar-text) !important;
426
- }
427
-
428
- /* 선택된 메뉴 아이템 */
429
- .ant-layout-sider .ant-menu-item-selected,
430
- .ant-layout-sider .ant-menu-item-selected > a {
431
- /* color: #6449FC !important; */
432
- /* background-color: rgba(255, 255, 255, 0.2) !important; */
433
- }
434
-
435
- /* 호버 상태 - 모든 레벨에 적용 */
436
- .ant-layout-sider .ant-menu-item:hover,
437
- .ant-layout-sider .ant-menu-submenu-title:hover {
438
- /* color: var(--sidebar-text) !important; */
439
- /* background-color: rgba(255, 255, 255, 0.1) !important; */
440
- }
441
- /* 호버 상태 - 서브메뉴 텍스트 강조 */
442
- .ant-layout-sider .ant-menu-submenu:hover > .ant-menu-submenu-title .ant-menu-title-content span,
443
- .ant-layout-sider .ant-menu-item:hover > .ant-menu-title-content span {
444
- font-weight: var(--font-weight-bold);
445
- }
446
-
447
- /* 서브메뉴 내부 호버 상태 */
448
- .ant-layout-sider .ant-menu-sub .ant-menu-item:hover,
449
- .ant-layout-sider .ant-menu-sub .ant-menu-submenu-title:hover {
450
- /* color: var(--sidebar-text) !important; */
451
- /* background-color: rgba(255, 255, 255, 0.1) !important; */
452
- }
453
-
454
- /* 3레벨 서브메뉴 내부 호버 상태 */
455
- .ant-layout-sider .ant-menu-sub .ant-menu-sub .ant-menu-item:hover,
456
- .ant-layout-sider .ant-menu-sub .ant-menu-sub .ant-menu-submenu-title:hover {
457
- color: var(--sidebar-primary-text);
458
- background-color: var(--sidebar-menu-selected-bg);
459
- }
460
-
461
- /* 4레벨 서브메뉴 내부 호버 상태 */
462
- .ant-layout-sider
463
- .ant-menu-sub
464
- .ant-menu-sub
465
- .ant-menu-sub
466
- .ant-menu-item:hover,
467
- .ant-layout-sider
468
- .ant-menu-sub
469
- .ant-menu-sub
470
- .ant-menu-sub
471
- .ant-menu-submenu-title:hover {
472
- color: var(--sidebar-primary-text);
473
- background-color: var(--sidebar-menu-selected-bg);
474
- }
475
-
476
- /* 라이트 테마 호버 (어두운 색상) */
477
- .ant-layout-sider[data-theme='light'] .ant-menu-item:hover,
478
- .ant-layout-sider[data-theme='light'] .ant-menu-submenu-title:hover,
479
- .ant-layout-sider[data-theme='light'] .ant-menu-sub .ant-menu-item:hover,
480
- .ant-layout-sider[data-theme='light']
481
- .ant-menu-sub
482
- .ant-menu-submenu-title:hover,
483
- .ant-layout-sider[data-theme='light']
484
- .ant-menu-sub
485
- .ant-menu-sub
486
- .ant-menu-item:hover,
487
- .ant-layout-sider[data-theme='light']
488
- .ant-menu-sub
489
- .ant-menu-sub
490
- .ant-menu-submenu-title:hover,
491
- .ant-layout-sider[data-theme='light']
492
- .ant-menu-sub
493
- .ant-menu-sub
494
- .ant-menu-sub
495
- .ant-menu-item:hover,
496
- .ant-layout-sider[data-theme='light']
497
- .ant-menu-sub
498
- .ant-menu-sub
499
- .ant-menu-sub
500
- .ant-menu-submenu-title:hover {
501
- background-color: rgba(0, 0, 0, 0.1) !important;
502
- }
503
-
504
- /* 모던 테마 호버 (어두운 색상) */
505
- .ant-layout-sider[data-theme='modern'] .ant-menu-item:hover,
506
- .ant-layout-sider[data-theme='modern'] .ant-menu-submenu-title:hover,
507
- .ant-layout-sider[data-theme='modern'] .ant-menu-sub .ant-menu-item:hover,
508
- .ant-layout-sider[data-theme='modern']
509
- .ant-menu-sub
510
- .ant-menu-submenu-title:hover,
511
- .ant-layout-sider[data-theme='modern']
512
- .ant-menu-sub
513
- .ant-menu-sub
514
- .ant-menu-item:hover,
515
- .ant-layout-sider[data-theme='modern']
516
- .ant-menu-sub
517
- .ant-menu-sub
518
- .ant-menu-submenu-title:hover,
519
- .ant-layout-sider[data-theme='modern']
520
- .ant-menu-sub
521
- .ant-menu-sub
522
- .ant-menu-sub
523
- .ant-menu-item:hover,
524
- .ant-layout-sider[data-theme='modern']
525
- .ant-menu-sub
526
- .ant-menu-sub
527
- .ant-menu-sub
528
- .ant-menu-submenu-title:hover {
529
- background-color: rgba(0, 0, 0, 0.1) !important;
530
- }
531
-
532
- /* 메뉴 내부 모든 텍스트 강제 적용 */
533
- .ant-layout-sider .ant-menu * {
534
- /* color: var(--sidebar-text) !important; */
535
- }
536
-
537
- /* 메뉴 아이템 내부 텍스트 */
538
- .ant-layout-sider .ant-menu-item span,
539
- .ant-layout-sider .ant-menu-submenu-title span {
540
- overflow: hidden;
541
- white-space: nowrap;
542
- text-overflow: ellipsis;
543
- }
544
-
545
- /* 강제로 모든 메뉴 텍스트 색상 적용 */
546
- .ant-layout-sider .ant-menu-dark .ant-menu-item,
547
- .ant-layout-sider .ant-menu-dark .ant-menu-submenu-title,
548
- .ant-layout-sider .ant-menu-dark .ant-menu-item a,
549
- .ant-layout-sider .ant-menu-dark .ant-menu-submenu-title a,
550
- .ant-layout-sider .ant-menu-dark .ant-menu-item span,
551
- .ant-layout-sider .ant-menu-dark .ant-menu-submenu-title span {
552
- /* color: var(--sidebar-text) !important; */
553
- }
554
-
555
- /* 선택된 메뉴 아이템 강제 적용 */
556
- .ant-layout-sider .ant-menu-dark .ant-menu-item-selected,
557
- .ant-layout-sider .ant-menu-dark .ant-menu-item-selected > a,
558
- .ant-layout-sider .ant-menu-dark .ant-menu-item-selected > span {
559
- /* color: var(--sidebar-text) !important; */
560
- }
561
-
562
- /* 선택된 메뉴 아이템 - 모든 레벨에 적용 */
563
- .ant-layout-sider .ant-menu-item-selected,
564
- .ant-layout-sider .ant-menu-item-selected > a {
565
- color: var(--sidebar-primary-text);
566
- background-color: var(--sidebar-menu-selected-bg);
567
- }
568
-
569
- /* 서브메뉴 내부 선택된 아이템 */
570
- .ant-layout-sider .ant-menu-sub .ant-menu-item-selected,
571
- .ant-layout-sider .ant-menu-sub .ant-menu-item-selected > a {
572
- color: var(--sidebar-primary-text);
573
- background-color: var(--sidebar-menu-selected-bg);
574
- }
575
-
576
- /* 3레벨 서브메뉴 내부 선택된 아이템 */
577
- .ant-layout-sider .ant-menu-sub .ant-menu-sub .ant-menu-item-selected,
578
- .ant-layout-sider .ant-menu-sub .ant-menu-sub .ant-menu-item-selected > a {
579
- color: var(--sidebar-primary-text);
580
- background-color: var(--sidebar-menu-selected-bg);
581
- }
582
-
583
- /* 4레벨 서브메뉴 내부 선택된 아이템 */
584
- .ant-layout-sider
585
- .ant-menu-sub
586
- .ant-menu-sub
587
- .ant-menu-sub
588
- .ant-menu-item-selected,
589
- .ant-layout-sider
590
- .ant-menu-sub
591
- .ant-menu-sub
592
- .ant-menu-sub
593
- .ant-menu-item-selected
594
- > a {
595
- color: var(--sidebar-primary-text);
596
- background-color: var(--sidebar-menu-selected-bg);
597
- }
598
-
599
- /* 메뉴 하위 레이아웃 변경 */
600
- .sider-content .sider-menu > .ant-menu-item:not(.ant-menu-submenu-vertical) {
601
- padding-left: 10px !important;
602
- }
603
- .sider-content .sider-menu > .ant-menu-submenu:not(.ant-menu-submenu-vertical) > .ant-menu-submenu-title {
604
- margin-bottom: 15px;
605
- padding-left: 10px !important;
606
- }
607
-
608
- /* 3~4레벨 텍스트 꾸밈 요소 */
609
- .sider-content .sider-menu .ant-menu-title-content {
610
- height: 100%;
611
- line-height: 30px;
612
- overflow: visible !important;
613
- }
614
- .sider-content .sider-menu .ant-menu-item.ant-menu-item-only-child .ant-menu-title-content > div {
615
- position: relative;
616
- }
617
- .sider-content .sider-menu .ant-menu-item.ant-menu-item-only-child .ant-menu-title-content > div::before {
618
- content: '';
619
- position: absolute;
620
- top: 50%;
621
- left: -10px;
622
- width: 4px;
623
- height: 1px;
624
- background-color: var(--sidebar-menu-bullet);
625
- }
626
-
627
-
628
- .sider-content .sider-menu .ant-menu-item-active.ant-menu-item-only-child .ant-menu-title-content > div::before {
629
- background-color: var(--sidebar-menu-bullet-active);
630
- }
631
-
632
- /* 사이드바 축소 스타일 */
633
- .sider-menu .ant-menu-submenu-vertical .ant-menu-submenu-title {
634
- padding: 0 10px !important;
635
- margin-bottom: 15px;
636
- }
637
- .sider-menu .ant-menu-submenu-vertical .ant-menu-submenu-title:hover {
638
- background-color: transparent !important;
639
- }
640
- .sider-menu .ant-menu-submenu-vertical .ant-menu-submenu-title[aria-expanded="true"] .anticon {
641
- background: var(--sidebar-active-icon-bg);
642
- color: var(--primary-color) !important;
643
- }
644
-
645
- /* 사이드바 segemented */
646
- .sider-segmented .ant-segmented-item-label {
647
- display: flex;
648
- align-items: center;
649
- justify-content: center;
650
- gap: 5px;
651
- }
652
- .sider-segmented .sider-segmented-item {
653
- width: 20px;
654
- height: 20px;
655
- display: flex;
656
- align-items: center;
657
- justify-content: center;
658
- flex-shrink: 0;
659
- }
660
-
661
- /* 라이트 테마 선택된 아이템 (어두운 색상) */
662
- .ant-layout-sider[data-theme='light'] .ant-menu-item-selected,
663
- .ant-layout-sider[data-theme='light'] .ant-menu-item-selected > a,
664
- .ant-layout-sider[data-theme='light'] .ant-menu-sub .ant-menu-item-selected,
665
- .ant-layout-sider[data-theme='light'] .ant-menu-sub .ant-menu-item-selected > a,
666
- .ant-layout-sider[data-theme='light']
667
- .ant-menu-sub
668
- .ant-menu-sub
669
- .ant-menu-item-selected,
670
- .ant-layout-sider[data-theme='light']
671
- .ant-menu-sub
672
- .ant-menu-sub
673
- .ant-menu-item-selected
674
- > a,
675
- .ant-layout-sider[data-theme='light']
676
- .ant-menu-sub
677
- .ant-menu-sub
678
- .ant-menu-sub
679
- .ant-menu-item-selected,
680
- .ant-layout-sider[data-theme='light']
681
- .ant-menu-sub
682
- .ant-menu-sub
683
- .ant-menu-sub
684
- .ant-menu-item-selected
685
- > a {
686
- background-color: rgba(0, 0, 0, 0.2) !important;
687
- }
688
-
689
- /* 모던 테마 선택된 아이템 (어두운 색상) */
690
- .ant-layout-sider[data-theme='modern'] .ant-menu-item-selected,
691
- .ant-layout-sider[data-theme='modern'] .ant-menu-item-selected > a,
692
- .ant-layout-sider[data-theme='modern'] .ant-menu-sub .ant-menu-item-selected,
693
- .ant-layout-sider[data-theme='modern']
694
- .ant-menu-sub
695
- .ant-menu-item-selected
696
- > a,
697
- .ant-layout-sider[data-theme='modern']
698
- .ant-menu-sub
699
- .ant-menu-sub
700
- .ant-menu-item-selected,
701
- .ant-layout-sider[data-theme='modern']
702
- .ant-menu-sub
703
- .ant-menu-sub
704
- .ant-menu-item-selected
705
- > a,
706
- .ant-layout-sider[data-theme='modern']
707
- .ant-menu-sub
708
- .ant-menu-sub
709
- .ant-menu-sub
710
- .ant-menu-item-selected,
711
- .ant-layout-sider[data-theme='modern']
712
- .ant-menu-sub
713
- .ant-menu-sub
714
- .ant-menu-sub
715
- .ant-menu-item-selected
716
- > a {
717
- background-color: rgba(0, 0, 0, 0.2) !important;
718
- }
719
-
720
- /* 사이드바 스크롤바 스타일링 */
721
- .sider-menu::-webkit-scrollbar,
722
- .sider-menu-container::-webkit-scrollbar {
723
- width: 6px;
724
- }
725
- .sider-menu::-webkit-scrollbar-track,
726
- .sider-menu-container::-webkit-scrollbar-track {
727
- background: transparent;
728
- border-radius: 3px;
729
- }
730
- .sider-menu::-webkit-scrollbar-thumb,
731
- .sider-menu-container::-webkit-scrollbar-thumb {
732
- background: #d9d9d9;
733
- border-radius: 3px;
734
- border: 1px solid #f0f0f0;
735
- }
736
- .sider-menu::-webkit-scrollbar-thumb:hover,
737
- .sider-menu-container::-webkit-scrollbar-thumb:hover {
738
- background: #bfbfbf;
739
- }
740
-
741
- /* Firefox 스크롤바 스타일링 */
742
- .sider-menu {
743
- scrollbar-width: thin;
744
- scrollbar-color: #d9d9d9 #f0f0f0;
745
- }
746
-
747
- /* 컨텐츠 컨테이너 스타일 */
748
- .content-container {
749
- display: flex;
750
- flex-direction: column;
751
- flex: 1;
752
- overflow: hidden;
753
- height: calc(100vh - 50px); /* 헤더 높이를 제외 */
754
- }
755
-
756
- /* 컨텐츠 스타일 */
757
- .main-content {
758
- flex: 1;
759
- height: calc(100vh - 45px);
760
- }
761
- .content-header {
762
- margin-bottom: 24px;
763
- padding-bottom: 16px;
764
- border-bottom: 1px solid #f0f0f0;
765
- }
766
- .content-title {
767
- font-size: 24px;
768
- font-weight: 600;
769
- color: var(--text-primary);
770
- margin: 0;
771
- }
772
- .content-description {
773
- color: #666;
774
- margin-top: 8px;
775
- }
776
- .content-body {
777
- height: 100%;
778
- }
779
- .bwg-view {
780
- gap: 20px;
781
- padding: 20px 30px;
782
- }
783
-
784
- /* 반응형 디자인 */
785
- @media (max-width: 768px) {
786
- .side-wrapper {
787
- height: 100vh;
788
- z-index: 1001;
789
- transition: left 0.3s ease;
790
- }
791
- .side-wrapper.mobile-open {
792
- left: 0;
793
- }
794
- .header-wrapper {
795
- padding: 0 16px;
796
- gap: 12px;
797
- }
798
- .header-search {
799
- width: 200px;
800
- }
801
- .header-search .ant-auto-complete {
802
- width: 100% !important;
803
- }
804
- .header-title {
805
- font-size: var(--font-size-md);
806
- flex: 1;
807
- text-align: center;
808
- }
809
- .header-right {
810
- gap: 8px;
811
- }
812
- }
813
-
814
- /* MenuTab 전용 스타일링 */
815
- .menu-tab-wrapper {
816
- background: var(--bg-primary);
817
- }
818
- .menu-tab-wrapper .menu-tabs.ant-tabs .ant-tabs-nav {
819
- margin: 0;
820
- padding: 10px 34px 0 29px;
821
- height: 45px;
822
- display: flex;
823
- align-items: center;
824
- justify-content: space-between;
825
- }
826
- .menu-tab-wrapper .ant-tabs-nav::before {
827
- left: 29px;
828
- bottom: 0;
829
- border-bottom: 1px solid var(--border-color);
830
- }
831
- .menu-tab-wrapper .menu-tabs.ant-tabs .ant-tabs-nav-wrap {
832
- height: 35px;
833
- flex: 1 !important;
834
- align-items: flex-end;
835
- }
836
- .menu-tab-wrapper .menu-tabs.ant-tabs .ant-tabs-nav-list {
837
- display: flex;
838
- align-items: center;
839
- height: 100%;
840
- flex-wrap: nowrap;
841
- }
842
- .menu-tab-wrapper .menu-tabs.ant-tabs .ant-tabs-tab {
843
- height: 100%;
844
- border-radius: 10px 10px 0 0;
845
- transition: all 0.3s ease;
846
- padding: 0 10px 0 24px;
847
- position: relative ;
848
- background: #E7E9F4;
849
- margin: 0 4px 0 0;
850
- font-size: var(--font-size-sm);
851
- color: #777;
852
- border: 0;
853
- }
854
- .menu-tab-wrapper .menu-tabs.ant-tabs .ant-tabs-tab .ant-tabs-tab-remove {
855
- width: 20px;
856
- height: 20px;
857
- margin-right: 0;
858
- margin-left: 10px;
859
- color: #a1a1a1;
860
- }
861
- .menu-tab-wrapper .menu-tabs.ant-tabs .ant-tabs-tab:not(.ant-tabs-tab-active):hover {
862
- background: #dbdeec;
863
- color: var(--text-secondary);
864
- }
865
- .menu-tab-wrapper .menu-tabs.ant-tabs .ant-tabs-tab-active {
866
- background: var(--bg-primary);
867
- border: 2px solid var(--primary-color);
868
- border-bottom: none;
869
- .ant-tabs-tab-btn {
870
- color:var(--primary-color);
871
- text-shadow: none;
872
- font-weight: var(--font-weight-bold);
873
- }
874
- }
875
- /* MenuTab의 content-holder는 숨김 처리 (뷰 렌더링하지 않음) */
876
- .menu-tab-wrapper .menu-tabs.ant-tabs .ant-tabs-content-holder {
877
- display: none !important;
878
- }
879
-
880
- /* MenuTab 네비게이션 버튼 스타일링 */
881
- .menu-tab-wrapper .menu-tabs .ant-tabs-extra-content {
882
- display: flex;
883
- align-items: center;
884
- gap: 4px;
885
- flex-shrink: 0;
886
- white-space: nowrap;
887
- overflow: hidden;
888
- padding-bottom: 13px;
889
- }
890
- .menu-tab-wrapper .menu-tabs .ant-tabs-extra-content > div {
891
- display: flex !important;
892
- align-items: center !important;
893
- gap: 4px !important;
894
- flex-wrap: nowrap !important;
895
- }
896
- .menu-tab-wrapper .menu-tabs .ant-tabs-extra-content .ant-btn {
897
- height: 20px !important;
898
- width: 20px !important;
899
- font-size: 12px !important;
900
- display: flex !important;
901
- align-items: center !important;
902
- justify-content: center !important;
903
- border: 0;
904
- color: #bdbdbd;
905
- box-shadow: none !important;
906
- }
907
- .menu-tab-wrapper .menu-tabs .ant-tabs-extra-content .ant-btn:hover {
908
- color: #5E5E5E;
909
- }
910
- .menu-tab-wrapper .menu-tabs .ant-tabs-extra-content .ant-btn:disabled {
911
- opacity: 0.5;
912
- cursor: not-allowed;
913
- background: none;
914
- }
915
- .menu-tab-wrapper .menu-tabs .ant-tabs-extra-content .menu-tabs-close-btn {
916
- margin-left: 11px;
917
- }
918
- .menu-nav-wrapper {
919
- display: flex;
920
- align-items: center;
921
- gap: 4px;
922
- }
923
-
924
- /* landing-wrap */
925
- .landing-wrap {
926
- background: #f3f5f9;
927
- position: absolute;
928
- top: 0;
929
- bottom: 0;
930
- z-index: 4;
931
- right: 0;
932
- left: 0;
933
- background: url('./assets/images/backgrounds/landing_bg.png') no-repeat;
934
- background-size: cover;
935
- }
936
- .landing-wrap .content-tit {
937
- position: absolute;
938
- top: 51%;
939
- left: 50.6%;
940
- transform: translate(-50%, -50.6%);
941
- padding-top: 20px;
942
- color: #9c9d9e;
943
- font-size: var(--font-size-xl);
944
- }
945
- .landing-wrap .content-tit:before {
946
- position: absolute;
947
- top: 0;
948
- left: 50%;
949
- display: inline-block;
950
- width: 19px;
951
- height: 1px;
952
- background: #9c9d9e;
953
- content: '';
954
- transform: translateX(-50%);
955
- }
956
- /* 20210316수정 end */
957
- .landing-wrap .inner {
958
- position: relative;
959
- height: 100%;
960
- min-height: 600px;
961
- }
962
- .landing-wrap .page-tit {
963
- position: absolute;
964
- left: 3%;
965
- bottom: 26%;
966
- color: #6688ff;
967
- font-size: 60px;
968
- font-family: 'Poppins', sans-serif;
969
- }
970
- .landing-wrap .sub-tit {
971
- position: absolute;
972
- left: 3%;
973
- bottom: 16%;
974
- color: rgba(255, 255, 255, 0.7);
975
- font-size: var(--font-size-xl);
976
- line-height: 28px;
977
- letter-spacing: -0.2px;
978
- font-family: 'Poppins', sans-serif;
979
- font-weight: 300;
980
- }
981
- .landing-wrap .content {
982
- font-family: 'Poppins', sans-serif;
983
- display: flex;
984
- position: absolute;
985
- line-height: 0;
986
- bottom: 16%;
987
- padding: 20px 22px;
988
- width: 480px;
989
- box-sizing: border-box;
990
- background: rgba(255, 255, 255, 0.05);
991
- right: 2%;
992
- border-radius: var(--border-radius-xxxl);
993
- backdrop-filter: blur(8px);
994
- }
995
- .landing-wrap .content dl {
996
- position: relative;
997
- width: 100%;
998
- text-align: left;
999
- box-sizing: border-box;
1000
- }
1001
- .landing-wrap .content dt {
1002
- margin-bottom: 10px;
1003
- padding-bottom: 10px;
1004
- color: var(--text-white);
1005
- font-size: 24px;
1006
- line-height: initial;
1007
- border-bottom: 1px solid rgba(255, 255, 255, 0.5);
1008
- padding-left: 9px;
1009
- }
1010
- .landing-wrap .content dd {
1011
- line-height: 20px;
1012
- color: var(--text-white);
1013
- font-size: 18px !important;
1014
- font-weight: var(--font-weight-regular);
1015
- letter-spacing: 0;
1016
- padding-top: 6px;
1017
- }
1018
- .landing-wrap .content dd span {
1019
- display: block;
1020
- padding: 6px 0 6px 40px;
1021
- position: relative;
1022
- }
1023
- .landing-wrap .content dd span:before {
1024
- display: block;
1025
- content: '';
1026
- left: 9px;
1027
- position: absolute;
1028
- top: 5px;
1029
- width: 20px;
1030
- height: 20px;
1031
- background: url(../images/common.png) no-repeat;
1032
- background-position: -78px -177px;
1033
- }
1034
- .landing-wrap .content dd span + span:before {
1035
- background-position: -100px -177px;
1036
- }
1037
-
1038
- /* 사이드바 토글 버튼 */
1039
- .sider-toggle-wrapper {
1040
- position: absolute;
1041
- top: 9px;
1042
- right: -25px;
1043
- z-index: 1000;
1044
- width: 25px;
1045
- height: 41px;
1046
- background-color: #ffffff;
1047
- border: 1px solid #dddddd;
1048
- border-radius: 0 10px 10px 0;
1049
- display: flex;
1050
- align-items: center;
1051
- justify-content: center;
1052
- cursor: pointer;
1053
- box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.05);
1054
- transition: all 0.3s ease;
1055
- }
1056
-
1057
- .sider-toggle-btn .ant-btn {
1058
- border-radius: 0 10px 10px 0;
1059
- font-size: 12px;
1060
- color: #787878;
1061
- padding: 0;
1062
- width: 100%;
1063
- height: 100%;
1064
- display: flex;
1065
- align-items: center;
1066
- justify-content: center;
1067
- }
1068
-
1069
- /* 퀵메뉴 */
1070
- .quick-tab-container {
1071
- width: 33px;
1072
- height: 118px;
1073
- background: #4C465D;
1074
- border-radius: 15px 0px 0px 15px;
1075
- box-shadow: 0 4px 4px rgba(61, 56, 98, 0.3);
1076
- }
1077
- .quick-tab-container:has(.expanded) {
1078
- background: var(--primary-color);
1079
- }
1080
- .ant-btn.quick-tab-toggle-btn {
1081
- width: 33px;
1082
- height: 67px;
1083
- margin: 11px 0 9px;
1084
- border-radius: 15px 0px 0px 15px;
1085
- position: absolute;
1086
- top: 0;
1087
- right: 0;
1088
- cursor: pointer;
1089
- background-image: url(./assets/images/contents/icon/quick-tab-text.svg);
1090
- background-repeat: no-repeat;
1091
- background-position: center;
1092
- }
1093
- .ant-btn.quick-tab-toggle-btn:not(.ant-btn-disabled):hover,
1094
- .ant-btn.quick-tab-toggle-btn:not(.ant-btn-disabled):active {
1095
- background-image: url(./assets/images/contents/icon/quick-tab-text.svg);
1096
- background-repeat: no-repeat;
1097
- background-position: center;
1098
- background-color: transparent !important;
1099
- }
1100
- .quick-tab-drag-btn {
1101
- position: absolute;
1102
- bottom: 9px;
1103
- right: 3px;
1104
- width: 24px;
1105
- height: 24px;
1106
- border-radius: 50%;
1107
- display: flex;
1108
- align-items: center;
1109
- justify-content: center;
1110
- background: transparent url(./assets/images/contents/icon/ico-quick-tab-move.svg) no-repeat center;
1111
- }
1112
- .quick-tab-drag-btn:hover {
1113
- background: rgba(28, 24, 37, 0.2) url(./assets/images/contents/icon/ico-quick-tab-move.svg) no-repeat center;
1114
- }
1115
- .quick-tab-container .quick-tab {
1116
- background-color: var(--primary-color);
1117
- }
1118
- .quick-tab-item-inner {
1119
- display: flex;
1120
- flex-direction: column;
1121
- align-items: center;
1122
- border-radius: var(--border-radius-lg);
1123
- text-align: center;
1124
- }
1125
- .quick-tab-item-inner .quick-tab-items-icon {
1126
- display: flex;
1127
- align-items: center;
1128
- justify-content: center;
1129
- }
1130
- .quick-tab-item-inner .quick-tab-items-icon .anticon {
1131
- font-size: 28px;
1132
- }
1133
- .quick-tab-item-inner .quick-tab-items:last-child {
1134
- margin-bottom: 0;
1135
- }
1136
- .quick-tab-items-icon:has(.quick-overtime) {
1137
- background: #EFEBFF;
1138
- }
1139
- .quick-tab-items-icon:has(.quick-business-trip) {
1140
- background: #E3F6FF;
1141
- }
1142
- .quick-tab-items-icon:has(.quick-holiday) {
1143
- background: #FFF0F5;
1144
- }
1145
- .quick-tab-items-title {
1146
- font-size: 13px;
1147
- font-weight: var(--font-weight-semibold);
1148
- line-height: 16px;
1149
- word-break: keep-all;
1150
- color: var(--text-primary);
1151
- }
1152
- .quick-tab-add-icon {
1153
- width: 30px;
1154
- height: 30px;
1155
- border-radius: 50%;
1156
- display: flex;
1157
- align-items: center;
1158
- justify-content: center;
1159
- }
1160
- .quick-tab-add-icon:hover {
1161
- background: rgb(28 ,24 ,37 , 0.2);
1162
- }
1163
- /* 퀵메뉴 스크롤 스타일 */
1164
- .quick-tab-items-wrap::-webkit-scrollbar {
1165
- width: 4px;
1166
- }
1167
- .quick-tab-items-wrap::-webkit-scrollbar-track {
1168
- background: transparent;
1169
- border-radius: 3px;
1170
- }
1171
- .quick-tab-items-wrap::-webkit-scrollbar-thumb {
1172
- background: #d9d9d9;
1173
- border-radius: 3px;
1174
- border: 1px solid #f0f0f0;
1175
- }
1176
- .quick-tab-items-wrap::-webkit-scrollbar-thumb:hover {
1177
- background: #bfbfbf;
1178
- }
1179
-
1180
- /* 잠금화면 */
1181
- .lockscreen-form {
1182
- text-align: center;
1183
- }
1184
- .lockscreen-form .lock-icon-wrap {
1185
- width: 100%;
1186
- height: 70px;
1187
- margin-bottom: 15px;
1188
- }
1189
- .lockscreen-form .lock-icon-box {
1190
- display: inline-block;
1191
- width: 70px;
1192
- height: 70px;
1193
- border-radius: 15px;
1194
- background: #fff url(./assets/images/contents/icon/ico-lockscreen.svg) no-repeat center;
1195
- box-shadow: 0 0 10px rgba(0, 0, 0, 0.5);
1196
- }
1197
- .lockscreen-form h2 {
1198
- margin-bottom: 10px;
1199
- font-size: 30px;
1200
- color: #fff;
1201
- }
1202
- .lockscreen-form p {
1203
- margin-bottom: 40px;
1204
- font-size: 16px;
1205
- color: #E2E2E2;
1206
- }
1207
- .lock-ipt-wrap .ant-otp {
1208
- column-gap: 20px
1209
- }
1210
- .lock-ipt-wrap .ant-otp .ant-otp-mask-input {
1211
- width: 44px;
1212
- height: 44px;
1213
- border-radius: 50px;
1214
- opacity: .5;
1215
- }
1216
- .lock-ipt-wrap .ant-otp .ant-otp-mask-input:hover,
1217
- .lock-ipt-wrap .ant-otp .ant-otp-mask-input:focus,
1218
- .lock-ipt-wrap .ant-otp .ant-otp-mask-input:focus-within {
1219
- border-color: #6449fc;
1220
- box-shadow: 0 0 0 2px rgb(205 196 255 / 10%);
1221
- }
1222
-
1223
- .bwg-load-indicator { position: absolute !important; inset: 0 !important; z-index: 40; }
1224
-
1225
- /* ────────────────────── 로딩 오버레이 (WAVE 스타일) ────────────────────── */
1226
- .bwg-load-indicator { background: none !important; background-color: rgba(255,255,255,.6) !important; backdrop-filter: blur(2px); display: flex; align-items: center; justify-content: center; flex-direction: column; gap: 12px; text-align: center; }
1227
- .bwg-load-indicator .bwg-load-wave { display: flex; align-items: flex-end; gap: 15px; height: 18px; }
1228
- .bwg-load-indicator .bwg-load-wave span { width: 20px; height: 20px; border-radius: 50%; background: linear-gradient(180deg, #8bb1ff 0%, #a88bff 100%); box-shadow: 0 1px 2px rgba(0,0,0,.1); animation: rg-bounceY 900ms ease-in-out infinite; }
1229
- .bwg-load-indicator .bwg-load-wave span:nth-child(2) { animation-delay: 120ms; }
1230
- .bwg-load-indicator .bwg-load-wave span:nth-child(3) { animation-delay: 240ms; }
1231
- @keyframes rg-bounceY { 0%, 100% { transform: translateY(0); } 30% { transform: translateY(-8px); } 60% { transform: translateY(0); } }
1232
- .bwg-load-indicator .bwg-load-title { font-weight: 700; letter-spacing: .06em; font-size: 16px; color: #3b3b3b; }
1233
- .bwg-load-indicator .bwg-load-sub { font-size: 13px; color: #7a7a7a; }
1234
-
1
+ /* 메인 레이아웃 스타일 */
2
+ .main-layout {
3
+ min-height: 100vh;
4
+ overflow: hidden;
5
+ min-width: 1280px;
6
+ }
7
+
8
+ /* 헤더 스타일 */
9
+ .header-wrapper {
10
+ height: 50px !important;
11
+ line-height: 50px !important;
12
+ background: var(--header-bg);
13
+ padding: 0 30px 0 20px;
14
+ border-bottom: 1px solid var(--border-color);
15
+ display: flex;
16
+ justify-content: space-between;
17
+ align-items: center;
18
+ z-index: 1000;
19
+ gap: 24px;
20
+ color: var(--header-text);
21
+ }
22
+
23
+ .header-search {
24
+ flex-shrink: 0;
25
+ }
26
+
27
+ .header-title {
28
+ font-size: 18px;
29
+ font-weight: var(--font-weight-semibold);
30
+ color: var(--text-primary);
31
+ flex: 1;
32
+ text-align: center;
33
+ }
34
+
35
+ /* 헤더 로고 영역 */
36
+ .header-left {
37
+ display: flex;
38
+ align-items: center;
39
+ min-width: 200px;
40
+ }
41
+
42
+ .logo-container {
43
+ display: flex;
44
+ align-items: center;
45
+ height: 100%;
46
+ gap: 10px;
47
+ }
48
+
49
+ .header-logo-image {
50
+ width: 81px;
51
+ height: 40px;
52
+ object-fit: contain;
53
+ }
54
+
55
+ .logo-placeholder {
56
+ font-size: 18px;
57
+ font-weight: var(--font-weight-bold);
58
+ color: var(--header-text);
59
+ padding: 8px 12px;
60
+ border: 2px dashed var(--header-text);
61
+ border-radius: var(--border-radius-sm);
62
+ opacity: 0.7;
63
+ }
64
+
65
+
66
+ /* 헤더 타이틀 영역 */
67
+ .header-title {
68
+ flex: 1;
69
+ display: flex;
70
+ align-items: center;
71
+ justify-content: center;
72
+ font-size: var(--font-size-md);
73
+ font-weight: var(--font-weight-medium);
74
+ color: var(--header-text);
75
+ }
76
+
77
+ /* 헤더 사용자 영역 */
78
+ .header-right {
79
+ display: flex;
80
+ align-items: center;
81
+ gap: 12px;
82
+ min-width: 200px;
83
+ justify-content: flex-end;
84
+ }
85
+
86
+ .header-wrapper .ant-btn {
87
+ width: 30px;
88
+ height: 30px;
89
+ }
90
+
91
+
92
+ /* 사이더 스타일 */
93
+ .side-wrapper {
94
+ height: calc(100vh - 50px); /* 헤더 높이(50px)를 제외 */
95
+ overflow: visible; /* 토글 버튼이 짤리지 않도록 visible로 변경 */
96
+ display: flex;
97
+ flex-direction: column;
98
+ background-color: var(--sidebar-bg) !important;
99
+ position: relative; /* 토글 버튼의 absolute 포지셔닝을 위해 */
100
+ border-right: 1px solid var(--border-color);
101
+ }
102
+
103
+ .sider-content {
104
+ flex: 1;
105
+ display: flex;
106
+ flex-direction: column;
107
+ overflow: hidden;
108
+ }
109
+
110
+ .sider-menu {
111
+ border-inline-end: none !important;
112
+ flex: 1;
113
+ overflow-y: auto; /* 필요할 때만 스크롤바 표시 */
114
+ overflow-x: hidden;
115
+ max-height: calc(100vh - 160px); /* 헤더(50px) + 로고 높이 + 마진 고려 */
116
+ padding-right: 0px !important; /* 스크롤바 너비만큼 여백 확보 */
117
+ box-sizing: border-box; /* 패딩을 포함한 박스 모델 */
118
+ }
119
+ .sider-menu.ant-menu-inline-collapsed {
120
+ max-height: calc(100vh - 50px);
121
+ }
122
+ .sider-segmented {
123
+ padding: 5px;
124
+ background-color: var(--sidebar-segmented-bg);
125
+ border-radius: var(--border-radius-sm);
126
+ font-size: 13px;
127
+ color: var(--sidebar-segmented-text);
128
+ }
129
+ .sider-search-ipt {
130
+ background: var(--sidebar-search-bg);
131
+ border-radius: var(--border-radius-xl);
132
+ border: 0;
133
+ color: var(--sidebar-search-text);
134
+ font-size: 13px;
135
+ font-weight: var(--font-weight-medium);
136
+ }
137
+ .sider-segmented .ant-segmented-group {
138
+ gap: 5px;
139
+ }
140
+
141
+ /* Ant Design 메뉴 스타일 오버라이드 */
142
+
143
+ .sider-menu .ant-menu-item {
144
+ height: 30px;
145
+ transition: all 0.3s ease;
146
+ }
147
+
148
+ .sider-menu .ant-menu-submenu-title {
149
+ height: 30px !important;
150
+ line-height: 30px !important;
151
+ }
152
+
153
+ .sider-menu .ant-menu-submenu-title:hover {
154
+ background-color: unset !important;
155
+ }
156
+
157
+ /* 사이드바 테마 적용 */
158
+ .ant-layout-sider {
159
+ background-color: var(--sidebar-bg);
160
+ }
161
+ .ant-layout-sider-collapsed {
162
+ flex: 0 0 50px !important;
163
+ max-width: 50px !important;
164
+ min-width: 50px !important;
165
+ width: 50px !important;
166
+ padding: 10px 0;
167
+ }
168
+
169
+ .ant-menu-dark {
170
+ background-color: var(--sidebar-bg);
171
+ }
172
+
173
+ /* 사이드바 메뉴 트리 전체 테마 적용 */
174
+ .ant-layout-sider .ant-menu {
175
+ background-color: var(--sidebar-bg);
176
+ }
177
+
178
+ .ant-layout-sider .ant-menu-submenu {
179
+ border-radius: 0;
180
+ margin: 0;
181
+ width: 100%;
182
+ }
183
+
184
+ .ant-layout-sider .ant-menu-item {
185
+ /* background-color: var(--sidebar-bg) !important; */
186
+ /* color: var(--sidebar-text) !important; */
187
+ }
188
+
189
+ .ant-layout-sider .ant-menu-item:hover {
190
+ background-color: unset !important;
191
+ }
192
+
193
+ /* .sider-menu가 아닌 경우에만 배경색 제거 (기존 스타일 유지) */
194
+ .ant-layout-sider .ant-menu-item-selected {
195
+ background-color: unset !important;
196
+ }
197
+
198
+ .ant-layout-sider .ant-menu-submenu-title:hover {
199
+ background-color: unset !important;
200
+ }
201
+
202
+ .ant-layout-sider .ant-menu-submenu-open > .ant-menu-submenu-title {
203
+ /* background-color: rgba(255, 255, 255, 0.15) !important; */
204
+ }
205
+
206
+ .ant-layout-sider .ant-menu-sub.ant-menu-inline {
207
+ background: transparent !important;
208
+ }
209
+ /* 메뉴 공통 스타일 */
210
+ .sider-menu .ant-menu-item,
211
+ .sider-menu .ant-menu-submenu-title {
212
+ margin: 0;
213
+ width: 100%;
214
+ border-radius: 0;
215
+ }
216
+ .sider-menu .ant-menu-item-active.ant-menu-item-only-child {
217
+ background-color: var(--sidebar-menu-selected-bg);
218
+ }
219
+ .sider-menu .ant-menu-item-active.ant-menu-item-only-child:hover {
220
+ background-color: var(--sidebar-menu-selected-bg) !important;
221
+ }
222
+ .sider-menu .ant-menu-item-active.ant-menu-item-only-child::before {
223
+ content: '';
224
+ position: absolute;
225
+ top: 0;
226
+ left: 0;
227
+ width: 3px;
228
+ height: 100%;
229
+ background: var(--sidebar-menu-selected-bar);
230
+ }
231
+ .sider-menu .ant-menu-item-active.ant-menu-item-only-child .ant-menu-title-content {
232
+ font-weight: var(--font-weight-medium);
233
+ color: var(--sidebar-primary-text);
234
+ }
235
+
236
+ /* 선택된 메뉴 아이템 스타일 (selectedKeys로 선택된 경우) */
237
+ .sider-menu .ant-menu-item-selected {
238
+ background-color: var(--sidebar-menu-selected-bg) !important;
239
+ color: var(--sidebar-primary-text) !important;
240
+ }
241
+
242
+ .sider-menu .ant-menu-item-selected::before {
243
+ content: '';
244
+ position: absolute;
245
+ top: 0;
246
+ left: 0;
247
+ width: 3px;
248
+ height: 100%;
249
+ background: var(--sidebar-menu-selected-bar);
250
+ }
251
+
252
+ .sider-menu .ant-menu-item-selected .ant-menu-title-content {
253
+ font-weight: var(--font-weight-medium);
254
+ color: var(--sidebar-primary-text);
255
+ }
256
+
257
+ /* 서브메뉴 내부 선택된 아이템 */
258
+ .sider-menu .ant-menu-sub .ant-menu-item-selected {
259
+ background-color: var(--sidebar-menu-selected-bg) !important;
260
+ color: var(--sidebar-primary-text) !important;
261
+ }
262
+
263
+ .sider-menu .ant-menu-sub .ant-menu-item-selected::before {
264
+ content: '';
265
+ position: absolute;
266
+ top: 0;
267
+ left: 0;
268
+ width: 3px;
269
+ height: 100%;
270
+ background: var(--sidebar-menu-selected-bar);
271
+ }
272
+
273
+ .sider-menu .ant-menu-sub .ant-menu-item-selected .ant-menu-title-content {
274
+ font-weight: var(--font-weight-medium);
275
+ color: var(--sidebar-primary-text);
276
+ }
277
+
278
+ /* 3레벨 서브메뉴 내부 선택된 아이템 */
279
+ .sider-menu .ant-menu-sub .ant-menu-sub .ant-menu-item-selected {
280
+ background-color: var(--sidebar-menu-selected-bg) !important;
281
+ color: var(--sidebar-primary-text) !important;
282
+ }
283
+
284
+ .sider-menu .ant-menu-sub .ant-menu-sub .ant-menu-item-selected::before {
285
+ content: '';
286
+ position: absolute;
287
+ top: 0;
288
+ left: 0;
289
+ width: 3px;
290
+ height: 100%;
291
+ background: var(--sidebar-menu-selected-bar);
292
+ }
293
+
294
+ /* 1레벨 스타일 */
295
+ .sider-menu > .ant-menu-item > .ant-menu-item-icon + span,
296
+ .sider-menu > .ant-menu-submenu > .ant-menu-submenu-title .anticon + span {
297
+ margin-inline-start: 6px;
298
+ }
299
+ /* 1레벨 활성화 스타일 */
300
+ .ant-layout-sider .sider-menu > .ant-menu-item > .ant-menu-item-icon,
301
+ .ant-layout-sider .sider-menu > .ant-menu-submenu > .ant-menu-submenu-title span.anticon {
302
+ width: 30px;
303
+ height: 30px;
304
+ display: flex;
305
+ align-items: center;
306
+ justify-content: center;
307
+ border-radius: 5px;
308
+ }
309
+ .ant-layout-sider .sider-menu > .ant-menu-item-active > .ant-menu-item-icon,
310
+ .ant-layout-sider .sider-menu > .ant-menu-submenu-open > .ant-menu-submenu-title span.anticon,
311
+ .ant-layout-sider .sider-menu > .ant-menu-submenu-active > .ant-menu-submenu-title span.anticon {
312
+ background: var(--sidebar-active-icon-bg);
313
+ color: var(--primary-color);
314
+ }
315
+ .ant-layout-sider .sider-menu > .ant-menu-item-active > .ant-menu-title-content,
316
+ .ant-layout-sider .sider-menu > .ant-menu-submenu-open > .ant-menu-submenu-title span.ant-menu-title-content,
317
+ .ant-layout-sider .sider-menu > .ant-menu-submenu-active > .ant-menu-submenu-title span.ant-menu-title-content {
318
+ color: var(--primary-color);
319
+ font-weight: var(--font-weight-semibold);
320
+ }
321
+ .ant-layout-sider .sider-menu > .ant-menu-submenu-open > .ant-menu-submenu-title {
322
+ margin-bottom: 5px !important;
323
+ }
324
+ .ant-layout-sider .sider-menu > .ant-menu-item,
325
+ .ant-layout-sider .sider-menu > .ant-menu-submenu {
326
+ margin-bottom: 15px;
327
+ }
328
+ /* 2레벨 ul 스타일 */
329
+ .ant-layout-sider .sider-menu > .ant-menu-submenu-open > .ant-menu-sub {
330
+ background-color: var(--sidebar-open-menu-group-bg) !important;
331
+ border-top: 1px solid var(--sidebar-open-menu-group-border) !important;
332
+ border-bottom: 1px solid var(--sidebar-open-menu-group-border) !important;
333
+ padding: 10px 0;
334
+ }
335
+ .ant-layout-sider .sider-menu > .ant-menu-submenu-open > .ant-menu-sub > .ant-menu-submenu-open > .ant-menu-submenu-title {
336
+ margin-bottom: 5px;
337
+ }
338
+
339
+ /* 열린 메뉴 상위 텍스트 색상 */
340
+ .ant-menu-submenu-open > .ant-menu-submenu-title .ant-menu-title-content {
341
+ color: var(--text-high);
342
+ font-weight: var(--font-weight-semibold);
343
+ }
344
+
345
+ /* 서브메뉴 내부 모든 요소 배경색 */
346
+ .ant-layout-sider .ant-menu-sub .ant-menu-item,
347
+ .ant-layout-sider .ant-menu-sub .ant-menu-submenu,
348
+ .ant-layout-sider .ant-menu-sub .ant-menu-submenu-title {
349
+ /* background-color: var(--sidebar-bg) !important; */
350
+ }
351
+
352
+ /* 메뉴 트리 전체 배경색 강제 적용 */
353
+ .ant-layout-sider .ant-menu-dark .ant-menu-sub,
354
+ .ant-layout-sider .ant-menu-dark .ant-menu-sub .ant-menu-item,
355
+ .ant-layout-sider .ant-menu-dark .ant-menu-sub .ant-menu-submenu,
356
+ .ant-layout-sider .ant-menu-dark .ant-menu-sub .ant-menu-submenu-title {
357
+ /* background-color: var(--sidebar-bg) !important; */
358
+ border-radius: 0;
359
+ }
360
+
361
+ /* 메뉴 레벨별 색상 깊이감 */
362
+ /* 1레벨 메뉴 - 가장 진함 */
363
+ .ant-layout-sider .ant-menu-item,
364
+ .ant-layout-sider .ant-menu-submenu-title {
365
+ /* color: var(--sidebar-text) !important; */
366
+ color: var(--text-secondary);
367
+ }
368
+
369
+ /* 1레벨 active 스타일 */
370
+ .ant-layout-sider .ant-menu-item,
371
+ .ant-layout-sider .ant-menu-submenu-title
372
+ .ant-layout-sider .sider-menu > .ant-menu-submenu-open > .ant-menu-submenu-title span {
373
+ color: var(--primary-color);
374
+ &.ant-menu-title-content {
375
+ font-weight: var(--font-weight-semibold);
376
+ }
377
+ }
378
+
379
+
380
+ /* 2레벨 메뉴*/
381
+ .ant-layout-sider .ant-menu-sub .ant-menu-item,
382
+ .ant-layout-sider .ant-menu-sub .ant-menu-submenu-title {
383
+ padding-left: 20px !important;
384
+ }
385
+ .ant-layout-sider .ant-menu-sub .ant-menu-item.ant-menu-item-only-child {
386
+ padding-left: 30px !important;
387
+ }
388
+ /* 3레벨 메뉴*/
389
+ .ant-layout-sider .ant-menu-sub .ant-menu-sub .ant-menu-item,
390
+ .ant-layout-sider .ant-menu-sub .ant-menu-sub .ant-menu-submenu-title {
391
+ font-size: 13px !important;
392
+ padding-left: 30px !important;
393
+ }
394
+
395
+ /* 4레벨 메뉴*/
396
+ .ant-layout-sider .ant-menu-sub .ant-menu-sub .ant-menu-sub .ant-menu-item,
397
+ .ant-layout-sider
398
+ .ant-menu-sub
399
+ .ant-menu-sub
400
+ .ant-menu-sub
401
+ .ant-menu-submenu-title {
402
+ font-size: 12px !important;
403
+ padding-left: 30px !important;
404
+ }
405
+ /* 4레벨 ul 스타일 */
406
+ .ant-layout-sider .ant-menu-sub .ant-menu-sub .ant-menu-submenu-open .ant-menu-sub {
407
+ /* background: var(--sidebar-last-open-menu-group-bg) !important; */
408
+ }
409
+
410
+ /* 메뉴 아이콘 색상 */
411
+ .ant-layout-sider .ant-menu-item .anticon,
412
+ .ant-layout-sider .ant-menu-submenu-title .anticon {
413
+ color: #444 !important;
414
+ }
415
+
416
+ /* 메뉴 텍스트 색상 */
417
+ .ant-layout-sider .ant-menu-item,
418
+ .ant-layout-sider .ant-menu-submenu-title {
419
+ color: var(--text-secondary) !important;
420
+ }
421
+
422
+ /* 메뉴 링크 색상 */
423
+ .ant-layout-sider .ant-menu-item a,
424
+ .ant-layout-sider .ant-menu-submenu-title a {
425
+ color: var(--sidebar-text) !important;
426
+ }
427
+
428
+ /* 선택된 메뉴 아이템 */
429
+ .ant-layout-sider .ant-menu-item-selected,
430
+ .ant-layout-sider .ant-menu-item-selected > a {
431
+ /* color: #6449FC !important; */
432
+ /* background-color: rgba(255, 255, 255, 0.2) !important; */
433
+ }
434
+
435
+ /* 호버 상태 - 모든 레벨에 적용 */
436
+ .ant-layout-sider .ant-menu-item:hover,
437
+ .ant-layout-sider .ant-menu-submenu-title:hover {
438
+ /* color: var(--sidebar-text) !important; */
439
+ /* background-color: rgba(255, 255, 255, 0.1) !important; */
440
+ }
441
+ /* 호버 상태 - 서브메뉴 텍스트 강조 */
442
+ .ant-layout-sider .ant-menu-submenu:hover > .ant-menu-submenu-title .ant-menu-title-content span,
443
+ .ant-layout-sider .ant-menu-item:hover > .ant-menu-title-content span {
444
+ font-weight: var(--font-weight-bold);
445
+ }
446
+
447
+ /* 서브메뉴 내부 호버 상태 */
448
+ .ant-layout-sider .ant-menu-sub .ant-menu-item:hover,
449
+ .ant-layout-sider .ant-menu-sub .ant-menu-submenu-title:hover {
450
+ /* color: var(--sidebar-text) !important; */
451
+ /* background-color: rgba(255, 255, 255, 0.1) !important; */
452
+ }
453
+
454
+ /* 3레벨 서브메뉴 내부 호버 상태 */
455
+ .ant-layout-sider .ant-menu-sub .ant-menu-sub .ant-menu-item:hover,
456
+ .ant-layout-sider .ant-menu-sub .ant-menu-sub .ant-menu-submenu-title:hover {
457
+ color: var(--sidebar-primary-text);
458
+ background-color: var(--sidebar-menu-selected-bg);
459
+ }
460
+
461
+ /* 4레벨 서브메뉴 내부 호버 상태 */
462
+ .ant-layout-sider
463
+ .ant-menu-sub
464
+ .ant-menu-sub
465
+ .ant-menu-sub
466
+ .ant-menu-item:hover,
467
+ .ant-layout-sider
468
+ .ant-menu-sub
469
+ .ant-menu-sub
470
+ .ant-menu-sub
471
+ .ant-menu-submenu-title:hover {
472
+ color: var(--sidebar-primary-text);
473
+ background-color: var(--sidebar-menu-selected-bg);
474
+ }
475
+
476
+ /* 라이트 테마 호버 (어두운 색상) */
477
+ .ant-layout-sider[data-theme='light'] .ant-menu-item:hover,
478
+ .ant-layout-sider[data-theme='light'] .ant-menu-submenu-title:hover,
479
+ .ant-layout-sider[data-theme='light'] .ant-menu-sub .ant-menu-item:hover,
480
+ .ant-layout-sider[data-theme='light']
481
+ .ant-menu-sub
482
+ .ant-menu-submenu-title:hover,
483
+ .ant-layout-sider[data-theme='light']
484
+ .ant-menu-sub
485
+ .ant-menu-sub
486
+ .ant-menu-item:hover,
487
+ .ant-layout-sider[data-theme='light']
488
+ .ant-menu-sub
489
+ .ant-menu-sub
490
+ .ant-menu-submenu-title:hover,
491
+ .ant-layout-sider[data-theme='light']
492
+ .ant-menu-sub
493
+ .ant-menu-sub
494
+ .ant-menu-sub
495
+ .ant-menu-item:hover,
496
+ .ant-layout-sider[data-theme='light']
497
+ .ant-menu-sub
498
+ .ant-menu-sub
499
+ .ant-menu-sub
500
+ .ant-menu-submenu-title:hover {
501
+ background-color: rgba(0, 0, 0, 0.1) !important;
502
+ }
503
+
504
+ /* 모던 테마 호버 (어두운 색상) */
505
+ .ant-layout-sider[data-theme='modern'] .ant-menu-item:hover,
506
+ .ant-layout-sider[data-theme='modern'] .ant-menu-submenu-title:hover,
507
+ .ant-layout-sider[data-theme='modern'] .ant-menu-sub .ant-menu-item:hover,
508
+ .ant-layout-sider[data-theme='modern']
509
+ .ant-menu-sub
510
+ .ant-menu-submenu-title:hover,
511
+ .ant-layout-sider[data-theme='modern']
512
+ .ant-menu-sub
513
+ .ant-menu-sub
514
+ .ant-menu-item:hover,
515
+ .ant-layout-sider[data-theme='modern']
516
+ .ant-menu-sub
517
+ .ant-menu-sub
518
+ .ant-menu-submenu-title:hover,
519
+ .ant-layout-sider[data-theme='modern']
520
+ .ant-menu-sub
521
+ .ant-menu-sub
522
+ .ant-menu-sub
523
+ .ant-menu-item:hover,
524
+ .ant-layout-sider[data-theme='modern']
525
+ .ant-menu-sub
526
+ .ant-menu-sub
527
+ .ant-menu-sub
528
+ .ant-menu-submenu-title:hover {
529
+ background-color: rgba(0, 0, 0, 0.1) !important;
530
+ }
531
+
532
+ /* 메뉴 내부 모든 텍스트 강제 적용 */
533
+ .ant-layout-sider .ant-menu * {
534
+ /* color: var(--sidebar-text) !important; */
535
+ }
536
+
537
+ /* 메뉴 아이템 내부 텍스트 */
538
+ .ant-layout-sider .ant-menu-item span,
539
+ .ant-layout-sider .ant-menu-submenu-title span {
540
+ overflow: hidden;
541
+ white-space: nowrap;
542
+ text-overflow: ellipsis;
543
+ }
544
+
545
+ /* 강제로 모든 메뉴 텍스트 색상 적용 */
546
+ .ant-layout-sider .ant-menu-dark .ant-menu-item,
547
+ .ant-layout-sider .ant-menu-dark .ant-menu-submenu-title,
548
+ .ant-layout-sider .ant-menu-dark .ant-menu-item a,
549
+ .ant-layout-sider .ant-menu-dark .ant-menu-submenu-title a,
550
+ .ant-layout-sider .ant-menu-dark .ant-menu-item span,
551
+ .ant-layout-sider .ant-menu-dark .ant-menu-submenu-title span {
552
+ /* color: var(--sidebar-text) !important; */
553
+ }
554
+
555
+ /* 선택된 메뉴 아이템 강제 적용 */
556
+ .ant-layout-sider .ant-menu-dark .ant-menu-item-selected,
557
+ .ant-layout-sider .ant-menu-dark .ant-menu-item-selected > a,
558
+ .ant-layout-sider .ant-menu-dark .ant-menu-item-selected > span {
559
+ /* color: var(--sidebar-text) !important; */
560
+ }
561
+
562
+ /* 선택된 메뉴 아이템 - 모든 레벨에 적용 */
563
+ .ant-layout-sider .ant-menu-item-selected,
564
+ .ant-layout-sider .ant-menu-item-selected > a {
565
+ color: var(--sidebar-primary-text);
566
+ background-color: var(--sidebar-menu-selected-bg);
567
+ }
568
+
569
+ /* 서브메뉴 내부 선택된 아이템 */
570
+ .ant-layout-sider .ant-menu-sub .ant-menu-item-selected,
571
+ .ant-layout-sider .ant-menu-sub .ant-menu-item-selected > a {
572
+ color: var(--sidebar-primary-text);
573
+ background-color: var(--sidebar-menu-selected-bg);
574
+ }
575
+
576
+ /* 3레벨 서브메뉴 내부 선택된 아이템 */
577
+ .ant-layout-sider .ant-menu-sub .ant-menu-sub .ant-menu-item-selected,
578
+ .ant-layout-sider .ant-menu-sub .ant-menu-sub .ant-menu-item-selected > a {
579
+ color: var(--sidebar-primary-text);
580
+ background-color: var(--sidebar-menu-selected-bg);
581
+ }
582
+
583
+ /* 4레벨 서브메뉴 내부 선택된 아이템 */
584
+ .ant-layout-sider
585
+ .ant-menu-sub
586
+ .ant-menu-sub
587
+ .ant-menu-sub
588
+ .ant-menu-item-selected,
589
+ .ant-layout-sider
590
+ .ant-menu-sub
591
+ .ant-menu-sub
592
+ .ant-menu-sub
593
+ .ant-menu-item-selected
594
+ > a {
595
+ color: var(--sidebar-primary-text);
596
+ background-color: var(--sidebar-menu-selected-bg);
597
+ }
598
+
599
+ /* 메뉴 하위 레이아웃 변경 */
600
+ .sider-content .sider-menu > .ant-menu-item:not(.ant-menu-submenu-vertical) {
601
+ padding-left: 10px !important;
602
+ }
603
+ .sider-content .sider-menu > .ant-menu-submenu:not(.ant-menu-submenu-vertical) > .ant-menu-submenu-title {
604
+ margin-bottom: 15px;
605
+ padding-left: 10px !important;
606
+ }
607
+
608
+ /* 3~4레벨 텍스트 꾸밈 요소 */
609
+ .sider-content .sider-menu .ant-menu-title-content {
610
+ height: 100%;
611
+ line-height: 30px;
612
+ overflow: visible !important;
613
+ }
614
+ .sider-content .sider-menu .ant-menu-item.ant-menu-item-only-child .ant-menu-title-content > div {
615
+ position: relative;
616
+ }
617
+ .sider-content .sider-menu .ant-menu-item.ant-menu-item-only-child .ant-menu-title-content > div::before {
618
+ content: '';
619
+ position: absolute;
620
+ top: 50%;
621
+ left: -10px;
622
+ width: 4px;
623
+ height: 1px;
624
+ background-color: var(--sidebar-menu-bullet);
625
+ }
626
+
627
+
628
+ .sider-content .sider-menu .ant-menu-item-active.ant-menu-item-only-child .ant-menu-title-content > div::before {
629
+ background-color: var(--sidebar-menu-bullet-active);
630
+ }
631
+
632
+ /* 사이드바 축소 스타일 */
633
+ .sider-menu .ant-menu-submenu-vertical .ant-menu-submenu-title {
634
+ padding: 0 10px !important;
635
+ margin-bottom: 15px;
636
+ }
637
+ .sider-menu .ant-menu-submenu-vertical .ant-menu-submenu-title:hover {
638
+ background-color: transparent !important;
639
+ }
640
+ .sider-menu .ant-menu-submenu-vertical .ant-menu-submenu-title[aria-expanded="true"] .anticon {
641
+ background: var(--sidebar-active-icon-bg);
642
+ color: var(--primary-color) !important;
643
+ }
644
+
645
+ /* 사이드바 segemented */
646
+ .sider-segmented .ant-segmented-item-label {
647
+ display: flex;
648
+ align-items: center;
649
+ justify-content: center;
650
+ gap: 5px;
651
+ }
652
+ .sider-segmented .sider-segmented-item {
653
+ width: 20px;
654
+ height: 20px;
655
+ display: flex;
656
+ align-items: center;
657
+ justify-content: center;
658
+ flex-shrink: 0;
659
+ }
660
+
661
+ /* 라이트 테마 선택된 아이템 (어두운 색상) */
662
+ .ant-layout-sider[data-theme='light'] .ant-menu-item-selected,
663
+ .ant-layout-sider[data-theme='light'] .ant-menu-item-selected > a,
664
+ .ant-layout-sider[data-theme='light'] .ant-menu-sub .ant-menu-item-selected,
665
+ .ant-layout-sider[data-theme='light'] .ant-menu-sub .ant-menu-item-selected > a,
666
+ .ant-layout-sider[data-theme='light']
667
+ .ant-menu-sub
668
+ .ant-menu-sub
669
+ .ant-menu-item-selected,
670
+ .ant-layout-sider[data-theme='light']
671
+ .ant-menu-sub
672
+ .ant-menu-sub
673
+ .ant-menu-item-selected
674
+ > a,
675
+ .ant-layout-sider[data-theme='light']
676
+ .ant-menu-sub
677
+ .ant-menu-sub
678
+ .ant-menu-sub
679
+ .ant-menu-item-selected,
680
+ .ant-layout-sider[data-theme='light']
681
+ .ant-menu-sub
682
+ .ant-menu-sub
683
+ .ant-menu-sub
684
+ .ant-menu-item-selected
685
+ > a {
686
+ background-color: rgba(0, 0, 0, 0.2) !important;
687
+ }
688
+
689
+ /* 모던 테마 선택된 아이템 (어두운 색상) */
690
+ .ant-layout-sider[data-theme='modern'] .ant-menu-item-selected,
691
+ .ant-layout-sider[data-theme='modern'] .ant-menu-item-selected > a,
692
+ .ant-layout-sider[data-theme='modern'] .ant-menu-sub .ant-menu-item-selected,
693
+ .ant-layout-sider[data-theme='modern']
694
+ .ant-menu-sub
695
+ .ant-menu-item-selected
696
+ > a,
697
+ .ant-layout-sider[data-theme='modern']
698
+ .ant-menu-sub
699
+ .ant-menu-sub
700
+ .ant-menu-item-selected,
701
+ .ant-layout-sider[data-theme='modern']
702
+ .ant-menu-sub
703
+ .ant-menu-sub
704
+ .ant-menu-item-selected
705
+ > a,
706
+ .ant-layout-sider[data-theme='modern']
707
+ .ant-menu-sub
708
+ .ant-menu-sub
709
+ .ant-menu-sub
710
+ .ant-menu-item-selected,
711
+ .ant-layout-sider[data-theme='modern']
712
+ .ant-menu-sub
713
+ .ant-menu-sub
714
+ .ant-menu-sub
715
+ .ant-menu-item-selected
716
+ > a {
717
+ background-color: rgba(0, 0, 0, 0.2) !important;
718
+ }
719
+
720
+ /* 사이드바 스크롤바 스타일링 */
721
+ .sider-menu::-webkit-scrollbar,
722
+ .sider-menu-container::-webkit-scrollbar {
723
+ width: 6px;
724
+ }
725
+ .sider-menu::-webkit-scrollbar-track,
726
+ .sider-menu-container::-webkit-scrollbar-track {
727
+ background: transparent;
728
+ border-radius: 3px;
729
+ }
730
+ .sider-menu::-webkit-scrollbar-thumb,
731
+ .sider-menu-container::-webkit-scrollbar-thumb {
732
+ background: #d9d9d9;
733
+ border-radius: 3px;
734
+ border: 1px solid #f0f0f0;
735
+ }
736
+ .sider-menu::-webkit-scrollbar-thumb:hover,
737
+ .sider-menu-container::-webkit-scrollbar-thumb:hover {
738
+ background: #bfbfbf;
739
+ }
740
+
741
+ /* Firefox 스크롤바 스타일링 */
742
+ .sider-menu {
743
+ scrollbar-width: thin;
744
+ scrollbar-color: #d9d9d9 #f0f0f0;
745
+ }
746
+
747
+ /* 컨텐츠 컨테이너 스타일 */
748
+ .content-container {
749
+ display: flex;
750
+ flex-direction: column;
751
+ flex: 1;
752
+ overflow: hidden;
753
+ height: calc(100vh - 50px); /* 헤더 높이를 제외 */
754
+ }
755
+
756
+ /* 컨텐츠 스타일 */
757
+ .main-content {
758
+ flex: 1;
759
+ height: calc(100vh - 45px);
760
+ }
761
+ .content-header {
762
+ margin-bottom: 24px;
763
+ padding-bottom: 16px;
764
+ border-bottom: 1px solid #f0f0f0;
765
+ }
766
+ .content-title {
767
+ font-size: 24px;
768
+ font-weight: 600;
769
+ color: var(--text-primary);
770
+ margin: 0;
771
+ }
772
+ .content-description {
773
+ color: #666;
774
+ margin-top: 8px;
775
+ }
776
+ .content-body {
777
+ height: 100%;
778
+ }
779
+ .bwg-view {
780
+ gap: 20px;
781
+ padding: 20px 30px;
782
+ }
783
+
784
+ /* 반응형 디자인 */
785
+ @media (max-width: 768px) {
786
+ .side-wrapper {
787
+ height: 100vh;
788
+ z-index: 1001;
789
+ transition: left 0.3s ease;
790
+ }
791
+ .side-wrapper.mobile-open {
792
+ left: 0;
793
+ }
794
+ .header-wrapper {
795
+ padding: 0 16px;
796
+ gap: 12px;
797
+ }
798
+ .header-search {
799
+ width: 200px;
800
+ }
801
+ .header-search .ant-auto-complete {
802
+ width: 100% !important;
803
+ }
804
+ .header-title {
805
+ font-size: var(--font-size-md);
806
+ flex: 1;
807
+ text-align: center;
808
+ }
809
+ .header-right {
810
+ gap: 8px;
811
+ }
812
+ }
813
+
814
+ /* MenuTab 전용 스타일링 */
815
+ .menu-tab-wrapper {
816
+ background: var(--bg-primary);
817
+ }
818
+ .menu-tab-wrapper .menu-tabs.ant-tabs .ant-tabs-nav {
819
+ margin: 0;
820
+ padding: 10px 34px 0 29px;
821
+ height: 45px;
822
+ display: flex;
823
+ align-items: center;
824
+ justify-content: space-between;
825
+ }
826
+ .menu-tab-wrapper .ant-tabs-nav::before {
827
+ left: 29px;
828
+ bottom: 0;
829
+ border-bottom: 1px solid var(--border-color);
830
+ }
831
+ .menu-tab-wrapper .menu-tabs.ant-tabs .ant-tabs-nav-wrap {
832
+ height: 35px;
833
+ flex: 1 !important;
834
+ align-items: flex-end;
835
+ }
836
+ .menu-tab-wrapper .menu-tabs.ant-tabs .ant-tabs-nav-list {
837
+ display: flex;
838
+ align-items: center;
839
+ height: 100%;
840
+ flex-wrap: nowrap;
841
+ }
842
+ .menu-tab-wrapper .menu-tabs.ant-tabs .ant-tabs-tab {
843
+ height: 100%;
844
+ border-radius: 10px 10px 0 0;
845
+ transition: all 0.3s ease;
846
+ padding: 0 10px 0 24px;
847
+ position: relative ;
848
+ background: #E7E9F4;
849
+ margin: 0 4px 0 0;
850
+ font-size: var(--font-size-sm);
851
+ color: #777;
852
+ border: 0;
853
+ }
854
+ .menu-tab-wrapper .menu-tabs.ant-tabs .ant-tabs-tab .ant-tabs-tab-remove {
855
+ width: 20px;
856
+ height: 20px;
857
+ margin-right: 0;
858
+ margin-left: 10px;
859
+ color: #a1a1a1;
860
+ }
861
+ .menu-tab-wrapper .menu-tabs.ant-tabs .ant-tabs-tab:not(.ant-tabs-tab-active):hover {
862
+ background: #dbdeec;
863
+ color: var(--text-secondary);
864
+ }
865
+ .menu-tab-wrapper .menu-tabs.ant-tabs .ant-tabs-tab-active {
866
+ background: var(--bg-primary);
867
+ border: 2px solid var(--primary-color);
868
+ border-bottom: none;
869
+ .ant-tabs-tab-btn {
870
+ color:var(--primary-color);
871
+ text-shadow: none;
872
+ font-weight: var(--font-weight-bold);
873
+ }
874
+ }
875
+ /* MenuTab의 content-holder는 숨김 처리 (뷰 렌더링하지 않음) */
876
+ .menu-tab-wrapper .menu-tabs.ant-tabs .ant-tabs-content-holder {
877
+ display: none !important;
878
+ }
879
+
880
+ /* MenuTab 네비게이션 버튼 스타일링 */
881
+ .menu-tab-wrapper .menu-tabs .ant-tabs-extra-content {
882
+ display: flex;
883
+ align-items: center;
884
+ gap: 4px;
885
+ flex-shrink: 0;
886
+ white-space: nowrap;
887
+ overflow: hidden;
888
+ padding-bottom: 13px;
889
+ }
890
+ .menu-tab-wrapper .menu-tabs .ant-tabs-extra-content > div {
891
+ display: flex !important;
892
+ align-items: center !important;
893
+ gap: 4px !important;
894
+ flex-wrap: nowrap !important;
895
+ }
896
+ .menu-tab-wrapper .menu-tabs .ant-tabs-extra-content .ant-btn {
897
+ height: 20px !important;
898
+ width: 20px !important;
899
+ font-size: 12px !important;
900
+ display: flex !important;
901
+ align-items: center !important;
902
+ justify-content: center !important;
903
+ border: 0;
904
+ color: #bdbdbd;
905
+ box-shadow: none !important;
906
+ }
907
+ .menu-tab-wrapper .menu-tabs .ant-tabs-extra-content .ant-btn:hover {
908
+ color: #5E5E5E;
909
+ }
910
+ .menu-tab-wrapper .menu-tabs .ant-tabs-extra-content .ant-btn:disabled {
911
+ opacity: 0.5;
912
+ cursor: not-allowed;
913
+ background: none;
914
+ }
915
+ .menu-tab-wrapper .menu-tabs .ant-tabs-extra-content .menu-tabs-close-btn {
916
+ margin-left: 11px;
917
+ }
918
+ .menu-nav-wrapper {
919
+ display: flex;
920
+ align-items: center;
921
+ gap: 4px;
922
+ }
923
+ /* MenuTab - 데이터용 화면 */
924
+ .menu-tab-wrapper .menu-tabs .ant-tabs-tab.tab-special {
925
+ height: calc(100% - 5px);
926
+ max-width: 200px;
927
+ margin: 2px 4px 3px 0px;
928
+ border-radius: 6px;
929
+ border: 1px solid #e7e9f4;
930
+ background: #e7e9f4;
931
+ padding: 0px 5px 0px 8px;
932
+ }
933
+ .menu-tab-wrapper .menu-tabs .tab-special.ant-tabs-tab-active {
934
+ height: calc(100% - 5px);
935
+ max-width: 200px;
936
+ margin: 2px 4px 3px 0px;
937
+ border-radius: 6px;
938
+ border: 1px solid #73c5ff;
939
+ background: #edf7ff;
940
+ padding: 0px 5px 0px 8px;
941
+ }
942
+ .menu-tab-wrapper .menu-tabs .tab-special .ant-tabs-tab-btn {
943
+ position: relative;
944
+ color: #567491 ;
945
+ white-space: nowrap;
946
+ text-overflow: ellipsis;
947
+ overflow: hidden;
948
+ padding-left: 23px;
949
+ }
950
+ .menu-tab-wrapper .menu-tabs .tab-special.ant-tabs-tab-active .ant-tabs-tab-btn {
951
+ position: relative;
952
+ white-space: nowrap;
953
+ text-overflow: ellipsis;
954
+ overflow: hidden;
955
+ padding-left: 23px;
956
+ color: #1D92FF;
957
+ text-shadow: none;
958
+ font-weight: var(--font-weight-bold);
959
+ }
960
+ .menu-tab-wrapper .menu-tabs .tab-special .ant-tabs-tab-btn::before {
961
+ content: '';
962
+ position: absolute;
963
+ width: 18px;
964
+ height: 18px;
965
+ top: 2px;
966
+ left: 0;
967
+ background: url(./assets/images/contents/icon/ico-tab-hashtag-grey.svg) no-repeat center;
968
+ }
969
+ .menu-tab-wrapper .menu-tabs .tab-special.ant-tabs-tab-active .ant-tabs-tab-btn::before {
970
+ content: '';
971
+ position: absolute;
972
+ width: 18px;
973
+ height: 18px;
974
+ top: 2px;
975
+ left: 0;
976
+ background: url(./assets/images/contents/icon/ico-tab-hashtag.svg) no-repeat center;
977
+ }
978
+
979
+ /* landing-wrap */
980
+ .landing-wrap {
981
+ background: #f3f5f9;
982
+ position: absolute;
983
+ top: 0;
984
+ bottom: 0;
985
+ z-index: 4;
986
+ right: 0;
987
+ left: 0;
988
+ background: url('./assets/images/backgrounds/landing_bg.png') no-repeat;
989
+ background-size: cover;
990
+ }
991
+ .landing-wrap .content-tit {
992
+ position: absolute;
993
+ top: 51%;
994
+ left: 50.6%;
995
+ transform: translate(-50%, -50.6%);
996
+ padding-top: 20px;
997
+ color: #9c9d9e;
998
+ font-size: var(--font-size-xl);
999
+ }
1000
+ .landing-wrap .content-tit:before {
1001
+ position: absolute;
1002
+ top: 0;
1003
+ left: 50%;
1004
+ display: inline-block;
1005
+ width: 19px;
1006
+ height: 1px;
1007
+ background: #9c9d9e;
1008
+ content: '';
1009
+ transform: translateX(-50%);
1010
+ }
1011
+ /* 20210316수정 end */
1012
+ .landing-wrap .inner {
1013
+ position: relative;
1014
+ height: 100%;
1015
+ min-height: 600px;
1016
+ }
1017
+ .landing-wrap .page-tit {
1018
+ position: absolute;
1019
+ left: 3%;
1020
+ bottom: 26%;
1021
+ color: #6688ff;
1022
+ font-size: 60px;
1023
+ font-family: 'Poppins', sans-serif;
1024
+ }
1025
+ .landing-wrap .sub-tit {
1026
+ position: absolute;
1027
+ left: 3%;
1028
+ bottom: 16%;
1029
+ color: rgba(255, 255, 255, 0.7);
1030
+ font-size: var(--font-size-xl);
1031
+ line-height: 28px;
1032
+ letter-spacing: -0.2px;
1033
+ font-family: 'Poppins', sans-serif;
1034
+ font-weight: 300;
1035
+ }
1036
+ .landing-wrap .content {
1037
+ font-family: 'Poppins', sans-serif;
1038
+ display: flex;
1039
+ position: absolute;
1040
+ line-height: 0;
1041
+ bottom: 16%;
1042
+ padding: 20px 22px;
1043
+ width: 480px;
1044
+ box-sizing: border-box;
1045
+ background: rgba(255, 255, 255, 0.05);
1046
+ right: 2%;
1047
+ border-radius: var(--border-radius-xxxl);
1048
+ backdrop-filter: blur(8px);
1049
+ }
1050
+ .landing-wrap .content dl {
1051
+ position: relative;
1052
+ width: 100%;
1053
+ text-align: left;
1054
+ box-sizing: border-box;
1055
+ }
1056
+ .landing-wrap .content dt {
1057
+ margin-bottom: 10px;
1058
+ padding-bottom: 10px;
1059
+ color: var(--text-white);
1060
+ font-size: 24px;
1061
+ line-height: initial;
1062
+ border-bottom: 1px solid rgba(255, 255, 255, 0.5);
1063
+ padding-left: 9px;
1064
+ }
1065
+ .landing-wrap .content dd {
1066
+ line-height: 20px;
1067
+ color: var(--text-white);
1068
+ font-size: 18px !important;
1069
+ font-weight: var(--font-weight-regular);
1070
+ letter-spacing: 0;
1071
+ padding-top: 6px;
1072
+ }
1073
+ .landing-wrap .content dd span {
1074
+ display: block;
1075
+ padding: 6px 0 6px 40px;
1076
+ position: relative;
1077
+ }
1078
+ .landing-wrap .content dd span:before {
1079
+ display: block;
1080
+ content: '';
1081
+ left: 9px;
1082
+ position: absolute;
1083
+ top: 5px;
1084
+ width: 20px;
1085
+ height: 20px;
1086
+ background: url(../images/common.png) no-repeat;
1087
+ background-position: -78px -177px;
1088
+ }
1089
+ .landing-wrap .content dd span + span:before {
1090
+ background-position: -100px -177px;
1091
+ }
1092
+
1093
+ /* 사이드바 토글 버튼 */
1094
+ .sider-toggle-wrapper {
1095
+ position: absolute;
1096
+ top: 9px;
1097
+ right: -25px;
1098
+ z-index: 1000;
1099
+ width: 25px;
1100
+ height: 41px;
1101
+ background-color: #ffffff;
1102
+ border: 1px solid #dddddd;
1103
+ border-radius: 0 10px 10px 0;
1104
+ display: flex;
1105
+ align-items: center;
1106
+ justify-content: center;
1107
+ cursor: pointer;
1108
+ box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.05);
1109
+ transition: all 0.3s ease;
1110
+ }
1111
+
1112
+ .sider-toggle-btn .ant-btn {
1113
+ border-radius: 0 10px 10px 0;
1114
+ font-size: 12px;
1115
+ color: #787878;
1116
+ padding: 0;
1117
+ width: 100%;
1118
+ height: 100%;
1119
+ display: flex;
1120
+ align-items: center;
1121
+ justify-content: center;
1122
+ }
1123
+
1124
+ /* 퀵메뉴 */
1125
+ .quick-tab-container {
1126
+ width: 33px;
1127
+ height: 118px;
1128
+ background: #4C465D;
1129
+ border-radius: 15px 0px 0px 15px;
1130
+ box-shadow: 0 4px 4px rgba(61, 56, 98, 0.3);
1131
+ }
1132
+ .quick-tab-container:has(.expanded) {
1133
+ background: var(--primary-color);
1134
+ }
1135
+ .ant-btn.quick-tab-toggle-btn {
1136
+ width: 33px;
1137
+ height: 67px;
1138
+ margin: 11px 0 9px;
1139
+ border-radius: 15px 0px 0px 15px;
1140
+ position: absolute;
1141
+ top: 0;
1142
+ right: 0;
1143
+ cursor: pointer;
1144
+ background-image: url(./assets/images/contents/icon/quick-tab-text.svg);
1145
+ background-repeat: no-repeat;
1146
+ background-position: center;
1147
+ }
1148
+ .ant-btn.quick-tab-toggle-btn:not(.ant-btn-disabled):hover,
1149
+ .ant-btn.quick-tab-toggle-btn:not(.ant-btn-disabled):active {
1150
+ background-image: url(./assets/images/contents/icon/quick-tab-text.svg);
1151
+ background-repeat: no-repeat;
1152
+ background-position: center;
1153
+ background-color: transparent !important;
1154
+ }
1155
+ .quick-tab-drag-btn {
1156
+ position: absolute;
1157
+ bottom: 9px;
1158
+ right: 3px;
1159
+ width: 24px;
1160
+ height: 24px;
1161
+ border-radius: 50%;
1162
+ display: flex;
1163
+ align-items: center;
1164
+ justify-content: center;
1165
+ background: transparent url(./assets/images/contents/icon/ico-quick-tab-move.svg) no-repeat center;
1166
+ }
1167
+ .quick-tab-drag-btn:hover {
1168
+ background: rgba(28, 24, 37, 0.2) url(./assets/images/contents/icon/ico-quick-tab-move.svg) no-repeat center;
1169
+ }
1170
+ .quick-tab-container .quick-tab {
1171
+ background-color: var(--primary-color);
1172
+ }
1173
+ .quick-tab-item-inner {
1174
+ display: flex;
1175
+ flex-direction: column;
1176
+ align-items: center;
1177
+ border-radius: var(--border-radius-lg);
1178
+ text-align: center;
1179
+ }
1180
+ .quick-tab-item-inner .quick-tab-items-icon {
1181
+ display: flex;
1182
+ align-items: center;
1183
+ justify-content: center;
1184
+ }
1185
+ .quick-tab-item-inner .quick-tab-items-icon .anticon {
1186
+ font-size: 28px;
1187
+ }
1188
+ .quick-tab-item-inner .quick-tab-items:last-child {
1189
+ margin-bottom: 0;
1190
+ }
1191
+ .quick-tab-items-icon:has(.quick-overtime) {
1192
+ background: #EFEBFF;
1193
+ }
1194
+ .quick-tab-items-icon:has(.quick-business-trip) {
1195
+ background: #E3F6FF;
1196
+ }
1197
+ .quick-tab-items-icon:has(.quick-holiday) {
1198
+ background: #FFF0F5;
1199
+ }
1200
+ .quick-tab-items-title {
1201
+ font-size: 13px;
1202
+ font-weight: var(--font-weight-semibold);
1203
+ line-height: 16px;
1204
+ word-break: keep-all;
1205
+ color: var(--text-primary);
1206
+ }
1207
+ .quick-tab-add-icon {
1208
+ width: 30px;
1209
+ height: 30px;
1210
+ border-radius: 50%;
1211
+ display: flex;
1212
+ align-items: center;
1213
+ justify-content: center;
1214
+ }
1215
+ .quick-tab-add-icon:hover {
1216
+ background: rgb(28 ,24 ,37 , 0.2);
1217
+ }
1218
+ /* 퀵메뉴 스크롤 스타일 */
1219
+ .quick-tab-items-wrap::-webkit-scrollbar {
1220
+ width: 4px;
1221
+ }
1222
+ .quick-tab-items-wrap::-webkit-scrollbar-track {
1223
+ background: transparent;
1224
+ border-radius: 3px;
1225
+ }
1226
+ .quick-tab-items-wrap::-webkit-scrollbar-thumb {
1227
+ background: #d9d9d9;
1228
+ border-radius: 3px;
1229
+ border: 1px solid #f0f0f0;
1230
+ }
1231
+ .quick-tab-items-wrap::-webkit-scrollbar-thumb:hover {
1232
+ background: #bfbfbf;
1233
+ }
1234
+
1235
+ /* 잠금화면 */
1236
+ .lockscreen-form {
1237
+ text-align: center;
1238
+ }
1239
+ .lockscreen-form .lock-icon-wrap {
1240
+ width: 100%;
1241
+ height: 70px;
1242
+ margin-bottom: 15px;
1243
+ }
1244
+ .lockscreen-form .lock-icon-box {
1245
+ display: inline-block;
1246
+ width: 70px;
1247
+ height: 70px;
1248
+ border-radius: 15px;
1249
+ background: #fff url(./assets/images/contents/icon/ico-lockscreen.svg) no-repeat center;
1250
+ box-shadow: 0 0 10px rgba(0, 0, 0, 0.5);
1251
+ }
1252
+ .lockscreen-form h2 {
1253
+ margin-bottom: 10px;
1254
+ font-size: 30px;
1255
+ color: #fff;
1256
+ }
1257
+ .lockscreen-form p {
1258
+ margin-bottom: 40px;
1259
+ font-size: 16px;
1260
+ color: #E2E2E2;
1261
+ }
1262
+ .lock-ipt-wrap .ant-otp {
1263
+ column-gap: 20px
1264
+ }
1265
+ .lock-ipt-wrap .ant-otp .ant-otp-mask-input {
1266
+ width: 44px;
1267
+ height: 44px;
1268
+ border-radius: 50px;
1269
+ opacity: .5;
1270
+ }
1271
+ .lock-ipt-wrap .ant-otp .ant-otp-mask-input:hover,
1272
+ .lock-ipt-wrap .ant-otp .ant-otp-mask-input:focus,
1273
+ .lock-ipt-wrap .ant-otp .ant-otp-mask-input:focus-within {
1274
+ border-color: #6449fc;
1275
+ box-shadow: 0 0 0 2px rgb(205 196 255 / 10%);
1276
+ }
1277
+
1278
+ .bwg-load-indicator { position: absolute !important; inset: 0 !important; z-index: 40; }
1279
+
1280
+ /* ────────────────────── 로딩 오버레이 (WAVE 스타일) ────────────────────── */
1281
+ .bwg-load-indicator { background: none !important; background-color: rgba(255,255,255,.6) !important; backdrop-filter: blur(2px); display: flex; align-items: center; justify-content: center; flex-direction: column; gap: 12px; text-align: center; }
1282
+ .bwg-load-indicator .bwg-load-wave { display: flex; align-items: flex-end; gap: 15px; height: 18px; }
1283
+ .bwg-load-indicator .bwg-load-wave span { width: 20px; height: 20px; border-radius: 50%; background: linear-gradient(180deg, #8bb1ff 0%, #a88bff 100%); box-shadow: 0 1px 2px rgba(0,0,0,.1); animation: rg-bounceY 900ms ease-in-out infinite; }
1284
+ .bwg-load-indicator .bwg-load-wave span:nth-child(2) { animation-delay: 120ms; }
1285
+ .bwg-load-indicator .bwg-load-wave span:nth-child(3) { animation-delay: 240ms; }
1286
+ @keyframes rg-bounceY { 0%, 100% { transform: translateY(0); } 30% { transform: translateY(-8px); } 60% { transform: translateY(0); } }
1287
+ .bwg-load-indicator .bwg-load-title { font-weight: 700; letter-spacing: .06em; font-size: 16px; color: #3b3b3b; }
1288
+ .bwg-load-indicator .bwg-load-sub { font-size: 13px; color: #7a7a7a; }
1289
+