/* ------------------------------------ */
.btn.disabled,
.btn:disabled {
    cursor: not-allowed;
    pointer-events: none;
}

.section {
    position: relative;
    padding: 80px 45px;
    content-visibility: auto;

    background-color: #eef0f2;
}
@media (max-width: 576px) {
    .section {
        padding: 30px 15px;
    }
}


/* ------------------------------------ */
.cart-main.empty {
    height: 50vh;
}
.cart-main.success {
    display: flex;
    align-items: center;
    justify-content: center;
}
.cart-main * {
    /* font-size: 1rem; */
    /* background-color: #ccc5; */
    /* box-sizing: border-box; */
}
.cart-main .btn {
    line-height: 1;
}
.cart-main .form-group {
    margin-bottom: unset;
}
.cart-main .form-control {
    border-radius: 0;
    height: calc(1.5em + 0.75rem + 8px);
    height: 40px;
}
.cart-main .form-control:focus {
    -webkit-box-shadow: unset;
    box-shadow: unset;
    border-color: var(--c-01);
}
.cart-main input[type=number]::-webkit-outer-spin-button,
.cart-main input[type=number]::-webkit-inner-spin-button {
    -webkit-appearance: none;
}
.cart-main textarea {
    resize: vertical;
    field-sizing: content;
    min-height: calc(14px + 19.4px * 3) !important;
}
@media (max-width: 768px) {
    .cart-main.empty {
        height: 60vh;
    }
}

/* ------------------------------------ */
/* 購物車(佈局) */
.cart-col {
    position: relative;
    display: grid;
    grid-template-columns: minmax(0, 11fr) minmax(0, 5fr);
    gap: 20px;
}
.cart-col .cart-col-1,
.cart-col .cart-col-2 {
    /* background-color: #ffffff; */
    border-radius: 10px;
    /* padding: 15px; */
}
.cart-col .cart-col-1 {

}
.cart-col .cart-col-2 {
    position: sticky;
    top: calc(70px + 20px);
    width: 100%;
}
@media (max-width: 992px) {
    .cart-col {
        display: flex;
        flex-direction: column;
        gap: 20px;
    }
}


/* ------------------------------------ */
/* 購物車 */
.cart-list {
    padding: 30px 0 50px;
    min-height: 65vh;
}
.price::before { content: 'NT$ '; }
.price.sub::before { content: '- NT$'; }
.en .price::before { content: 'US$ '; }
.en .price.sub::before { content: '- US$'; }
.price-total {
    font-size: 1.8rem;
    color: var(--c-01);
    font-weight: 600;
}
.price-subtotal {
    font-size: 1.4rem;
    font-weight: 600;
}



/* ------------------------------------ */
/* .cart-shopping */
.cart-shopping {
    /* min-height: 65vh; */
    padding: 25px 25px;
    border-radius: 10px;
    background-color: #fff;
}
.cart-shopping-title {
    margin-bottom: 34px;
    color: #15191d;
    font-size: 1.42rem;
    font-weight: 700;
    line-height: 1.4;
}
.cart-shopping-header {
    /* margin-bottom: 10px; */
}
.cart-shopping-header .cart-shopping-item {
    min-height: auto;
    font-size: 1rem;
    padding: 0 0 12px;
    border-bottom: 1px solid #e7ebef;
    color: #8a949e;
    font-weight: 500;
}
.cart-shopping-body .cart-shopping-item {
    padding: 15px 0;
    border-bottom: 1px dashed #e4e8ec;
}
.cart-shopping-body .cart-shopping-item:last-child {
    /* border-bottom: unset; */
    border-bottom: 1px solid #e4e8ec;
}
.cart-shopping-item {
    display: grid;
    align-items: center;
    grid-template-columns: minmax(0, 84px) minmax(180px, 1fr) minmax(0, 100px) minmax(0, 130px) minmax(0, 100px);
    column-gap: 15px;
    background-color: #ffffff;
}
.cart-shopping-header .shopping-item-image,
.cart-shopping-header .shopping-item-info,
.cart-shopping-header .shopping-item-price,
.cart-shopping-header .shopping-item-qty,
.cart-shopping-header .shopping-item-subtotal,
.cart-shopping-header .shopping-item-active {
    line-height: 1.2;
}
.cart-shopping-header .shopping-item-image,
.cart-shopping-body .shopping-item-image {
    text-align: left;
}
.cart-shopping-body .shopping-item-image {
    display: block;
    width: 78px;
    height: 78px;
    border: 0;
    border-radius: 7px;
    object-fit: cover;
    background-color: #e9efea;
    border: 1px solid #e4e8ec00;
}
.cart-shopping-header .shopping-item-price,
.cart-shopping-body .shopping-item-price,
.cart-shopping-header .shopping-item-subtotal,
.cart-shopping-body .shopping-item-subtotal {
    text-align: left;
}
.cart-shopping-header .shopping-item-qty,
.cart-shopping-body .shopping-item-qty,
.cart-shopping-header .shopping-item-active,
.cart-shopping-body .shopping-item-active {
    text-align: center;
}
.shopping-item-title {
    margin-bottom: 5px;
    color: #15191d;
    font-weight: 700;
    line-height: 1.35;
    font-size: 1.2rem;
}
.shopping-item-title a {
    color: #15191d;
    font-weight: 700;
}
.shopping-item-title a:hover {
    color: var(--c-01);
}
.shopping-item-info-list {
    display: grid;
    gap: 3px;
}
.shopping-item-info-item {
    color: #8a949e;
    font-size: 1rem;
    line-height: 1.45;
}
.shopping-item-price,
.shopping-item-subtotal {
    color: #15191d;
    font-size: 1.08rem;
    font-weight: 700;
    line-height: 1.5;
}
.shopping-item-price {
    font-weight: 600;
}
.shopping-item-subtotal {
    text-align: left;
}
.shopping-item-tag-list {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-start;
    margin-top: 8px;
    margin-bottom: 12px;
    gap: 2px;
}
.shopping-item-tag-item {
    color: var(--c-05);
    line-height: 1;
}
.shopping-item-tag-item + .shopping-item-tag-item:before {
    content: ', ';
}
.cart-shopping-footer {
    margin-top: 15px;
}
.cart-continue-btn {
    min-width: 120px;
    height: 36px;
    padding: 0 18px;
    border-radius: 6px;
    background-color: #eef1f3;
    color: #25313c;
    font-size: 1rem;
    font-weight: 700;
}
.cart-continue-btn:hover {
    background-color: #e2e7eb;
    color: #15191d;
}

/* .cart-summary */
.cart-summary {
    min-height: 0;
    padding: 25px 25px;
    border-radius: 10px;
    background-color: #fff;
    color: #15191d;

    position: sticky;
    top: calc(70px + 10px);
}
.cart-summary-title {
    margin-bottom: 26px;
    color: #15191d;
    font-size: 1.58rem;
    font-weight: 800;
    line-height: 1.3;
    letter-spacing: 0.02em;
}
.cart-summary-table-head,
.cart-summary-product-item,
.cart-summary-total-item,
.cart-summary-grand-total {
    display: grid;
    grid-template-columns: minmax(0, 1fr) max-content;
    column-gap: 16px;
    align-items: center;
}
.cart-summary-table-head {
    padding-bottom: 14px;
    border-bottom: 1px solid #e7ebef;
    color: #8a949e;
    font-size: 1rem;
    font-weight: 700;
    line-height: 1.35;
}
.cart-summary-table-head > div:first-child,
.cart-summary-product-item > div:first-child,
.cart-summary-total-item > div:first-child,
.cart-summary-grand-total > div:first-child {
    min-width: 0;
}
.cart-summary-table-head > div:last-child,
.cart-summary-product-price,
.cart-summary-total-item > div:last-child,
.cart-summary-grand-total > div:last-child {
    text-align: right;
    white-space: nowrap;
}
.cart-summary-product-list {
    /* margin-bottom: 18px; */
}
.cart-summary-product-item {
    padding: 10px 0 8px;
    border-bottom: 1px dashed #e4e8ec;
}
.cart-summary-product-item:last-child {
    border-bottom: unset;
}
.cart-summary-product-name {
    margin-bottom: 0;
    color: #15191d;
    font-size: 1.08rem;
    font-weight: 800;
    line-height: 1.4;
}
.cart-product-days {
    margin-top: 2px;
    color: #9aa3ad;
    font-size: 0.9rem;
    line-height: 1.35;
}
.cart-summary-product-spec {
    color: #9aa3ad;
    font-size: 1rem;
    line-height: 1.35;
}
.cart-summary-product-price,
.cart-summary-total-item > div:last-child {
    /* color: #66717c; */
    /* color: #15191d; */
    font-size: 1.08rem;
    font-weight: 800;
    line-height: 1.35;
}
.cart-coupon-row {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 48px;
    gap: 8px;
    margin-bottom: 14px;
}
.cart-main .cart-coupon-input {
    height: 34px;
    border-radius: 5px;
    border-color: #dfe4e9;
    font-size: 1.05rem;
}
.cart-coupon-input::placeholder {
    color: #9aa3ad;
}
.cart-coupon-btn {
    height: 34px;
    padding: 0;
    border: 1px solid #dfe4e9;
    border-radius: 5px;
    background-color: #fff;
    color: #15191d;
    font-size: 1.05rem;
    font-weight: 800;
    line-height: 1.15;
}
.cart-coupon-btn:hover {
    border-color: var(--c-01);
    color: var(--c-01);
}
.cart-summary-total-list {
    /* margin-top: 10px; */
    border-top: 1px solid #eef1f3;
}
.cart-summary-total-item {
    padding: 10px 0 8px;
    border-bottom: 1px solid #eef1f3;
    color: #8a949e;
    font-size: 1.08rem;
    font-weight: 700;
    line-height: 1.45;
}
.cart-summary-discount-label {
    display: grid;
    gap: 2px;
}
.cart-summary-discount-title,
.cart-summary-coupon-val,
.cart-summary-point-val {
    color: #b8863f;
    font-weight: 800;
}
.cart-summary-discount-note {
    color: #9aa3ad;
    font-size: 0.8rem;
    font-weight: 600;
    line-height: 1.35;
}
.cart-summary-grand-total {
    align-items: baseline;
    padding: 18px 0 22px;
    font-size: 1.42rem;
    font-weight: 900;
    line-height: 1.35;
}
.cart-summary-grand-total > div:last-child {
    font-size: 1.67rem;
    font-weight: 900;
}
.cart-summary-btn {
    display: block;
    width: 100%;
    height: 38px;
    padding: 0.8rem 1.2rem;
    border-radius: 6px;
    background-color: var(--c-05);
    color: #fff;
    font-size: 1.12rem;
    font-weight: 800;
    line-height: 1;
}
.cart-summary-btn:hover {
    background-color: var(--c-01);
    color: #fff;
}
/* .cart-summary-note {
    margin-top: 14px;
    color: #9aa3ad;
    font-size: 0.98rem;
    line-height: 1.6;
} */


@media (max-width: 1200px) {
    .cart-shopping-item {
        grid-template-columns: minmax(0, 78px) minmax(150px, 1fr) minmax(0, 90px) minmax(110px, 126px) minmax(0, 100px);
        column-gap: 14px;
    }
}
@media (max-width: 768px) {
    .cart-shopping {
        padding: 22px 16px;
    }
    .cart-shopping-title {
        margin-bottom: 18px;
        font-size: 1.5rem;
    }
    .cart-shopping-header {
        display: none;
    }
    .cart-shopping-body .cart-shopping-item {
        display: grid;
        grid-template-columns: 82px minmax(0, 1fr);
        grid-template-areas:
            "image info"
            "price qty"
            "subtotal subtotal";
        column-gap: 12px;
        row-gap: 10px;
        align-items: start;
        padding: 18px 0;
    }
    .cart-shopping-body .shopping-item-image {
        grid-area: image;
        width: 82px;
        height: 82px;
    }
    .cart-shopping-body .shopping-item-info {
        grid-area: info;
        align-self: center;
        min-width: 0;
    }
    .cart-shopping-body .shopping-item-price {
        grid-area: price;
        align-self: center;
        min-width: 0;
        font-size: 1rem;
        font-weight: 700;
        line-height: 1.35;
        white-space: normal;
        word-break: keep-all;
    }
    .cart-shopping-body .shopping-item-price.price::before {
        content: '單價：NT$ ';
    }
    .cart-shopping-body .shopping-item-qty {
        grid-area: qty;
        align-self: center;
        text-align: left;
    }
    .cart-shopping-body .shopping-item-active {
        grid-area: active;
        align-self: center;
        text-align: right;
    }
    .cart-shopping-body .shopping-item-subtotal {
        grid-area: subtotal;
        justify-self: end;
        align-self: center;
        font-size: 1.17rem;
        font-weight: 800;
        text-align: right;
        white-space: nowrap;
    }
    .cart-shopping-body .shopping-item-subtotal.price::before {
        content: '小計：NT$ ';
    }
    .shopping-item-title {
        margin-bottom: 6px;
    }
    .shopping-item-title a {
        font-size: 1.25rem;
    }
    .shopping-item-info-item {
        font-size: 1rem;
    }
    .booking-item-option {
        width: 88px;
    }
    .cart-item-delete-btn {
        font-size: 1.5rem;
    }
    .cart-shopping-footer {
        margin-top: 28px;
    }
    .cart-continue-btn {
        width: 100%;
        font-size: 1.08rem;
    }
    .cart-summary {
        padding: 24px 18px;
    }
    .cart-summary-table-head,
    .cart-summary-product-item,
    .cart-summary-total-item,
    .cart-summary-grand-total {
        grid-template-columns: minmax(0, 1fr) max-content;
    }
}
@media (max-width: 380px) {
    .cart-shopping {
        padding: 20px 14px;
    }
    .cart-shopping-body .cart-shopping-item {
        grid-template-columns: 74px minmax(0, 1fr);
        column-gap: 10px;
    }
    .cart-shopping-body .shopping-item-image {
        width: 74px;
        height: 74px;
    }
    .booking-item-option {
        width: 82px;
    }
    .booking-item-option-sub,
    .booking-item-option-add {
        width: 24px;
        height: 24px;
    }
    .cart-shopping-body .shopping-item-price {
        font-size: 0.92rem;
    }
}


/* 進度條 */
.cart-progress {
    border-top: 1px solid #3331;
    background-color: #ffffff;
    box-shadow: 0 1px 10px 0 #0002;
}
.cart-progress-bar {
    --step-count: 4;
    --dot-size: 34px;
    --line-height: 2px;
    --line-color: #BBB;
    --active-color: var(--c-01);

    position: relative;
    display: grid;
    grid-template-columns: repeat(var(--step-count), minmax(0, 1fr));
    align-items: start;
    padding: 14px 0 10px;
}
.cart-progress-bar::before {
    content: '';
    position: absolute;
    top: calc(14px + var(--dot-size) / 2);
    left: calc(100% / var(--step-count) / 2);
    right: calc(100% / var(--step-count) / 2);
    height: var(--line-height);
    background-color: var(--line-color);
    transform: translateY(-50%);
    z-index: 0;
}
.cart-progress-item {
    position: relative;
    z-index: 1;
    display: grid;
    justify-items: center;
    align-content: start;
    row-gap: 5px;
    min-width: 0;
    text-align: center;
}
.cart-progress-item::before {
    content: '';
    position: absolute;
    top: calc(var(--dot-size) / 2);

    right: calc(50% + var(--dot-size) / 2);
    width: calc(100% - var(--dot-size));

    height: var(--line-height);
    background-color: transparent;
    transform: translateY(-50%);
    z-index: -1;
}
.cart-progress-item:first-child::before {
    display: none;
}
.cart-progress-item.pass::before,
.cart-progress-item.here::before {
    background-color: var(--active-color);
}
.cart-progress-item span {
    position: relative;
    z-index: 2;
    -moz-osx-font-smoothing: grayscale;
    -webkit-font-smoothing: antialiased;
    display: flex;
    align-items: center;
    justify-content: center;
    width: var(--dot-size);
    height: var(--dot-size);
    border-radius: 50%;
    background-color: var(--line-color);
    color: #fff;
    font-style: normal;
    font-variant: normal;
    line-height: 1;
    text-rendering: auto;
    font-family: "Font Awesome 6 Free";
    font-weight: 900;
}
.cart-progress-item font {
    display: block;
    width: 100%;
    max-width: 110px;
    padding: 0 4px;
    color: var(--active-color);
    font-weight: 600;
    font-size: clamp(12px, 2.4vw, 14px);
    line-height: 1.2;
    text-align: center;
    word-break: keep-all;
}
.cart-progress-item:not(.pass):not(.here) font {
    color: var(--line-color);
}
.cart-progress-item:not(.pass):not(.here) span:before {
    font-size: 1.2rem;
    font-family: Noto Sans SC, PingFang SC, Microsoft YaHei, Heebo, sans-serif;
    color: #fff;
}
.cart-progress-item:nth-child(1) span:before { content: "1"; }
.cart-progress-item:nth-child(2) span:before { content: "2"; }
.cart-progress-item:nth-child(3) span:before { content: "3"; }
.cart-progress-item:nth-child(4) span:before { content: "4"; }
.cart-progress-item.pass span,
.cart-progress-item.here span {
    background-color: var(--active-color);
}
.cart-progress-item.pass span:before {
    content: "\f00c";
    font-size: 1.2rem;
}
.cart-progress-item.here span:before {
    content: "\f07a";
    font-size: 1.2rem;
    padding-top: 2px;
}
@media (max-width: 576px) {
    .cart-progress-bar {
        --dot-size: 28px;
        padding: 12px 0 8px;
    }
    .cart-progress-bar::before {
        top: calc(12px + var(--dot-size) / 2);
    }
    .cart-progress-item font {
        max-width: 72px;
        padding: 0 2px;
        white-space: normal;
    }
}


/* .cart-form-block */
.cart-form-block {
    font-size: 1.2rem;
    /* border-top-left-radius: 10px; */
    /* border-top-right-radius: 10px; */
    /* overflow: hidden; */
}
.cart-form-block + .cart-form-block {
    margin-top: 20px;
}
.cart-form-block-header {
    padding: 15px 5px;
    /* border-bottom: 1px solid #eee; */
    background-color: #ffffff;
    border-top-left-radius: 10px;
    border-top-right-radius: 10px;
    font-weight: 600;
    font-size: 1.4rem;
}
.cart-form-block-body {
    padding: 5px 5px;
    background-color: #ffffff;
}
.cart-form-block.step-2-submit-area {
    margin-bottom: 15px;
}
.cart-form-block.step-2-submit-area .cart-form-block-header,
.cart-form-block.step-2-submit-area .cart-form-block-body {
    padding: 15px 20px;

}
.promo-code-message {
    line-height: 1.2;
}


/* .cart-selected-item */
.cart-selected-item {
    display: grid;
    /* align-items: center; */
    grid-template-columns: minmax(0, 100px) 1fr;
    gap: 15px;
    padding: 20px 0;
}
.cart-selected-item:first-child {
    padding-top: 0;
}
.cart-selected-item:last-child {
    padding-bottom: 0;
}
.cart-selected-item + .cart-selected-item {
    border-top: 1px solid #eee;
}
.cart-selected-item-1 {

}
.cart-selected-item-2 {

}
.cart-selected-item-img {
    border-radius: 5px;
    object-fit: cover;
    aspect-ratio: 1 / 1;
}
.cart-selected-item-title {
    font-size: 1.4rem;
    font-weight: 600;
    margin-bottom: 5px;
}
.cart-selected-item-content {

}
.cart-selected-item-tag-list {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-start;
    margin-top: 10px;
    gap: 5px;
    font-size: 1rem;
}
.cart-selected-item-tag {
    padding: 5px 7px;
    color: #fff;
    background-color: var(--c-03);
    border-radius: 3px;
    line-height: 1;
    font-size: 80%;
}
.cart-selected-item-tag.tag-new {
    color: #fff;
    background-color: var(--c-03);
}
.cart-selected-item-tag.tag-sale {
    color: #fff;
    background-color: var(--c-01);
}


/* .cart-form-group */
.cart-form-group {
    margin-bottom: 1.5rem;
}
.form-check-label,
.cart-form-group label {
    font-weight: 500;
    height: 19px;
}


#agree_the_terms {
    width: 18px;
    height: 18px;
}
[for="agree_the_terms"] {
    font-weight: normal !important;
}


/* .cart-summary-block */
.cart-summary-block {
    padding: 20px 20px 15px;
    border-radius: 10px;
    background-color: #ffffff;
    font-size: 1.2rem;
    line-height: 1.4;
}
.cart-summary-block.item {
    border: 2px solid var(--c-05);
}
.cart-summary-block.sticky {
    position: sticky;
    top: calc(70px + 20px);
}
.cart-summary-block + .cart-summary-block,
.cart-summary-list + .cart-summary-block {
    margin-top: 20px;
}
.cart-summary-block-txt-1 {
    font-size: 1.4rem;
    font-weight: 600;
    margin-bottom: 10px;
    line-height: 1.2;
}
.cart-summary-block-txt-2 {

}
.cart-summary-block-hr {
    width: 100%;
    height: 1px;
    background-color: #eee;
    margin: 1rem 0;
}
.cart-summary-block-col {
    display: grid;
    /* align-items: center; */
    grid-template-columns: minmax(0, 150px) 1fr;
    gap: 15px;
}
.cart-summary-block-col + .cart-summary-block-col {
    margin-top: 10px;
}
.cart-summary-block-col-1 {
    font-weight: 500;
}
.cart-summary-block-col-2 {
    text-align: right;
}
.cart-summary-block-col-2.flex {
    display: flex;
    flex-wrap: wrap;
    flex-direction: column;
}
.shipping-fee-col:not(.active) {
    display: none;
}


/* 刪除 */
.cart-shopping-delete-btn {
    border-color: var(--danger);
    color: var(--danger);
    border-radius: 3px;
    line-height: 1;
    width: auto;
    height: auto;
    padding: 9px 10px 7px;
}
.cart-shopping-reload-btn {
    background-color: var(--c-01);
    border-color: var(--c-01);
    width: 40px;
    height: auto;
    border-radius: 3px;
}
.cart-item-page-btn {
    color: var(--c-03);
}
.cart-item-page-btn:hover {

}


/* 數量 +/- */
.plan-item.is-disabled .plan-item-booking-list {
    opacity: 0.4;
}
.plan-item-booking-item {
    position: relative;
    width: 100%;
    display: grid;
    /* grid-template-columns: minmax(0, 75px) minmax(0, 120px) minmax(0, 90px) minmax(0, 30px) 1fr; */
    align-items: center;
    justify-content: center;
    gap: 10px;
}
.plan-item-booking-item + .plan-item-booking-item {
    padding-top: 12px;
    margin-top: 12px;
}
.plan-item-booking-item + .plan-item-booking-item::before {
    content: '';
    position: absolute;
    background-color: #0001;
    width: 100%;
    height: 1px;
    left: 0;
    top: -5px;
}
.booking-item-title {
    flex-grow: 1;
}
.booking-item-title-1 {
    /* font-weight: 600; */

    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
}
.booking-item-title-2 {
    font-size: 80%;
    color: var(--color-5);
}
.booking-item-price {
    display: flex;
    align-items: flex-end;
    flex-direction: column;
    font-weight: 600;
    font-size: 1.2rem;
}
.booking-item-price-1::before,
.booking-item-price-2::before {
    /* content: 'SGD $'; */
}
.booking-item-price-2 {
    opacity: 0.6;
    font-size: 55%;
    font-weight: 400;
    text-decoration: line-through;
}
/* .booking-item-option ------------------ */
.booking-item-option {
    display: flex;
    align-items: center;
    width: 90px;
}
.booking-item-option-sub,
.booking-item-option-add {
    width: 26px;
    height: 26px;
    line-height: 1;
    background-color: var(--c-05);
    color: #fff;
    padding: 0;
    font-size: 1rem;
}
.booking-item-option-sub:hover:not(.disabled),
.booking-item-option-add:hover:not(.disabled) {
    background-color: var(--c-01);
    color: #fff;
}
.booking-item-option-sub.disabled,
.booking-item-option-add.disabled {
    cursor: not-allowed;
    pointer-events: unset !important;
    opacity: 0.2;
}
.booking-item-option-qty {
    flex-grow: 1;
    text-align: center;
    font-weight: 600;
    font-size: 1.08rem;
}
.booking-item-option-add {

}
/* .booking-item-delete ------------------ */
.booking-item-delete {

}
.cart-item-delete-btn {
    color: var(--c-05);
    padding: 0;
    /* width: 100%; */
    font-size: 1.5rem;
}
.cart-item-delete-btn:hover {
    color: var(--c-01);
}
/* .booking-item-subtotal ------------------ */
.booking-item-subtotal {

}
@media (max-width: 768px) {
    .plan-item-booking-item {
        width: 100%;
        align-items: center;
        padding: 5px 0;
        gap: 10px;
    }
    .cart-main .plan-item-booking-item,
    .cart-main.zh_cn .plan-item-booking-item {
        grid-template-columns: minmax(0, 30px) minmax(0, 1fr) minmax(0, 100px) minmax(0, 26px);
    }
    .cart-main.en .plan-item-booking-item {
        grid-template-columns: minmax(0, 62px) minmax(0, 1fr) minmax(0, 100px) minmax(0, 26px);
    }
    .booking-item-subtotal {
        grid-column: 1 / -1;
    }
}





/* 購物車列表裡的數量元件：避免沿用第二步表單的 mobile grid */
.cart-shopping .plan-item-booking-item {
    display: inline-flex;
    align-items: center;
    justify-content: flex-end;
    width: auto;
    padding: 0;
    gap: 10px;
}
.cart-shopping .shopping-item-qty {
    /* text-align: right; */
}
.cart-shopping .plan-item-booking-item + .plan-item-booking-item {
    padding-top: 0;
    margin-top: 0;
}
.cart-shopping .plan-item-booking-item + .plan-item-booking-item::before {
    display: none;
}


/* .cart-empty-area ------------------ */
.cart-empty-area {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    min-height: 50vh;
}
.cart-empty-card {
    width: min(100%, 620px);
    padding: 52px 40px;
    border-radius: 12px;
    background-color: #fff;
    box-shadow: 0 3px 18px rgba(24, 31, 38, 0.04);
    text-align: center;
}
.cart-empty-image {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 78px;
    height: 78px;
    margin-bottom: 22px;
    border-radius: 50%;
    background-color: rgba(126, 156, 114, 0.12);
    color: var(--c-05);
    font-size: 2.25rem;
}
.cart-empty-title-1 {
    margin: 0;
    color: #15191d;
    font-size: 1.65rem;
    font-weight: 800;
    line-height: 1.45;
}
.cart-empty-title-2 {
    margin: 10px 0 0;
    color: #8d959c;
    font-size: 1rem;
    line-height: 1.7;
}
.cart-empty-btn-div {
    margin-top: 30px;
}
.cart-main .cart-empty-btn,
.cart-empty-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    min-width: 150px;
    min-height: 44px;
    padding: 0 24px;
    border: 0;
    border-radius: 6px;
    background-color: var(--c-05);
    color: #fff;
    font-size: 1rem;
    font-weight: 700;
    line-height: 1;
    text-decoration: none;
    box-shadow: none;
}
.cart-main .cart-empty-btn:hover,
.cart-main .cart-empty-btn:focus,
.cart-main .cart-empty-btn:active,
.cart-empty-btn:hover,
.cart-empty-btn:focus,
.cart-empty-btn:active {
    background-color: var(--c-01);
    color: #fff;
    text-decoration: none;
    box-shadow: none;
}
@media (max-width: 768px) {
    .cart-empty-area {
        min-height: 60vh;
    }
    .cart-empty-card {
        padding: 40px 20px;
    }
    .cart-empty-image {
        width: 68px;
        height: 68px;
        margin-bottom: 18px;
        font-size: 2rem;
    }
    .cart-empty-title-1 {
        font-size: 1.4rem;
    }
    .cart-empty-title-2 {
        font-size: 0.95rem;
    }
    .cart-main .cart-empty-btn,
    .cart-empty-btn {
        width: 100%;
        max-width: 260px;
    }
}


/* .cart-form-table */
.cart-form-table {
    border-width: 0px;

    background-color: var(--c-11);
}
.cart-form-table * {
    font-size: 0.88rem;
}
.cart-form-table > :not(caption) > * {
    border-width: 0;
}
.cart-form-table > :not(:first-child) {
    border-top-width: 0;
}
.cart-form-table thead th:nth-child(1),
.cart-form-table tbody td:nth-child(1) {

}
/* .cart-form-table thead th:nth-child(2), */
.cart-form-table tbody td:nth-child(2) {
    text-align: right;
    font-weight: 600;
    word-break: keep-all;
    white-space: nowrap;
}
.cart-form-table thead {
    color: var(--c-07);
    background-color: var(--c-01);
}
.cart-form-table thead th {
    border-bottom-width: 0;
    text-align: center;
}
.cart-form-table tbody {

}
.cart-form-table tbody tr:nth-child(1) {
    border-top: unset;
}
.cart-form-table th,
.cart-form-table td {

}
.cart-form-table tbody tr + tr {
    border-top: 1px solid #dee2e6;

}




/* 提示框 */
.cart-notice-tip {
    --tip-color: var(--c-03);
    position: relative;
    display: inline-block;
    padding-top: 8px;
}
.cart-notice-tip-arrow {
    width: 0;
    height: 0;
    margin-left: 20px;
    border-left: 8px solid transparent;
    border-right: 8px solid transparent;
    border-bottom: 8px solid var(--tip-color);
}
.cart-notice-tip-box {
    border: 1px solid var(--tip-color);
    padding: 10px 12px;
    line-height: 1.6;
}



/* .cart-step-2-back-btn */
.cart-step-2-back-btn {
    padding: 0;
    width: auto;
    height: auto;
    font-weight: 400;
    color: var(--c-01);
    border: unset;
}



/* selectpicker (.bootstrap-select) */
.bootstrap-select .dropdown-toggle:focus,
.bootstrap-select > select.mobile-device:focus + .dropdown-toggle {
    outline: unset !important;
    box-shadow: unset;
}
.bootstrap-select .dropdown-toggle .filter-option-inner-inner {
    font-weight: 400;
}
.bootstrap-select > .dropdown-toggle {
    background-color: unset !important;
    border: 1px solid #ced4da !important;
    padding: 0.375rem 0.8rem !important;
    border: unset !important;
}
.bootstrap-select .dropdown-toggle .filter-option {
    line-height: 1.8;
}
.bootstrap-select .dropdown-menu.show {
    box-shadow: 0 0 8px 2px #aaa6;
}
.bootstrap-select .dropdown-item.active,
.bootstrap-select .dropdown-item:active {
    color: var(--c-07);
    background-color: var(--c-01);
}
.dropdown-item:focus,
.dropdown-item:hover {
    background-color: var(--c-08);
    background-color: #dae0e5;
}
.dropdown-item:hover {
    color: #fff !important;
    background-color: var(--c-05) !important;
}
.bootstrap-select .dropdown-item.active,
.bootstrap-select .dropdown-item:active {
    color: #fff !important;
    background-color: var(--c-01) !important;
}
.dropdown-toggle::after {
    vertical-align: -.2em;
}





/* .cart-success-area */
.cart-success-area {
    --width: 700px;
    --padding-x: 80px;
    width: var(--width);
    border: 3px solid var(--c-03);
    border-radius: 8px;
    padding: 30px 20px 40px;
    font-size: 1rem;
    line-height: 2;

    display: flex;
    align-items: center;
    justify-content: center;
}
.cart-success-area *:not(button) {
    /* background-color: #ddd3; */
}
/* .cart-success-area *:not(button):not(.cart-success-title) { */
.cart-success {
    width: calc(var(--width) - var(--padding-x) * 2);
}
.cart-success-icon {
    background-color: var(--c-11);
    border-radius: 50%;
    --size: 60px;
    width: var(--size);
    height: var(--size);

    display: flex;
    align-items: center;
    justify-content: center;
    margin: 0 auto;
    margin-bottom: 10px;
}
.cart-success-icon i {
    color: var(--c-01);
    font-size: 2.4rem;
}
.cart-success-title {
    font-weight: 600;
    font-size: 1.6rem;
    text-align: center;
    margin-bottom: 15px;
    line-height: 1.5;
}
.cart-success-ul {
    /* list-style: decimal; */
    /* padding-left: 18px; */

    list-style: none;
}
.cart-success-ul * {
    font-size: 0.81rem;
    color: #82868a;
}
.cart-success-li {
    display: list-item;
}
.cart-success-list,
.cart-success-btn-bar {
    margin-top: 30px;
}
.cart-success-list {

}
.cart-success-group {
    display: grid;
}
.cart-main.zh_cn .cart-success-group {
    grid-template-columns: minmax(0, 90px) minmax(0, 1fr);
}
.cart-main.en .cart-success-group {
    grid-template-columns: minmax(0, 150px) minmax(0, 1fr);
}
.cart-success-txt-1 {
    color: #82868a;
    font-size: 0.95rem;
}
.cart-success-txt-1::after {
    content: '：';
}
.cart-success-txt-2 {
    font-weight: 600;
    font-size: 1rem;
}
.cart-success-btn-bar {
    display: flex;
    align-items: center;
    justify-content: center;
    column-gap: 10px;
}
@media (max-width: 768px) {
    .cart-success-area {
        --width: 100%;
        --padding-x: 0px;
        line-height: 1.8;
        border-width: 3px;
    }
    .cart-success-icon {
        --size: 50px;
    }
    .cart-success-icon i {
        font-size: 1.8rem;
    }
    .cart-success-title {
        font-size: 1.2rem;
        margin-bottom: 10px;
    }
    .cart-success-list,
    .cart-success-btn-bar {
        margin-top: 20px;
    }
    .cart-success-txt-1 {
        font-size: 0.90rem;
    }
    .cart-success-txt-2 {
        font-size: 0.95rem;
    }
}


/* ------------------------------------ */
/* 購物車：手機版數量區修正
   目的：讓第二列穩定呈現 [單價] + [[移除] 數量]，
   並避免下方共用的 .plan-item-booking-item mobile grid 影響購物車列表。 */
@media (max-width: 768px) {
    .cart-shopping-body .cart-shopping-item {
        display: grid !important;
        grid-template-columns: 82px minmax(0, 1fr) !important;
        grid-template-areas:
            "image info"
            "price qty"
            "subtotal subtotal" !important;
        column-gap: 12px;
        row-gap: 12px;
        align-items: start;
    }

    .cart-shopping-body .shopping-item-image {
        grid-area: image;
    }

    .cart-shopping-body .shopping-item-info {
        grid-area: info;
        min-width: 0;
    }

    .cart-shopping-body .shopping-item-price {
        grid-area: price;
        align-self: center;
        text-align: left;
        white-space: nowrap;
    }

    .cart-shopping-body .shopping-item-qty {
        grid-area: qty;
        align-self: center;
        justify-self: end;
        text-align: right;
        min-width: 0;
    }

    .cart-shopping-body .shopping-item-subtotal {
        grid-area: subtotal;
        justify-self: end;
        text-align: right;
        white-space: nowrap;
    }

    .cart-shopping-body .shopping-item-qty .plan-item,
    .cart-shopping-body .shopping-item-qty .plan-item-booking-list {
        display: flex;
        justify-content: flex-end;
        width: auto;
    }

    .cart-shopping-body .shopping-item-qty .plan-item-booking-item,
    .cart-main .cart-shopping-body .shopping-item-qty .plan-item-booking-item,
    .cart-main.zh_cn .cart-shopping-body .shopping-item-qty .plan-item-booking-item,
    .cart-main.en .cart-shopping-body .shopping-item-qty .plan-item-booking-item {
        display: inline-flex !important;
        grid-template-columns: none !important;
        align-items: center;
        justify-content: flex-end;
        width: auto;
        padding: 0;
        gap: 10px;
    }

    .cart-shopping-body .shopping-item-qty .booking-item-option {
        flex: 0 0 auto;
        width: 90px;
    }

    .cart-shopping-body .shopping-item-qty .cart-item-delete-btn {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        width: 28px;
        height: 28px;
        font-size: 1.5rem;
        line-height: 1;
    }
}

@media (max-width: 380px) {
    .cart-shopping-body .cart-shopping-item {
        grid-template-columns: 74px minmax(0, 1fr) !important;
        column-gap: 10px;
    }

    .cart-shopping-body .shopping-item-qty .booking-item-option {
        width: 84px;
    }
}


/* ------------------------------------ */
/* 購物車：金額對齊 / 共用按鈕 / 標題與 footer 微調 */
.cart-shopping-title-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    margin-bottom: 34px;
}
.cart-shopping-title-row .cart-shopping-title {
    margin-bottom: 0;
}
.cart-summary-title {
    margin-bottom: 26px;
    color: #15191d;
    font-size: 1.42rem;
    font-weight: 700;
    line-height: 1.4;
    letter-spacing: normal;
}
.cart-shopping-header > .cart-shopping-item,
.cart-shopping-header > .cart-shopping-item > div {
    font-size: 1rem;
    font-weight: 700;
    line-height: 1.2;
}
.cart-shopping-header > .cart-shopping-item > .shopping-item-image {
    text-align: center;
}
.cart-shopping-header > .cart-shopping-item > .shopping-item-qty {
    /* padding-left: 30px; */
    text-align: center;
}
.cart-shopping-header .shopping-item-price,
.cart-shopping-body .shopping-item-price,
.cart-shopping-header .shopping-item-subtotal,
.cart-shopping-body .shopping-item-subtotal,
.cart-summary-table-head > div:last-child,
.cart-summary-product-price,
.cart-summary-total-item > div:last-child,
.cart-summary-grand-total > div:last-child,
.cart-summary-subtotal-val,
.cart-summary-shipping-val,
.cart-summary-discount-val,
.cart-summary-total-val {
    text-align: right;
}
.cart-summary-table-head > div:last-child,
.cart-summary-product-price,
.cart-summary-total-item > div:last-child,
.cart-summary-grand-total > div:last-child {
    white-space: nowrap;
}
.cart-continue-btn,
.cart-coupon-btn,
.cart-shopping-refresh-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    height: 36px;
    border: 0;
    border-radius: 6px;
    background-color: #eef1f3;
    color: #25313c;
    font-size: 1rem;
    font-weight: 700;
    line-height: 1;
}
.cart-continue-btn {
    min-width: 120px;
    padding: 0 18px;
}
.cart-coupon-btn {
    min-width: 48px;
    padding: 0 12px;
}
.cart-shopping-refresh-btn {
    width: 36px;
    min-width: 36px;
    padding: 0;
}
.cart-continue-btn:hover,
.cart-coupon-btn:hover,
.cart-shopping-refresh-btn:hover {
    background-color: #e2e7eb;
    color: #15191d;
}
.cart-shopping-footer {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
}
.cart-shopping-footer .cart-coupon-row {
    width: min(100%, 260px);
    margin-bottom: 0;
}
.cart-main .cart-shopping-footer .cart-coupon-input,
.cart-shopping-footer .cart-coupon-btn {
    height: 36px;
    min-height: 36px;
    border-radius: 6px;
}
.cart-shopping-footer .cart-coupon-input:disabled,
.cart-shopping-footer .cart-coupon-btn:disabled {
    cursor: not-allowed;
}
@media (max-width: 768px) {
    .cart-shopping-body .shopping-item-price {
        text-align: right;
    }
    .cart-shopping-footer {
        align-items: stretch;
        flex-direction: column;
    }
    .cart-shopping-footer .cart-coupon-row {
        width: 100%;
    }
    .cart-continue-btn {
        width: 100%;
    }
}
@media (max-width: 576px) {
    .cart-shopping-title-row {
        margin-bottom: 18px;
    }
}


/* ------------------------------------ */
/* 購物車步驟二：填寫寄送資訊 --------------------------- */
.cart-checkout-col {
    align-items: start;
}
.cart-step-2-back-row {
    margin-bottom: 12px;
}
.cart-checkout-panel {
    padding: 25px;
    border-radius: 10px;
    background-color: #fff;
}
.cart-checkout-panel .cart-form-block {
    font-size: 1rem;
}
.cart-checkout-panel .cart-form-block + .cart-form-block {
    margin-top: 28px;
    padding-top: 24px;
    border-top: 1px solid #eef1f3;
}
.cart-checkout-panel .cart-form-block-header,
.cart-checkout-summary .cart-summary-title {
    margin-bottom: 24px;
    padding: 0;
    border-radius: 0;
    background: transparent;
    color: #15191d;
    font-size: 1.42rem;
    font-weight: 700;
    line-height: 1.4;
    letter-spacing: normal;
}
.cart-checkout-panel .cart-form-block-body {
    padding: 0;
    background: transparent;
}
.cart-hidden-field {
    position: absolute;
    left: -99999px;
    width: 1px;
    height: 1px;
    overflow: hidden;
}
.cart-checkout-panel .cart-form-group {
    margin-bottom: 18px;
}
.cart-checkout-panel .cart-form-group label {
    display: block;
    height: auto;
    margin-bottom: 7px;
    color: #15191d;
    font-size: 0.95rem;
    font-weight: 700;
    line-height: 1.35;
}
.cart-checkout-panel .form-control {
    height: 40px;
    border: 1px solid #dfe4e9;
    border-radius: 6px;
    color: #15191d;
    font-size: 1rem;
    line-height: 1.4;
}
.cart-checkout-panel textarea.form-control {
    min-height: 72px !important;
    padding-top: 10px;
}
.cart-checkout-panel .form-control::placeholder {
    color: #9aa3ad;
}
.cart-delivery-list {
    display: flex;
    flex-direction: column;
    gap: 12px;
}
.cart-delivery-option {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr) max-content;
    gap: 12px;
    align-items: center;
    min-height: 58px;
    margin: 0;
    padding: 13px 16px;
    border: 1px solid #dfe4e9;
    border-radius: 8px;
    background-color: #fff;
    cursor: pointer;
    transition: border-color 0.2s, box-shadow 0.2s, background-color 0.2s;
}
.cart-delivery-option:hover {
    border-color: var(--c-05);
    box-shadow: 0 4px 14px rgba(71, 85, 99, 0.08);
}
.cart-delivery-option:has(input:checked) {
    border-color: var(--c-04);
    background-color: rgba(250, 251, 252, 0.95);
}
.cart-delivery-option input {
    width: 15px;
    height: 15px;
    margin: 0;
    accent-color: var(--c-04);
}
.cart-delivery-option-main {
    min-width: 0;
}
.cart-delivery-option-main strong {
    display: block;
    color: #15191d;
    font-size: 1rem;
    font-weight: 800;
    line-height: 1.35;
}
.cart-delivery-option-main span {
    display: block;
    margin-top: 3px;
    color: #8a949e;
    font-size: 0.92rem;
    line-height: 1.45;
}
.cart-delivery-option-price {
    color: #15191d;
    font-size: 1rem;
    font-weight: 800;
    white-space: nowrap;
}
.cart-delivery-note,
.cart-summary-note {
    margin-top: 10px;
    color: #9aa3ad;
    font-size: 0.92rem;
    line-height: 1.4;
}
.cart-delivery-note + .cart-delivery-note {
    margin-top: 0px;
}
.cart-summary-note + .cart-summary-note {
    margin-top: 8px;
}
.cart-summary-subscription-note {
    /* margin: 8px 0 0; */
    /* font-size: 0.92rem; */
    /* line-height: 1.6; */
    display: none;
    color: #dc3545;
    font-weight: 700;
}

.cart-delivery-tab-list {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
}
.cart-delivery-tab-option {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr) max-content;
    gap: 12px;
    align-items: center;
    min-height: 62px;
    margin: 0;
    padding: 13px 16px;
    border: 1px solid #dfe4e9;
    border-radius: 8px;
    background-color: #fff;
    cursor: pointer;
    transition: border-color 0.2s, box-shadow 0.2s, background-color 0.2s;
}
.cart-delivery-tab-option:hover {
    border-color: var(--c-05);
    box-shadow: 0 4px 14px rgba(71, 85, 99, 0.08);
}
.cart-delivery-tab-option:has(input:checked) {
    border-color: var(--c-04);
    background-color: rgba(250, 251, 252, 0.95);
}
.cart-delivery-tab-option input {
    width: 15px;
    height: 15px;
    margin: 0;
    accent-color: var(--c-04);
}
.cart-delivery-tab-main {
    min-width: 0;
}
.cart-delivery-tab-main strong {
    display: block;
    color: #15191d;
    font-size: 1rem;
    font-weight: 800;
    line-height: 1.35;
}
.cart-delivery-tab-main span {
    display: block;
    margin-top: 3px;
    color: #8a949e;
    font-size: 0.92rem;
    line-height: 1.45;
}
.cart-delivery-tab-price {
    color: #15191d;
    font-size: 1rem;
    font-weight: 800;
    white-space: nowrap;
}
.cart-store-pickup-panel {
    display: none;
    margin-top: 20px;
}
.cart-store-pickup-title,
.cart-store-pickup-selected-title {
    margin-bottom: 6px;
    color: #15191d;
    font-size: 1.1rem;
    font-weight: 800;
    line-height: 1.4;
}
.cart-store-pickup-note {
    color: #7f8b98;
    font-size: 0.95rem;
    line-height: 1.7;
    margin-top: 12px;
    margin-bottom: 0;
}
.cart-store-pickup-note ul {
    margin: 0;
    padding-left: 18px;
}
.cart-store-pickup-note li + li {

}
.cart-store-pickup-note strong {
    color: #e60012;
}
.cart-store-pickup-selected {
    margin-bottom: 16px;
}
.cart-store-pickup-selected-box {
    padding: 8px 10px 7px;
    border: 1px solid #dfe4e9;
    border-radius: 6px;
    background-color: #fafbfc;
    color: #25313c;
    font-size: 1.05rem;
    font-weight: 700;
    line-height: 1.6;
}
.cart-store-pickup-selected-box.is-empty {
    color: #9aa3ad;
}
.cart-store-map-btn {
    margin-top: 10px;
    padding: 12px 36px;
    border-radius: 5px;
    background-color: #15191d;
    color: #fff;
    font-size: 0.95rem;
    font-weight: 800;
    background-color: var(--c-05);
}
.cart-store-map-btn:hover {
    color: #fff;
    background-color: var(--c-01);
}
.cart-store-pickup-btn-list {
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
    margin-bottom: 12px;
}
.cart-store-pickup-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    min-width: 125px;
    height: 42px;
    margin: 0;
    padding: 0 15px;
    border: 1px solid #dfe4e9;
    border-radius: 6px;
    background-color: #fff;
    color: #25313c;
    font-size: 1rem;
    font-weight: 800;
    cursor: pointer;
    transition: border-color 0.2s, background-color 0.2s, color 0.2s;
}
.cart-store-pickup-btn:hover {
    border-color: var(--c-05);
}
.cart-store-pickup-btn:has(input:checked) {
    border-color: #15191d;
    /* background-color: #15191d; */
    /* color: #fff; */
}
.cart-store-pickup-btn input {
    width: 14px;
    height: 14px;
    margin: 0;
    accent-color: var(--c-04);
}
.cart-checkout-summary {
    position: sticky;
    top: calc(70px + 20px);
}
.cart-checkout-summary .cart-summary-title {
    margin-bottom: 24px;
}
.cart-checkout-summary .cart-summary-product-list {
    border-bottom: 1px solid #eef1f3;
}
.cart-checkout-summary .cart-summary-total-list {
    border-top: 0;
}
.cart-checkout-summary .cart-summary-btn {
    height: 40px;
    border-radius: 6px;
    background-color: #15191d;
    width: 100%;
}
.cart-checkout-summary .cart-summary-btn:hover {
    background-color: var(--c-01);
}
.cart-checkout-summary .cart-summary-grand-total {
    padding-bottom: 20px;
}

@media (max-width: 992px) {
    .cart-checkout-summary {
        position: static;
    }
}
@media (max-width: 768px) {
    .cart-checkout-panel,
    .cart-checkout-summary {
        padding: 22px 16px;
    }
    .cart-step-2-back-row {
        margin-bottom: 10px;
    }
    .cart-delivery-option,
    .cart-delivery-tab-option {
        grid-template-columns: auto minmax(0, 1fr);
    }
    .cart-delivery-option-price,
    .cart-delivery-tab-price {
        grid-column: 2;
        justify-self: start;
    }
    .cart-delivery-tab-list {
        grid-template-columns: minmax(0, 1fr);
    }
    .cart-store-pickup-btn-list {
        flex-direction: column;
    }
    .cart-store-pickup-btn {
        width: 100%;
    }
}

/* ------------------------------------ */
/* 購物車步驟二：目前版面微調（保留既有 layout，只補覆蓋樣式） */
.cart-main .form-control:not(.disabled):not(:disabled):hover,
.cart-main .form-control:not(.disabled):not(:disabled):focus,
.cart-checkout-panel .form-control:not(.disabled):not(:disabled):hover,
.cart-checkout-panel .form-control:not(.disabled):not(:disabled):focus {
    border-color: var(--c-01) !important;
    -webkit-box-shadow: unset;
    box-shadow: unset;
}

.cart-checkout-footer {
    display: flex;
    justify-content: flex-start;
    margin-top: 24px;
    padding-top: 18px;
    border-top: 1px solid #eef1f3;
}

.cart-checkout-footer .cart-step-2-back-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: auto;
    min-width: 120px;
    height: 36px;
    padding: 0 18px;
    border: 0;
    border-radius: 6px;
    background-color: #eef1f3;
    color: #25313c;
    font-size: 1rem;
    font-weight: 700;
    line-height: 1;
}

.cart-checkout-footer .cart-step-2-back-btn:hover,
.cart-checkout-footer .cart-step-2-back-btn:focus,
.cart-checkout-footer .cart-step-2-back-btn:active {
    border: 0;
    background-color: #e2e7eb;
    color: #15191d;
    -webkit-box-shadow: unset;
    box-shadow: unset;
}

.cart-checkout-summary .cart-summary-btn,
.cart-checkout-summary .cart-step-2-submit-btn {
    background-color: var(--c-05);
    color: #fff;
}

.cart-checkout-summary .cart-summary-btn:hover,
.cart-checkout-summary .cart-step-2-submit-btn:hover {
    background-color: var(--c-01);
    color: #fff;
}

@media (max-width: 768px) {
    .cart-checkout-footer {
        align-items: stretch;
        flex-direction: column;
    }

    .cart-checkout-footer .cart-step-2-back-btn {
        width: 100%;
    }
}


/* ------------------------------------ */
/* 購物流程共用：左上方文字連結按鈕（比照問卷結果「重新測驗」） */
.cart-top-link-row {
    display: flex;
    justify-content: flex-start;
    align-items: center;
    width: 100%;
    margin: 0 0 12px;
}

.cart-top-link-btn,
.cart-top-link-btn.btn,
.cart-top-link-btn.cart-continue-btn,
.cart-top-link-btn.cart-step-2-back-btn {
    display: inline-flex;
    align-items: center;
    justify-content: flex-start;
    width: auto;
    min-width: 0;
    height: auto;
    padding: 0;
    border: 0;
    border-radius: 0;
    background: transparent;
    color: var(--c-05);
    font-size: 1.17rem;
    font-weight: 700;
    line-height: 1.5;
    letter-spacing: 0;
    box-shadow: none;
    text-decoration: none;
    column-gap: 3px;
}
.cart-top-link-btn i {
    line-height: 1.5;
}

.cart-top-link-btn:hover,
.cart-top-link-btn:focus,
.cart-top-link-btn:active,
.cart-top-link-btn.btn:hover,
.cart-top-link-btn.btn:focus,
.cart-top-link-btn.btn:active,
.cart-top-link-btn.cart-continue-btn:hover,
.cart-top-link-btn.cart-step-2-back-btn:hover {
    border: 0;
    background: transparent;
    color: var(--c-01);
    box-shadow: none;
    text-decoration: underline;
}

.cart-shopping-footer-coupon-only {
    justify-content: flex-end;
}

@media (max-width: 768px) {
    .cart-top-link-row {
        margin-bottom: 10px;
    }

    .cart-top-link-btn,
    .cart-top-link-btn.btn,
    .cart-top-link-btn.cart-continue-btn,
    .cart-top-link-btn.cart-step-2-back-btn {
        width: auto;
        font-size: 1.08rem;
    }
}


/* ------------------------------------ */
/* 購物車：問卷方案來源標籤 --------------------------- */
.cart-product-survey-plan-wrap {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 4px;
    margin-top: 6px;
}
.cart-product-survey-plan {
    display: inline-flex;
    align-items: center;
    width: fit-content;
    max-width: 100%;
    padding: 5px 6px 4px;
    border-radius: 5px;
    background: rgba(208, 212, 218, 0.45);
    color: #475569;
    font-size: 0.85rem;
    font-weight: 700;
    line-height: 1.2;
}

/* ------------------------------------ */
/* 購物車：訂單明細運費顯示（只追加樣式，不影響原本金額計算） */
.cart-shipping-label {
    display: grid;
    gap: 2px;
}
.cart-shipping-label-title {
    color: #15191d;
    font-size: inherit;
    font-weight: 800;
    line-height: inherit;
}
.cart-shipping-label-method {
    color: #9aa3ad;
    font-size: 0.8rem;
    font-weight: 600;
    line-height: 1.35;
}
.cart-summary-shipping-val {
    color: #15191d;
    font-weight: 800;
}

/* ------------------------------------ */
/* 購物車步驟二：手機國碼 + 手機號碼（只補表單欄位排列） */
.cart-phone-row {
    display: grid;
    grid-template-columns: minmax(200px, 220px) minmax(0, 1fr);
    gap: 8px;
}
.cart-phone-country,
.cart-phone-number {
    min-width: 0;
}
.cart-phone-row .bootstrap-select {
    width: 100% !important;
}
@media (max-width: 420px) {
    .cart-phone-row {
        grid-template-columns: minmax(0, 1fr);
    }
}


/* ------------------------------------ */
/* 購物車步驟三：付款資料 --------------------------- */
.cart-payment-method-list {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
}
.cart-payment-method-option {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    gap: 12px;
    align-items: center;
    min-height: 58px;
    margin: 0;
    padding: 13px 16px;
    border: 1px solid #dfe4e9;
    border-radius: 8px;
    background-color: #fff;
    cursor: pointer;
    transition: border-color 0.2s, box-shadow 0.2s, background-color 0.2s;
}
.cart-payment-method-option:hover {
    border-color: var(--c-05);
    box-shadow: 0 4px 14px rgba(71, 85, 99, 0.08);
}
.cart-payment-method-option:has(input:checked) {
    border-color: var(--c-04);
    background-color: rgba(250, 251, 252, 0.95);
}
.cart-payment-method-option input {
    width: 15px;
    height: 15px;
    margin: 0;
    accent-color: var(--c-04);
}
.cart-payment-method-main {
    min-width: 0;
}
.cart-payment-method-main strong {
    display: block;
    color: #15191d;
    font-size: 1rem;
    font-weight: 800;
    line-height: 1.35;
}
.cart-payment-method-main span {
    display: block;
    margin-top: 3px;
    color: #8a949e;
    font-size: 0.92rem;
    line-height: 1.45;
}
.cart-payment-method-tag {
    color: #15191d;
    font-size: 0.92rem;
    font-weight: 800;
    white-space: nowrap;
}
.cart-subscription-agreement {
    display: flex;
    align-items: flex-end;
    gap: 5px;
    margin: 12px 0 0;
    padding: 8px 10px 10px;
    border-radius: 5px;
    color: #52636d;
    font-size: 0.96rem;
    line-height: 1.6;
    cursor: pointer;
    background-color: #ddd5;
}
.cart-subscription-agreement a {
    color: inherit;
    text-decoration: underline;
}
.cart-subscription-invoice-note {
    /* margin: 0 0 12px; */
    /* padding: 7px 10px; */
    /* background-color: #fff8cc; */
    /* color: #52636d; */
    /* font-size: 0.92rem; */
    /* line-height: 1.6; */
    color: #dc3545;
    font-weight: 700;
}

.cart-subscription-agreement input {
    flex: 0 0 auto;
    width: 17px;
    height: 17px;
    margin: 3px 0 0;
    accent-color: var(--c-04);
}
.cart-field-note {
    margin-top: 7px;
    color: #9aa3ad;
    font-size: 0.9rem;
    line-height: 1.6;
}
.cart-invoice-option-list {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
}
.cart-invoice-option {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    gap: 12px;
    align-items: start;
    margin: 0;
    padding: 13px 16px;
    border: 1px solid #dfe4e9;
    border-radius: 8px;
    background-color: #fff;
    cursor: pointer;
    transition: border-color 0.2s, box-shadow 0.2s, background-color 0.2s;
}
.cart-invoice-option:hover {
    border-color: var(--c-05);
    box-shadow: 0 4px 14px rgba(71, 85, 99, 0.08);
}
.cart-invoice-option:has(input:checked) {
    border-color: var(--c-04);
    background-color: rgba(250, 251, 252, 0.95);
}
.cart-invoice-option input {
    width: 15px;
    height: 15px;
    margin: 2px 0 0;
    accent-color: var(--c-04);
}
.cart-invoice-option strong {
    display: block;
    color: #15191d;
    font-size: 1rem;
    font-weight: 800;
    line-height: 1.35;
}
.cart-invoice-option span {
    display: block;
    margin-top: 3px;
    color: #8a949e;
    font-size: 0.92rem;
    line-height: 1.45;
}
.cart-invoice-extra-row {
    margin-top: 18px;
}
.cart-step-3-submit-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: auto;
    min-width: 120px;
    height: 36px;
    padding: 0 18px;
    border: 0;
    border-radius: 6px;
    background-color: var(--c-05);
    color: #fff;
    font-size: 1rem;
    font-weight: 700;
    line-height: 1;
}
.cart-step-3-submit-btn:hover,
.cart-step-3-submit-btn:focus,
.cart-step-3-submit-btn:active {
    background-color: var(--c-01);
    color: #fff;
    -webkit-box-shadow: unset;
    box-shadow: unset;
}
.cart-checkout-footer .cart-step-3-submit-btn {
    margin-left: 10px;
}
@media (max-width: 768px) {
    .cart-payment-method-list {
        grid-template-columns: minmax(0, 1fr);
    }
    .cart-payment-method-option {
        grid-template-columns: auto minmax(0, 1fr);
    }
    .cart-payment-method-tag {
        grid-column: 2;
        justify-self: start;
    }
    .cart-invoice-option-list {
        grid-template-columns: minmax(0, 1fr);
    }
    .cart-checkout-footer .cart-step-3-submit-btn {
        width: 100%;
        margin-left: 0;
        margin-top: 10px;
    }
}

/* ------------------------------------ */
/* 購物流程(4)：訂單建立成功 */
.cart-order-success-page {
    padding: 55px 15px 80px;
    background: #eef0f2;
}
.cart-order-success-card {
    width: 100%;
    max-width: 760px;
    margin: 0 auto;
    padding: 42px 64px 54px;
    border-radius: 12px;
    background: #fff;
    box-shadow: 0 3px 18px rgba(24, 31, 38, 0.04);
}
.cart-order-success-icon {
    width: 52px;
    height: 52px;
    margin: 0 auto 14px;
    border-radius: 50%;
    color: #fff;
    background: #171b1f;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 28px;
    line-height: 1;
}
.cart-order-success-title {
    margin: 0 0 8px;
    color: #171b1f;
    font-size: 24px;
    font-weight: 700;
    line-height: 1.4;
    text-align: center;
}
.cart-order-success-desc {
    margin: 0;
    color: #9aa0a6;
    font-size: 14px;
    line-height: 1.9;
    text-align: center;
}
.cart-order-success-summary {
    max-width: 520px;
    margin: 24px auto 0;
    overflow: hidden;
    border: 1px solid #dfe3e7;
    border-radius: 8px;
    background: #fafbfc;
}
.cart-order-success-summary-row,
.cart-order-success-info-row {
    display: grid;
    grid-template-columns: minmax(0, 145px) minmax(0, 1fr);
    align-items: center;
    min-height: 52px;
    padding: 11px 16px;
    border-bottom: 1px solid #e8ebee;
}
.cart-order-success-summary-row:last-child,
.cart-order-success-info-row:last-child {
    border-bottom: 0;
}
.cart-order-success-label {
    color: #92989e;
    font-size: 14px;
}
.cart-order-success-value {
    min-width: 0;
    color: #25292d;
    font-size: 14px;
    font-weight: 600;
    text-align: right;
    word-break: break-word;
}
.cart-order-success-status.paid { color: #61a66d; }
.cart-order-success-status.pending { color: #c48838; }
.cart-order-success-status.refund { color: #8b73a8; }
.cart-order-atm-info {
    max-width: 520px;
    margin: 18px auto 0;
    padding: 18px 18px 16px;
    border: 1px solid #dfe3e7;
    border-radius: 8px;
    background: #fafbfc;
}
.cart-order-atm-title {
    margin-bottom: 12px;
    color: #25292d;
    font-size: 16px;
    font-weight: 700;
    line-height: 1.5;
}
.cart-order-atm-loading {
    color: #9aa0a6;
    font-size: 14px;
    line-height: 1.7;
}
.cart-order-atm-detail {
    display: grid;
    gap: 9px;
}
.cart-order-atm-row {
    display: grid;
    grid-template-columns: minmax(0, 110px) minmax(0, 1fr);
    gap: 12px;
    align-items: center;
    color: #92989e;
    font-size: 14px;
    line-height: 1.6;
}
.cart-order-atm-row strong {
    color: #25292d;
    font-size: 15px;
    font-weight: 700;
    text-align: right;
    word-break: break-all;
}
.cart-order-atm-note {
    margin-top: 4px;
    padding-top: 10px;
    border-top: 1px solid #e8ebee;
    color: #9aa0a6;
    font-size: 12px;
    line-height: 1.7;
}
.cart-order-success-actions {
    max-width: 520px;
    margin: 18px auto 0;
    text-align: center;
}
.cart-order-success-pay-btn {
    min-width: 190px;
    padding: 12px 28px;
    border-radius: 6px;
    /* border: 1px solid #171b1f; */
    background-color: var(--c-05);
    color: #fff !important;
    font-size: 15px;
    font-weight: 600;
    line-height: 1.5;
    text-decoration: none !important;
}
.cart-order-success-pay-btn:hover {
    background-color: var(--c-01);
    /* color: #fff !important; */
    /* border-color: #2b3035; */
}
.cart-order-success-pay-note {
    margin-top: 9px;
    color: #9aa0a6;
    font-size: 12px;
    line-height: 1.6;
}
.cart-order-success-collapse-list {
    margin-top: 34px;
    border-top: 1px solid #e5e8eb;
}
.cart-order-success-collapse-item {
    border-bottom: 1px solid #e5e8eb;
}
.cart-order-success-collapse-btn {
    width: 100%;
    min-height: 58px;
    padding: 0;
    border: 0;
    outline: 0 !important;
    background: transparent;
    color: #25292d;
    display: flex;
    align-items: center;
    justify-content: space-between;
    font-size: 16px;
    font-weight: 600;
    text-align: left;
    box-shadow: none !important;
}
.cart-order-success-collapse-btn i {
    color: #858c92;
    font-size: 13px;
    transition: transform .2s ease;
}
.cart-order-success-collapse-btn[aria-expanded="true"] i {
    transform: rotate(180deg);
}
.cart-order-success-collapse-body {
    padding: 0 0 20px;
}
.cart-order-success-info-box {
    overflow: hidden;
    border: 1px solid #e1e5e8;
    border-radius: 8px;
    background: #fafbfc;
}
.cart-order-success-info-row {
    grid-template-columns: minmax(0, 125px) minmax(0, 1fr);
    min-height: 46px;
    padding-top: 9px;
    padding-bottom: 9px;
}
.cart-order-success-product-list {
    overflow: hidden;
    border: 1px solid #e1e5e8;
    border-radius: 8px;
    background: #fff;
}
.cart-order-success-product-item {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 18px;
    align-items: center;
    padding: 15px 16px;
    border-bottom: 1px solid #eceff1;
}
.cart-order-success-product-name {
    color: #25292d;
    font-size: 14px;
    font-weight: 600;
    line-height: 1.6;
}
.cart-order-success-product-meta {
    margin-top: 2px;
    color: #92989e;
    font-size: 12px;
    line-height: 1.6;
}
.cart-order-success-product-price {
    color: #25292d;
    font-size: 14px;
    font-weight: 600;
    white-space: nowrap;
}
.cart-order-success-discount-badge {
    display: inline-flex;
    margin-top: 4px;
    padding: 2px 4px 4px;
    border-radius: 3px;
    background-color: var(--c-05);
    color: #fff;
    font-size: 12px;
    font-weight: 500;
    line-height: 1.15;
}
.cart-order-success-product-original-price {
    margin-top: 1px;
    color: #9aa3ad;
    font-size: 12px;
    font-weight: 500;
    line-height: 1.4;
    text-decoration: line-through;
    text-align: right;
}
.cart-order-success-total-list {
    padding: 0;
    /* border-top: 1px solid #eceff1; */
    background: #fafbfc;
}
.cart-order-success-total-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 20px;
    padding: 10px 16px;
    color: #7f868d;
    font-size: 13px;
    min-height: 54px;
}
.cart-order-success-total-row + .cart-order-success-total-row {
    border-top: 1px solid #eceff1;
}
.cart-order-success-shipping-row {
    margin-top: 0;
}
.cart-order-success-shipping-row > span:not(.cart-order-success-shipping-label) {
    color: #25292d;
    font-size: 14px;
    font-weight: 600;
    line-height: 1.6;
}
.cart-order-success-shipping-label {
    display: grid;
    gap: 3px;
}
.cart-order-success-shipping-label > span {
    color: #25292d;
    font-size: 14px;
    font-weight: 600;
    line-height: 1.6;
}
.cart-order-success-shipping-label small {
    color: #9aa0a6;
    font-size: 11px;
    font-weight: 400;
    line-height: 1.45;
}
.cart-order-success-total-row.total {
    margin-top: 0;
    padding: 14px 16px;
    border-top-color: #dfe3e6;
    color: #25292d;
    font-size: 18px;
    font-weight: 700;
}
.cart-order-success-empty {
    padding: 18px;
    color: #92989e;
    font-size: 14px;
    text-align: center;
}
@media (max-width: 768px) {
    .cart-order-success-page {
        padding: 30px 15px 50px;
    }
    .cart-order-success-card {
        padding: 32px 20px 38px;
    }
    .cart-order-success-title {
        font-size: 21px;
    }
    .cart-order-success-summary-row,
    .cart-order-success-info-row {
        grid-template-columns: minmax(0, 105px) minmax(0, 1fr);
        padding-left: 13px;
        padding-right: 13px;
    }
    .cart-order-success-label,
    .cart-order-success-value {
        font-size: 13px;
    }
}


/* 綠界付款中轉頁 */
.cart-ecpay-wrap{
    padding: 40px 0 70px;
}
.cart-ecpay-card{
    max-width: 640px;
    margin: 0 auto;
    padding: 42px 36px;
    background: #fff;
    border-radius: 24px;
    box-shadow: 0 18px 45px rgba(0,0,0,.08);
    text-align: center;
}
.cart-ecpay-icon{
    width: 72px;
    height: 72px;
    margin: 0 auto 18px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    background: #eef8f3;
    color: #2f8f62;
    font-size: 30px;
}
.cart-ecpay-icon-error{
    background: #fff1f0;
    color: #c0392b;
}
.cart-ecpay-card h1{
    margin: 0 0 12px;
    font-size: 28px;
    font-weight: 700;
    color: #2b2b2b;
}
.cart-ecpay-card p{
    margin: 0;
    color: #6f6f6f;
    line-height: 1.8;
}
.cart-ecpay-info-list{
    margin: 28px 0 20px;
    border-top: 1px solid #eee;
    border-bottom: 1px solid #eee;
}
.cart-ecpay-info-item{
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 20px;
    padding: 14px 0;
    border-bottom: 1px solid #eee;
    text-align: left;
}
.cart-ecpay-info-item:last-child{
    border-bottom: none;
}
.cart-ecpay-info-item span{
    color: #777;
}
.cart-ecpay-info-item strong{
    color: #222;
    font-weight: 700;
    text-align: right;
}
.cart-ecpay-note{
    margin: 0 0 22px;
    color: #999;
    font-size: 14px;
}
.cart-ecpay-actions{
    display: flex;
    justify-content: center;
    gap: 12px;
    flex-wrap: wrap;
}
.cart-ecpay-submit-btn,
.cart-ecpay-secondary-btn{
    min-width: 140px;
    padding: 12px 22px;
    border-radius: 999px;
    font-weight: 600;
}
.cart-ecpay-submit-btn{
    background: #2f8f62;
    color: #fff !important;
}
.cart-ecpay-secondary-btn{
    background: #f4f4f4;
    color: #555 !important;
}
@media (max-width: 575px){
    .cart-ecpay-wrap{
        padding: 24px 0 48px;
    }
    .cart-ecpay-card{
        padding: 32px 22px;
        border-radius: 18px;
    }
    .cart-ecpay-card h1{
        font-size: 24px;
    }
    .cart-ecpay-info-item{
        align-items: flex-start;
        flex-direction: column;
        gap: 6px;
    }
    .cart-ecpay-info-item strong{
        text-align: left;
    }
    .cart-ecpay-actions .btn{
        width: 100%;
    }
}

/* ------------------------------------ */
/* 購物車步驟二：表單提示文字 --------------------------- */
.cart-form-hint {
    color: #9aa3ad;
    font-size: 0.82rem;
    font-weight: 500;
    line-height: 1.45;
    margin-top: 6px;
}


/* ------------------------------------ */
/* SweetAlert：Safari 彈窗重繪修正 --------------------------- */
.swal2-container {
    z-index: 99999 !important;
    -webkit-transform: translateZ(0);
    transform: translateZ(0);
    -webkit-backface-visibility: hidden;
    backface-visibility: hidden;
}

html.swal2-shown,
body.swal2-shown,
body.swal2-height-auto {
    height: auto !important;
}

body.swal2-shown {
    padding-right: 0 !important;
}

/* ------------------------------------ */
/* 購物流程：付款完成頁 */
.cart-order-payment-success-page .cart-order-success-card {
    max-width: 700px;
}
.cart-order-payment-success-icon {
    background: var(--c-05);
    font-size: 27px;
}
.cart-order-payment-success-summary {
    margin-top: 26px;
}
.cart-order-payment-success-actions {
    display: flex;
    justify-content: center;
    gap: 12px;
}
.cart-order-payment-success-btn {
    min-width: 190px;
    padding: 12px 26px;
    border-radius: 6px;
    font-size: 15px;
    font-weight: 600;
    line-height: 1.5;
    text-decoration: none !important;
}
.cart-order-payment-success-home-btn {
    border: 1px solid #dfe3e7;
    background: #fff;
    color: #25292d !important;
}
.cart-order-payment-success-home-btn:hover {
    border-color: #bfc6cd;
    color: #171b1f !important;
}

@media (max-width: 575.98px) {
    .cart-order-payment-success-actions {
        flex-direction: column;
    }
    .cart-order-payment-success-btn {
        width: 100%;
    }
}

/* 問卷方案包購物車項目 */
.cart-shopping-body .cart-survey-plan-image-grid {
    display: grid;
    gap: 3px;
    padding: 3px;
    overflow: hidden;
    background-color: #f1f5f2;
}

.cart-shopping-body .cart-survey-plan-image-grid.is-count-0,
.cart-shopping-body .cart-survey-plan-image-grid.is-count-1 {
    grid-template-columns: minmax(0, 1fr);
    grid-template-rows: minmax(0, 1fr);
}

.cart-shopping-body .cart-survey-plan-image-grid.is-count-2 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    grid-template-rows: minmax(0, 1fr);
}

.cart-shopping-body .cart-survey-plan-image-grid.is-count-3 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    grid-template-rows: repeat(2, minmax(0, 1fr));
}

.cart-shopping-body .cart-survey-plan-image-grid.is-count-3 .cart-survey-plan-image-cell:first-child {
    grid-row: 1 / span 2;
}

.cart-shopping-body .cart-survey-plan-image-grid.is-count-4 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    grid-template-rows: repeat(2, minmax(0, 1fr));
}

.cart-survey-plan-image-cell {
    min-width: 0;
    min-height: 0;
    overflow: hidden;
    border-radius: 4px;
    background-color: #e5ece7;
}

.cart-survey-plan-image-cell img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.cart-survey-plan-image-cell.is-empty {
    background: repeating-linear-gradient(
        135deg,
        rgba(255, 255, 255, 0.55),
        rgba(255, 255, 255, 0.55) 5px,
        rgba(222, 231, 224, 0.75) 5px,
        rgba(222, 231, 224, 0.75) 10px
    );
}

.cart-survey-plan-meta {
    /* margin-top: 4px; */
    font-size: 13px;
    color: #6c757d;
    line-height: 1.5;
}

.cart-survey-plan-product-list {
    margin-top: 3px;
    padding: 5px 8px 6px;
    border-radius: 3px;
    background: rgba(0, 0, 0, 0.035);
}

.cart-survey-plan-product-item {
    font-size: 0.95rem;
    color: #555;
    line-height: 1.5;
}

.cart-survey-plan-fixed-qty {
    justify-content: center;
}

.cart-survey-plan-fixed-qty .booking-item-option-sub,
.cart-survey-plan-fixed-qty .booking-item-option-add {
    cursor: not-allowed;
    opacity: 0.2;
}

.cart-survey-plan-fixed-qty .booking-item-option-qty {
    min-width: 24px;
}

/* 購物車：折扣 badge 與折扣價格 */
.cart-discount-badge-list {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 5px;
    margin-bottom: 3px;
}
.cart-discount-badge-list .badge.cart-discount-badge {
    display: inline-flex;
    align-items: center;
    width: fit-content;
    max-width: 100%;
    padding: 2px 4px 4px;
    border-radius: 3px;
    background-color: var(--c-05);
    color: #fff;
    font-size: 0.9rem;
    font-weight: 500;
    line-height: 1.15;
}
.cart-discount-badge-list .badge.cart-discount-badge-disabled {
    border: 1px solid #b4aaa2;
    background-color: #f2efed;
    color: #756b64;
}
.cart-price-stack {
    display: inline-flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 1px;
    line-height: 1.25;
}
.cart-summary-product-price .cart-price-stack,
.cart-shopping-header .shopping-item-price .cart-price-stack,
.cart-shopping-header .shopping-item-subtotal .cart-price-stack,
.cart-shopping-body .shopping-item-price .cart-price-stack,
.cart-shopping-body .shopping-item-subtotal .cart-price-stack {
    align-items: flex-end;
}
.cart-price-current {
    color: #15191d;
    font-size: 1em;
    font-weight: 800;
    line-height: 1.25;
}
.cart-price-original {
    color: #9aa3ad;
    font-size: 0.82em;
    font-weight: 500;
    line-height: 1.4;
    text-decoration: line-through;
}
.cart-summary-product-item .cart-discount-badge-list {
    margin-top: 4px;
    margin-bottom: 0;
}
.cart-survey-plan-qty {
    display: inline-block;
    min-width: 20px;
    color: #15191d;
    font-weight: 700;
    text-align: center;
}

/* 購物車：優惠券與點數 */
.cart-discount-select-block {
    width: 100%;
    border: 1px solid #e3e8ec;
    border-radius: 8px;
    overflow: hidden;
    background-color: #fff;
}
.cart-discount-select-title {
    display: flex;
    align-items: center;
    gap: 10px;
    margin: 0;
    font-size: 1.08rem;
    font-weight: 700;
}
.cart-coupon-select-header,
.cart-point-input-row,
.cart-point-title-wrap,
.cart-point-action {
    display: flex;
    align-items: center;
    gap: 12px;
}
.cart-coupon-select-header,
.cart-point-input-row {
    justify-content: space-between;
}
.cart-coupon-select-header {
    min-height: 66px;
    padding: 13px 18px;
}
.cart-point-input-row {
    min-height: 66px;
    padding: 13px 18px;
}
.cart-point-title-wrap {
    min-width: 0;
}
.cart-point-description {
    margin-top: 3px;
    color: #84929b;
    font-size: 0.96rem;
    line-height: 1.4;
}
.cart-point-description strong {
    color: inherit;
    font-weight: 500;
}
.cart-point-result-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 15px;
    min-height: 44px;
    padding: 9px 18px 9px 54px;
    border-top: 1px solid #e6eaed;
    background-color: #fbfcfc;
    color: #7b8992;
    font-size: 0.96rem;
}
.cart-point-result-row strong {
    color: #c58b35;
    font-weight: 700;
}
.cart-point-period-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 15px;
    min-height: 66px;
    padding: 13px 18px;
    border-top: 1px solid #e6eaed;
    background-color: #fff;
}
.cart-point-period-input-wrap {
    flex: 0 0 165px;
}
.cart-point-period-input-wrap #point_period_limit {
    width: 100%;
    height: 38px;
    padding-right: 34px;
}
.cart-coupon-title-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 28px;
    height: 28px;
    border-radius: 6px;
    background-color: #f1f4f5;
    color: #6f8490;
}
.cart-coupon-selected-detail {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 15px;
    min-height: 62px;
    padding: 11px 18px 11px 54px;
    border-top: 1px solid #e6eaed;
    background-color: #fbfcfc;
}
.cart-coupon-selected-text {
    color: #1f2f39;
    font-size: 1.08rem;
    font-weight: 700;
    line-height: 1.4;
}
.cart-coupon-selected-scope {
    margin-top: 4px;
    color: #84929b;
    font-size: 0.96rem;
    line-height: 1.4;
}
.cart-coupon-selected-discount {
    margin-left: auto;
    color: #c58b35;
    font-size: 1.08rem;
    font-weight: 700;
    text-align: right;
    white-space: nowrap;
}
.cart-coupon-select-btn,
.cart-point-all-btn {
    min-height: 38px;
    padding: 7px 13px;
    border: 1px solid #aebbc3;
    border-radius: 6px;
    background-color: #fff;
    color: #415463;
    font-weight: 600;
}
.cart-coupon-select-btn i {
    margin-left: 5px;
    font-size: 0.8em;
}
.swal2-popup.cart-coupon-modal-popup {
    max-width: calc(100vw - 24px);
    padding: 0;
    border-radius: 18px;
    overflow: hidden;
    background-color: #f5f7f8;
}
.cart-coupon-modal-popup .cart-coupon-modal-title {
    margin: 0;
    padding: 24px 64px 4px 24px;
    background-color: #fff;
    color: #182c38;
    font-size: 1.9rem;
    font-weight: 800;
    text-align: left;
}
.cart-coupon-modal-popup .cart-coupon-modal-close {
    top: 18px;
    right: 18px;
    width: 40px;
    height: 40px;
    border: 0 !important;
    border-radius: 50%;
    outline: 0 !important;
    background-color: #f0f3f4;
    color: #6e818d;
    font-size: 2rem;
    box-shadow: none !important;
}
.cart-coupon-modal-popup .cart-coupon-modal-close:hover,
.cart-coupon-modal-popup .cart-coupon-modal-close:focus,
.cart-coupon-modal-popup .cart-coupon-modal-close:active {
    border: 0 !important;
    outline: 0 !important;
    background-color: #f0f3f4;
    color: #6e818d;
    box-shadow: none !important;
}
.cart-coupon-modal-popup .cart-coupon-modal-html {
    margin: 0;
    padding: 0;
    overflow: hidden;
    color: #182c38;
}
.cart-coupon-modal-note {
    padding: 2px 24px 20px;
    border-bottom: 1px solid #dfe5e8;
    background-color: #fff;
    color: #52636d;
    font-size: 1.04rem;
    line-height: 1.5;
    text-align: left;
}
.cart-coupon-modal-list {
    display: flex;
    flex-direction: column;
    gap: 14px;
    max-height: 570px;
    padding: 18px 24px 22px;
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
    text-align: left;
}
.cart-coupon-modal-item {
    display: flex;
    position: relative;
    align-items: stretch;
    gap: 0;
    margin: 0;
    padding: 0;
    border: 1px solid #d6dfe4;
    min-height: 128px;
    border-radius: 11px;
    overflow: hidden;
    background-color: #fff;
    cursor: pointer;
    flex-shrink: 0;
}
.cart-coupon-modal-item input {
    position: absolute;
    opacity: 0;
    pointer-events: none;
}
.cart-coupon-value,
.cart-coupon-modal-content,
.cart-coupon-modal-content small {
    display: block;
}
.cart-coupon-value {
    display: flex;
    align-items: center;
    justify-content: center;
    flex: 0 0 145px;
    flex-direction: column;
    padding: 20px 10px;
    background-color: #344e5e;
    color: #fff;
    text-align: center;
}
.cart-coupon-value strong {
    font-size: 1.85rem;
    line-height: 1.15;
    white-space: nowrap;
}
.cart-coupon-value small {
    margin-top: 8px;
    color: rgba(255, 255, 255, 0.72);
    font-size: 0.9rem;
}
.cart-coupon-modal-content {
    flex: 1;
    min-width: 0;
    padding: 19px 58px 17px 20px;
}
.cart-coupon-modal-content > strong {
    display: block;
    margin-bottom: 7px;
    color: #172d3a;
    font-size: 1.22rem;
    line-height: 1.4;
}
.cart-coupon-modal-content small {
    margin-top: 6px;
    color: #82919a;
    font-size: 0.98rem;
    line-height: 1.5;
}
.cart-coupon-radio {
    position: absolute;
    top: 50%;
    right: 18px;
    width: 22px;
    height: 22px;
    border: 2px solid #b8c5cc;
    border-radius: 50%;
    transform: translateY(-50%);
}
.cart-coupon-modal-item input:checked + .cart-coupon-radio {
    border-color: #607c8d;
    box-shadow: inset 0 0 0 5px #fff;
    background-color: #607c8d;
}
.cart-coupon-modal-item:has(input:checked) {
    border-color: #607c8d;
    box-shadow: 0 0 0 1px rgba(96, 124, 141, 0.18);
}
.cart-coupon-modal-item.is-disabled {
    background-color: #f3f5f6;
    cursor: not-allowed;
}
.cart-coupon-modal-item.is-disabled .cart-coupon-value {
    background-color: #84939c;
}
.cart-coupon-modal-item.is-disabled .cart-coupon-modal-content > strong,
.cart-coupon-modal-item.is-disabled .cart-coupon-modal-content small {
    color: #9aa5ab;
}
.cart-coupon-modal-item.is-disabled .cart-coupon-disabled-reason {
    color: #b26f3c;
    font-weight: 700;
}
.cart-coupon-modal-item.is-disabled .cart-coupon-radio {
    border-color: #d3dade;
    background-color: #e8ecee;
}
.cart-coupon-modal-none {
    align-items: center;
    min-height: 76px;
}
.cart-coupon-modal-none .cart-coupon-modal-content {
    padding: 23px 58px 23px 20px;
}
.cart-point-action #point_use {
    height: 38px;
    width: 130px;
    padding-right: 34px;
}
.cart-point-input-wrap {
    position: relative;
}
.cart-point-unit {
    position: absolute;
    top: 50%;
    right: 12px;
    color: #87959e;
    transform: translateY(-50%);
    pointer-events: none;
}
.cart-point-all-btn {
    border-color: #edf0f2;
    background-color: #edf0f2;
    color: #415463;
}

@media (max-width: 767.98px) {
    .cart-point-input-row {
        align-items: stretch;
        flex-direction: column;
    }
    .cart-point-action {
        width: 100%;
    }
    .cart-point-result-row {
        padding-right: 16px;
        padding-left: 16px;
    }
    .cart-point-period-row {
        align-items: stretch;
        flex-direction: column;
        padding-right: 16px;
        padding-left: 16px;
    }
    .cart-point-period-input-wrap {
        flex-basis: auto;
        width: 100%;
    }
    .cart-coupon-selected-detail {
        padding-right: 16px;
        padding-left: 16px;
    }
    .cart-coupon-modal-popup .cart-coupon-modal-title {
        padding: 20px 58px 4px 18px;
        font-size: 1.55rem;
    }
    .cart-coupon-modal-note {
        padding: 2px 18px 16px;
    }
    .cart-coupon-modal-list {
        max-height: 68vh;
        padding: 12px;
    }
    .cart-coupon-value {
        flex-basis: 112px;
    }
    .cart-coupon-value strong {
        font-size: 1.4rem;
    }
    .cart-coupon-modal-content {
        padding: 14px 45px 13px 13px;
    }
    .cart-coupon-modal-content > strong {
        font-size: 1.08rem;
    }
    .cart-coupon-modal-content small {
        font-size: 0.9rem;
    }
    .cart-point-action #point_use {
        flex: 1;
        width: auto;
    }
    .cart-point-input-wrap {
        flex: 1;
    }
    .cart-point-input-wrap #point_use {
        width: 100%;
    }
}

/* (2026-09-07)(allen) 訂閱扣款失敗訂單前往付款操作 */
.cart-order-success-actions.subscription-payment-failed {
    display: flex;
    justify-content: center;
    align-items: stretch;
    gap: 14px;
}
.cart-order-success-actions.subscription-payment-failed .cart-order-success-pay-btn {
    min-width: 230px;
}
.cart-order-success-actions.subscription-payment-failed .cart-order-success-pay-btn small {
    font-size: 12px;
    font-weight: 400;
    line-height: 1.5;
}
.cart-order-success-actions.subscription-payment-failed .cart-order-success-rebind-btn {
    background-color: #b40000;
}
.cart-order-success-actions.subscription-payment-failed .cart-order-success-rebind-btn:disabled {
    opacity: .45;
    cursor: not-allowed;
}
@media (max-width: 575.98px) {
    .cart-order-success-actions.subscription-payment-failed {
        flex-direction: column;
    }
    .cart-order-success-actions.subscription-payment-failed .cart-order-success-pay-btn {
        width: 100%;
        min-width: 0;
    }
}
