﻿.video-wrap {
    position: relative;
    width: 100vw;
    height: 100vh;
    max-width: 600px;
    aspect-ratio: 9/16;
    overflow: hidden;
}

.video-bg {
    /*    inset: 0;*/
    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(--yellow) !important;
}

    .MyLoginBtn:hover, .MyLoginBtn:active {
        background-color: #ffdb00 !important;
    }

.bubble-bottom {
    --size: 15rem;
    --bubble: #f6fafc;
    display: flex;
    justify-content: center;
    align-items: center;
    margin: 0 auto .5rem;
    width: var(--size);
    background: var(--bubble);
    border-radius: var(--br_r);
    position: relative;
}

    .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 #efefef;
}
/*미니아이콘*/
.mini-icon {
    padding: 3px 8px;
    border-radius: 4px;
    border-radius: 6px;
    line-height: .8 !important;
    overflow: hidden;
}
/*텍스트오버 쩜쩜쩜*/
.txt-over {
    overflow: hidden;
    text-overflow: ellipsis;
    width: 100%;
    white-space: nowrap;
}
/*텍스트오버라인 쩜쩜쩜*/
[class*="text_over_line"] {
    /*word-break: break-word;    word-break: keep-all; */
    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);
    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 .fal {
    transition: all 500ms cubic-bezier(0, 0, 0.2, 1) 0ms;
}

.FillBtn:hover .fal,
.FillBtn.active .fal {
    font-weight: 900 !important;
}

.mud-tab.mud-tab-active {
    background-color: #594ae212;
}
/*기본버튼 오버 이펙트*/
.hover {
    background-color: var(--point);
    position: relative !important;
    overflow: hidden;
    min-width: fit-content !important;
}

    .hover:hover {
        background-color: #0b4fc7 !important;
        transform: translateY(-1px);
        box-shadow: 0 10px 20px rgba(0, 0, 0, 0.2);
    }

    .hover:active {
        transform: translateY(0px);
        box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
    }
/*흰버튼*/
.WhiteBtn {
    background-color: var(--mud-palette-white) !important;
    /*폰트색상은 버튼에 클래스로 직접지정*/
}

    .WhiteBtn:hover,
    .WhiteBtn.active {
        --mud-ripple-color: var(--mud-palette-primary) !important;
    }
/*기본버튼 배경 이펙트*/
.hoverEffect {
    position: relative !important;
    overflow: hidden;
    min-width: fit-content !important;
}

    .hoverEffect:after {
        background: var(--white);
        content: "";
        height: 155px;
        left: -130%;
        opacity: 0.2;
        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(--mud-palette-tertiary-darken) !important;
    --mud-ripple-color: var(--mud-palette-tertiary) !important;
    background-color: var(--mud-palette-tertiary-hover) !important;
    transition: all 550ms cubic-bezier(0.19, 1, 0.22, 1);
}
/* Gradient Buttons */
.gradient-btn {
    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.3);
}

    .gradient-btn:hover {
        transform: translateY(-3px) scale(1.05);
        box-shadow: 0 15px 30px rgba(0, 0, 0, 0.3);
    }


/* 샵대문 */
.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;
    }
/*일정안내*/
.Schedule .DayCard {
    position: relative;
    overflow: visible;
    padding: 1rem 1.25rem .65rem;
    border-radius: var(--br_l);
}

    .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;
    }

    .Schedule .DayCard::before {
        content: "";
        position: absolute;
        inset: 0;
        border-radius: inherit;
        z-index: 1;
        pointer-events: none;
    }
/*라이브입장섹션*/
#LiveEntrance {
    background: #f6fafc;
    background: linear-gradient(90deg, #f6fafc 0%, #f8f6ff 100%);
}

    #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: rgb(0, 0, 0, 0.50);
        }

.photo {
    aspect-ratio: 4 / 5;
}
/*.photo2 {
    aspect-ratio: 9 / 16;
    max-height:345px;
}*/
/* 숏폼 리스트 - 포토프레임*/
.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);
    }

    .photoframe.blur-bg::after {
        content: "";
        position: absolute;
        inset: 0;
        background: rgba(0,0,0,.6);
    }
    /*리스트 이미지*/
    .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 rgba(255,255,255,.22);
        background: rgba(0,0,0,.45);
        backdrop-filter: blur(6px);
        display: grid;
        place-items: center;
        pointer-events: none;
        transition: transform .15s ease, background .15s ease, border-color .15s ease;
        box-shadow: none;
    }

        .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); /* 왼쪽 border(가로) */
        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,.92);
        transform: translateX(calc(var(--badge) * 0.03));
    }
    /*  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);
    }

    .photoframe:hover.blur-bg::after,
    .photoframe:focus-visible.blur-bg::after {
        background: rgba(0,0,0,.25);
    }
    /*  배지/아이콘도 같이 활성화 */
    .photoframe:hover .play-badge,
    .photoframe:focus-visible .play-badge {
        background: rgba(255,255,255,.10);
        border-color: rgba(255,255,255,.35);
        filter: brightness(1.05);
    }

        .photoframe:hover .play-badge::before,
        .photoframe:focus-visible .play-badge::before {
            box-shadow: 0 3px 10px rgba(0,0,0,.45);
        }
    /* 키보드 접근성 포커스 링 */
    .photoframe:focus-visible {
        outline: 2px solid rgba(255,255,255,.55);
        outline-offset: 3px;
    }
/*후기*/
/* 후기 프레임: 4:5 고정 + 배경 blur + 전면 이미지는 contain */
.reviewframe {
    aspect-ratio: 4 / 5;
    width: 100%;
    max-width: 400px; /* 필요하면 */
    background: #222;
    overflow: hidden;
    position: relative;
    display: block; /* a 태그 */
    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: rgba(0,0,0,.35);
        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: rgba(0,0,0,.45);
        /* 살짝 유리 느낌(지원되는 브라우저에서만) */
        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; /* 2~5로 조절 */
        overflow: hidden;
        margin-top: 0.3rem;
    }
    /* hover: 움직임 없이 살짝 강조 (원하면 유지/삭제) */
    .reviewframe:hover.blur-bg::before {
        filter: blur(8px);
        opacity: .75;
    }

    .reviewframe:hover.blur-bg::after {
        background: rgba(0,0,0,.25);
    }

    .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;
}

    .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(var(--grd-direction-rb), var(--grd-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; /* AppBar/Drawer 위로 오게 */
    display: flex;
    flex-direction: column;
    gap: 5px;
    filter: drop-shadow(2px 4px 4px hsl(0deg 0% 0% / 0.25));
    transition: right 550ms cubic-bezier(0.19, 1, 0.22, 1);
}

@media(max-width: 600px) {
    .FloatingActions {
        right: 16px;
    }
}

.FloatingActions .FloatingBtn {
    padding: 2px !important;
    background-image: linear-gradient(to bottom, rgb(255, 255, 255, 0.45), rgb(255, 255, 255, 0.30), rgb(255, 255, 255, 0.45));
}
    /* 아이콘 위 / 텍스트 아래 강제 */
    .FloatingActions .FloatingBtn .mud-button-label {
        display: flex !important;
        flex-direction: column !important;
        align-items: center !important;
        justify-content: center !important;
        gap: 4px !important;
        width: 100%;
        font-weight: 200;
    }
/* p 기본 마진 때문에 틀어지는 거 방지 */
.FloatingActions p {
    margin: 2px 0 !important;
    line-height: 1.1;
}
/* fallback (모든 브라우저) 스퀘클 */
.mud-button-root.squircle, img.squircle, .mud-link.squircle, a.squircle {
    border-radius: 18px;
    overflow: hidden;
    clip-path: url(#SquircleClip-3); /*스퀘클*/
    aspect-ratio: 1 / 1;
}
/*팔로우 Follow US*/
.SnsGrid .mud-link.squircle {
    background-image: linear-gradient(to bottom, #efefef, #fefefe, #efefef);
}

    .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%
    }
/*푸터*/
.mud-grid.MyFooter > .mud-grid-item {
    font-size: 0.8rem !important;
    line-height: 1;
    padding: .5rem 0;
}

.mud-grid.MyFooter .mud-grid-item-xs-9 {
    font-weight: 500;
}
/*마이숏폼다이얼로그*/
.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;
    /*aspect-ratio: 16 / 9;*/
}
/*게시판동영상 쇼츠 PC일때 맥스 높이*/
iframe.ql-videoM {
    max-height: 80vh;
}

.MyVideoCard {
    width: 100%;
    height: 100%;
    overflow: hidden;
    box-sizing: border-box !important
}

.MyVideoCardMedia {
    aspect-ratio: 16 / 9;
    width: 100%;
    margin-top: -1px;
    border-radius: var(--mud-default-borderradius);
}

    .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;
}
