@charset "utf-8";

:root {
    --block-margins-m: clamp(2rem, 3vw, 3rem);
    --block-margins-s: clamp(1rem, 2vw, 2rem);
    --block-margins-ss: clamp(0.4rem, 1vw, 0.7rem);
    --price-size: clamp(1.35rem, 1.6vw, 1.6rem);
    --option-border-color: #decfa6;
    --option-border-color-crystal: #b5ccee;
    --option-border: clamp(0.35rem, 1.2vw, 0.5rem);
    --item-gap: 0;
    /*品項的間距*/
    --swiper-padding: 0.3rem;

}

body.subscribe .option .price span:nth-child(1) {
    font-size: clamp(1.1rem, 1.7vw, 1.4rem);
    padding-right: 2%;
}

@media screen and (min-width: 768px) {
    .subscribe .product_box {
        /* width: fit-content; */
        width: 100%;
        margin: 0 auto;
        display: flex;
        flex-direction: column;
        justify-content: center;
        align-items: center;
    }

    .subscribe.step1 .option {
        border: none;
    }

    @media (hover: hover) {


        /* hover效果同選中的效果 */
        .subscribe.step1 .option:hover {
            outline: var(--option-border) var(--option-border-color) solid;
        }

        .subscribe.step1 .option.crystal:hover {
            outline: var(--option-border) var(--option-border-color-crystal) solid;
        }

    }
}

.subscribe .title_name p {
    line-height: 1.7;
}

/*種類樣式設定*/
.subscribe.step1 .product_block {
    width: 100%;
}

.subscribe.step1 .product_block.subscribe {
    margin-bottom: 1rem;
}

.subscribe.step1 .product_block .product_box {
    width: 100%;
}

.subscribe.step1 .product_block .swiper-container {
    width: 100%;
    position: relative;
}

.subscribe.step1 .product_block .swiper-container .swiper {
    width: 100%;
    padding: var(--swiper-padding);
    padding-top: 0;
}

.subscribe.step1 .type_box {
    position: relative;
    display: flex;
    width: 100%;
    /* width: calc(100% - var(--swiper-padding)*2); */
    /*減去.swiper的內距*/
    display: flex;
    justify-content: space-between;
    align-items: center;
    transition: transform 0.3s ease;
}

.subscribe.step1 .label {
    width: 100%;
    display: flex;
    font-size: var(--normal-btn-size);
    font-weight: 600;
    text-align: center;
    justify-content: center;
    flex-direction: column;
    gap: var(--item-gap);
    margin-bottom: calc(var(--block-margins-s)*0.7);
}

.subscribe.step1 .product_block.subscribe .label.subscription {
    color: #b49353;
}

.subscribe.step1 .product_block.single .label.single {
    color: #4f7dc1;
}

.subscribe.step1 .type_box .subscription {
    width: 100%;
}

.subscribe.step1 .type_box .single {
    width: 100%;
}

.subscribe.step1 .label.subscription::after {
    background-color: #b49353;
}

.subscribe.step1 .label.single::after {
    background-color: #4f7dc1;
}

.subscribe.step1 .label.subscription::after,
.subscribe.step1 .label.single::after {
    content: "";
    position: relative;
    display: block;
    /* margin-top: calc(var(--block-margins-ss) * 0.5); */
    width: 100%;
    height: 4px;
}

.subscribe .option_box {
    width: 100%;
    display: flex;
    justify-content: flex-start;
    gap: var(--item-gap);
    flex-wrap: nowrap;
    margin-bottom: calc(var(--block-margins-s) * 0.7);
    margin-top: 0;
}

.subscribe.step1 .product_block.subscribe .option_box,
.subscribe.step1 .product_block.single .option_box .option {
    margin-top: 0.2rem;
}

.subscribe.step1 .product_block.subscribe .option_box>.option,
.subscribe.step1 .product_block.single .swiper-slide {
    aspect-ratio: unset !important;
    height: auto;
    box-sizing: border-box;
    margin-bottom: 0;
    display: flex;
    /* 讓內部可以撐滿 */
    flex-direction: column;
}

.subscribe.step1 .product_block.single .swiper-slide .option {
    width: 100%;
    aspect-ratio: unset !important;
}

/*品項高度設定*/
#single_swiper .swiper-wrapper {
    align-items: stretch;
    /* Swiper wrapper 本來就是 flex，這句是關鍵 */
}

#single_swiper .swiper-slide .option.crystal {
    flex: 1;
    /* 吃掉多的高度 */
    display: flex;
    flex-direction: column;
}

/*底部價格區推到底*/
/*操作區*/
.crystal.step1 .swiper-container .swiper-button-next,
.crystal.step1 .swiper-container .swiper-button-prev {
    --swiper-button-hover: 45%;
    width: calc(var(--base-font-size) * 1.2);
    height: auto;
    display: block;
    text-decoration: none;
    text-align: center;
    font-size: 0;
    line-height: 0;
    color: inherit;
    transition: all 0.4s ease;
    cursor: pointer;
    max-width: 45px;
    top: initial;
    bottom: 50%;
    transition: all 0.3s ease;
}

/*swiper頁碼設定*/
.crystal.step1 .swiper-pagination {
    position: relative;
}

.crystal.step1 .swiper-pagination-bullet {
    width: clamp(11px, 1.5vw, 14px);
    aspect-ratio: 1/1.3;
    background: #a1a1a1;
    cursor: pointer;
    position: relative;
    z-index: 3;
    transform: scaleX(1);
    clip-path: polygon(0 50%, 50% 0, 100% 50%, 50% 100%);
    height: auto;
    opacity: var(--swiper-pagination-bullet-inactive-opacity, .4);
}

.crystal.step1 .swiper-pagination-bullet-active {
    opacity: var(--swiper-pagination-bullet-inactive-opacity, 1);
    background-color: var(--basic-gold);
}

.crystal.step1 .single .swiper-pagination-bullet-active {
    background-color: var(--blue);
}

#subscribe_swiper .swiper,
#single_swiper .swiper {
    overflow: hidden !important;
}

.crystal.step1 .swiper-button-disabled {
    /*沒有項目的時候要隱藏箭頭*/
    opacity: 0;
    cursor: not-allowed;
    pointer-events: none;
}


/*⭣⭣⭣⭣⭣⭣⭣⭣⭣期間限定標籤設定⭣⭣⭣⭣⭣⭣⭣⭣⭣*/
.subscribe .option.limited {
    position: relative;
}

.crystal.step1.subscribe .option,
.crystal.subscribe .left_block .option {
    overflow: visible !important;
}

.subscribe .option.limited::after,
.subscribe .option.limited::before {
    position: absolute;
    width: clamp(80px, 10vw, 109px);
    aspect-ratio: 109/95;
    pointer-events: none;
}

.subscribe.step2 .option.limited::after,
.subscribe.step2 .option.limited::before {
    position: absolute;
    width: clamp(90px, 12vw, 120px);
}

.subscribe .option.limited::after {
    content: "";
    left: -1.4%;
    top: -1%;
    z-index: 400;
    background: url(../images/store/limited_tag.png) no-repeat left top;
    background-size: contain;
}

.subscribe .option.limited::before {
    content: "期間限定";
    position: absolute;
    left: 0;
    top: 0;
    z-index: 555;
    font-family: "Noto Sans TC", 'Microsoft JhengHei', Helvetica, 'Maven Pro', 'Droid Sans', 'Myriad Pro', Verdana, Geneva, sans-serif;
    display: grid;
    place-items: center;
    font-size: clamp(16.5px, 1.3vw, 17.2px);
    font-weight: 400;
    color: #fff;
    transform: rotate(-40deg) translate(-44%, -7.5%);
    transform-origin: 0 0;
}

.subscribe.step2 .option.limited::before {
    font-size: 18px;
}

@media screen and (max-width: 1000px) {
    .subscribe.step1 .option.limited::after {
        left: -3%;
        top: -1.5%;
    }

    .subscribe.step1 .option.limited::before {
        font-size: clamp(13px, 1.7vw, 15px);
        transform: rotate(-40deg) translate(-46%, -9%);
    }

    .subscribe.step2 .option.limited::after,
    .subscribe.step2 .option.limited::before {
        width: clamp(80px, 17vw, 109px);
    }

    .subscribe .option.limited::before {
        font-size: clamp(16px, 1.8vw, 18px);
    }
}

@media screen and (max-width: 850px) {

    .subscribe.step2 .option.limited::after,
    .subscribe.step2 .option.limited::before {
        width: 95px;
    }

    .subscribe.step2 .option.limited::before {
        font-size: 16px;
        transform: rotate(-40deg) translate(-44%, -5%);
    }
}

@media screen and (max-width: 767px) {

    .subscribe.step1 .option.limited::after,
    .subscribe.step1 .option.limited::before {
        position: absolute;
        width: 90px;
    }

    .subscribe.step1 .option.limited::after {
        left: -2%;
        top: -1%;
    }

    .subscribe.step1 .option.limited::before {
        font-size: 15px;
        transform: rotate(-40deg) translate(-45%, -7%);
    }
}

@media screen and (max-width: 499px) {

    .subscribe.step1 .option.limited::after,
    .subscribe.step1 .option.limited::before {
        width: clamp(85px, 20vw, 100px);
    }

    .subscribe.step1 .option.limited::after {
        left: -1%;
        top: -0.5%;
    }

    .subscribe.step1 .option.limited::before {
        font-size: clamp(13px, 3.2vw, 16px);
        transform: rotate(-40deg) translate(-44%, -5.5%);
    }

}

@media screen and (max-width: 430px) {
    .subscribe.step1 .option.limited::after {
        left: -2.1%;
        top: -1%;
    }

    .subscribe.step1 .option.limited::before {
        font-size: 13px;
    }

    .subscribe.step1 .option.limited::before {
        transform: rotate(-40deg) translate(-44%, -8%);
    }
}

@media screen and (max-width: 300px) {

    .subscribe.step1 .option.limited::after,
    .subscribe.step1 .option.limited::before {
        width: clamp(60px, 26vw, 75px);
    }

    .subscribe.step1 .option.limited::after {
        left: -2%;
        top: -1%;
    }

    .subscribe.step1 .option.limited::before {
        font-size: 4.2vw;
        transform: rotate(-40deg) translate(-44%, -6%);
    }

    .subscribe.step2 .option.limited::after,
    .subscribe.step2 .option.limited::before {
        width: 48%;
    }

    .subscribe.step2 .option.limited::before {
        font-size: 5.5vw;
        transform: rotate(-40deg) translate(-44%, -6%);
    }
}

/*⭡⭡⭡⭡⭡⭡⭡⭡⭡⭡⭡⭡期間限定標籤設定⭡⭡⭡⭡⭡⭡⭡⭡⭡⭡⭡⭡⭡⭡⭡*/

.subscribe.step2 .left_block .option,
.subscribe.step1 .option {
    outline: var(--option-border) solid #fff;
    outline-offset: -5px;
}

.subscribe.step2 .left_block .option,
.subscribe.step1 .subscribe .option,
.subscribe.step1 .single .option {
    border: none;
    outline-offset: -5px;
    /* 微調負值做「內縮」 */
    position: relative;
    overflow: visible;
    filter: drop-shadow(var(--box-shadow-light-form));
    transition: all 0.3s ease;
}

.subscribe.step1 .option.selected {
    outline: var(--option-border) var(--option-border-color) solid;
}

.subscribe.step1 .option.crystal.selected {
    outline: var(--option-border) var(--option-border-color-crystal) solid;
}

/*水晶選項的類別以偽元素撰寫*/
@media screen and (min-width: 768px) {
    .subscribe.step1 .option_box .option.crystal {
        position: relative;
    }

    .subscribe.step1 .option_box .option.crystal {
        overflow: visible;
    }


}


.subscribe.step2 .left_block .option {
    justify-content: center;
}

.subscribe.step2 .left_block {
    aspect-ratio: unset !important;
    width: 28%;
}

.subscribe .option .plan {
    width: 100%;
    width: clamp(130px, 15vw, 190px);
    aspect-ratio: 325/318;
    margin: calc(var(--block-margins-s) * 0.8) calc(var(--block-margins-s) * 0.8) calc(var(--block-margins-s) * 0.7);
}

.subscribe.step2 .option .plan {
    width: 65%;
}

.subscribe .option .plan img {
    width: 100%;
}

.subscribe .banner_box {
    width: 80%;
    display: flex;
    justify-content: center;
    gap: 4%;
    margin: var(--block-margins-s) auto 0;
}

.subscribe .banner_box div {
    margin-top: var(--block-margins-s);
}

.subscribe .banner_box img {
    width: 100%;
}

.subscribe .option .price {
    margin: 4% auto 4%;
    display: flex;
    justify-content: center;
    gap: calc(var(--block-margins-ss)*0.8);
    flex-wrap: wrap;
    min-height: 3rem;
    line-height: 1;
    background: none;
}

.subscribe .option .price.crystal {
    margin: 0 auto 0;
    min-height: unset;
}

.subscribe .option.crystal .price {
    line-height: 1.1;
    flex-wrap: wrap;
}

.subscribe .option.crystal .bottom_box .price .title {
    width: 100%;
}

.subscribe .option .price>.original span {
    text-decoration: line-through;
    color: var(--gray02);
    font-weight: 400;
    font-size: calc(var(--price-size) * 0.8);
}

.subscribe .option .price>.sale span,
.subscribe .option .price {
    color: var(--gray01);
    font-weight: 700;
    font-size: var(--price-size);
}

.subscribe.step1 .option.crystal .price .crystal::before {
    content: "";
    display: inline-block;
    width: clamp(0.8rem, 1.25vw, 1rem);
    aspect-ratio: 155/200;
    background: url("../store/images/common/crystal.png") no-repeat center / contain;
    margin-right: 3px;
    vertical-align: middle;
    transform: translateY(-0.15rem);
}

body.crystal.subscribe .option .price span:nth-child(1) {
    padding: 0;
}

/* 選中方案 */
.subscribe .option.selected {
    border-color: #decfa6;
}

/* 水晶方案 + 選中 */
.subscribe .option.crystal.selected {
    border-color: #b5ccee;
}

/*按鈕設定*/

.subscribe .btn_box {
    gap: var(--block-margins-s);
}

.subscribe main .all .content .btn_box .btn.crystal {
    background: var(--blue-gradient);
    display: none;
}

/*推薦碼區塊*/
.subscribe .code_block .content {
    width: auto;
    padding: 2.5% 3%;
    display: flex;
    justify-content: center;
    align-items: center;
    flex-wrap: wrap;
    margin: 0 auto;
}

.subscribe .code_block .content input[type="text"] {
    width: 45%;
    text-align: left;
    /* min-width: 250px; */
    font-size: var(--normal-option-size);
    margin: 0;
    padding: 0.5rem;
    color: #333;
    border: 1px solid #ccc;
    border-radius: 4px;
}

.subscribe .code_block .button.s {
    width: fit-content;
    margin: 0 0 0 .5rem;
    padding: .2rem .4rem;
    background: linear-gradient(to bottom, #f1f1f1 1%, #d7d7d7 100%);
    font-size: clamp(15px, 1.5vw, 17px);
    font-weight: initial;
    color: var(--basic-gray);
    text-align: center;
    border: 1px solid #ccc;
    border-radius: 4px;
    cursor: pointer;
    white-space: nowrap;
}

.code_block .info {
    width: fit-content;
    margin-left: .5rem;
    padding-top: .25rem;
    white-space: nowrap;
    display: flex;
    line-height: 1.2;
}

.code_block .error {
    color: #af3939;
}

.code_block .ok {
    color: #1272d1;
}

/*注意事項區塊*/
.subscribe .notice_list {
    width: 100%;
    text-align: left;
    font-size: 1rem;
    border-top: 1px solid;
    border-color: var(--gray03);
    margin-top: var(--block-margins-s);
}

.subscribe .notice_list ul {
    line-height: 1.8;
}

.subscribe .notice_list h1 {
    font-size: calc(var(--normal-txt-size)*1.1);
    display: flex;
    align-items: center;
    margin-top: 1rem;
    margin-bottom: 0.5%;
}

.subscribe .notice_list h1::before {
    content: '';
    display: inline-block;
    width: clamp(1.5rem, 2.4vw, 1.7rem);
    height: auto;
    aspect-ratio: 1/1;
    background: url('../images/svg/notice.svg') no-repeat center center;
    background-size: contain;
    margin-right: 0.2rem;
    transform: translateY(.07em);
}

.subscribe .notice_list ul li {
    display: flex;
    align-items: flex-start;
    gap: 0.2em;
    /* 跟文字比例走 */
    font-size: calc(var(--normal-txt-size)*0.9);
    /* 明確定義基準 */
    line-height: 1.8;
}

.subscribe .notice_list ul li::before {
    content: '';
    flex: 0 0 auto;
    width: 0.8em;
    /* 跟文字同步 */
    height: 0.8em;
    margin-top: 0.55em;
    /* 微調垂直位置 */

    background-color: var(--gray01);
    -webkit-mask-image: url('../images/svg/star.svg');
    mask-image: url('../images/svg/star.svg');
    -webkit-mask-repeat: no-repeat;
    mask-repeat: no-repeat;
    -webkit-mask-position: center;
    mask-position: center;
    -webkit-mask-size: contain;
    mask-size: contain;
}



@media (max-width: 900px) {
    .subscribe .option .price {
        flex-wrap: wrap;
        gap: 0;
        min-height: 3.4rem;
        justify-content: center;
        align-items: center;
    }

    .subscribe .option .price>div {
        width: 100%;
        line-height: 1.2;
    }
}

@media (max-width: 850px) {
    .crystal.step2 .left_block>.option {
        width: 100%;
        max-width: 200px;
    }

    .subscribe.step1 .option {
        margin: 0;
    }

    .subscribe.step2 .option .plan {
        width: 75%;
    }
}


@media (max-width: 767px) {

    :root {
        --price-size: clamp(1.1rem, 1.6vw, 1.6rem);
    }

    .subscribe .banner_box {
        width: 80%;
    }

    .subscribe.step1 .option .plan {
        width: clamp(115px, 21vw, 200px);
        margin: var(--block-margins-s) auto 0;
    }

    .subscribe.step1 .option {
        /* width: clamp(180px, 30vw, 230px); */
        /* min-width: 100px; */
        margin-bottom: calc(var(--block-margins-s) * 0.8);
    }

    .subscribe .banner_box {
        flex-wrap: wrap;
    }

    .subscribe .option {
        border: var(--border-wt-style);
    }

    .subscribe .option:hover {
        border-color: #decfa6;
    }

    .subscribe .option.crystal:hover {
        border-color: #b5ccee;
    }

    .subscribe.step1 .option {
        margin: 0;
    }

    .subscribe.step1 #single_swiper .option {
        min-width: 0;
    }

    /* 隱藏滾動條 */
    .subscribe.step1 .product_box::-webkit-scrollbar {
        display: none;
    }

    /*重設文字尺寸*/
    body.subscribe .option .price span:nth-child(1) {
        font-size: calc(var(--normal-txt-size)*1.05);
    }
}

@media (max-width: 499px) {
    .subscribe.step1 .option .plan {
        width: clamp(100px, 32vw, 140px)
    }
}

@media (max-width: 480px) {

    .subscribe.step1 .option .bottom_box {
        padding: 0;
    }
}

@media (max-width: 430px) {
    .subscribe .code_block .content input[type="text"] {
        flex: 1 1 auto;
    }

    .code_block .info {
        width: 100%;
        display: flex;
        text-align: left;
    }

    .code_block .info span {
        width: fit-content;
    }
}

@media (max-width: 300px) {
    .subscribe .banner_box {
        width: 100%;
    }

    .subscribe .banner_box div {
        margin-top: 0
    }

    .subscribe .banner_box div:first-child {
        margin-top: var(--block-margins-s);
    }

    .subscribe.step1 .option .plan {
        width: 37vw;
    }

    .subscribe.step2 .option .plan {
        width: 55vw;
        padding-top: 0.8rem;
    }

    .subscribe.step1 .option {
        width: clamp(120px, 70vw, 200px);
    }

}