newtil-css 0.2.95 → 0.2.96
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.
- package/dist/style.css +62 -1358
- package/dist/utils.css +821 -2439
- package/package.json +1 -1
package/dist/style.css
CHANGED
|
@@ -12022,406 +12022,6 @@ Variables 커스터마이징:
|
|
|
12022
12022
|
}
|
|
12023
12023
|
}
|
|
12024
12024
|
/* ===== ACCESSIBILITY (접근성) ===== */
|
|
12025
|
-
/* ===== SCREEN READER UTILITIES ===== */
|
|
12026
|
-
/* CSS 속성명과 값을 그대로 유지하는 NewTil CSS 철학 */
|
|
12027
|
-
/* 스크린 리더 접근성: 시각적으로 숨기기, 스크린 리더 전용 텍스트 등 */
|
|
12028
|
-
/* ===== VISUALLY HIDDEN (시각적으로 숨기기) ===== */
|
|
12029
|
-
/* 스크린 리더에서는 읽히지만 시각적으로는 숨김 */
|
|
12030
|
-
.visually-hidden,
|
|
12031
|
-
.sr-only {
|
|
12032
|
-
position: absolute !important;
|
|
12033
|
-
width: 1px !important;
|
|
12034
|
-
height: 1px !important;
|
|
12035
|
-
padding: 0 !important;
|
|
12036
|
-
margin: -1px !important;
|
|
12037
|
-
overflow: hidden !important;
|
|
12038
|
-
clip: rect(0, 0, 0, 0) !important;
|
|
12039
|
-
white-space: nowrap !important;
|
|
12040
|
-
border: 0 !important;
|
|
12041
|
-
}
|
|
12042
|
-
/* 포커스될 때만 보이는 숨김 요소 */
|
|
12043
|
-
.visually-hidden-focusable,
|
|
12044
|
-
.sr-only-focusable {
|
|
12045
|
-
position: absolute !important;
|
|
12046
|
-
width: 1px !important;
|
|
12047
|
-
height: 1px !important;
|
|
12048
|
-
padding: 0 !important;
|
|
12049
|
-
margin: -1px !important;
|
|
12050
|
-
overflow: hidden !important;
|
|
12051
|
-
clip: rect(0, 0, 0, 0) !important;
|
|
12052
|
-
white-space: nowrap !important;
|
|
12053
|
-
border: 0 !important;
|
|
12054
|
-
}
|
|
12055
|
-
.visually-hidden-focusable:focus,
|
|
12056
|
-
.sr-only-focusable:focus {
|
|
12057
|
-
position: static !important;
|
|
12058
|
-
width: auto !important;
|
|
12059
|
-
height: auto !important;
|
|
12060
|
-
padding: var(--space-2) var(--space-4) !important;
|
|
12061
|
-
margin: 0 !important;
|
|
12062
|
-
overflow: visible !important;
|
|
12063
|
-
clip: auto !important;
|
|
12064
|
-
white-space: normal !important;
|
|
12065
|
-
background-color: var(--color-main-1) !important;
|
|
12066
|
-
color: var(--color-white) !important;
|
|
12067
|
-
border-radius: var(--radius-sm) !important;
|
|
12068
|
-
box-shadow: var(--shadow-lg) !important;
|
|
12069
|
-
z-index: var(--z-index-tooltip) !important;
|
|
12070
|
-
}
|
|
12071
|
-
/* ===== SCREEN READER ONLY TEXT (스크린 리더 전용 텍스트) ===== */
|
|
12072
|
-
/* 아이콘에 대한 설명 텍스트 */
|
|
12073
|
-
.icon-description,
|
|
12074
|
-
.sr-description {
|
|
12075
|
-
position: absolute !important;
|
|
12076
|
-
width: 1px !important;
|
|
12077
|
-
height: 1px !important;
|
|
12078
|
-
padding: 0 !important;
|
|
12079
|
-
margin: -1px !important;
|
|
12080
|
-
overflow: hidden !important;
|
|
12081
|
-
clip: rect(0, 0, 0, 0) !important;
|
|
12082
|
-
white-space: nowrap !important;
|
|
12083
|
-
border: 0 !important;
|
|
12084
|
-
}
|
|
12085
|
-
/* 링크에 대한 추가 설명 */
|
|
12086
|
-
.link-description,
|
|
12087
|
-
.sr-link-text {
|
|
12088
|
-
position: absolute !important;
|
|
12089
|
-
width: 1px !important;
|
|
12090
|
-
height: 1px !important;
|
|
12091
|
-
padding: 0 !important;
|
|
12092
|
-
margin: -1px !important;
|
|
12093
|
-
overflow: hidden !important;
|
|
12094
|
-
clip: rect(0, 0, 0, 0) !important;
|
|
12095
|
-
white-space: nowrap !important;
|
|
12096
|
-
border: 0 !important;
|
|
12097
|
-
}
|
|
12098
|
-
/* ===== ARIA ATTRIBUTES SUPPORT (ARIA 속성 지원) ===== */
|
|
12099
|
-
/* aria-hidden="true" 요소 스타일링 */
|
|
12100
|
-
[aria-hidden="true"] {
|
|
12101
|
-
display: none !important;
|
|
12102
|
-
}
|
|
12103
|
-
/* aria-expanded 상태 표시 */
|
|
12104
|
-
[aria-expanded="false"] .collapse-icon {
|
|
12105
|
-
transform: rotate(0deg) !important;
|
|
12106
|
-
transition: transform var(--duration-fast) var(--ease-out) !important;
|
|
12107
|
-
}
|
|
12108
|
-
[aria-expanded="true"] .collapse-icon {
|
|
12109
|
-
transform: rotate(180deg) !important;
|
|
12110
|
-
transition: transform var(--duration-fast) var(--ease-out) !important;
|
|
12111
|
-
}
|
|
12112
|
-
/* aria-disabled 상태 스타일링 */
|
|
12113
|
-
[aria-disabled="true"] {
|
|
12114
|
-
opacity: var(--opacity-50) !important;
|
|
12115
|
-
cursor: not-allowed !important;
|
|
12116
|
-
pointer-events: none !important;
|
|
12117
|
-
}
|
|
12118
|
-
/* aria-selected 상태 스타일링 */
|
|
12119
|
-
[aria-selected="true"] {
|
|
12120
|
-
background-color: var(--color-main-1) !important;
|
|
12121
|
-
color: var(--color-white) !important;
|
|
12122
|
-
}
|
|
12123
|
-
[aria-selected="false"] {
|
|
12124
|
-
background-color: transparent !important;
|
|
12125
|
-
color: var(--color-base-7) !important;
|
|
12126
|
-
}
|
|
12127
|
-
/* aria-current 상태 스타일링 */
|
|
12128
|
-
[aria-current="page"],
|
|
12129
|
-
[aria-current="step"],
|
|
12130
|
-
[aria-current="location"] {
|
|
12131
|
-
background-color: var(--color-accent-1) !important;
|
|
12132
|
-
color: var(--color-white) !important;
|
|
12133
|
-
font-weight: var(--font-weight-semibold) !important;
|
|
12134
|
-
}
|
|
12135
|
-
/* ===== SKIP LINKS (스킵 링크) ===== */
|
|
12136
|
-
/* 메인 컨텐츠로 건너뛰기 링크 */
|
|
12137
|
-
.skip-link {
|
|
12138
|
-
position: absolute !important;
|
|
12139
|
-
top: -40px !important;
|
|
12140
|
-
left: var(--space-4) !important;
|
|
12141
|
-
background: var(--color-base-9) !important;
|
|
12142
|
-
color: var(--color-white) !important;
|
|
12143
|
-
padding: var(--space-2) var(--space-4) !important;
|
|
12144
|
-
text-decoration: none !important;
|
|
12145
|
-
border-radius: var(--radius-sm) !important;
|
|
12146
|
-
z-index: var(--z-index-tooltip) !important;
|
|
12147
|
-
transition: top var(--duration-fast) var(--ease-out) !important;
|
|
12148
|
-
}
|
|
12149
|
-
.skip-link:focus {
|
|
12150
|
-
top: var(--space-4) !important;
|
|
12151
|
-
}
|
|
12152
|
-
/* 네비게이션 스킵 링크들 */
|
|
12153
|
-
.skip-links {
|
|
12154
|
-
position: absolute !important;
|
|
12155
|
-
top: 0 !important;
|
|
12156
|
-
left: 0 !important;
|
|
12157
|
-
z-index: var(--z-index-modal) !important;
|
|
12158
|
-
}
|
|
12159
|
-
.skip-links a {
|
|
12160
|
-
position: absolute !important;
|
|
12161
|
-
top: -40px !important;
|
|
12162
|
-
left: var(--space-4) !important;
|
|
12163
|
-
background: var(--color-base-9) !important;
|
|
12164
|
-
color: var(--color-white) !important;
|
|
12165
|
-
padding: var(--space-2) var(--space-4) !important;
|
|
12166
|
-
text-decoration: none !important;
|
|
12167
|
-
border-radius: var(--radius-sm) !important;
|
|
12168
|
-
transition: top var(--duration-fast) var(--ease-out) !important;
|
|
12169
|
-
margin-right: var(--space-2) !important;
|
|
12170
|
-
}
|
|
12171
|
-
.skip-links a:focus {
|
|
12172
|
-
top: var(--space-4) !important;
|
|
12173
|
-
}
|
|
12174
|
-
/* ===== LANDMARK REGIONS (랜드마크 영역) ===== */
|
|
12175
|
-
/* 메인 컨텐츠 영역 표시 */
|
|
12176
|
-
main[role="main"],
|
|
12177
|
-
[role="main"],
|
|
12178
|
-
.main-content {
|
|
12179
|
-
scroll-margin-top: var(
|
|
12180
|
-
--space-20
|
|
12181
|
-
) !important; /* 고정 헤더를 위한 스크롤 마진 */
|
|
12182
|
-
}
|
|
12183
|
-
/* 네비게이션 영역 */
|
|
12184
|
-
nav[role="navigation"],
|
|
12185
|
-
[role="navigation"],
|
|
12186
|
-
.navigation {
|
|
12187
|
-
position: relative !important;
|
|
12188
|
-
}
|
|
12189
|
-
/* 배너 영역 (헤더) */
|
|
12190
|
-
header[role="banner"],
|
|
12191
|
-
[role="banner"],
|
|
12192
|
-
.site-header {
|
|
12193
|
-
position: relative !important;
|
|
12194
|
-
}
|
|
12195
|
-
/* 콘텐츠 정보 영역 (푸터) */
|
|
12196
|
-
footer[role="contentinfo"],
|
|
12197
|
-
[role="contentinfo"],
|
|
12198
|
-
.site-footer {
|
|
12199
|
-
position: relative !important;
|
|
12200
|
-
}
|
|
12201
|
-
/* 보완 영역 (사이드바) */
|
|
12202
|
-
aside[role="complementary"],
|
|
12203
|
-
[role="complementary"],
|
|
12204
|
-
.sidebar {
|
|
12205
|
-
position: relative !important;
|
|
12206
|
-
}
|
|
12207
|
-
/* ===== FORM ACCESSIBILITY (폼 접근성) ===== */
|
|
12208
|
-
/* 필수 입력 필드 표시 */
|
|
12209
|
-
[aria-required="true"],
|
|
12210
|
-
[required] {
|
|
12211
|
-
position: relative !important;
|
|
12212
|
-
}
|
|
12213
|
-
[aria-required="true"]::after,
|
|
12214
|
-
[required]::after {
|
|
12215
|
-
content: " *" !important;
|
|
12216
|
-
color: var(--color-danger-1) !important;
|
|
12217
|
-
font-weight: var(--font-weight-bold) !important;
|
|
12218
|
-
}
|
|
12219
|
-
/* 에러 상태 표시 */
|
|
12220
|
-
[aria-invalid="true"] {
|
|
12221
|
-
border-color: var(--color-danger-1) !important;
|
|
12222
|
-
box-shadow: 0 0 0 2px rgba(var(--rgb-danger-1), 0.2) !important;
|
|
12223
|
-
}
|
|
12224
|
-
/* 에러 메시지 스타일링 */
|
|
12225
|
-
.error-message,
|
|
12226
|
-
[role="alert"],
|
|
12227
|
-
.alert-error {
|
|
12228
|
-
color: var(--color-danger-1) !important;
|
|
12229
|
-
background-color: rgba(var(--rgb-danger-1), 0.1) !important;
|
|
12230
|
-
border: 1px solid var(--color-danger-1) !important;
|
|
12231
|
-
border-radius: var(--radius-sm) !important;
|
|
12232
|
-
padding: var(--space-2) var(--space-3) !important;
|
|
12233
|
-
margin-top: var(--space-1) !important;
|
|
12234
|
-
font-size: var(--font-size-sm) !important;
|
|
12235
|
-
}
|
|
12236
|
-
/* 성공 메시지 스타일링 */
|
|
12237
|
-
.success-message,
|
|
12238
|
-
.alert-success {
|
|
12239
|
-
color: var(--color-success-1) !important;
|
|
12240
|
-
background-color: rgba(var(--rgb-success-1), 0.1) !important;
|
|
12241
|
-
border: 1px solid var(--color-success-1) !important;
|
|
12242
|
-
border-radius: var(--radius-sm) !important;
|
|
12243
|
-
padding: var(--space-2) var(--space-3) !important;
|
|
12244
|
-
margin-top: var(--space-1) !important;
|
|
12245
|
-
font-size: var(--font-size-sm) !important;
|
|
12246
|
-
}
|
|
12247
|
-
/* 경고 메시지 스타일링 */
|
|
12248
|
-
.warning-message,
|
|
12249
|
-
.alert-warning {
|
|
12250
|
-
color: var(--color-warning-1) !important;
|
|
12251
|
-
background-color: rgba(var(--rgb-warning-1), 0.1) !important;
|
|
12252
|
-
border: 1px solid var(--color-warning-1) !important;
|
|
12253
|
-
border-radius: var(--radius-sm) !important;
|
|
12254
|
-
padding: var(--space-2) var(--space-3) !important;
|
|
12255
|
-
margin-top: var(--space-1) !important;
|
|
12256
|
-
font-size: var(--font-size-sm) !important;
|
|
12257
|
-
}
|
|
12258
|
-
/* ===== KEYBOARD NAVIGATION (키보드 네비게이션) ===== */
|
|
12259
|
-
/* 키보드 포커스 표시자 */
|
|
12260
|
-
.keyboard-focusable {
|
|
12261
|
-
outline: 2px solid transparent !important;
|
|
12262
|
-
outline-offset: 2px !important;
|
|
12263
|
-
transition: outline-color var(--duration-fast) var(--ease-out) !important;
|
|
12264
|
-
}
|
|
12265
|
-
.keyboard-focusable:focus-visible {
|
|
12266
|
-
outline-color: var(--color-main-1) !important;
|
|
12267
|
-
}
|
|
12268
|
-
/* 탭 순서 건너뛰기 */
|
|
12269
|
-
.skip-tab-order {
|
|
12270
|
-
position: absolute !important;
|
|
12271
|
-
left: -10000px !important;
|
|
12272
|
-
top: auto !important;
|
|
12273
|
-
width: 1px !important;
|
|
12274
|
-
height: 1px !important;
|
|
12275
|
-
overflow: hidden !important;
|
|
12276
|
-
}
|
|
12277
|
-
/* ===== READING ORDER (읽기 순서) ===== */
|
|
12278
|
-
/* 스크린 리더 읽기 순서 조정 */
|
|
12279
|
-
.reading-order-1 {
|
|
12280
|
-
order: 1 !important;
|
|
12281
|
-
}
|
|
12282
|
-
.reading-order-2 {
|
|
12283
|
-
order: 2 !important;
|
|
12284
|
-
}
|
|
12285
|
-
.reading-order-3 {
|
|
12286
|
-
order: 3 !important;
|
|
12287
|
-
}
|
|
12288
|
-
.reading-order-4 {
|
|
12289
|
-
order: 4 !important;
|
|
12290
|
-
}
|
|
12291
|
-
.reading-order-5 {
|
|
12292
|
-
order: 5 !important;
|
|
12293
|
-
}
|
|
12294
|
-
/* ===== SCREEN READER ANNOUNCEMENTS (스크린 리더 안내) ===== */
|
|
12295
|
-
/* 라이브 영역 설정 */
|
|
12296
|
-
.live-region-polite,
|
|
12297
|
-
[aria-live="polite"] {
|
|
12298
|
-
position: relative !important;
|
|
12299
|
-
}
|
|
12300
|
-
.live-region-assertive,
|
|
12301
|
-
[aria-live="assertive"] {
|
|
12302
|
-
position: relative !important;
|
|
12303
|
-
}
|
|
12304
|
-
.live-region-off,
|
|
12305
|
-
[aria-live="off"] {
|
|
12306
|
-
position: relative !important;
|
|
12307
|
-
}
|
|
12308
|
-
/* 상태 안내 메시지 */
|
|
12309
|
-
.status-message {
|
|
12310
|
-
position: absolute !important;
|
|
12311
|
-
width: 1px !important;
|
|
12312
|
-
height: 1px !important;
|
|
12313
|
-
padding: 0 !important;
|
|
12314
|
-
margin: -1px !important;
|
|
12315
|
-
overflow: hidden !important;
|
|
12316
|
-
clip: rect(0, 0, 0, 0) !important;
|
|
12317
|
-
white-space: nowrap !important;
|
|
12318
|
-
border: 0 !important;
|
|
12319
|
-
}
|
|
12320
|
-
/* ===== TABLE ACCESSIBILITY (테이블 접근성) ===== */
|
|
12321
|
-
/* 테이블 캡션 스타일링 */
|
|
12322
|
-
.table-caption,
|
|
12323
|
-
caption {
|
|
12324
|
-
text-align: left !important;
|
|
12325
|
-
padding: var(--space-2) var(--space-4) !important;
|
|
12326
|
-
font-weight: var(--font-weight-semibold) !important;
|
|
12327
|
-
background-color: var(--color-base-1) !important;
|
|
12328
|
-
border-bottom: 1px solid var(--color-base-3) !important;
|
|
12329
|
-
}
|
|
12330
|
-
/* 테이블 헤더 강조 */
|
|
12331
|
-
.table-header,
|
|
12332
|
-
th {
|
|
12333
|
-
background-color: var(--color-base-2) !important;
|
|
12334
|
-
font-weight: var(--font-weight-semibold) !important;
|
|
12335
|
-
text-align: left !important;
|
|
12336
|
-
padding: var(--space-3) var(--space-4) !important;
|
|
12337
|
-
border-bottom: 2px solid var(--color-base-4) !important;
|
|
12338
|
-
}
|
|
12339
|
-
/* 데이터 셀 스타일링 */
|
|
12340
|
-
.table-cell,
|
|
12341
|
-
td {
|
|
12342
|
-
padding: var(--space-3) var(--space-4) !important;
|
|
12343
|
-
border-bottom: 1px solid var(--color-base-3) !important;
|
|
12344
|
-
vertical-align: top !important;
|
|
12345
|
-
}
|
|
12346
|
-
/* ===== RESPONSIVE ACCESSIBILITY ===== */
|
|
12347
|
-
/* 모바일에서 스크린 리더 최적화 */
|
|
12348
|
-
@media (max-width: 767px) {
|
|
12349
|
-
.skip-link {
|
|
12350
|
-
left: var(--space-2) !important;
|
|
12351
|
-
padding: var(--space-3) var(--space-4) !important;
|
|
12352
|
-
font-size: var(--font-size-base) !important;
|
|
12353
|
-
}
|
|
12354
|
-
|
|
12355
|
-
.visually-hidden-focusable:focus {
|
|
12356
|
-
padding: var(--space-3) var(--space-4) !important;
|
|
12357
|
-
font-size: var(--font-size-base) !important;
|
|
12358
|
-
}
|
|
12359
|
-
}
|
|
12360
|
-
/* 큰 화면에서 스킵 링크 위치 조정 */
|
|
12361
|
-
@media (min-width: 1024px) {
|
|
12362
|
-
.skip-link {
|
|
12363
|
-
left: var(--space-8) !important;
|
|
12364
|
-
}
|
|
12365
|
-
|
|
12366
|
-
.skip-links a {
|
|
12367
|
-
left: var(--space-8) !important;
|
|
12368
|
-
}
|
|
12369
|
-
}
|
|
12370
|
-
/* ===== MOTION SENSITIVITY (모션 민감도) ===== */
|
|
12371
|
-
/* 모션 감소 선호도 존중 */
|
|
12372
|
-
@media (prefers-reduced-motion: reduce) {
|
|
12373
|
-
.visually-hidden-focusable,
|
|
12374
|
-
.skip-link,
|
|
12375
|
-
.skip-links a,
|
|
12376
|
-
[aria-expanded] .collapse-icon {
|
|
12377
|
-
transition: none !important;
|
|
12378
|
-
animation: none !important;
|
|
12379
|
-
}
|
|
12380
|
-
}
|
|
12381
|
-
/* ===== UTILITY COMBINATIONS ===== */
|
|
12382
|
-
/* 접근 가능한 버튼 */
|
|
12383
|
-
.accessible-button {
|
|
12384
|
-
position: relative !important;
|
|
12385
|
-
display: inline-flex !important;
|
|
12386
|
-
align-items: center !important;
|
|
12387
|
-
justify-content: center !important;
|
|
12388
|
-
padding: var(--space-2) var(--space-4) !important;
|
|
12389
|
-
background-color: var(--color-main-1) !important;
|
|
12390
|
-
color: var(--color-white) !important;
|
|
12391
|
-
border: none !important;
|
|
12392
|
-
border-radius: var(--radius-sm) !important;
|
|
12393
|
-
cursor: pointer !important;
|
|
12394
|
-
outline: 2px solid transparent !important;
|
|
12395
|
-
outline-offset: 2px !important;
|
|
12396
|
-
transition: all var(--duration-fast) var(--ease-out) !important;
|
|
12397
|
-
}
|
|
12398
|
-
.accessible-button:focus-visible {
|
|
12399
|
-
outline-color: var(--color-accent-1) !important;
|
|
12400
|
-
}
|
|
12401
|
-
.accessible-button:disabled {
|
|
12402
|
-
opacity: var(--opacity-50) !important;
|
|
12403
|
-
cursor: not-allowed !important;
|
|
12404
|
-
pointer-events: none !important;
|
|
12405
|
-
}
|
|
12406
|
-
/* 접근 가능한 링크 */
|
|
12407
|
-
.accessible-link {
|
|
12408
|
-
color: var(--color-main-1) !important;
|
|
12409
|
-
text-decoration: underline !important;
|
|
12410
|
-
outline: 2px solid transparent !important;
|
|
12411
|
-
outline-offset: 2px !important;
|
|
12412
|
-
border-radius: var(--radius-xs) !important;
|
|
12413
|
-
transition: all var(--duration-fast) var(--ease-out) !important;
|
|
12414
|
-
}
|
|
12415
|
-
.accessible-link:hover {
|
|
12416
|
-
color: var(--color-main-2) !important;
|
|
12417
|
-
text-decoration-thickness: 2px !important;
|
|
12418
|
-
}
|
|
12419
|
-
.accessible-link:focus-visible {
|
|
12420
|
-
outline-color: var(--color-main-1) !important;
|
|
12421
|
-
background-color: rgba(var(--rgb-main-1), 0.1) !important;
|
|
12422
|
-
padding: 2px 4px !important;
|
|
12423
|
-
margin: -2px -4px !important;
|
|
12424
|
-
}
|
|
12425
12025
|
/* ===== FOCUS UTILITIES ===== */
|
|
12426
12026
|
/* CSS 속성명과 값을 그대로 유지하는 NewTil CSS 철학 */
|
|
12427
12027
|
/* 포커스 관리: outline, focus-visible, focus-within 등 */
|
|
@@ -12755,511 +12355,81 @@ td {
|
|
|
12755
12355
|
outline-width: 2px;
|
|
12756
12356
|
}
|
|
12757
12357
|
50% {
|
|
12758
|
-
outline-color: var(--color-main-2);
|
|
12759
|
-
outline-width: 3px;
|
|
12760
|
-
}
|
|
12761
|
-
}
|
|
12762
|
-
/* ===== FOCUS MANAGEMENT (포커스 관리) ===== */
|
|
12763
|
-
/* 자동 포커스 */
|
|
12764
|
-
.auto-focus {
|
|
12765
|
-
outline: 2px solid var(--color-main-1) !important;
|
|
12766
|
-
outline-offset: 2px !important;
|
|
12767
|
-
}
|
|
12768
|
-
/* 포커스 방지 */
|
|
12769
|
-
.no-focus {
|
|
12770
|
-
outline: none !important;
|
|
12771
|
-
-webkit-tap-highlight-color: transparent !important;
|
|
12772
|
-
}
|
|
12773
|
-
.no-focus:focus,
|
|
12774
|
-
.no-focus:focus-visible {
|
|
12775
|
-
outline: none !important;
|
|
12776
|
-
box-shadow: none !important;
|
|
12777
|
-
}
|
|
12778
|
-
/* 키보드 전용 포커스 */
|
|
12779
|
-
.keyboard-only-focus {
|
|
12780
|
-
outline: none !important;
|
|
12781
|
-
}
|
|
12782
|
-
.keyboard-only-focus:focus:not(:focus-visible) {
|
|
12783
|
-
outline: none !important;
|
|
12784
|
-
box-shadow: none !important;
|
|
12785
|
-
}
|
|
12786
|
-
.keyboard-only-focus:focus-visible {
|
|
12787
|
-
outline: 2px solid var(--color-main-1) !important;
|
|
12788
|
-
outline-offset: 2px !important;
|
|
12789
|
-
}
|
|
12790
|
-
/* ===== RESPONSIVE FOCUS ===== */
|
|
12791
|
-
/* 모바일 포커스 최적화 */
|
|
12792
|
-
@media (max-width: 767px) {
|
|
12793
|
-
.focus-indicator,
|
|
12794
|
-
.btn-focus,
|
|
12795
|
-
.link-focus,
|
|
12796
|
-
.input-focus {
|
|
12797
|
-
outline-width: 3px !important;
|
|
12798
|
-
outline-offset: 3px !important;
|
|
12799
|
-
}
|
|
12800
|
-
}
|
|
12801
|
-
/* 터치 디바이스 포커스 */
|
|
12802
|
-
@media (hover: none) and (pointer: coarse) {
|
|
12803
|
-
.focus-indicator:focus-visible,
|
|
12804
|
-
.btn-focus:focus-visible,
|
|
12805
|
-
.link-focus:focus-visible {
|
|
12806
|
-
outline-width: 3px !important;
|
|
12807
|
-
outline-offset: 3px !important;
|
|
12808
|
-
}
|
|
12809
|
-
}
|
|
12810
|
-
/* ===== MOTION SENSITIVITY (모션 민감도) ===== */
|
|
12811
|
-
@media (prefers-reduced-motion: reduce) {
|
|
12812
|
-
.focus-indicator,
|
|
12813
|
-
.btn-focus,
|
|
12814
|
-
.link-focus,
|
|
12815
|
-
.input-focus,
|
|
12816
|
-
.focus-glow,
|
|
12817
|
-
.focus-pulse {
|
|
12818
|
-
transition: none !important;
|
|
12819
|
-
animation: none !important;
|
|
12820
|
-
}
|
|
12821
|
-
}
|
|
12822
|
-
/* ===== HIGH CONTRAST MODE (고대비 모드) ===== */
|
|
12823
|
-
@media (prefers-contrast: high) {
|
|
12824
|
-
.focus-indicator:focus-visible,
|
|
12825
|
-
.btn-focus:focus-visible,
|
|
12826
|
-
.link-focus:focus-visible,
|
|
12827
|
-
.input-focus:focus {
|
|
12828
|
-
outline-width: 3px !important;
|
|
12829
|
-
outline-color: var(--color-base-10) !important;
|
|
12830
|
-
background-color: var(--color-yellow) !important;
|
|
12831
|
-
color: var(--color-base-10) !important;
|
|
12832
|
-
}
|
|
12833
|
-
}
|
|
12834
|
-
/* ===== HIGH CONTRAST UTILITIES ===== */
|
|
12835
|
-
/* CSS 속성명과 값을 그대로 유지하는 NewTil CSS 철학 */
|
|
12836
|
-
/* 고대비 접근성: 시각 장애인, 저시력자를 위한 고대비 스타일 */
|
|
12837
|
-
/* ===== HIGH CONTRAST DETECTION (고대비 모드 감지) ===== */
|
|
12838
|
-
/* 고대비 모드가 활성화된 경우에만 적용되는 스타일 */
|
|
12839
|
-
@media (prefers-contrast: high) {
|
|
12840
|
-
/* 기본 텍스트 대비 강화 */
|
|
12841
|
-
.text-high-contrast,
|
|
12842
|
-
.high-contrast-text {
|
|
12843
|
-
color: var(--color-black) !important;
|
|
12844
|
-
background-color: var(--color-white) !important;
|
|
12845
|
-
border: 2px solid var(--color-black) !important;
|
|
12846
|
-
}
|
|
12847
|
-
|
|
12848
|
-
/* 링크 대비 강화 */
|
|
12849
|
-
.link-high-contrast,
|
|
12850
|
-
.high-contrast-link {
|
|
12851
|
-
color: var(--color-blue) !important;
|
|
12852
|
-
text-decoration: underline !important;
|
|
12853
|
-
text-decoration-thickness: 2px !important;
|
|
12854
|
-
background-color: var(--color-white) !important;
|
|
12855
|
-
}
|
|
12856
|
-
|
|
12857
|
-
.link-high-contrast:hover,
|
|
12858
|
-
.high-contrast-link:hover {
|
|
12859
|
-
color: var(--color-white) !important;
|
|
12860
|
-
background-color: var(--color-blue) !important;
|
|
12861
|
-
outline: 2px solid var(--color-black) !important;
|
|
12862
|
-
}
|
|
12863
|
-
|
|
12864
|
-
/* 버튼 대비 강화 */
|
|
12865
|
-
.btn-high-contrast,
|
|
12866
|
-
.high-contrast-btn {
|
|
12867
|
-
color: var(--color-white) !important;
|
|
12868
|
-
background-color: var(--color-black) !important;
|
|
12869
|
-
border: 3px solid var(--color-black) !important;
|
|
12870
|
-
}
|
|
12871
|
-
|
|
12872
|
-
.btn-high-contrast:hover,
|
|
12873
|
-
.high-contrast-btn:hover {
|
|
12874
|
-
color: var(--color-black) !important;
|
|
12875
|
-
background-color: var(--color-yellow) !important;
|
|
12876
|
-
border-color: var(--color-black) !important;
|
|
12877
|
-
}
|
|
12878
|
-
}
|
|
12879
|
-
/* ===== MANUAL HIGH CONTRAST CLASSES (수동 고대비 클래스) ===== */
|
|
12880
|
-
/* 고대비 모드와 관계없이 항상 적용되는 고대비 스타일 */
|
|
12881
|
-
/* 흑백 고대비 */
|
|
12882
|
-
.contrast-black-white {
|
|
12883
|
-
color: var(--color-black) !important;
|
|
12884
|
-
background-color: var(--color-white) !important;
|
|
12885
|
-
border: 2px solid var(--color-black) !important;
|
|
12886
|
-
}
|
|
12887
|
-
.contrast-white-black {
|
|
12888
|
-
color: var(--color-white) !important;
|
|
12889
|
-
background-color: var(--color-black) !important;
|
|
12890
|
-
border: 2px solid var(--color-white) !important;
|
|
12891
|
-
}
|
|
12892
|
-
/* 황색 강조 고대비 */
|
|
12893
|
-
.contrast-black-yellow {
|
|
12894
|
-
color: var(--color-black) !important;
|
|
12895
|
-
background-color: var(--color-yellow) !important;
|
|
12896
|
-
border: 2px solid var(--color-black) !important;
|
|
12897
|
-
}
|
|
12898
|
-
.contrast-yellow-black {
|
|
12899
|
-
color: var(--color-yellow) !important;
|
|
12900
|
-
background-color: var(--color-black) !important;
|
|
12901
|
-
border: 2px solid var(--color-yellow) !important;
|
|
12902
|
-
}
|
|
12903
|
-
/* 파란색 강조 고대비 */
|
|
12904
|
-
.contrast-white-blue {
|
|
12905
|
-
color: var(--color-white) !important;
|
|
12906
|
-
background-color: var(--color-blue) !important;
|
|
12907
|
-
border: 2px solid var(--color-white) !important;
|
|
12908
|
-
}
|
|
12909
|
-
.contrast-blue-white {
|
|
12910
|
-
color: var(--color-blue) !important;
|
|
12911
|
-
background-color: var(--color-white) !important;
|
|
12912
|
-
border: 2px solid var(--color-blue) !important;
|
|
12913
|
-
}
|
|
12914
|
-
/* ===== TEXT CONTRAST (텍스트 대비) ===== */
|
|
12915
|
-
/* 텍스트 크기 확대 + 고대비 */
|
|
12916
|
-
.text-large-contrast {
|
|
12917
|
-
font-size: 1.25rem !important;
|
|
12918
|
-
font-weight: var(--font-weight-bold) !important;
|
|
12919
|
-
color: var(--color-black) !important;
|
|
12920
|
-
background-color: var(--color-white) !important;
|
|
12921
|
-
padding: var(--space-1) var(--space-2) !important;
|
|
12922
|
-
border-radius: var(--radius-xs) !important;
|
|
12923
|
-
}
|
|
12924
|
-
/* 헤딩 고대비 */
|
|
12925
|
-
.heading-high-contrast {
|
|
12926
|
-
color: var(--color-black) !important;
|
|
12927
|
-
background-color: var(--color-yellow) !important;
|
|
12928
|
-
padding: var(--space-2) var(--space-4) !important;
|
|
12929
|
-
border: 3px solid var(--color-black) !important;
|
|
12930
|
-
border-radius: var(--radius-sm) !important;
|
|
12931
|
-
font-weight: var(--font-weight-black) !important;
|
|
12932
|
-
}
|
|
12933
|
-
/* 중요 텍스트 강조 */
|
|
12934
|
-
.text-emphasis-high {
|
|
12935
|
-
color: var(--color-white) !important;
|
|
12936
|
-
background-color: var(--color-red) !important;
|
|
12937
|
-
padding: var(--space-1) var(--space-2) !important;
|
|
12938
|
-
border: 2px solid var(--color-black) !important;
|
|
12939
|
-
border-radius: var(--radius-xs) !important;
|
|
12940
|
-
font-weight: var(--font-weight-bold) !important;
|
|
12941
|
-
}
|
|
12942
|
-
/* ===== BUTTON CONTRAST (버튼 대비) ===== */
|
|
12943
|
-
/* 주요 버튼 고대비 */
|
|
12944
|
-
.btn-primary-contrast {
|
|
12945
|
-
color: var(--color-white) !important;
|
|
12946
|
-
background-color: var(--color-black) !important;
|
|
12947
|
-
border: 3px solid var(--color-black) !important;
|
|
12948
|
-
padding: var(--space-3) var(--space-6) !important;
|
|
12949
|
-
font-weight: var(--font-weight-bold) !important;
|
|
12950
|
-
font-size: 1.125rem !important;
|
|
12951
|
-
border-radius: var(--radius-sm) !important;
|
|
12952
|
-
transition: all var(--duration-fast) var(--ease-out) !important;
|
|
12953
|
-
}
|
|
12954
|
-
.btn-primary-contrast:hover {
|
|
12955
|
-
color: var(--color-black) !important;
|
|
12956
|
-
background-color: var(--color-yellow) !important;
|
|
12957
|
-
border-color: var(--color-black) !important;
|
|
12958
|
-
transform: scale(1.05) !important;
|
|
12959
|
-
}
|
|
12960
|
-
.btn-primary-contrast:focus-visible {
|
|
12961
|
-
outline: 4px solid var(--color-blue) !important;
|
|
12962
|
-
outline-offset: 2px !important;
|
|
12963
|
-
}
|
|
12964
|
-
/* 보조 버튼 고대비 */
|
|
12965
|
-
.btn-secondary-contrast {
|
|
12966
|
-
color: var(--color-black) !important;
|
|
12967
|
-
background-color: var(--color-white) !important;
|
|
12968
|
-
border: 3px solid var(--color-black) !important;
|
|
12969
|
-
padding: var(--space-3) var(--space-6) !important;
|
|
12970
|
-
font-weight: var(--font-weight-bold) !important;
|
|
12971
|
-
font-size: 1.125rem !important;
|
|
12972
|
-
border-radius: var(--radius-sm) !important;
|
|
12973
|
-
transition: all var(--duration-fast) var(--ease-out) !important;
|
|
12974
|
-
}
|
|
12975
|
-
.btn-secondary-contrast:hover {
|
|
12976
|
-
color: var(--color-white) !important;
|
|
12977
|
-
background-color: var(--color-black) !important;
|
|
12978
|
-
border-color: var(--color-black) !important;
|
|
12979
|
-
}
|
|
12980
|
-
.btn-secondary-contrast:focus-visible {
|
|
12981
|
-
outline: 4px solid var(--color-blue) !important;
|
|
12982
|
-
outline-offset: 2px !important;
|
|
12983
|
-
}
|
|
12984
|
-
/* 위험 버튼 고대비 */
|
|
12985
|
-
.btn-danger-contrast {
|
|
12986
|
-
color: var(--color-white) !important;
|
|
12987
|
-
background-color: var(--color-red) !important;
|
|
12988
|
-
border: 3px solid var(--color-black) !important;
|
|
12989
|
-
padding: var(--space-3) var(--space-6) !important;
|
|
12990
|
-
font-weight: var(--font-weight-bold) !important;
|
|
12991
|
-
font-size: 1.125rem !important;
|
|
12992
|
-
border-radius: var(--radius-sm) !important;
|
|
12993
|
-
transition: all var(--duration-fast) var(--ease-out) !important;
|
|
12994
|
-
}
|
|
12995
|
-
.btn-danger-contrast:hover {
|
|
12996
|
-
color: var(--color-red) !important;
|
|
12997
|
-
background-color: var(--color-white) !important;
|
|
12998
|
-
border-color: var(--color-red) !important;
|
|
12999
|
-
}
|
|
13000
|
-
.btn-danger-contrast:focus-visible {
|
|
13001
|
-
outline: 4px solid var(--color-yellow) !important;
|
|
13002
|
-
outline-offset: 2px !important;
|
|
13003
|
-
}
|
|
13004
|
-
/* ===== LINK CONTRAST (링크 대비) ===== */
|
|
13005
|
-
/* 기본 링크 고대비 */
|
|
13006
|
-
.link-contrast {
|
|
13007
|
-
color: var(--color-blue) !important;
|
|
13008
|
-
text-decoration: underline !important;
|
|
13009
|
-
text-decoration-thickness: 2px !important;
|
|
13010
|
-
text-underline-offset: 4px !important;
|
|
13011
|
-
font-weight: var(--font-weight-semibold) !important;
|
|
13012
|
-
background-color: transparent !important;
|
|
13013
|
-
border-radius: var(--radius-xs) !important;
|
|
13014
|
-
transition: all var(--duration-fast) var(--ease-out) !important;
|
|
13015
|
-
}
|
|
13016
|
-
.link-contrast:hover {
|
|
13017
|
-
color: var(--color-white) !important;
|
|
13018
|
-
background-color: var(--color-blue) !important;
|
|
13019
|
-
padding: 2px 4px !important;
|
|
13020
|
-
margin: -2px -4px !important;
|
|
13021
|
-
text-decoration: none !important;
|
|
13022
|
-
}
|
|
13023
|
-
.link-contrast:focus-visible {
|
|
13024
|
-
outline: 3px solid var(--color-yellow) !important;
|
|
13025
|
-
outline-offset: 2px !important;
|
|
13026
|
-
background-color: var(--color-blue) !important;
|
|
13027
|
-
color: var(--color-white) !important;
|
|
13028
|
-
}
|
|
13029
|
-
/* 방문한 링크 고대비 */
|
|
13030
|
-
.link-contrast:visited {
|
|
13031
|
-
color: var(--color-purple) !important;
|
|
13032
|
-
}
|
|
13033
|
-
.link-contrast:visited:hover {
|
|
13034
|
-
color: var(--color-white) !important;
|
|
13035
|
-
background-color: var(--color-purple) !important;
|
|
13036
|
-
}
|
|
13037
|
-
/* ===== FORM CONTRAST (폼 대비) ===== */
|
|
13038
|
-
/* 입력 필드 고대비 */
|
|
13039
|
-
.input-contrast {
|
|
13040
|
-
color: var(--color-black) !important;
|
|
13041
|
-
background-color: var(--color-white) !important;
|
|
13042
|
-
border: 3px solid var(--color-black) !important;
|
|
13043
|
-
padding: var(--space-3) var(--space-4) !important;
|
|
13044
|
-
font-size: 1.125rem !important;
|
|
13045
|
-
font-weight: var(--font-weight-medium) !important;
|
|
13046
|
-
border-radius: var(--radius-sm) !important;
|
|
13047
|
-
transition: all var(--duration-fast) var(--ease-out) !important;
|
|
13048
|
-
}
|
|
13049
|
-
.input-contrast:focus {
|
|
13050
|
-
outline: 3px solid var(--color-blue) !important;
|
|
13051
|
-
outline-offset: 2px !important;
|
|
13052
|
-
border-color: var(--color-blue) !important;
|
|
13053
|
-
background-color: var(--color-yellow) !important;
|
|
13054
|
-
}
|
|
13055
|
-
.input-contrast::placeholder {
|
|
13056
|
-
color: var(--color-base-6) !important;
|
|
13057
|
-
font-weight: var(--font-weight-normal) !important;
|
|
13058
|
-
}
|
|
13059
|
-
/* 라벨 고대비 */
|
|
13060
|
-
.label-contrast {
|
|
13061
|
-
color: var(--color-black) !important;
|
|
13062
|
-
font-weight: var(--font-weight-bold) !important;
|
|
13063
|
-
font-size: 1.125rem !important;
|
|
13064
|
-
background-color: var(--color-yellow) !important;
|
|
13065
|
-
padding: var(--space-1) var(--space-2) !important;
|
|
13066
|
-
border-radius: var(--radius-xs) !important;
|
|
13067
|
-
border: 2px solid var(--color-black) !important;
|
|
13068
|
-
}
|
|
13069
|
-
/* 체크박스/라디오 고대비 */
|
|
13070
|
-
.checkbox-contrast,
|
|
13071
|
-
.radio-contrast {
|
|
13072
|
-
width: 1.5rem !important;
|
|
13073
|
-
height: 1.5rem !important;
|
|
13074
|
-
border: 3px solid var(--color-black) !important;
|
|
13075
|
-
background-color: var(--color-white) !important;
|
|
13076
|
-
cursor: pointer !important;
|
|
13077
|
-
}
|
|
13078
|
-
.checkbox-contrast:checked,
|
|
13079
|
-
.radio-contrast:checked {
|
|
13080
|
-
background-color: var(--color-black) !important;
|
|
13081
|
-
border-color: var(--color-black) !important;
|
|
13082
|
-
}
|
|
13083
|
-
.checkbox-contrast:focus-visible,
|
|
13084
|
-
.radio-contrast:focus-visible {
|
|
13085
|
-
outline: 3px solid var(--color-blue) !important;
|
|
13086
|
-
outline-offset: 2px !important;
|
|
13087
|
-
}
|
|
13088
|
-
/* ===== TABLE CONTRAST (테이블 대비) ===== */
|
|
13089
|
-
/* 테이블 헤더 고대비 */
|
|
13090
|
-
.table-header-contrast {
|
|
13091
|
-
color: var(--color-white) !important;
|
|
13092
|
-
background-color: var(--color-black) !important;
|
|
13093
|
-
border: 2px solid var(--color-black) !important;
|
|
13094
|
-
padding: var(--space-3) var(--space-4) !important;
|
|
13095
|
-
font-weight: var(--font-weight-bold) !important;
|
|
13096
|
-
font-size: 1.125rem !important;
|
|
13097
|
-
}
|
|
13098
|
-
/* 테이블 셀 고대비 */
|
|
13099
|
-
.table-cell-contrast {
|
|
13100
|
-
color: var(--color-black) !important;
|
|
13101
|
-
background-color: var(--color-white) !important;
|
|
13102
|
-
border: 2px solid var(--color-black) !important;
|
|
13103
|
-
padding: var(--space-3) var(--space-4) !important;
|
|
13104
|
-
font-size: 1rem !important;
|
|
13105
|
-
}
|
|
13106
|
-
/* 교대로 나타나는 행 고대비 */
|
|
13107
|
-
.table-row-contrast:nth-child(even) {
|
|
13108
|
-
background-color: var(--color-base-1) !important;
|
|
13109
|
-
}
|
|
13110
|
-
.table-row-contrast:nth-child(odd) {
|
|
13111
|
-
background-color: var(--color-white) !important;
|
|
13112
|
-
}
|
|
13113
|
-
/* ===== NAVIGATION CONTRAST (네비게이션 대비) ===== */
|
|
13114
|
-
/* 네비게이션 메뉴 고대비 */
|
|
13115
|
-
.nav-contrast {
|
|
13116
|
-
background-color: var(--color-black) !important;
|
|
13117
|
-
border: 3px solid var(--color-white) !important;
|
|
13118
|
-
padding: var(--space-4) !important;
|
|
13119
|
-
}
|
|
13120
|
-
.nav-contrast a {
|
|
13121
|
-
color: var(--color-white) !important;
|
|
13122
|
-
text-decoration: none !important;
|
|
13123
|
-
font-weight: var(--font-weight-bold) !important;
|
|
13124
|
-
font-size: 1.125rem !important;
|
|
13125
|
-
padding: var(--space-2) var(--space-4) !important;
|
|
13126
|
-
border-radius: var(--radius-sm) !important;
|
|
13127
|
-
border: 2px solid transparent !important;
|
|
13128
|
-
transition: all var(--duration-fast) var(--ease-out) !important;
|
|
13129
|
-
}
|
|
13130
|
-
.nav-contrast a:hover {
|
|
13131
|
-
color: var(--color-black) !important;
|
|
13132
|
-
background-color: var(--color-yellow) !important;
|
|
13133
|
-
border-color: var(--color-black) !important;
|
|
13134
|
-
}
|
|
13135
|
-
.nav-contrast a:focus-visible {
|
|
13136
|
-
outline: 3px solid var(--color-blue) !important;
|
|
13137
|
-
outline-offset: 2px !important;
|
|
13138
|
-
}
|
|
13139
|
-
.nav-contrast a[aria-current="page"] {
|
|
13140
|
-
color: var(--color-black) !important;
|
|
13141
|
-
background-color: var(--color-white) !important;
|
|
13142
|
-
border-color: var(--color-black) !important;
|
|
13143
|
-
}
|
|
13144
|
-
/* ===== CARD CONTRAST (카드 대비) ===== */
|
|
13145
|
-
/* 카드 고대비 */
|
|
13146
|
-
.card-contrast {
|
|
13147
|
-
color: var(--color-black) !important;
|
|
13148
|
-
background-color: var(--color-white) !important;
|
|
13149
|
-
border: 4px solid var(--color-black) !important;
|
|
13150
|
-
border-radius: var(--radius-md) !important;
|
|
13151
|
-
padding: var(--space-6) !important;
|
|
13152
|
-
box-shadow: 4px 4px 0 var(--color-black) !important;
|
|
12358
|
+
outline-color: var(--color-main-2);
|
|
12359
|
+
outline-width: 3px;
|
|
12360
|
+
}
|
|
13153
12361
|
}
|
|
13154
|
-
|
|
13155
|
-
|
|
13156
|
-
|
|
12362
|
+
/* ===== FOCUS MANAGEMENT (포커스 관리) ===== */
|
|
12363
|
+
/* 자동 포커스 */
|
|
12364
|
+
.auto-focus {
|
|
12365
|
+
outline: 2px solid var(--color-main-1) !important;
|
|
12366
|
+
outline-offset: 2px !important;
|
|
13157
12367
|
}
|
|
13158
|
-
/*
|
|
13159
|
-
.
|
|
13160
|
-
|
|
13161
|
-
|
|
13162
|
-
padding: var(--space-4) var(--space-6) !important;
|
|
13163
|
-
margin: calc(-1 * var(--space-6)) calc(-1 * var(--space-6))
|
|
13164
|
-
var(--space-4) calc(-1 * var(--space-6)) !important;
|
|
13165
|
-
border-radius: var(--radius-md) var(--radius-md) 0 0 !important;
|
|
13166
|
-
font-weight: var(--font-weight-bold) !important;
|
|
13167
|
-
font-size: 1.25rem !important;
|
|
12368
|
+
/* 포커스 방지 */
|
|
12369
|
+
.no-focus {
|
|
12370
|
+
outline: none !important;
|
|
12371
|
+
-webkit-tap-highlight-color: transparent !important;
|
|
13168
12372
|
}
|
|
13169
|
-
|
|
13170
|
-
|
|
13171
|
-
|
|
13172
|
-
|
|
13173
|
-
background-color: var(--color-green) !important;
|
|
13174
|
-
border: 3px solid var(--color-black) !important;
|
|
13175
|
-
padding: var(--space-4) var(--space-6) !important;
|
|
13176
|
-
border-radius: var(--radius-md) !important;
|
|
13177
|
-
font-weight: var(--font-weight-bold) !important;
|
|
13178
|
-
font-size: 1.125rem !important;
|
|
12373
|
+
.no-focus:focus,
|
|
12374
|
+
.no-focus:focus-visible {
|
|
12375
|
+
outline: none !important;
|
|
12376
|
+
box-shadow: none !important;
|
|
13179
12377
|
}
|
|
13180
|
-
/*
|
|
13181
|
-
.
|
|
13182
|
-
|
|
13183
|
-
background-color: var(--color-yellow) !important;
|
|
13184
|
-
border: 3px solid var(--color-black) !important;
|
|
13185
|
-
padding: var(--space-4) var(--space-6) !important;
|
|
13186
|
-
border-radius: var(--radius-md) !important;
|
|
13187
|
-
font-weight: var(--font-weight-bold) !important;
|
|
13188
|
-
font-size: 1.125rem !important;
|
|
12378
|
+
/* 키보드 전용 포커스 */
|
|
12379
|
+
.keyboard-only-focus {
|
|
12380
|
+
outline: none !important;
|
|
13189
12381
|
}
|
|
13190
|
-
|
|
13191
|
-
|
|
13192
|
-
|
|
13193
|
-
background-color: var(--color-red) !important;
|
|
13194
|
-
border: 3px solid var(--color-black) !important;
|
|
13195
|
-
padding: var(--space-4) var(--space-6) !important;
|
|
13196
|
-
border-radius: var(--radius-md) !important;
|
|
13197
|
-
font-weight: var(--font-weight-bold) !important;
|
|
13198
|
-
font-size: 1.125rem !important;
|
|
12382
|
+
.keyboard-only-focus:focus:not(:focus-visible) {
|
|
12383
|
+
outline: none !important;
|
|
12384
|
+
box-shadow: none !important;
|
|
13199
12385
|
}
|
|
13200
|
-
|
|
13201
|
-
|
|
13202
|
-
|
|
13203
|
-
background-color: var(--color-blue) !important;
|
|
13204
|
-
border: 3px solid var(--color-black) !important;
|
|
13205
|
-
padding: var(--space-4) var(--space-6) !important;
|
|
13206
|
-
border-radius: var(--radius-md) !important;
|
|
13207
|
-
font-weight: var(--font-weight-bold) !important;
|
|
13208
|
-
font-size: 1.125rem !important;
|
|
12386
|
+
.keyboard-only-focus:focus-visible {
|
|
12387
|
+
outline: 2px solid var(--color-main-1) !important;
|
|
12388
|
+
outline-offset: 2px !important;
|
|
13209
12389
|
}
|
|
13210
|
-
/* ===== RESPONSIVE
|
|
13211
|
-
/*
|
|
12390
|
+
/* ===== RESPONSIVE FOCUS ===== */
|
|
12391
|
+
/* 모바일 포커스 최적화 */
|
|
13212
12392
|
@media (max-width: 767px) {
|
|
13213
|
-
.
|
|
13214
|
-
.btn-
|
|
13215
|
-
.
|
|
13216
|
-
|
|
13217
|
-
|
|
13218
|
-
|
|
13219
|
-
}
|
|
13220
|
-
|
|
13221
|
-
.input-contrast {
|
|
13222
|
-
font-size: 1.25rem !important;
|
|
13223
|
-
padding: var(--space-4) var(--space-5) !important;
|
|
13224
|
-
border-width: 4px !important;
|
|
13225
|
-
}
|
|
13226
|
-
|
|
13227
|
-
.text-large-contrast {
|
|
13228
|
-
font-size: 1.5rem !important;
|
|
12393
|
+
.focus-indicator,
|
|
12394
|
+
.btn-focus,
|
|
12395
|
+
.link-focus,
|
|
12396
|
+
.input-focus {
|
|
12397
|
+
outline-width: 3px !important;
|
|
12398
|
+
outline-offset: 3px !important;
|
|
13229
12399
|
}
|
|
13230
12400
|
}
|
|
13231
|
-
/*
|
|
13232
|
-
@media (
|
|
13233
|
-
.
|
|
13234
|
-
|
|
13235
|
-
|
|
13236
|
-
|
|
13237
|
-
|
|
13238
|
-
.card-contrast {
|
|
13239
|
-
padding: var(--space-8) !important;
|
|
13240
|
-
border-width: 5px !important;
|
|
13241
|
-
box-shadow: 6px 6px 0 var(--color-black) !important;
|
|
12401
|
+
/* 터치 디바이스 포커스 */
|
|
12402
|
+
@media (hover: none) and (pointer: coarse) {
|
|
12403
|
+
.focus-indicator:focus-visible,
|
|
12404
|
+
.btn-focus:focus-visible,
|
|
12405
|
+
.link-focus:focus-visible {
|
|
12406
|
+
outline-width: 3px !important;
|
|
12407
|
+
outline-offset: 3px !important;
|
|
13242
12408
|
}
|
|
13243
12409
|
}
|
|
13244
|
-
/* =====
|
|
13245
|
-
|
|
13246
|
-
.
|
|
13247
|
-
|
|
13248
|
-
|
|
13249
|
-
|
|
13250
|
-
|
|
13251
|
-
|
|
13252
|
-
|
|
13253
|
-
|
|
12410
|
+
/* ===== MOTION SENSITIVITY (모션 민감도) ===== */
|
|
12411
|
+
@media (prefers-reduced-motion: reduce) {
|
|
12412
|
+
.focus-indicator,
|
|
12413
|
+
.btn-focus,
|
|
12414
|
+
.link-focus,
|
|
12415
|
+
.input-focus,
|
|
12416
|
+
.focus-glow,
|
|
12417
|
+
.focus-pulse {
|
|
12418
|
+
transition: none !important;
|
|
12419
|
+
animation: none !important;
|
|
12420
|
+
}
|
|
13254
12421
|
}
|
|
13255
|
-
/* 고대비
|
|
13256
|
-
|
|
13257
|
-
|
|
13258
|
-
|
|
13259
|
-
|
|
13260
|
-
|
|
13261
|
-
|
|
13262
|
-
|
|
12422
|
+
/* ===== HIGH CONTRAST MODE (고대비 모드) ===== */
|
|
12423
|
+
@media (prefers-contrast: high) {
|
|
12424
|
+
.focus-indicator:focus-visible,
|
|
12425
|
+
.btn-focus:focus-visible,
|
|
12426
|
+
.link-focus:focus-visible,
|
|
12427
|
+
.input-focus:focus {
|
|
12428
|
+
outline-width: 3px !important;
|
|
12429
|
+
outline-color: var(--color-base-10) !important;
|
|
12430
|
+
background-color: var(--color-yellow) !important;
|
|
12431
|
+
color: var(--color-base-10) !important;
|
|
12432
|
+
}
|
|
13263
12433
|
}
|
|
13264
12434
|
/* ===== PRINT SUPPORT (프린트 지원) ===== */
|
|
13265
12435
|
/* ===== PRINT UTILITIES ===== */
|
|
@@ -13883,472 +13053,6 @@ td {
|
|
|
13883
13053
|
margin-bottom: 2pt !important;
|
|
13884
13054
|
}
|
|
13885
13055
|
}
|
|
13886
|
-
/* ===== BROWSER COMPATIBILITY (브라우저 호환성) ===== */
|
|
13887
|
-
/* ===== BROWSER COMPATIBILITY UTILITIES ===== */
|
|
13888
|
-
/* CSS 속성명과 값을 그대로 유지하는 NewTil CSS 철학 */
|
|
13889
|
-
/* 브라우저 호환성: vendor prefixes, feature detection, fallbacks 등 */
|
|
13890
|
-
/* ===== VENDOR PREFIXES (벤더 프리픽스) ===== */
|
|
13891
|
-
/* Transform 호환성 */
|
|
13892
|
-
.transform-compat {
|
|
13893
|
-
-webkit-transform: var(--transform, none) !important;
|
|
13894
|
-
-moz-transform: var(--transform, none) !important;
|
|
13895
|
-
-ms-transform: var(--transform, none) !important;
|
|
13896
|
-
-o-transform: var(--transform, none) !important;
|
|
13897
|
-
transform: var(--transform, none) !important;
|
|
13898
|
-
}
|
|
13899
|
-
/* Transition 호환성 */
|
|
13900
|
-
.transition-compat {
|
|
13901
|
-
-webkit-transition: var(--transition, all 0.3s ease) !important;
|
|
13902
|
-
-moz-transition: var(--transition, all 0.3s ease) !important;
|
|
13903
|
-
-ms-transition: var(--transition, all 0.3s ease) !important;
|
|
13904
|
-
-o-transition: var(--transition, all 0.3s ease) !important;
|
|
13905
|
-
transition: var(--transition, all 0.3s ease) !important;
|
|
13906
|
-
}
|
|
13907
|
-
/* Animation 호환성 */
|
|
13908
|
-
.animation-compat {
|
|
13909
|
-
-webkit-animation: var(--animation, none) !important;
|
|
13910
|
-
-moz-animation: var(--animation, none) !important;
|
|
13911
|
-
-ms-animation: var(--animation, none) !important;
|
|
13912
|
-
-o-animation: var(--animation, none) !important;
|
|
13913
|
-
animation: var(--animation, none) !important;
|
|
13914
|
-
}
|
|
13915
|
-
/* Box Shadow 호환성 */
|
|
13916
|
-
.box-shadow-compat {
|
|
13917
|
-
-webkit-box-shadow: var(--shadow, none) !important;
|
|
13918
|
-
-moz-box-shadow: var(--shadow, none) !important;
|
|
13919
|
-
box-shadow: var(--shadow, none) !important;
|
|
13920
|
-
}
|
|
13921
|
-
/* Border Radius 호환성 */
|
|
13922
|
-
.border-radius-compat {
|
|
13923
|
-
-webkit-border-radius: var(--radius, 0) !important;
|
|
13924
|
-
-moz-border-radius: var(--radius, 0) !important;
|
|
13925
|
-
border-radius: var(--radius, 0) !important;
|
|
13926
|
-
}
|
|
13927
|
-
/* Linear Gradient 호환성 */
|
|
13928
|
-
.linear-gradient-compat {
|
|
13929
|
-
background: var(--gradient-fallback, #ffffff) !important; /* 폴백 색상 */
|
|
13930
|
-
background: -webkit-linear-gradient(
|
|
13931
|
-
var(--gradient-direction, top),
|
|
13932
|
-
var(--gradient-stops)
|
|
13933
|
-
) !important;
|
|
13934
|
-
background: -moz-linear-gradient(
|
|
13935
|
-
var(--gradient-direction, top),
|
|
13936
|
-
var(--gradient-stops)
|
|
13937
|
-
) !important;
|
|
13938
|
-
background: -ms-linear-gradient(
|
|
13939
|
-
var(--gradient-direction, top),
|
|
13940
|
-
var(--gradient-stops)
|
|
13941
|
-
) !important;
|
|
13942
|
-
background: -o-linear-gradient(
|
|
13943
|
-
var(--gradient-direction, top),
|
|
13944
|
-
var(--gradient-stops)
|
|
13945
|
-
) !important;
|
|
13946
|
-
background: linear-gradient(
|
|
13947
|
-
var(--gradient-direction, to bottom),
|
|
13948
|
-
var(--gradient-stops)
|
|
13949
|
-
) !important;
|
|
13950
|
-
}
|
|
13951
|
-
/* ===== FLEXBOX COMPATIBILITY (플렉스박스 호환성) ===== */
|
|
13952
|
-
/* 구 버전 Flexbox 지원 */
|
|
13953
|
-
.flex-compat {
|
|
13954
|
-
display: -webkit-box !important; /* iOS 6-, Safari 3.1-6 */
|
|
13955
|
-
display: -moz-box !important; /* Firefox 19- */
|
|
13956
|
-
display: -ms-flexbox !important; /* IE 10 */
|
|
13957
|
-
display: -webkit-flex !important; /* Chrome */
|
|
13958
|
-
display: flex !important; /* 표준 */
|
|
13959
|
-
}
|
|
13960
|
-
.flex-direction-row-compat {
|
|
13961
|
-
-webkit-box-orient: horizontal !important;
|
|
13962
|
-
-webkit-box-direction: normal !important;
|
|
13963
|
-
-webkit-flex-direction: row !important;
|
|
13964
|
-
-ms-flex-direction: row !important;
|
|
13965
|
-
flex-direction: row !important;
|
|
13966
|
-
}
|
|
13967
|
-
.flex-direction-column-compat {
|
|
13968
|
-
-webkit-box-orient: vertical !important;
|
|
13969
|
-
-webkit-box-direction: normal !important;
|
|
13970
|
-
-webkit-flex-direction: column !important;
|
|
13971
|
-
-ms-flex-direction: column !important;
|
|
13972
|
-
flex-direction: column !important;
|
|
13973
|
-
}
|
|
13974
|
-
.justify-content-center-compat {
|
|
13975
|
-
-webkit-box-pack: center !important;
|
|
13976
|
-
-webkit-justify-content: center !important;
|
|
13977
|
-
-ms-flex-pack: center !important;
|
|
13978
|
-
justify-content: center !important;
|
|
13979
|
-
}
|
|
13980
|
-
.align-items-center-compat {
|
|
13981
|
-
-webkit-box-align: center !important;
|
|
13982
|
-
-webkit-align-items: center !important;
|
|
13983
|
-
-ms-flex-align: center !important;
|
|
13984
|
-
align-items: center !important;
|
|
13985
|
-
}
|
|
13986
|
-
.flex-1-compat {
|
|
13987
|
-
-webkit-box-flex: 1 !important;
|
|
13988
|
-
-webkit-flex: 1 !important;
|
|
13989
|
-
-ms-flex: 1 !important;
|
|
13990
|
-
flex: 1 !important;
|
|
13991
|
-
}
|
|
13992
|
-
/* ===== GRID COMPATIBILITY (그리드 호환성) ===== */
|
|
13993
|
-
/* CSS Grid 호환성 */
|
|
13994
|
-
.grid-compat {
|
|
13995
|
-
display: -ms-grid !important; /* IE 10-11 */
|
|
13996
|
-
display: grid !important; /* 표준 */
|
|
13997
|
-
}
|
|
13998
|
-
/* IE Grid 폴백 */
|
|
13999
|
-
@supports not (display: grid) {
|
|
14000
|
-
.grid-compat {
|
|
14001
|
-
display: flex !important;
|
|
14002
|
-
flex-wrap: wrap !important;
|
|
14003
|
-
}
|
|
14004
|
-
|
|
14005
|
-
.grid-compat > * {
|
|
14006
|
-
flex: 1 !important;
|
|
14007
|
-
min-width: 0 !important;
|
|
14008
|
-
}
|
|
14009
|
-
}
|
|
14010
|
-
/* ===== USER SELECT COMPATIBILITY (사용자 선택 호환성) ===== */
|
|
14011
|
-
.user-select-none-compat {
|
|
14012
|
-
-webkit-user-select: none !important;
|
|
14013
|
-
-moz-user-select: none !important;
|
|
14014
|
-
-ms-user-select: none !important;
|
|
14015
|
-
user-select: none !important;
|
|
14016
|
-
}
|
|
14017
|
-
.user-select-all-compat {
|
|
14018
|
-
-webkit-user-select: all !important;
|
|
14019
|
-
-moz-user-select: all !important;
|
|
14020
|
-
-ms-user-select: all !important;
|
|
14021
|
-
user-select: all !important;
|
|
14022
|
-
}
|
|
14023
|
-
.user-select-text-compat {
|
|
14024
|
-
-webkit-user-select: text !important;
|
|
14025
|
-
-moz-user-select: text !important;
|
|
14026
|
-
-ms-user-select: text !important;
|
|
14027
|
-
user-select: text !important;
|
|
14028
|
-
}
|
|
14029
|
-
/* ===== APPEARANCE COMPATIBILITY (외형 호환성) ===== */
|
|
14030
|
-
.appearance-none-compat {
|
|
14031
|
-
-webkit-appearance: none !important;
|
|
14032
|
-
-moz-appearance: none !important;
|
|
14033
|
-
-ms-appearance: none !important;
|
|
14034
|
-
appearance: none !important;
|
|
14035
|
-
}
|
|
14036
|
-
/* ===== BACKDROP FILTER COMPATIBILITY (백드롭 필터 호환성) ===== */
|
|
14037
|
-
.backdrop-filter-compat {
|
|
14038
|
-
-webkit-backdrop-filter: var(--backdrop-filter, none) !important;
|
|
14039
|
-
backdrop-filter: var(--backdrop-filter, none) !important;
|
|
14040
|
-
}
|
|
14041
|
-
/* 백드롭 필터 미지원 시 폴백 */
|
|
14042
|
-
@supports not (backdrop-filter: blur(1px)) and not
|
|
14043
|
-
(-webkit-backdrop-filter: blur(1px)) {
|
|
14044
|
-
.backdrop-filter-fallback {
|
|
14045
|
-
background-color: rgba(255, 255, 255, 0.8) !important;
|
|
14046
|
-
}
|
|
14047
|
-
|
|
14048
|
-
.backdrop-filter-fallback.dark {
|
|
14049
|
-
background-color: rgba(0, 0, 0, 0.8) !important;
|
|
14050
|
-
}
|
|
14051
|
-
}
|
|
14052
|
-
/* ===== STICKY POSITION COMPATIBILITY (스티키 포지션 호환성) ===== */
|
|
14053
|
-
.sticky-compat {
|
|
14054
|
-
position: -webkit-sticky !important;
|
|
14055
|
-
position: sticky !important;
|
|
14056
|
-
}
|
|
14057
|
-
/* Sticky 미지원 시 폴백 */
|
|
14058
|
-
@supports not (position: sticky) {
|
|
14059
|
-
.sticky-fallback {
|
|
14060
|
-
position: fixed !important;
|
|
14061
|
-
top: 0 !important;
|
|
14062
|
-
z-index: var(--z-index-fixed, 1000) !important;
|
|
14063
|
-
}
|
|
14064
|
-
}
|
|
14065
|
-
/* ===== OBJECT FIT COMPATIBILITY (오브젝트 핏 호환성) ===== */
|
|
14066
|
-
.object-fit-cover-compat {
|
|
14067
|
-
object-fit: cover !important;
|
|
14068
|
-
object-position: center !important;
|
|
14069
|
-
}
|
|
14070
|
-
/* Object-fit 미지원 시 폴백 */
|
|
14071
|
-
@supports not (object-fit: cover) {
|
|
14072
|
-
.object-fit-cover-fallback {
|
|
14073
|
-
position: relative !important;
|
|
14074
|
-
overflow: hidden !important;
|
|
14075
|
-
}
|
|
14076
|
-
|
|
14077
|
-
.object-fit-cover-fallback img {
|
|
14078
|
-
position: absolute !important;
|
|
14079
|
-
top: 50% !important;
|
|
14080
|
-
left: 50% !important;
|
|
14081
|
-
transform: translate(-50%, -50%) !important;
|
|
14082
|
-
min-width: 100% !important;
|
|
14083
|
-
min-height: 100% !important;
|
|
14084
|
-
width: auto !important;
|
|
14085
|
-
height: auto !important;
|
|
14086
|
-
}
|
|
14087
|
-
}
|
|
14088
|
-
/* ===== ASPECT RATIO COMPATIBILITY (종횡비 호환성) ===== */
|
|
14089
|
-
/* Aspect Ratio 호환성 (padding-top hack) */
|
|
14090
|
-
@supports not (aspect-ratio: 1 / 1) {
|
|
14091
|
-
.aspect-ratio-fallback {
|
|
14092
|
-
position: relative !important;
|
|
14093
|
-
overflow: hidden !important;
|
|
14094
|
-
}
|
|
14095
|
-
|
|
14096
|
-
.aspect-ratio-fallback::before {
|
|
14097
|
-
content: "" !important;
|
|
14098
|
-
display: block !important;
|
|
14099
|
-
padding-top: var(--aspect-ratio-percent, 100%) !important;
|
|
14100
|
-
}
|
|
14101
|
-
|
|
14102
|
-
.aspect-ratio-fallback > * {
|
|
14103
|
-
position: absolute !important;
|
|
14104
|
-
top: 0 !important;
|
|
14105
|
-
left: 0 !important;
|
|
14106
|
-
width: 100% !important;
|
|
14107
|
-
height: 100% !important;
|
|
14108
|
-
}
|
|
14109
|
-
}
|
|
14110
|
-
/* ===== SCROLL BEHAVIOR COMPATIBILITY (스크롤 동작 호환성) ===== */
|
|
14111
|
-
.scroll-smooth-compat {
|
|
14112
|
-
scroll-behavior: smooth !important;
|
|
14113
|
-
}
|
|
14114
|
-
/* Smooth scroll 미지원 시 폴백 */
|
|
14115
|
-
@supports not (scroll-behavior: smooth) {
|
|
14116
|
-
.scroll-smooth-js {
|
|
14117
|
-
/* JavaScript로 부드러운 스크롤 구현 필요 */
|
|
14118
|
-
scroll-behavior: auto !important;
|
|
14119
|
-
}
|
|
14120
|
-
}
|
|
14121
|
-
/* ===== CONTAINER QUERIES COMPATIBILITY (컨테이너 쿼리 호환성) ===== */
|
|
14122
|
-
/* Container Queries 미지원 시 폴백 */
|
|
14123
|
-
@supports not (container-type: inline-size) {
|
|
14124
|
-
.container-fallback {
|
|
14125
|
-
/* 미디어 쿼리로 대체 */
|
|
14126
|
-
width: 100% !important;
|
|
14127
|
-
}
|
|
14128
|
-
|
|
14129
|
-
@media (min-width: 400px) {
|
|
14130
|
-
.container-fallback {
|
|
14131
|
-
/* 컨테이너 쿼리 대신 미디어 쿼리 사용 */
|
|
14132
|
-
}
|
|
14133
|
-
}
|
|
14134
|
-
}
|
|
14135
|
-
/* ===== CLAMP FUNCTION COMPATIBILITY (clamp 함수 호환성) ===== */
|
|
14136
|
-
/* clamp() 미지원 시 폴백 */
|
|
14137
|
-
@supports not (font-size: clamp(1rem, 4vw, 2rem)) {
|
|
14138
|
-
.clamp-fallback {
|
|
14139
|
-
font-size: 1.25rem !important; /* 중간값으로 폴백 */
|
|
14140
|
-
}
|
|
14141
|
-
|
|
14142
|
-
@media (min-width: 768px) {
|
|
14143
|
-
.clamp-fallback {
|
|
14144
|
-
font-size: 1.5rem !important;
|
|
14145
|
-
}
|
|
14146
|
-
}
|
|
14147
|
-
|
|
14148
|
-
@media (min-width: 1200px) {
|
|
14149
|
-
.clamp-fallback {
|
|
14150
|
-
font-size: 2rem !important;
|
|
14151
|
-
}
|
|
14152
|
-
}
|
|
14153
|
-
}
|
|
14154
|
-
/* ===== CUSTOM PROPERTIES COMPATIBILITY (CSS 변수 호환성) ===== */
|
|
14155
|
-
/* CSS Variables 미지원 시 폴백 */
|
|
14156
|
-
@supports not (color: var(--primary-color)) {
|
|
14157
|
-
.css-variables-fallback {
|
|
14158
|
-
/* 하드코딩된 값으로 폴백 */
|
|
14159
|
-
color: #007bff !important;
|
|
14160
|
-
background-color: #ffffff !important;
|
|
14161
|
-
border-color: #dee2e6 !important;
|
|
14162
|
-
}
|
|
14163
|
-
}
|
|
14164
|
-
/* ===== INTERNET EXPLORER SPECIFIC (Internet Explorer 전용) ===== */
|
|
14165
|
-
/* IE 조건부 클래스 */
|
|
14166
|
-
.ie-only {
|
|
14167
|
-
display: none !important;
|
|
14168
|
-
}
|
|
14169
|
-
/* IE에서만 표시 */
|
|
14170
|
-
@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {
|
|
14171
|
-
.ie-only {
|
|
14172
|
-
display: block !important;
|
|
14173
|
-
}
|
|
14174
|
-
|
|
14175
|
-
.ie-hide {
|
|
14176
|
-
display: none !important;
|
|
14177
|
-
}
|
|
14178
|
-
}
|
|
14179
|
-
/* IE 그리드 레이아웃 수정 */
|
|
14180
|
-
@supports (-ms-grid-columns: 1fr) {
|
|
14181
|
-
.ie-grid-fix {
|
|
14182
|
-
-ms-grid-columns: 1fr !important;
|
|
14183
|
-
-ms-grid-rows: auto !important;
|
|
14184
|
-
}
|
|
14185
|
-
}
|
|
14186
|
-
/* ===== SAFARI SPECIFIC (Safari 전용) ===== */
|
|
14187
|
-
/* Safari 버그 수정 */
|
|
14188
|
-
@supports (-webkit-touch-callout: none) {
|
|
14189
|
-
.safari-fix {
|
|
14190
|
-
-webkit-transform: translateZ(0) !important; /* 하드웨어 가속 */
|
|
14191
|
-
}
|
|
14192
|
-
}
|
|
14193
|
-
/* iOS Safari 뷰포트 높이 수정 */
|
|
14194
|
-
@supports (-webkit-touch-callout: none) {
|
|
14195
|
-
.ios-viewport-fix {
|
|
14196
|
-
height: -webkit-fill-available !important;
|
|
14197
|
-
}
|
|
14198
|
-
}
|
|
14199
|
-
/* ===== FIREFOX SPECIFIC (Firefox 전용) ===== */
|
|
14200
|
-
/* Firefox 스크롤바 스타일링 */
|
|
14201
|
-
@-moz-document url-prefix() {
|
|
14202
|
-
.firefox-scrollbar {
|
|
14203
|
-
scrollbar-width: thin !important;
|
|
14204
|
-
scrollbar-color: var(--color-base-4) var(--color-base-1) !important;
|
|
14205
|
-
}
|
|
14206
|
-
}
|
|
14207
|
-
/* ===== FEATURE DETECTION (기능 감지) ===== */
|
|
14208
|
-
/* Hover 지원 감지 */
|
|
14209
|
-
@media (hover: hover) {
|
|
14210
|
-
.hover-supported:hover {
|
|
14211
|
-
background-color: var(--color-base-2) !important;
|
|
14212
|
-
transform: translateY(-2px) !important;
|
|
14213
|
-
}
|
|
14214
|
-
}
|
|
14215
|
-
@media (hover: none) {
|
|
14216
|
-
.hover-not-supported {
|
|
14217
|
-
/* 터치 디바이스용 스타일 */
|
|
14218
|
-
padding: var(--space-4) !important;
|
|
14219
|
-
font-size: 1.125rem !important;
|
|
14220
|
-
}
|
|
14221
|
-
}
|
|
14222
|
-
/* Pointer 정밀도 감지 */
|
|
14223
|
-
@media (pointer: fine) {
|
|
14224
|
-
.fine-pointer {
|
|
14225
|
-
/* 마우스/트랙패드용 */
|
|
14226
|
-
cursor: pointer !important;
|
|
14227
|
-
}
|
|
14228
|
-
}
|
|
14229
|
-
@media (pointer: coarse) {
|
|
14230
|
-
.coarse-pointer {
|
|
14231
|
-
/* 터치용 */
|
|
14232
|
-
min-height: 44px !important; /* 터치 최소 크기 */
|
|
14233
|
-
min-width: 44px !important;
|
|
14234
|
-
}
|
|
14235
|
-
}
|
|
14236
|
-
/* ===== REDUCED MOTION COMPATIBILITY (모션 감소 호환성) ===== */
|
|
14237
|
-
/* 모션 감소 미지원 시 폴백 */
|
|
14238
|
-
.motion-safe {
|
|
14239
|
-
animation: var(--animation, none) !important;
|
|
14240
|
-
transition: var(--transition, all 0.3s ease) !important;
|
|
14241
|
-
}
|
|
14242
|
-
@media (prefers-reduced-motion: reduce) {
|
|
14243
|
-
.motion-safe {
|
|
14244
|
-
animation: none !important;
|
|
14245
|
-
transition: none !important;
|
|
14246
|
-
}
|
|
14247
|
-
}
|
|
14248
|
-
/* ===== HIGH CONTRAST MODE COMPATIBILITY (고대비 모드 호환성) ===== */
|
|
14249
|
-
/* Windows 고대비 모드 감지 */
|
|
14250
|
-
@media (-ms-high-contrast: active) {
|
|
14251
|
-
.high-contrast-mode {
|
|
14252
|
-
border: 1px solid !important;
|
|
14253
|
-
background: ButtonFace !important;
|
|
14254
|
-
color: ButtonText !important;
|
|
14255
|
-
}
|
|
14256
|
-
}
|
|
14257
|
-
/* ===== COLOR SCHEME COMPATIBILITY (색상 스킴 호환성) ===== */
|
|
14258
|
-
/* 다크 모드 미지원 시 폴백 */
|
|
14259
|
-
@media (prefers-color-scheme: dark) {
|
|
14260
|
-
.dark-mode-supported {
|
|
14261
|
-
background-color: var(--color-base-9) !important;
|
|
14262
|
-
color: var(--color-white) !important;
|
|
14263
|
-
}
|
|
14264
|
-
}
|
|
14265
|
-
/* 다크 모드 감지 불가능한 경우 */
|
|
14266
|
-
@supports not (color-scheme: dark) {
|
|
14267
|
-
.dark-mode-fallback {
|
|
14268
|
-
/* JavaScript로 다크 모드 토글 구현 필요 */
|
|
14269
|
-
}
|
|
14270
|
-
}
|
|
14271
|
-
/* ===== PRINT COMPATIBILITY (프린트 호환성) ===== */
|
|
14272
|
-
/* 프린트 시 웹폰트 폴백 */
|
|
14273
|
-
@media print {
|
|
14274
|
-
.print-font-fallback {
|
|
14275
|
-
font-family: "Times New Roman", serif !important;
|
|
14276
|
-
}
|
|
14277
|
-
|
|
14278
|
-
.print-safe {
|
|
14279
|
-
color: black !important;
|
|
14280
|
-
background: white !important;
|
|
14281
|
-
text-shadow: none !important;
|
|
14282
|
-
box-shadow: none !important;
|
|
14283
|
-
}
|
|
14284
|
-
}
|
|
14285
|
-
/* ===== BROWSER DETECTION UTILITIES (브라우저 감지 유틸리티) ===== */
|
|
14286
|
-
/* Chromium 기반 브라우저 감지 */
|
|
14287
|
-
@supports (-webkit-appearance: none) and (not (-moz-appearance: none)) {
|
|
14288
|
-
.chromium-only {
|
|
14289
|
-
display: block !important;
|
|
14290
|
-
}
|
|
14291
|
-
}
|
|
14292
|
-
/* WebKit 기반 브라우저 감지 */
|
|
14293
|
-
@supports (-webkit-appearance: none) {
|
|
14294
|
-
.webkit-only {
|
|
14295
|
-
display: block !important;
|
|
14296
|
-
}
|
|
14297
|
-
}
|
|
14298
|
-
/* Gecko 기반 브라우저 감지 */
|
|
14299
|
-
@supports (-moz-appearance: none) {
|
|
14300
|
-
.gecko-only {
|
|
14301
|
-
display: block !important;
|
|
14302
|
-
}
|
|
14303
|
-
}
|
|
14304
|
-
/* ===== PERFORMANCE OPTIMIZATION (성능 최적화) ===== */
|
|
14305
|
-
/* GPU 가속 활성화 */
|
|
14306
|
-
.gpu-accelerated {
|
|
14307
|
-
-webkit-transform: translateZ(0) !important;
|
|
14308
|
-
-moz-transform: translateZ(0) !important;
|
|
14309
|
-
-ms-transform: translateZ(0) !important;
|
|
14310
|
-
-o-transform: translateZ(0) !important;
|
|
14311
|
-
transform: translateZ(0) !important;
|
|
14312
|
-
|
|
14313
|
-
/* will-change 최적화 */
|
|
14314
|
-
will-change: var(--will-change, auto) !important;
|
|
14315
|
-
}
|
|
14316
|
-
/* 하드웨어 가속 비활성화 */
|
|
14317
|
-
.no-gpu-acceleration {
|
|
14318
|
-
transform: none !important;
|
|
14319
|
-
will-change: auto !important;
|
|
14320
|
-
}
|
|
14321
|
-
/* ===== POLYFILL HINTS (폴리필 힌트) ===== */
|
|
14322
|
-
/* JavaScript 폴리필이 필요한 기능들 */
|
|
14323
|
-
.needs-polyfill {
|
|
14324
|
-
/*
|
|
14325
|
-
필요한 폴리필들:
|
|
14326
|
-
- IntersectionObserver
|
|
14327
|
-
- ResizeObserver
|
|
14328
|
-
- CustomEvent
|
|
14329
|
-
- Object.assign
|
|
14330
|
-
- Array.from
|
|
14331
|
-
- Promise
|
|
14332
|
-
- fetch
|
|
14333
|
-
*/
|
|
14334
|
-
}
|
|
14335
|
-
/* 폴리필 로드 완료 후 활성화되는 클래스 */
|
|
14336
|
-
.polyfill-loaded .feature-enhanced {
|
|
14337
|
-
/* 폴리필 의존 기능들 */
|
|
14338
|
-
}
|
|
14339
|
-
/* ===== CRITICAL CSS OPTIMIZATION (중요 CSS 최적화) ===== */
|
|
14340
|
-
/* Above the fold 콘텐츠 */
|
|
14341
|
-
.critical-css {
|
|
14342
|
-
/* 중요한 스타일만 포함 */
|
|
14343
|
-
display: block !important;
|
|
14344
|
-
position: relative !important;
|
|
14345
|
-
margin: 0 !important;
|
|
14346
|
-
padding: 0 !important;
|
|
14347
|
-
}
|
|
14348
|
-
/* 지연 로드 콘텐츠 */
|
|
14349
|
-
.non-critical {
|
|
14350
|
-
/* 나중에 로드될 스타일들 */
|
|
14351
|
-
}
|
|
14352
13056
|
/* ===== RESPONSIVE BREAKPOINTS ===== */
|
|
14353
13057
|
/*
|
|
14354
13058
|
미디어쿼리 브레이크포인트:
|