﻿/* ======================================================
   Main Page CSS Order
   - 코드 선언값 변경 없음
   - 메인페이지 노출 순서 기준으로 섹션만 정리
   - 공통/기타는 상단/하단에 유지
   ====================================================== */

.video-wrap {
    position: relative;
    width: 100vw;
    height: 100vh;
    max-width: 600px;
    aspect-ratio: 9/16;
    overflow: hidden;
}

.video-bg {
    position: absolute;
    object-position: center;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.video-overlay {
    position: absolute;
    inset: 0;
    z-index: 3;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: flex-end;
    align-self: flex-end;
    gap: 0.5rem;
    padding: 0 2rem 5rem;
}

/* 로그인 버튼 */
.MyLoginBtn {
    display: flex;
    justify-content: center;
    align-items: center;
    border-radius: var(--br_r) !important;
    background-color: var(--site-primary) !important;
    color: var(--site-surface) !important;
    box-shadow: 0 0.55rem 1.25rem rgba(0, 0, 0, 0.12);
    transition: background-color 180ms ease, transform 180ms ease, box-shadow 180ms ease;
}

    .MyLoginBtn:hover,
    .MyLoginBtn:active {
        background-color: var(--site-primary-dark) !important;
        color: var(--site-surface) !important;
    }

    .MyLoginBtn:hover {
        transform: translateY(-1px);
        box-shadow: 0 0.75rem 1.5rem rgba(0, 0, 0, 0.16);
    }

/* 말풍선 */
.bubble-bottom {
    --size: 15rem;
    --bubble: var(--site-surface);
    display: flex;
    justify-content: center;
    align-items: center;
    margin: 0 auto .5rem;
    width: var(--size);
    background: var(--bubble);
    border: 1px solid var(--site-border);
    border-radius: var(--br_r);
    position: relative;
    color: var(--site-text);
    box-shadow: var(--site-shadow-soft);
}

    .bubble-bottom:after {
        content: '';
        position: absolute;
        bottom: 1px;
        left: 50%;
        width: 0;
        height: 0;
        border: calc(var(--size) * 0.025) solid transparent;
        border-top-color: var(--bubble);
        border-bottom: 0;
        margin-left: calc(var(--size) * 0.025 * -1);
        margin-bottom: calc(var(--size) * 0.025 * -1);
    }

/* 상품박스 설명 */
.ProdBox {
    height: 500px;
}

    .ProdBox .ProdBox_Tit {
        width: 96%;
    }

        /* 상품설명높이 - 상품명 3줄, 설명 2줄 기준 */
        .ProdBox .ProdBox_Tit .ProdName {
            min-height: 110px;
        }

            /* hover 시 상품 이름 효과 */
            .ProdBox .ProdBox_Tit .ProdName a.mud-link:hover {
                transition: opacity 100ms cubic-bezier(0, 0, 0.2, 1) 0ms;
                opacity: 0.7;
            }

        /* 상품설명 */
        .ProdBox .ProdBox_Tit .MyDescription {
            max-height: 33px;
        }

        /* 가격 줄 긋기 */
        .ProdBox .ProdBox_Tit .PriceLine,
        .PriceLine {
            text-decoration-line: line-through;
        }

.MyToolBar {
    max-width: 600px;
    margin: 0 auto;
    border-bottom: 1px solid var(--site-border);
}

    /* 앱바 아이콘 테마 연동 */
    .MyToolBar .FillBtn .mud-icon-root,
    .MyToolBar .FillBtn .material-symbols-rounded {
        color: var(--site-primary-dark) !important;
    }

    .MyToolBar .FillBtn:hover .mud-icon-root,
    .MyToolBar .FillBtn:hover .material-symbols-rounded,
    .MyToolBar .FillBtn.active .mud-icon-root,
    .MyToolBar .FillBtn.active .material-symbols-rounded {
        color: var(--site-primary) !important;
    }

    .MyToolBar .mud-icon-button:hover,
    .MyToolBar .mud-button-root:hover {
        background-color: var(--site-primary-soft) !important;
    }

/* 미니아이콘 */
.mini-icon {
    padding: 4px 5px;
    border-radius: 3px;
    line-height: .8 !important;
    overflow: hidden;
    background-color: var(--site-primary-soft);
    /*    color: var(--site-primary-dark);*/
}

/* 텍스트오버 쩜쩜쩜 */
.txt-over {
    overflow: hidden;
    text-overflow: ellipsis;
    width: 100%;
    white-space: nowrap;
}

/* 텍스트오버라인 쩜쩜쩜 */
[class*="text_over_line"] {
    display: -webkit-box;
    -webkit-box-orient: vertical;
    overflow: hidden;
    text-overflow: ellipsis;
    word-break: break-word;
}

.text_over_line_1 {
    -webkit-line-clamp: 1;
}

.text_over_line_2 {
    -webkit-line-clamp: 2;
}

.text_over_line_3 {
    -webkit-line-clamp: 3;
}

.text_over_line_4 {
    -webkit-line-clamp: 4;
}

/* 백드롭블러 */
.bg_blur {
    background: rgba(255, 255, 255, 0.85);
    border: 1px solid var(--site-border);
    color: var(--site-text);
    backdrop-filter: blur(5px);
    -webkit-backdrop-filter: blur(5px);
}

/* 구글아이콘 */
.mud-icon-root.fa-light {
    font-weight: 300 !important;
}

.material-symbols-rounded {
    font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 48;
}

.material-symbols-sharp {
    font-family: 'Material Symbols Rounded';
    font-variation-settings: 'FILL' 1, 'wght' 400, 'GRAD' 0, 'opsz' 48;
}

/* 아이콘채우기버튼 */
.FillBtn .material-symbols-rounded,
.mud-tab .material-symbols-rounded {
    font-variation-settings: 'FILL' 0;
    transition: all 300ms cubic-bezier(0, 0, 0.2, 1) 0ms;
}

.FillBtn:hover .material-symbols-rounded,
.FillBtn.active .material-symbols-rounded,
.mud-tab.mud-tab-active .material-symbols-rounded,
.mud-tab:hover .material-symbols-rounded {
    font-variation-settings: 'FILL' 1;
}

.FillBtn .FloatingIcon {
    transition: all 200ms cubic-bezier(0, 0, 0.2, 1) 0ms;
}

.FillBtn:hover .FloatingIcon,
.FillBtn.active .FloatingIcon {
    font-weight: 900 !important;
}

.mud-tab.mud-tab-active {
    background-color: var(--site-primary-soft) !important;
    color: var(--site-primary) !important;
}

a:has(.MyLogo) {
    display: flex;
    align-items: center;
    align-self: center;
}

.MyLogo {
    height: 35px;
    margin: auto 0;
}

@media(max-width: 600px) {
    .MyLogo {
        height: 25px;
    }

    .FillBtn .material-symbols-rounded {
        font-size: 20px;
    }
}

/* 기본버튼 오버 이펙트 */
.hover {
    background-color: var(--site-primary);
    color: var(--site-surface) !important;
    position: relative !important;
    overflow: hidden;
    min-width: fit-content !important;
    transition: transform 180ms ease, box-shadow 180ms ease, background-color 180ms ease;
}

    .hover:hover {
        background-color: var(--site-primary-dark) !important;
        color: var(--site-surface) !important;
        transform: translateY(-1px);
        box-shadow: 0 10px 20px rgba(0, 0, 0, 0.18);
    }

    .hover:active {
        transform: translateY(0px);
        box-shadow: 0 5px 10px rgba(0, 0, 0, 0.16);
    }

/* 흰버튼 */
.WhiteBtn {
    background-color: var(--site-surface) !important;
    border: 1px solid var(--site-border) !important;
    color: var(--site-text) !important;
}

    .WhiteBtn:hover,
    .WhiteBtn.active {
        --mud-ripple-color: var(--site-primary) !important;
        border-color: var(--site-primary-soft) !important;
        background-color: var(--site-surface-soft) !important;
    }

/* 기본버튼 배경 이펙트 */
.hoverEffect {
    position: relative !important;
    overflow: hidden;
    min-width: fit-content !important;
}

    .hoverEffect:after {
        background: var(--site-surface);
        content: "";
        height: 155px;
        left: -130%;
        opacity: 0.22;
        position: absolute;
        top: -50px;
        transform: rotate(35deg);
        transition: all 550ms cubic-bezier(0.19, 1, 0.22, 1);
        width: 50px;
    }

    .hoverEffect:hover:after {
        left: 130%;
        transition: all 550ms cubic-bezier(0.19, 1, 0.22, 1);
    }

div.MyTextHover .mud-button:hover,
div.MyTextHover .mud-button.active,
button.MyTextHover:hover,
button.MyTextHover:active,
a p.MyTextHover:hover,
a p.MyTextHover:active,
a.MyTextHover:hover,
a.MyTextHover:active {
    color: var(--site-primary-dark) !important;
    --mud-ripple-color: var(--site-primary) !important;
    background-color: var(--site-primary-soft) !important;
    transition: all 550ms cubic-bezier(0.19, 1, 0.22, 1);
}

/* Gradient Buttons */
.gradient-btn {
    background: linear-gradient(135deg, var(--site-primary-dark), var(--site-primary), var(--site-secondary)) !important;
    background-size: 200% 200%;
    animation: gradientShift 3s ease-in-out infinite;
    border: none;
    color: #ffffff;
    font-weight: 700;
    text-shadow: 0 2px 4px rgba(0, 0, 0, 0.28);
}

    .gradient-btn:hover {
        transform: translateY(-3px) scale(1.05);
        box-shadow: 0 15px 30px rgba(0, 0, 0, 0.22);
    }

/* 샵대문 */
.FrontDoorWrap {
    position: relative;
    aspect-ratio: 2 / 1;
    overflow: hidden;
}

    /* MudImage가 컨테이너 높이를 꽉 채우게 */
    .FrontDoorWrap .FrontDoorImg {
        width: 100%;
        height: 100%;
        display: block;
    }

    /* 좌측 상단 삼각 비네팅 레이어 (이미지 위, 오버레이 아래) */
    .FrontDoorWrap::before {
        content: "";
        position: absolute;
        left: 0;
        top: -10%;
        width: 100%;
        height: 100%;
        z-index: 1;
        pointer-events: none;
        background: radial-gradient(ellipse 85% 70% at 0% 0%, rgba(0,0,0,.55) 0%, rgba(0,0,0,.28) 22%, rgba(0,0,0,.12) 40%, rgba(0,0,0,0) 65%), linear-gradient(135deg, rgba(0,0,0,.22) 0%, rgba(0,0,0,.10) 18%, rgba(0,0,0,0) 38%);
    }

    /* 텍스트/버튼 플로팅 */
    .FrontDoorWrap .FrontDoorOverlay {
        position: absolute;
        left: 0;
        top: 0;
        padding: 1rem;
        z-index: 2;
    }

/* 공지사항 */
.MyNotice {
    background: var(--site-primary-soft);
    /*    border: 1px solid var(--site-border);
    color: var(--site-text);*/
}

/* 일정안내 */
/*.Schedule .DayCard {
    position: relative;
    overflow: visible;
    padding: 1rem 1.25rem .65rem;
    border-radius: var(--br_m);
    background: var(--site-surface);
    border: 1px solid var(--site-border);
    box-shadow: var(--site-shadow-soft);
}

    .Schedule .DayCard .mini-icon {
        border-radius: var(--br_c);
        width: fit-content;
        position: absolute;
        left: 50%;
        top: 0;
        transform: translate(-50%, -50%);
        z-index: 2;
        white-space: nowrap;
        max-width: none;
        padding: 6px 10px !important;
        font-size: 11px;
        background-color: var(--site-primary);
        color: var(--site-surface);
    }

    .Schedule .DayCard::before {
        content: "";
        position: absolute;
        inset: 0;
        border-radius: inherit;
        z-index: 1;
        pointer-events: none;
    }*/

/* LIVE 칩 애니메이션 클래스 */
/*.live-bg-pulse {
    animation: live-glow 0.7s infinite alternate ease-in-out;
}

@keyframes live-glow {
    from {
        background-color: var(--live-on-main);
        box-shadow: 0 0 2px var(--live-on-main);
    }

    to {
        background-color: var(--live-on-mid);
        box-shadow: 0 0 10px var(--live-on-mid);
    }
}*/

/* 라이브입장섹션 */
/*#LiveEntrance .LiveEntranceGrid .photoBox {
    position: relative;
    aspect-ratio: 4 / 5;
    overflow: hidden;
}

    #LiveEntrance .LiveEntranceGrid .photoBox

    .photo {
        width: 100%;
        height: 100%;
        display: block;
    }

    #LiveEntrance .LiveEntranceGrid .photoBox .LiveOverlay {
        position: absolute;
        left: 1.5rem;
        right: auto;
        bottom: .5rem;
        padding: 0 .5rem 0 0;
        z-index: 2;
        background-color: rgba(0, 0, 0, 0.50);
    }

.photo {
    aspect-ratio: 4 / 5;
}*/

/* 숏폼 리스트 - 포토프레임 */
.photoframe {
    aspect-ratio: 4 / 5;
    width: 100%;
    max-width: 400px;
    overflow: hidden;
    display: flex;
    justify-content: center;
    align-items: center;
    position: relative;
    text-decoration: none;
    color: inherit;
    transition: transform .15s ease, filter .15s ease;
}

    /* 배경용 이미지 레이어 */
    .photoframe.blur-bg::before {
        content: "";
        position: absolute;
        inset: 0;
        background-image: var(--bg);
        background-size: cover;
        background-position: center;
        filter: blur(4px);
        opacity: .8;
        transform: scale(1.05);
        transition: filter .2s ease, opacity .2s ease;
    }

    /* 어두운 오버레이 + 테마 컬러 무드 */
    .photoframe.blur-bg::after {
        content: "";
        position: absolute;
        inset: 0;
        background: linear-gradient( 135deg, color-mix(in srgb, var(--site-primary-dark) 42%, transparent) 0%, color-mix(in srgb, var(--site-primary) 18%, transparent) 42%, transparent 78% ), linear-gradient( to bottom, rgba(0, 0, 0, .34) 0%, rgba(0, 0, 0, .58) 100% );
        transition: background .2s ease;
    }

    /* 리스트 이미지 */
    .photoframe > img {
        position: relative;
        z-index: 1;
        width: 100%;
        height: 100%;
        object-fit: contain;
        object-position: center;
        display: block;
        transition: transform .2s ease;
        transform: scale(1);
    }

    /* 중앙 플레이 배지(장식) */
    .photoframe .play-badge {
        --badge: 3.75rem;
        width: var(--badge);
        height: var(--badge);
        border-radius: 9999px;
        position: absolute;
        left: 50%;
        top: 50%;
        transform: translate(-50%, -50%);
        z-index: 3;
        border: 1px solid color-mix(in srgb, var(--site-surface) 44%, transparent);
        background: linear-gradient( 135deg, rgba(255, 255, 255, .26), rgba(255, 255, 255, .08) ), linear-gradient( 135deg, color-mix(in srgb, var(--site-primary-dark) 44%, transparent), color-mix(in srgb, var(--site-primary) 26%, transparent) ), rgba(0, 0, 0, .36);
        backdrop-filter: blur(7px) saturate(1.12);
        -webkit-backdrop-filter: blur(7px) saturate(1.12);
        display: grid;
        place-items: center;
        pointer-events: none;
        transition: transform .15s ease, background .15s ease, border-color .15s ease, filter .15s ease, box-shadow .15s ease;
        box-shadow: 0 8px 20px rgba(0, 0, 0, .22), 0 0 .95rem color-mix(in srgb, var(--site-primary) 22%, transparent), inset 0 1px 0 rgba(255, 255, 255, .25), inset 0 -1px 0 rgba(0, 0, 0, .18);
    }

@media(max-width: 600px) {
    .photoframe .play-badge {
        --badge: 2rem;
    }
}

.photoframe .play-badge::before {
    content: "";
    position: absolute;
    inset: 0;
    border-radius: inherit;
    box-shadow: none;
    transition: box-shadow .2s ease;
    pointer-events: none;
}

/* 삼각형 플레이 아이콘 */
.photoframe .play-icon {
    --triHalfH: calc(var(--badge) * 0.16);
    --triW: calc(var(--badge) * 0.26);
    width: 0;
    height: 0;
    border-top: var(--triHalfH) solid transparent;
    border-bottom: var(--triHalfH) solid transparent;
    border-left: var(--triW) solid rgba(255, 255, 255, .94);
    transform: translateX(calc(var(--badge) * 0.03));
    filter: drop-shadow(0 1px 2px rgba(0, 0, 0, .34)) drop-shadow(0 0 .35rem color-mix(in srgb, var(--site-primary) 24%, transparent));
}

/* a에 hover/focus 시 */
.photoframe:hover.blur-bg::before,
.photoframe:focus-visible.blur-bg::before {
    filter: blur(8px);
    opacity: .75;
}

/* hover/focus 시 중앙 이미지 살짝 확대 */
.photoframe:hover > img,
.photoframe:focus-visible > img {
    transform: scale(1.025);
}

/* hover/focus 시 오버레이 밝기 */
.photoframe:hover.blur-bg::after,
.photoframe:focus-visible.blur-bg::after {
    background: linear-gradient( 135deg, color-mix(in srgb, var(--site-primary-dark) 36%, transparent) 0%, color-mix(in srgb, var(--site-secondary) 22%, transparent) 46%, transparent 82% ), linear-gradient( to bottom, rgba(0, 0, 0, .20) 0%, rgba(0, 0, 0, .34) 100% );
}

/* 배지/아이콘도 같이 활성화 */
.photoframe:hover .play-badge,
.photoframe:focus-visible .play-badge {
    border-color: color-mix(in srgb, var(--site-surface) 62%, transparent);
    background: linear-gradient( 135deg, rgba(255, 255, 255, .32), rgba(255, 255, 255, .14) ), linear-gradient( 135deg, color-mix(in srgb, var(--site-primary-dark) 38%, transparent), color-mix(in srgb, var(--site-primary) 34%, transparent), color-mix(in srgb, var(--site-secondary) 24%, transparent) ), rgba(0, 0, 0, .26);
    filter: brightness(1.06);
    box-shadow: 0 10px 24px rgba(0, 0, 0, .24), 0 0 1.1rem color-mix(in srgb, var(--site-primary) 28%, transparent), inset 0 1px 0 rgba(255, 255, 255, .30), inset 0 -1px 0 rgba(0, 0, 0, .16);
}

    .photoframe:hover .play-badge::before,
    .photoframe:focus-visible .play-badge::before {
        box-shadow: 0 3px 10px rgba(0, 0, 0, .38), 0 0 .85rem color-mix(in srgb, var(--site-primary) 24%, transparent);
    }

/* 키보드 접근성 포커스 링 */
.photoframe:focus-visible {
    outline: 2px solid color-mix(in srgb, var(--site-primary) 58%, #ffffff);
    outline-offset: 3px;
}

/* ======================================================
   Shortform Section
   - MudContainer Gutters=true 기준
   - 슬라이드는 거터 안쪽 폭 100%
   - MudGrid Spacing은 그대로 유지
   ====================================================== */

.ShortformSection {
    overflow: hidden;
}

    .ShortformSection .ShortformSwiper {
        width: 100%;
        max-width: 100%;
        min-width: 0;
        overflow: hidden;
        box-sizing: border-box;
    }

        .ShortformSection .ShortformSwiper .swiper-wrapper {
            width: 100%;
            min-width: 0;
        }

        .ShortformSection .ShortformSwiper .swiper-slide {
            width: 100% !important;
            min-width: 0;
            box-sizing: border-box;
        }

    /* 카드가 MudItem 안에서 꽉 차게 */
    .ShortformSection .photoframe {
        width: 100%;
        max-width: none;
    }
/* ======================================================
   Site Common Pagination Dots
   - Shortform / HotSales 공통 도트 규격
   - 비활성 도트: 정확한 원형 고정
   - 활성 도트: 동일한 pill 폭 고정
   - Swiper dynamic / 기본 transform 영향 제거
   - 색상: 현재 사이트 테마 반영
   ====================================================== */

.ShortformSection,
.HotSalesSection {
    --site-dot-size: 7px;
    --site-dot-active-width: 17px;
    --site-dot-gap: 6px;
    --site-dot-color: var(--site-primary);
    --site-dot-color-soft: var(--live-glow-soft);
    --site-dot-inactive-color: var(--site-text-light);
    --site-dot-inactive-opacity: 0.38;
    --swiper-theme-color: var(--site-dot-color);
    --swiper-pagination-color: var(--site-dot-color);
    --swiper-pagination-bullet-inactive-color: var(--site-dot-inactive-color);
    --swiper-pagination-bullet-inactive-opacity: var(--site-dot-inactive-opacity);
}

    .ShortformSection .hero-pagination,
    .HotSalesSection .hots-pagination {
        display: flex;
        align-items: center;
        justify-content: center;
        gap: var(--site-dot-gap);
    }

        /* Swiper bullet 기본값 / dynamic bullet 보정값까지 강제 초기화 */
        .ShortformSection .hero-pagination .swiper-pagination-bullet,
        .HotSalesSection .hots-pagination .swiper-pagination-bullet {
            flex: 0 0 var(--site-dot-size);
            display: block;
            width: var(--site-dot-size) !important;
            min-width: var(--site-dot-size) !important;
            max-width: var(--site-dot-size) !important;
            height: var(--site-dot-size) !important;
            min-height: var(--site-dot-size) !important;
            max-height: var(--site-dot-size) !important;
            aspect-ratio: 1 / 1;
            margin: 0 !important;
            padding: 0 !important;
            border: 0 !important;
            border-radius: 999px !important;
            font-size: 0;
            line-height: 0;
            box-sizing: border-box;
            overflow: hidden;
            background: var(--site-dot-inactive-color) !important;
            opacity: var(--site-dot-inactive-opacity) !important;
            transform: none !important;
            transition: flex-basis 0.18s ease, width 0.18s ease, min-width 0.18s ease, max-width 0.18s ease, opacity 0.18s ease, background-color 0.18s ease, box-shadow 0.18s ease;
        }

            /* 비활성 도트는 어떤 부가 클래스가 붙어도 반드시 원형 */
            .ShortformSection .hero-pagination .swiper-pagination-bullet:not(.swiper-pagination-bullet-active),
            .HotSalesSection .hots-pagination .swiper-pagination-bullet:not(.swiper-pagination-bullet-active) {
                flex-basis: var(--site-dot-size) !important;
                width: var(--site-dot-size) !important;
                min-width: var(--site-dot-size) !important;
                max-width: var(--site-dot-size) !important;
                height: var(--site-dot-size) !important;
                min-height: var(--site-dot-size) !important;
                max-height: var(--site-dot-size) !important;
                border-radius: 999px !important;
                background: var(--site-dot-inactive-color) !important;
                opacity: var(--site-dot-inactive-opacity) !important;
                transform: none !important;
                box-shadow: none !important;
            }

        /* 활성 도트만 pill 형태 */
        .ShortformSection .hero-pagination .swiper-pagination-bullet-active,
        .HotSalesSection .hots-pagination .swiper-pagination-bullet-active {
            flex-basis: var(--site-dot-active-width) !important;
            width: var(--site-dot-active-width) !important;
            min-width: var(--site-dot-active-width) !important;
            max-width: var(--site-dot-active-width) !important;
            height: var(--site-dot-size) !important;
            min-height: var(--site-dot-size) !important;
            max-height: var(--site-dot-size) !important;
            opacity: 1 !important;
            background: var(--site-dot-color) !important;
            box-shadow: 0 0 10px var(--site-dot-color-soft);
            transform: none !important;
        }

        .ShortformSection .hero-pagination .swiper-pagination-bullet:hover,
        .HotSalesSection .hots-pagination .swiper-pagination-bullet:hover {
            opacity: 0.75 !important;
            background: var(--site-dot-color) !important;
        }

/* ======================================================
   Hot Sales Section
   - 바깥 섹션은 Gutters=false 기준
   - 타이틀은 별도 MudContainer Gutters=true로 정렬
   - 슬라이드는 섹션 전체 100% 사용
   - 첫 번째 카드 시작 위치는 JS slidesOffsetBefore로 거터 위치에 맞춤
   - 2개 온전 노출 + 3번째 약 2/3 노출
   ====================================================== */

.HotSalesSection {
    overflow: hidden;
}

/* 슬라이드 영역은 거터 없이 100% */
.HotSalesSwiper {
    width: 100%;
    max-width: 100%;
    min-width: 0;
    overflow: hidden;
    box-sizing: border-box;
}

    .HotSalesSwiper .swiper-wrapper {
        align-items: stretch;
    }
    .HotSalesSwiper:not(.swiper-initialized) .swiper-wrapper {
        gap: 14px;
    }

    @media(min-width: 600px) {
        .HotSalesSwiper:not(.swiper-initialized) .swiper-wrapper {
            gap: 16px;
        }
    }
    /* 
   slide 자체는 전체 폭 기준 비율.
   시작 위치는 CSS padding이 아니라 JS slidesOffsetBefore에서 처리.
   34% 정도면 2개 + 3번째 약 2/3가 보임.
*/
    .HotSalesSwiper .HotSalesSlide {
        width: 34% !important;
        height: auto;
        box-sizing: border-box;
    }

.HotSalesCard {
    display: block;
    width: 100%;
    height: 100%;
    color: inherit;
    text-decoration: none;
}

.HotSalesThumb,
.HotSalesThumb.photoframe {
    width: 100%;
    max-width: none;
}

.HotSalesBadges {
    min-height: 1.35rem;
}

.HotSalesName {
    min-height: 2.35rem;
    word-break: keep-all;
    margin-bottom: 0.5rem;
}

    .HotSalesName .text_sm {
        display: -webkit-box;
        -webkit-box-orient: vertical;
        -webkit-line-clamp: 2;
        overflow: hidden;
    }

.HotSalesPrice {
    margin-top: 0.35rem;
}

/* ======================================================
   Responsive
   ====================================================== */

@media(max-width: 600px) {
    .HotSalesSwiper .HotSalesSlide {
        width: 34% !important;
    }

    .HotSalesBadges {
        min-height: 1.25rem;
    }

    .HotSalesName {
        min-height: 2.2rem;
    }
}

/* ======================================================
    후기
    - 실시간 리뷰 오버레이 테마 컬러 반영
    ====================================================== */

/* 후기 프레임: 4:5 고정 + 배경 blur + 전면 이미지는 contain */
.reviewframe {
    aspect-ratio: 4 / 5;
    width: 100%;
    max-width: 400px;
    background: var(--site-text-strong);
    overflow: hidden;
    position: relative;
    display: block;
    text-decoration: none;
    color: inherit;
}

    /* 배경용 이미지 레이어(blur) */
    .reviewframe.blur-bg::before {
        content: "";
        position: absolute;
        inset: 0;
        background-image: var(--bg);
        background-size: cover;
        background-position: center;
        filter: blur(4px);
        opacity: .8;
        transform: scale(1.06);
        transition: filter .2s ease, opacity .2s ease;
    }

    /* 배경 어둡게 + 테마 컬러 무드 */
    .reviewframe.blur-bg::after {
        content: "";
        position: absolute;
        inset: 0;
        background: linear-gradient( 135deg, color-mix(in srgb, var(--site-primary-dark) 34%, transparent) 0%, color-mix(in srgb, var(--site-primary) 18%, transparent) 42%, color-mix(in srgb, var(--site-secondary) 14%, transparent) 100% ), linear-gradient( to bottom, rgba(0, 0, 0, .28) 0%, rgba(0, 0, 0, .46) 100% );
        transition: background .2s ease;
    }

    /* 전면 이미지: 고객 이미지 비율 제각각 -> 전체 보이게 */
    .reviewframe > img {
        position: relative;
        z-index: 1;
        width: 100%;
        height: 100%;
        object-fit: contain;
        object-position: center;
        display: block;
        transition: transform .2s ease;
    }

    /* 텍스트 오버레이(사진 위) */
    .reviewframe .review-overlay {
        position: absolute;
        left: 0;
        right: 0;
        bottom: 0;
        z-index: 3;
        padding: .75rem .85rem;
        color: #fff;
        background: linear-gradient( 135deg, color-mix(in srgb, var(--site-primary-dark) 48%, transparent) 0%, color-mix(in srgb, var(--site-primary) 24%, transparent) 58%, color-mix(in srgb, var(--site-secondary) 18%, transparent) 100% ), rgba(0, 0, 0, .42);
        backdrop-filter: blur(4px);
        -webkit-backdrop-filter: blur(4px);
        display: flex;
        flex-direction: column;
        gap: .35rem;
        min-height: 120px;
    }

        .reviewframe .review-overlay p {
            line-height: 1.2;
        }

    /* 후기 본문 줄수 제한(미리보기) */
    .reviewframe .review-clamp {
        display: -webkit-box;
        -webkit-box-orient: vertical;
        -webkit-line-clamp: 4;
        overflow: hidden;
        margin-top: 0.3rem;
    }

    /* hover: 움직임 없이 살짝 강조 */
    .reviewframe:hover.blur-bg::before {
        filter: blur(8px);
        opacity: .75;
    }

    .reviewframe:hover.blur-bg::after {
        background: linear-gradient( 135deg, color-mix(in srgb, var(--site-primary-dark) 28%, transparent) 0%, color-mix(in srgb, var(--site-primary) 18%, transparent) 48%, color-mix(in srgb, var(--site-secondary) 16%, transparent) 100% ), linear-gradient( to bottom, rgba(0, 0, 0, .20) 0%, rgba(0, 0, 0, .34) 100% );
    }

    .reviewframe:hover > img {
        transform: scale(1.02);
    }

/* 1:1 이미지 리뷰 */
.reviewphoto {
    display: flex;
    justify-content: center;
    align-items: center;
    width: 100%;
    max-width: 400px;
    border-radius: 18px;
    overflow: hidden;
    aspect-ratio: 1 / 1;
    background: var(--site-card-soft);
}

    .reviewphoto > img {
        width: 100%;
        aspect-ratio: 1 / 1;
        transform: scale(1);
        transition: transform 550ms cubic-bezier(0.19, 1, 0.22, 1);
    }

    .reviewphoto:hover > img {
        transform: scale(1.02);
    }

.reviewMore,
.reviewbest {
    position: relative;
}

    /* 베스트리뷰 */
    .reviewbest::after {
        content: "BEST";
        position: absolute;
        top: .5rem;
        left: .5rem;
        background-image: linear-gradient(135deg, var(--site-primary-dark), var(--site-primary));
        font-size: 12px;
        line-height: 1;
        font-weight: 600;
        color: #fff;
        padding: 4px 7px;
        border-radius: var(--br_c);
        z-index: 5;
    }

    .reviewMore span {
        z-index: 2;
        position: absolute;
        display: flex;
        place-items: center;
    }

/* ======================================================
    플로팅 액션
    ====================================================== */
/* 플로팅 액션 */
.FloatingActions {
    position: fixed;
    right: calc(50% - 300px + 16px);
    bottom: 16px;
    z-index: 1300;
    display: flex;
    flex-direction: column;
    gap: 8px;
    transition: right 550ms cubic-bezier(0.19, 1, 0.22, 1);
}

    /* 원형 플로팅 버튼 */
    .FloatingActions .FloatingBtn,
    .FloatingActions .FloatingBtn.mud-button-root {
        width: 50px;
        min-width: 50px !important;
        height: 50px;
        min-height: 50px;
        padding: 0 !important;
        margin: 0 !important;
        border: 0 !important;
        /*
       기본은 완전 원형.
       hover 시 오른쪽 아래만 0으로 바꿔 역 쉼표 느낌.
    */
        border-radius: 50% !important;
        overflow: hidden;
        background: linear-gradient( 135deg, var(--site-primary-dark) 0%, var(--site-primary) 72%, var(--site-secondary) 100% ) !important;
        color: var(--site-surface) !important;
        box-shadow: 0 8px 18px rgba(0, 0, 0, 0.22), 0 2px 6px rgba(0, 0, 0, 0.16), inset 0 1px 0 rgba(255, 255, 255, 0.22);
        transition: border-radius 260ms cubic-bezier(0.19, 1, 0.22, 1), transform 180ms ease, box-shadow 180ms ease, filter 180ms ease;
    }

        /* MudButton 내부 정렬 */
        .FloatingActions .FloatingBtn .mud-button-label {
            width: 100%;
            height: 100%;
            min-width: 0;
            min-height: 0;
            display: flex !important;
            flex-direction: column !important;
            align-items: center !important;
            justify-content: center !important;
            gap: 3px !important;
            padding: 0 !important;
            margin: 0 !important;
        }

        /* hover: 오른쪽 아래 곡률을 0으로 */
        .FloatingActions .FloatingBtn:hover,
        .FloatingActions .FloatingBtn:focus-visible {
            border-radius: 50% 50% 10% 50% !important;
            transform: translateY(-2px);
            filter: brightness(1.04);
            box-shadow: 0 12px 24px rgba(0, 0, 0, 0.26), 0 4px 10px rgba(0, 0, 0, 0.18), inset 0 1px 0 rgba(255, 255, 255, 0.28);
        }

        /* active */
        .FloatingActions .FloatingBtn:active {
            transform: translateY(0);
            box-shadow: 0 6px 14px rgba(0, 0, 0, 0.22), 0 2px 5px rgba(0, 0, 0, 0.16), inset 0 1px 0 rgba(255, 255, 255, 0.18);
        }

        /* 내부 아이콘 */
        .FloatingActions .FloatingIcon,
        .FloatingActions .mud-icon-root.FloatingIcon,
        .FloatingActions .FloatingBtn .mud-icon-root,
        .FloatingActions .FloatingBtn .fa,
        .FloatingActions .FloatingBtn .far,
        .FloatingActions .FloatingBtn .fas {
            font-size: 14px !important;
            width: 14px !important;
            height: 14px !important;
            min-width: 14px !important;
            line-height: 1 !important;
            color: inherit !important;
        }

    /* 내부 텍스트 */
    .FloatingActions .FloatingText {
        margin: 0 !important;
        padding: 0 !important;
        color: inherit;
        font-size: 10px;
        font-weight: 700;
        line-height: 1;
        letter-spacing: -0.04em;
    }

/* 모바일 */
@media(max-width: 600px) {
    .FloatingActions {
        right: 16px;
        bottom: 16px;
        gap: 7px;
    }

        .FloatingActions .FloatingBtn,
        .FloatingActions .FloatingBtn.mud-button-root {
            width: 46px;
            min-width: 46px !important;
            height: 46px;
            min-height: 46px;
        }

            .FloatingActions .FloatingIcon,
            .FloatingActions .mud-icon-root.FloatingIcon,
            .FloatingActions .FloatingBtn .mud-icon-root,
            .FloatingActions .FloatingBtn .fa,
            .FloatingActions .FloatingBtn .far,
            .FloatingActions .FloatingBtn .fas {
                font-size: 13px !important;
                width: 13px !important;
                height: 13px !important;
                min-width: 13px !important;
            }

        .FloatingActions .FloatingText {
            font-size: 9.5px;
        }
}

/* 팔로우 Follow US */
.SnsGrid .mud-link.squircle {
    background-image: linear-gradient(to bottom, var(--site-card-soft), var(--site-surface), var(--site-card-soft));
    border: 1px solid var(--site-border);
}

    .SnsGrid .mud-link.squircle > img {
        width: 90%;
        max-width: 130px;
        transition: all 550ms cubic-bezier(0.19, 1, 0.22, 1);
    }

    .SnsGrid .mud-link.squircle:hover > img.squircle {
        width: 100%;
    }

/* 마이숏폼다이얼로그 */
.MyShortformDialog .mud-dialog-content {
    padding: 0 !important;
}

/* 게시판동영상 */
.MyVideoWrap {
    width: 100%;
}

.MyVideoWrapM {
    width: 100% !important;
    margin: 0 auto;
}

/* 게시판동영상 쇼츠 */
iframe.ql-video {
    display: block;
    width: 100%;
    height: auto;
    margin: 0 auto;
    aspect-ratio: 9 / 16;
}

/* 게시판동영상 쇼츠 PC일때 맥스 높이 */
iframe.ql-videoM {
    max-height: 80vh;
}

.MyVideoCard {
    width: 100%;
    height: 100%;
    overflow: hidden;
    box-sizing: border-box !important;
    background: var(--site-surface);
    border: 1px solid var(--site-border);
}

.MyVideoCardMedia {
    aspect-ratio: 16 / 9;
    width: 100%;
    margin-top: -1px;
    border-radius: var(--mud-default-borderradius);
    background: var(--site-card-soft);
}

    .MyVideoCardMedia img {
        height: inherit;
    }

.MyVideoCard .txt-over-line {
    min-height: 32px;
    word-break: normal;
}

.Notice-Paper .mud-typography-body1 {
    font-size: .9rem;
}

.Notice-Paper ul {
    margin: 1rem 1rem 2rem 2.5rem;
}
/*마이로그인*/
.MyLoginBtn {
    display: flex;
    justify-content: center;
    align-items: center;
    border-radius: var(--br_r) !important;
    background-color: var(--yellow) !important;
}

    .MyLoginBtn:hover, .MyLoginBtn:active {
        background-color: #ffdb00 !important;
    }
