/* 이미지 최적화 관련 스타일 */
img {
    max-width: 100%;
    height: auto;
    display: block;
}

/* 지연 로딩을 위한 스타일 */
.lazy-load {
    opacity: 0;
    transition: opacity 0.5s ease-in;
}

.lazy-load.loaded {
    opacity: 1;
}

/* 이미지 컨테이너 스타일 */
.img-container {
    overflow: hidden;
    position: relative;
    background-color: #f8f8f8;
}

/* 이미지 플레이스홀더 스타일 */
.img-placeholder {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: linear-gradient(110deg, #ececec 8%, #f5f5f5 18%, #ececec 33%);
    background-size: 200% 100%;
    animation: 1.5s shine linear infinite;
}

@keyframes shine {
    to {
        background-position-x: -200%;
    }
}

/* WebP 지원 클래스 */
.webp .webp-bg {
    background-image: var(--webp-url);
}

.no-webp .webp-bg {
    background-image: var(--fallback-url);
}

/* 이미지 최적화를 위한 반응형 클래스 */
.responsive-img {
    width: 100%;
    height: auto;
}

/* 이미지 비율 유지 */
.aspect-ratio-container {
    position: relative;
    width: 100%;
    overflow: hidden;
}

.aspect-ratio-container::before {
    content: "";
    display: block;
    padding-top: 56.25%; /* 16:9 비율 */
}

.aspect-ratio-container.ratio-4-3::before {
    padding-top: 75%; /* 4:3 비율 */
}

.aspect-ratio-container.ratio-1-1::before {
    padding-top: 100%; /* 정사각형 비율 */
}

.aspect-ratio-container img {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

/* 이미지 최적화를 위한 블러 로딩 효과 */
.blur-load {
    position: relative;
}

.blur-load .blur-thumb {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    filter: blur(10px);
    transform: scale(1.1);
    transition: opacity 0.3s ease;
}

.blur-load .full-img {
    opacity: 0;
    transition: opacity 0.3s ease;
}

.blur-load.loaded .blur-thumb {
    opacity: 0;
}

.blur-load.loaded .full-img {
    opacity: 1;
} 