/* ==================== 结账页 cx-flow · 质感优化（与全站 liquid / signal 对齐） ==================== */

.page-esim-taocan.cx-flow {
    --cx-line: rgba(15, 23, 42, 0.1);
    --cx-line-soft: rgba(15, 23, 42, 0.06);
    --cx-muted: #64748b;
    --cx-ink: #0f172a;
    --cx-signal: #6366f1;
    --cx-signal-deep: #4f46e5;
    --cx-ice: #38bdf8;
    /* 薄荷青点缀（与靛蓝同系冷暖过渡） */
    --cx-mint: #2dd4bf;
    --cx-mint-light: #99f6e4;
    --cx-mint-soft: rgba(45, 212, 191, 0.12);
    --cx-mint-mid: #14b8a6;
    --cx-mint-deep: #0f766e;
    --cx-mint-glow: rgba(94, 234, 212, 0.28);
    --cx-card: rgba(255, 255, 255, 0.92);
    --cx-shadow:
        0 1px 2px rgba(15, 23, 42, 0.04),
        0 12px 40px -18px rgba(99, 102, 241, 0.12);
    --cx-shadow-hover:
        0 4px 24px rgba(99, 102, 241, 0.1),
        0 1px 2px rgba(15, 23, 42, 0.06);
    --cx-radius: 18px;
    --cx-radius-sm: 12px;
    --cx-bar-h: 112px;
    --cx-layout-max: min(100% - 32px, 920px);
    --cx-form-gap: 22px;
    --cx-ease-tap: cubic-bezier(0.34, 1.2, 0.64, 1);
    --cx-ease-out: cubic-bezier(0.22, 1, 0.36, 1);
    --cx-tap: 0.16s;
    padding-bottom: calc(var(--cx-bar-h) + env(safe-area-inset-bottom, 0px) + 20px);
    font-family:
        ui-sans-serif,
        system-ui,
        -apple-system,
        "Segoe UI",
        "PingFang SC",
        "Hiragino Sans GB",
        "Microsoft YaHei",
        sans-serif;
    font-feature-settings: "kern" 1, "liga" 1;
    -webkit-font-smoothing: antialiased;
    text-rendering: optimizeLegibility;
}

@media (min-width: 640px) {
    .page-esim-taocan.cx-flow {
        --cx-bar-h: 76px;
    }
}

@media (min-width: 1024px) {
    .page-esim-taocan.cx-flow {
        --cx-layout-max: min(100% - 40px, 1040px);
        --cx-form-gap: 26px;
    }
}

#co-plan,
#co-runtime {
    scroll-margin-top: calc(var(--nav-stack-clearance, 104px) + 20px);
}

#co-dock {
    scroll-margin-top: calc(var(--nav-stack-clearance, 104px) + 12px);
}

/* —— 流程条（内嵌于内容区，不 sticky，避免与顶栏叠成「双层导航」） —— */
.cx-flowhead {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr) auto;
    align-items: center;
    gap: 12px 16px;
    margin: 0 0 22px;
    padding: 12px 16px;
    max-width: 100%;
    background:
        linear-gradient(135deg, rgba(236, 253, 245, 0.35) 0%, transparent 42%),
        linear-gradient(225deg, rgba(224, 231, 255, 0.4) 0%, transparent 38%),
        var(--cx-card);
    border: 1px solid rgba(45, 212, 191, 0.1);
    border-radius: var(--cx-radius-sm);
    box-shadow: var(--cx-shadow);
}

/* 左右：图标 + 胶囊按钮 */
.cx-flowhead__btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 7px;
    min-height: 38px;
    padding: 8px 15px 8px 13px;
    font-size: 0.8125rem;
    font-weight: 700;
    letter-spacing: 0.02em;
    text-decoration: none;
    border-radius: 999px;
    border: 1px solid transparent;
    box-shadow: 0 1px 0 rgba(255, 255, 255, 0.95) inset, 0 2px 10px rgba(15, 23, 42, 0.06);
    transition:
        background 0.22s var(--cx-ease-out),
        color 0.2s ease,
        border-color 0.2s ease,
        box-shadow 0.22s var(--cx-ease-out),
        transform var(--cx-tap) var(--cx-ease-tap);
}

.cx-flowhead__btn--back {
    grid-column: 1;
    justify-self: start;
    color: var(--cx-signal-deep);
    background: linear-gradient(180deg, #fff 0%, #f5f3ff 100%);
    border-color: rgba(99, 102, 241, 0.28);
}

.cx-flowhead__btn--back:hover {
    color: #4338ca;
    background: #fff;
    border-color: rgba(99, 102, 241, 0.45);
    box-shadow:
        0 1px 0 rgba(255, 255, 255, 1) inset,
        0 6px 20px rgba(99, 102, 241, 0.14);
    text-decoration: none;
}

.cx-flowhead__btn--terms {
    grid-column: 3;
    justify-self: end;
    color: #475569;
    background: linear-gradient(180deg, #fff 0%, #f8fafc 100%);
    border-color: rgba(15, 23, 42, 0.1);
}

.cx-flowhead__btn--terms:hover {
    color: var(--cx-signal-deep);
    background: #fff;
    border-color: rgba(99, 102, 241, 0.32);
    box-shadow:
        0 1px 0 rgba(255, 255, 255, 1) inset,
        0 6px 18px rgba(99, 102, 241, 0.1);
    text-decoration: none;
}

.cx-flowhead__btn:active {
    transform: scale(0.97);
}

.cx-flowhead__btn:focus-visible {
    outline: 2px solid rgba(99, 102, 241, 0.45);
    outline-offset: 2px;
}

.cx-flowhead__ico {
    display: flex;
    flex-shrink: 0;
    width: 16px;
    height: 16px;
    color: inherit;
    opacity: 0.92;
}

.cx-flowhead__btn .cx-flowhead__ico svg {
    width: 16px;
    height: 16px;
    stroke-width: 2.25px;
}

.cx-flowhead__steps {
    grid-column: 2;
    justify-self: center;
    list-style: none;
    margin: 0;
    padding: 4px 6px;
    display: inline-flex;
    align-items: center;
    gap: 0;
    font-size: 0.75rem;
    font-weight: 700;
    color: var(--cx-muted);
    background: linear-gradient(180deg, rgba(240, 253, 250, 0.75) 0%, rgba(248, 250, 252, 0.98) 100%);
    border: 1px solid rgba(45, 212, 191, 0.12);
    border-radius: 999px;
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.9);
}
.cx-flowhead__steps li {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 4px 10px;
}
.cx-flowhead__steps .cx-flowhead__n {
    width: 22px;
    height: 22px;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    border-radius: 50%;
    font-size: 0.625rem;
    font-weight: 800;
    background: #fff;
    color: var(--cx-muted);
    border: 1px solid var(--cx-line-soft);
    box-shadow: 0 1px 2px rgba(15, 23, 42, 0.04);
}
.cx-flowhead__steps li.is-current {
    color: var(--cx-ink);
}
.cx-flowhead__steps li.is-current .cx-flowhead__n {
    border-color: transparent;
    background: linear-gradient(135deg, var(--cx-signal) 0%, #2563eb 100%);
    color: #fff;
    box-shadow: 0 4px 12px rgba(99, 102, 241, 0.35);
}

.cx-flowhead__step-txt {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    white-space: nowrap;
}

.cx-flowhead__step-ico {
    display: flex;
    flex-shrink: 0;
    width: 14px;
    height: 14px;
    color: var(--cx-muted);
    opacity: 0.88;
}

.cx-flowhead__steps li.is-current .cx-flowhead__step-ico {
    color: var(--cx-signal-deep);
    opacity: 1;
}

.cx-flowhead__step-ico svg {
    width: 14px;
    height: 14px;
    stroke-width: 2.25px;
}

.cx-flowhead__steps .cx-flowhead__sep {
    align-self: center;
    width: 28px;
    height: 1px;
    padding: 0;
    margin: 0;
    flex-shrink: 0;
    list-style: none;
    background: linear-gradient(90deg, transparent, rgba(15, 23, 42, 0.14), transparent);
}

@media (max-width: 560px) {
    .cx-flowhead {
        grid-template-columns: 1fr 1fr;
        grid-template-areas:
            "back help"
            "steps steps";
        padding: 12px 14px;
    }
    .cx-flowhead__btn--back {
        grid-area: back;
        justify-self: start;
    }
    .cx-flowhead__btn--terms {
        grid-area: help;
        justify-self: end;
        grid-column: auto;
    }
    .cx-flowhead__steps {
        grid-area: steps;
        grid-column: auto;
        justify-self: stretch;
        width: 100%;
        justify-content: center;
    }
}

/* —— 主区背景 —— */
.cx-body {
    position: relative;
    isolation: isolate;
    overflow-x: clip;
    min-height: 42vh;
    padding: 24px 0 40px;
    background:
        radial-gradient(ellipse 80% 50% at 50% -20%, rgba(99, 102, 241, 0.09), transparent 55%),
        radial-gradient(ellipse 60% 40% at 100% 50%, rgba(56, 189, 248, 0.06), transparent 45%),
        radial-gradient(ellipse 55% 42% at 0% 100%, rgba(45, 212, 191, 0.085), transparent 52%),
        radial-gradient(ellipse 50% 38% at 100% 100%, rgba(94, 234, 212, 0.065), transparent 50%),
        linear-gradient(180deg, #f1f5f9 0%, #f4fdfa 38%, #f8fafc 72%, #f6faf9 100%);
}

.page-esim-taocan.cx-flow .cx-body > .cx-content {
    position: relative;
    z-index: 2;
}

/* 背景氛围光（慢漂移，提升质感） */
.cx-ambient {
    position: absolute;
    inset: -8% -12% auto;
    height: min(72vh, 640px);
    pointer-events: none;
    z-index: 0;
    overflow: hidden;
}

.cx-ambient__blob {
    position: absolute;
    border-radius: 50%;
    filter: blur(72px);
    opacity: 0.42;
    will-change: transform;
}

.cx-ambient__blob--a {
    width: min(480px, 62vw);
    height: min(480px, 62vw);
    left: -14%;
    top: -18%;
    background: radial-gradient(circle at 35% 35%, rgba(129, 140, 248, 0.75) 0%, transparent 68%);
}

.cx-ambient__blob--b {
    width: min(380px, 48vw);
    height: min(380px, 48vw);
    right: -10%;
    top: 8%;
    background: radial-gradient(
        circle at 48% 38%,
        rgba(94, 234, 212, 0.42) 0%,
        rgba(56, 189, 248, 0.38) 38%,
        transparent 66%
    );
    opacity: 0.38;
}

.cx-ambient__blob--c {
    width: min(320px, 42vw);
    height: min(320px, 42vw);
    left: 38%;
    top: 32%;
    background: radial-gradient(
        circle at 50% 50%,
        rgba(45, 212, 191, 0.32) 0%,
        rgba(167, 139, 250, 0.28) 48%,
        transparent 64%
    );
    opacity: 0.3;
}

/* 视口两侧装饰：光柱 + 细线流动 + 节点微光（fixed，在正文底之下） */
.cx-sidedecor {
    position: fixed;
    inset: 0;
    z-index: 1;
    pointer-events: none;
    overflow: hidden;
}

.cx-sidedecor__glow {
    position: absolute;
    top: max(9vh, 72px);
    bottom: calc(var(--cx-bar-h) + 28px + env(safe-area-inset-bottom, 0px));
    width: min(56px, 8vw);
    max-width: 72px;
    filter: blur(22px);
    opacity: 0.38;
    border-radius: 999px;
}

.cx-sidedecor__glow--l {
    left: max(0px, env(safe-area-inset-left));
    transform: translateX(-35%);
    background: linear-gradient(
        180deg,
        rgba(99, 102, 241, 0) 0%,
        rgba(99, 102, 241, 0.5) 32%,
        rgba(45, 212, 191, 0.42) 54%,
        rgba(56, 189, 248, 0.28) 72%,
        rgba(99, 102, 241, 0) 100%
    );
}

.cx-sidedecor__glow--r {
    right: max(0px, env(safe-area-inset-right));
    transform: translateX(35%);
    background: linear-gradient(
        180deg,
        rgba(45, 212, 191, 0) 0%,
        rgba(94, 234, 212, 0.4) 36%,
        rgba(56, 189, 248, 0.38) 55%,
        rgba(129, 140, 248, 0.32) 74%,
        rgba(45, 212, 191, 0) 100%
    );
}

.cx-sidedecor__rib {
    position: absolute;
    top: max(10vh, 80px);
    bottom: calc(var(--cx-bar-h) + 24px + env(safe-area-inset-bottom, 0px));
    width: 2px;
    border-radius: 2px;
    opacity: 0.55;
}

.cx-sidedecor__rib--l {
    left: max(10px, calc(8px + env(safe-area-inset-left)));
    background: linear-gradient(
        180deg,
        rgba(99, 102, 241, 0.05) 0%,
        rgba(99, 102, 241, 0.58) 20%,
        rgba(45, 212, 191, 0.62) 48%,
        rgba(56, 189, 248, 0.48) 72%,
        rgba(99, 102, 241, 0.06) 100%
    );
    background-size: 100% 220%;
    background-position: 0 0;
}

.cx-sidedecor__rib--r {
    right: max(10px, calc(8px + env(safe-area-inset-right)));
    background: linear-gradient(
        180deg,
        rgba(45, 212, 191, 0.07) 0%,
        rgba(94, 234, 212, 0.55) 26%,
        rgba(56, 189, 248, 0.52) 48%,
        rgba(79, 70, 229, 0.4) 74%,
        rgba(20, 184, 166, 0.08) 100%
    );
    background-size: 100% 240%;
    background-position: 0 40%;
}

.cx-sidedecor__node {
    position: absolute;
    width: 5px;
    height: 5px;
    border-radius: 50%;
    background: radial-gradient(
        circle at 30% 30%,
        #ecfdf5 0%,
        rgba(45, 212, 191, 0.9) 38%,
        rgba(129, 140, 248, 0.75) 68%,
        rgba(79, 70, 229, 0.35) 100%
    );
    box-shadow:
        0 0 12px rgba(45, 212, 191, 0.45),
        0 0 24px rgba(99, 102, 241, 0.35);
    opacity: 0.38;
}

.cx-sidedecor__node--tl {
    left: max(18px, calc(12px + env(safe-area-inset-left)));
    top: max(18vh, 120px);
}

.cx-sidedecor__node--tr {
    right: max(18px, calc(12px + env(safe-area-inset-right)));
    top: max(26vh, 200px);
}

.cx-sidedecor__node--bl {
    left: max(22px, calc(14px + env(safe-area-inset-left)));
    bottom: calc(var(--cx-bar-h) + 52px + env(safe-area-inset-bottom, 0px));
}

.cx-sidedecor__node--br {
    right: max(22px, calc(14px + env(safe-area-inset-right)));
    bottom: calc(var(--cx-bar-h) + 88px + env(safe-area-inset-bottom, 0px));
}

@media (max-width: 560px) {
    .cx-sidedecor {
        opacity: 0.55;
    }

    .cx-sidedecor__glow {
        width: min(40px, 10vw);
        opacity: 0.28;
    }

    .cx-sidedecor__node {
        opacity: 0.22;
        transform: scale(0.85);
    }
}

@media (max-width: 400px) {
    .cx-sidedecor {
        display: none;
    }
}

.cx-content {
    max-width: var(--cx-layout-max);
    margin: 0 auto;
}

.cx-pagehead {
    margin-bottom: 4px;
}

.cx-pagehead__eyebrow {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    margin: 0 0 6px;
    padding: 0;
    font-size: 0.6875rem;
    font-weight: 800;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    background: linear-gradient(100deg, #4f46e5 0%, #0d9488 88%);
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
}

.cx-pagehead__eyebrow-ico {
    display: flex;
    width: 15px;
    height: 15px;
    color: var(--cx-mint-mid);
    opacity: 0.95;
}

.cx-pagehead__eyebrow-ico svg {
    width: 15px;
    height: 15px;
    stroke-width: 2.4px;
}

.cx-pagehead .cx-title {
    margin: 0 0 14px;
}

.cx-title {
    margin: 0 0 14px;
    font-size: clamp(1.6rem, 4.5vw, 1.95rem);
    font-weight: 800;
    letter-spacing: -0.045em;
    line-height: 1.1;
    background: linear-gradient(118deg, #0f172a 12%, #312e81 40%, #4f46e5 68%, #0d9488 100%);
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
}
@supports not (background-clip: text) {
    .cx-title {
        background: none;
        color: var(--cx-ink);
    }

    .cx-pagehead__eyebrow {
        background: none;
        color: #4f46e5;
    }
}

/* 说明卡：图标 + 标签 + 正文，替代原 cx-lead 灰框 */
.cx-intro {
    position: relative;
    display: flex;
    align-items: flex-start;
    gap: 16px 18px;
    margin: 0 0 28px;
    padding: 16px 18px 17px 16px;
    max-width: min(44em, 100%);
    border-radius: var(--cx-radius);
    background:
        linear-gradient(145deg, rgba(255, 255, 255, 0.97) 0%, rgba(248, 250, 252, 0.9) 42%, rgba(236, 253, 245, 0.55) 72%, rgba(238, 242, 255, 0.32) 100%);
    border: 1px solid rgba(99, 102, 241, 0.12);
    box-shadow:
        0 1px 0 rgba(255, 255, 255, 0.95) inset,
        0 0 0 1px rgba(45, 212, 191, 0.08),
        0 8px 32px -8px rgba(99, 102, 241, 0.1),
        0 8px 28px -10px rgba(45, 212, 191, 0.06),
        0 2px 8px rgba(15, 23, 42, 0.04);
    overflow: hidden;
}

.cx-intro::before {
    content: "";
    position: absolute;
    z-index: 2;
    left: 0;
    top: 12px;
    bottom: 12px;
    width: 4px;
    border-radius: 0 6px 6px 0;
    background: linear-gradient(180deg, #6366f1 0%, #4f46e5 38%, #2dd4bf 72%, #14b8a6 100%);
    opacity: 0.95;
}

.cx-intro__figure {
    position: relative;
    z-index: 1;
    flex: 0 0 auto;
    width: 48px;
    height: 48px;
    display: flex;
    align-items: center;
    justify-content: center;
    margin-top: 2px;
    border-radius: 14px;
    color: var(--cx-signal-deep);
    background: linear-gradient(145deg, rgba(99, 102, 241, 0.13) 0%, rgba(45, 212, 191, 0.12) 55%, rgba(56, 189, 248, 0.1) 100%);
    border: 1px solid rgba(45, 212, 191, 0.22);
    box-shadow: 0 1px 0 rgba(255, 255, 255, 0.8) inset;
}

.cx-intro__figure svg {
    width: 24px;
    height: 24px;
    stroke-width: 2px;
}

.cx-intro__halo {
    position: absolute;
    inset: -30%;
    border-radius: inherit;
    background: radial-gradient(circle at 30% 30%, rgba(99, 102, 241, 0.2), transparent 55%);
    pointer-events: none;
}

.cx-intro__main {
    position: relative;
    z-index: 1;
    flex: 1;
    min-width: 0;
    padding-left: 2px;
}

.cx-intro__label {
    margin: 0 0 7px;
    font-size: 0.6875rem;
    font-weight: 800;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: var(--cx-mint-deep);
}

.cx-intro__text {
    margin: 0;
    font-size: 0.90625rem;
    line-height: 1.68;
    letter-spacing: 0.02em;
    color: #475569;
}

@media (max-width: 420px) {
    .cx-intro {
        flex-direction: column;
        align-items: center;
        text-align: center;
        padding: 16px 14px 18px;
    }
    .cx-intro::before {
        top: 0;
        bottom: auto;
        left: 12px;
        right: 12px;
        width: auto;
        height: 3px;
        border-radius: 0 0 6px 6px;
    }
    .cx-intro__figure {
        margin-top: 4px;
    }
    .cx-intro__main {
        padding-left: 0;
    }
}

/* —— 订购摘要卡 —— */
.cx-recap {
    margin-bottom: 0;
    padding: 0;
    overflow: hidden;
    background: var(--cx-card) !important;
    border: 1px solid rgba(99, 102, 241, 0.12) !important;
    border-radius: var(--cx-radius) !important;
    box-shadow: var(--cx-shadow) !important;
    backdrop-filter: blur(12px) saturate(1.2);
    -webkit-backdrop-filter: blur(12px) saturate(1.2);
}
.cx-recap.sketch-box:hover {
    transform: none !important;
}

.cx-recap__head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 16px 20px 14px;
    border-bottom: 1px solid var(--cx-line-soft);
    background: linear-gradient(180deg, rgba(255, 255, 255, 0.96) 0%, rgba(236, 253, 245, 0.45) 55%, rgba(248, 250, 252, 0.55) 100%);
}

.cx-recap__h {
    display: flex;
    align-items: center;
    gap: 8px;
    margin: 0;
    font-size: 0.6875rem;
    font-weight: 800;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--cx-signal-deep);
}

.cx-recap__h-ico {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 22px;
    height: 22px;
    border-radius: 7px;
    background: linear-gradient(145deg, #6366f1 0%, #4f46e5 60%, #2563eb 100%);
    color: #fff;
    box-shadow: 0 2px 8px rgba(79, 70, 229, 0.25);
    flex-shrink: 0;
}

.cx-recap__h-ico svg {
    width: 11px;
    height: 11px;
    stroke-width: 2.4px;
}

.cx-recap__pill {
    display: inline-flex;
    align-items: center;
    gap: 3px;
    font-size: 0.625rem;
    font-weight: 800;
    letter-spacing: 0.12em;
    padding: 5px 10px 5px 8px;
    border-radius: 999px;
    color: #0f766e;
    background: linear-gradient(135deg, rgba(45, 212, 191, 0.14) 0%, rgba(99, 102, 241, 0.1) 100%);
    border: 1px solid rgba(45, 212, 191, 0.28);
}

.cx-recap__pill svg {
    width: 10px;
    height: 10px;
    stroke-width: 2.5px;
    flex-shrink: 0;
    color: #14b8a6;
}

.cx-recap__table {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.875rem;
}
.cx-recap__table th {
    text-align: left;
    font-weight: 600;
    color: var(--cx-muted);
    padding: 11px 16px 11px 20px;
    vertical-align: middle;
    width: 8em;
    border-bottom: 1px solid var(--cx-line-soft);
}

/* 摘要表格 TH 内图标 */
.cx-th-ico {
    display: inline-flex;
    vertical-align: middle;
    margin-right: 5px;
    margin-top: -1px;
    width: 13px;
    height: 13px;
    stroke-width: 2.3px;
    color: #94a3b8;
    flex-shrink: 0;
}

.cx-th-ico svg {
    width: 13px;
    height: 13px;
}
.cx-recap__table td {
    padding: 12px 20px 12px 0;
    font-weight: 700;
    color: var(--cx-ink);
    border-bottom: 1px solid var(--cx-line-soft);
    font-variant-numeric: tabular-nums;
}
.cx-recap__table tr:last-child th,
.cx-recap__table tr:last-child td {
    border-bottom: none;
}
.cx-recap__table tbody tr {
    transition: background 0.15s;
}
.cx-recap__table tbody tr:hover {
    background: linear-gradient(90deg, rgba(99, 102, 241, 0.03) 0%, rgba(45, 212, 191, 0.05) 100%);
}

.cx-recap__total {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    padding: 16px 20px 18px;
    margin: 0;
    background: linear-gradient(180deg, rgba(236, 253, 245, 0.55) 0%, rgba(238, 242, 255, 0.45) 45%, rgba(255, 255, 255, 0.65) 100%);
    border-top: 1px solid rgba(45, 212, 191, 0.18);
    font-size: 0.8125rem;
    font-weight: 700;
    color: var(--cx-muted);
}
.cx-recap__total strong {
    font-size: 1.5rem;
    font-weight: 800;
    letter-spacing: -0.03em;
    font-variant-numeric: tabular-nums;
    background: linear-gradient(120deg, #312e81 0%, #4f46e5 55%, #0d9488 100%);
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
}
@supports not (background-clip: text) {
    .cx-recap__total strong {
        background: none;
        color: #312e81;
    }
}

.cx-recap__intro {
    margin: 0;
    padding: 10px 20px 12px;
    font-size: 0.8125rem;
    line-height: 1.5;
    color: var(--cx-muted);
    background: rgba(248, 250, 252, 0.65);
    border-bottom: 1px solid var(--cx-line-soft);
}

/* 表单下方的摘要：靠近付款决策 */
.cx-recap--afterform {
    margin-top: 28px;
    margin-bottom: 8px;
    border: 1px solid rgba(99, 102, 241, 0.18) !important;
    box-shadow:
        var(--cx-shadow),
        0 0 0 1px rgba(255, 255, 255, 0.6) inset !important;
}

#cx-order-recap {
    scroll-margin-top: calc(var(--nav-stack-clearance, 104px) + 12px);
}

/* 本页区块入场略轻，减少「弹一下」感 */
.page-esim-taocan .fade-in {
    transform: translateY(10px) scale(0.995);
}

/* 配置区与摘要：滚动入场时轻微错开，更有层次 */
.page-esim-taocan.cx-flow .cx-formgrid--plan-first > .fade-in:nth-child(1) {
    transition-delay: 0.04s;
}
.page-esim-taocan.cx-flow .cx-formgrid--plan-first > .fade-in:nth-child(2) {
    transition-delay: 0.12s;
}
.page-esim-taocan.cx-flow .cx-formgrid--plan-first > .fade-in:nth-child(3) {
    transition-delay: 0.2s;
}
.page-esim-taocan.cx-flow #cx-order-recap.fade-in {
    transition-delay: 0.08s;
}

@media (prefers-reduced-motion: reduce) {
    .page-esim-taocan .fade-in {
        transform: none;
    }

    .page-esim-taocan.cx-flow .cx-formgrid--plan-first > .fade-in:nth-child(n),
    .page-esim-taocan.cx-flow #cx-order-recap.fade-in {
        transition-delay: 0ms !important;
    }
}

/* —— 配置区：≥768 左栏「规格 → 加购」，右栏「计费与机房」纵向（跨两行）；右栏内周期与机房上下排 —— */
.cx-formgrid {
    display: grid;
    gap: var(--cx-form-gap);
    align-items: start;
}

.cx-formgrid--plan-first {
    grid-template-columns: minmax(0, 1fr);
    grid-template-areas:
        'pl'
        'ad'
        'rt';
}

.cx-formgrid--plan-first .cx-panel--plan {
    grid-area: pl;
}

.cx-formgrid--plan-first .cx-panel--addons {
    grid-area: ad;
}

.cx-formgrid--plan-first .cx-panel--runtime {
    grid-area: rt;
}

@media (min-width: 768px) {
    .cx-formgrid.cx-formgrid--plan-first {
        align-items: stretch;
    }

    .cx-formgrid--plan-first {
        grid-template-columns: minmax(0, 1fr) minmax(280px, 1.05fr);
        grid-template-areas:
            'pl rt'
            'ad rt';
        column-gap: 26px;
        row-gap: var(--cx-form-gap);
    }

    /* 右栏与左栏（规格+加购）底边对齐：栅格拉伸 + 内部 flex 吸底占位 */
    .cx-formgrid--plan-first .cx-panel--runtime {
        align-self: stretch;
        display: flex;
        flex-direction: column;
        min-height: 0;
        border-radius: var(--cx-radius);
        padding: 22px 22px 24px;
        box-shadow:
            0 4px 24px rgba(15, 23, 42, 0.06),
            0 0 0 1px rgba(99, 102, 241, 0.08) inset;
    }

    .cx-formgrid--plan-first .cx-panel--runtime .cx-panel__h,
    .cx-formgrid--plan-first .cx-panel--runtime .cx-panel__p {
        flex-shrink: 0;
    }

    .cx-formgrid--plan-first .cx-panel--runtime .cx-runtime-stack {
        display: flex;
        flex-direction: column;
        align-items: stretch;
        gap: 18px;
        flex: 0 1 auto;
    }

    .cx-formgrid--plan-first .cx-panel--runtime .cx-runtime-foot {
        margin-top: auto;
        flex-shrink: 0;
    }

    .cx-formgrid--plan-first .cx-runtime-field {
        flex: 0 0 auto;
        width: 100%;
        min-width: 0;
    }

    /* 双栏布局中磁贴间距微调 */
    .cx-formgrid--plan-first .cx-panel--addons .cx-addonlist.cx-addonlist--tiles {
        gap: 10px;
    }

    .cx-formgrid--plan-first .cx-panel--addons .cx-panel__p {
        margin-bottom: 10px;
    }

    .cx-formgrid--plan-first .cx-panel--plan {
        background: linear-gradient(165deg, rgba(255, 255, 255, 0.96) 0%, rgba(248, 250, 252, 0.9) 100%);
        border-color: rgba(99, 102, 241, 0.12);
        box-shadow:
            0 2px 16px rgba(15, 23, 42, 0.055),
            0 0 0 1px rgba(255, 255, 255, 0.7) inset;
    }

    .cx-formgrid--plan-first .cx-panel--addons {
        border-color: rgba(99, 102, 241, 0.08);
        box-shadow:
            0 2px 14px rgba(15, 23, 42, 0.05),
            0 0 0 1px rgba(255, 255, 255, 0.65) inset;
    }
}

@media (min-width: 1024px) {
    .cx-formgrid--plan-first {
        grid-template-columns: minmax(0, 1fr) minmax(320px, 1.12fr);
        column-gap: 32px;
    }
}

.cx-panel {
    padding: 22px 22px 24px;
    border-radius: var(--cx-radius);
    background: linear-gradient(165deg, rgba(255, 255, 255, 0.98) 0%, rgba(248, 250, 252, 0.92) 55%, rgba(240, 253, 250, 0.35) 100%);
    border: 1px solid rgba(15, 23, 42, 0.065);
    box-shadow:
        0 1px 0 rgba(255, 255, 255, 0.9) inset,
        0 0 0 1px rgba(45, 212, 191, 0.06),
        0 8px 28px -6px rgba(15, 23, 42, 0.06),
        0 12px 36px -16px rgba(45, 212, 191, 0.05);
}

.cx-panel__h {
    position: relative;
    display: flex;
    align-items: center;
    gap: 10px;
    margin: 0 0 8px;
    padding-left: 0;
    font-size: clamp(1.05rem, 2.4vw, 1.16rem);
    font-weight: 800;
    letter-spacing: -0.025em;
    line-height: 1.22;
    color: #0f172a;
}

/* 面板标题图标块（macOS 风格小方块） */
.cx-panel__h-ico {
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    width: 30px;
    height: 30px;
    border-radius: 9px;
    background: linear-gradient(145deg, #6366f1 0%, #4f46e5 55%, #2563eb 100%);
    color: #fff;
    box-shadow:
        0 0 0 1px rgba(255, 255, 255, 0.18) inset,
        0 4px 12px rgba(79, 70, 229, 0.32);
}

.cx-panel__h-ico svg {
    width: 15px;
    height: 15px;
    stroke-width: 2.2px;
}

.cx-panel__h-ico--mint {
    background: linear-gradient(145deg, #2dd4bf 0%, #14b8a6 55%, #0d9488 100%);
    box-shadow:
        0 0 0 1px rgba(255, 255, 255, 0.18) inset,
        0 4px 12px rgba(20, 184, 166, 0.32);
}

.cx-panel__h-ico--sky {
    background: linear-gradient(145deg, #38bdf8 0%, #0ea5e9 55%, #2563eb 100%);
    box-shadow:
        0 0 0 1px rgba(255, 255, 255, 0.18) inset,
        0 4px 12px rgba(56, 189, 248, 0.3);
}

.cx-panel__p {
    margin: 0 0 18px;
    padding-bottom: 16px;
    max-width: 38rem;
    font-size: 0.875rem;
    color: #64748b;
    line-height: 1.68;
    letter-spacing: 0.02em;
    border-bottom: 1px solid rgba(45, 212, 191, 0.16);
}

@media (max-width: 480px) {
    .cx-panel {
        padding: 18px 16px 20px;
    }

    .cx-panel__p {
        margin-bottom: 14px;
        padding-bottom: 12px;
        font-size: 0.84375rem;
        line-height: 1.62;
    }
}

.cx-runtime-stack {
    display: flex;
    flex-direction: column;
    gap: 22px;
}

.cx-runtime-field__h {
    display: flex;
    align-items: center;
    gap: 6px;
    margin: 0 0 11px;
    font-size: 0.6875rem;
    font-weight: 800;
    color: #0d9488;
    text-transform: uppercase;
    letter-spacing: 0.11em;
    opacity: 0.95;
}

/* 计费/机房 字段标签前的小图标 */
.cx-field-ico {
    display: flex;
    flex-shrink: 0;
    width: 13px;
    height: 13px;
    stroke-width: 2.5px;
    opacity: 0.9;
}

.cx-field-ico svg {
    width: 13px;
    height: 13px;
}

/* 计费与机房：底栏说明（宽屏栅格拉伸时 margin-top:auto 贴底，减少「纯空白」感） */
.cx-runtime-foot {
    padding-top: 14px;
    margin-top: 20px;
    border-top: 1px dashed rgba(45, 212, 191, 0.28);
}

.cx-runtime-foot__p {
    margin: 0;
    font-size: 0.78125rem;
    line-height: 1.6;
    letter-spacing: 0.02em;
    color: #64748b;
}

.cx-runtime-foot__p strong {
    color: var(--cx-signal-deep);
    font-weight: 800;
}

/* 底部说明小图标 */
.cx-foot-ico {
    display: inline-flex;
    vertical-align: middle;
    margin-right: 5px;
    margin-top: -1px;
    width: 13px;
    height: 13px;
    stroke-width: 2.3px;
    color: #14b8a6;
    flex-shrink: 0;
}

.cx-foot-ico svg {
    width: 13px;
    height: 13px;
}

/* —— 规格列表 —— */
.cx-planlist {
    list-style: none;
    margin: 0;
    padding: 0;
    border-radius: 14px;
    overflow: hidden;
    border: 1px solid rgba(15, 23, 42, 0.08);
    background: #fff;
    box-shadow: 0 2px 14px rgba(15, 23, 42, 0.045);
}
.cx-panel--plan .cx-planlist {
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.85);
    border-color: rgba(15, 23, 42, 0.07);
    background: rgba(255, 255, 255, 0.82);
}

.cx-planlist > li + li {
    border-top: 1px solid var(--cx-line-soft);
}

.cx-planrow {
    position: relative;
    display: grid;
    grid-template-columns: 32px minmax(0, 1fr) minmax(5.5rem, auto);
    gap: 14px 18px;
    align-items: center;
    padding: 16px 18px 16px 16px;
    cursor: pointer;
    text-align: left;
    font: inherit;
    color: inherit;
    outline: none;
    transition:
        background 0.4s cubic-bezier(0.22, 1, 0.36, 1),
        box-shadow 0.45s cubic-bezier(0.22, 1, 0.36, 1),
        transform 0.28s cubic-bezier(0.22, 1, 0.36, 1);
}
.cx-planrow:hover {
    background: rgba(248, 250, 252, 0.95);
}
.cx-planrow:active {
    transform: scale(0.992);
}
.cx-planrow:focus-visible {
    outline: 2px solid var(--cx-signal);
    outline-offset: -2px;
}

.cx-planrow--selected {
    background: linear-gradient(105deg, rgba(238, 242, 255, 0.95) 0%, rgba(255, 255, 255, 0.98) 55%);
    box-shadow: inset 3px 0 0 var(--cx-signal);
}
.cx-planrow--selected:hover {
    background: linear-gradient(105deg, rgba(238, 242, 255, 0.98) 0%, #fff 55%);
}

.cx-planrow__ind {
    width: 20px;
    height: 20px;
    border-radius: 50%;
    border: 2px solid #cbd5e1;
    box-sizing: border-box;
    justify-self: center;
    transition:
        border-color 0.38s cubic-bezier(0.22, 1, 0.36, 1),
        box-shadow 0.42s cubic-bezier(0.22, 1, 0.36, 1),
        background 0.38s cubic-bezier(0.22, 1, 0.36, 1),
        transform 0.38s cubic-bezier(0.22, 1, 0.36, 1);
}
.cx-planrow--selected .cx-planrow__ind {
    border-color: var(--cx-signal);
    background: linear-gradient(135deg, var(--cx-signal), #2563eb);
    box-shadow: inset 0 0 0 4px #fff;
    transform: scale(1.06);
}

.cx-planrow__rec {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 4px;
    flex-shrink: 0;
    font-size: 0.625rem;
    font-weight: 800;
    letter-spacing: 0.04em;
    padding: 3px 9px 3px 7px;
    border-radius: 6px;
    background: linear-gradient(135deg, var(--cx-signal), #3b82f6);
    color: #fff;
    pointer-events: none;
    box-shadow: 0 2px 8px rgba(99, 102, 241, 0.35);
    line-height: 1;
}

.cx-planrow__rec svg {
    width: 9px;
    height: 9px;
    stroke-width: 2.5px;
    fill: rgba(255, 255, 255, 0.6);
    stroke: #fff;
    flex-shrink: 0;
}

.cx-planrow__mid {
    min-width: 0;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    align-content: flex-start;
    gap: 6px 10px;
    row-gap: 8px;
}

.cx-planrow__name {
    font-size: 1.0625rem;
    font-weight: 800;
    letter-spacing: -0.025em;
    color: #0f172a;
}

.cx-planrow__badge {
    font-size: 0.625rem;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    padding: 3px 8px;
    border-radius: 999px;
    background: #f1f5f9;
    color: #475569;
    border: 1px solid var(--cx-line-soft);
}
.cx-planrow__badge--hot {
    background: rgba(237, 233, 254, 0.95);
    color: #5b21b6;
    border-color: rgba(139, 92, 246, 0.2);
}

.cx-planrow__spec {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 6px;
    width: 100%;
    flex-basis: 100%;
    margin-top: 2px;
    line-height: 1;
}

/* 规格标签 chip */
.cx-spec-tag {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 3px 8px 3px 6px;
    border-radius: 6px;
    font-size: 0.71875rem;
    font-weight: 600;
    letter-spacing: 0.01em;
    color: #475569;
    background: rgba(248, 250, 252, 0.95);
    border: 1px solid rgba(15, 23, 42, 0.07);
    white-space: nowrap;
    transition: border-color 0.25s ease, background 0.25s ease;
}

.cx-spec-tag svg {
    width: 11px;
    height: 11px;
    stroke-width: 2.3px;
    color: #94a3b8;
    flex-shrink: 0;
}

.cx-planrow--selected .cx-spec-tag {
    background: rgba(238, 242, 255, 0.7);
    border-color: rgba(99, 102, 241, 0.14);
    color: #3730a3;
}

.cx-planrow--selected .cx-spec-tag svg {
    color: #6366f1;
}

.cx-planrow__pr {
    text-align: right;
    font-size: 0.8125rem;
    color: #64748b;
    font-weight: 600;
    font-variant-numeric: tabular-nums;
}
.cx-planrow__usd {
    font-variant-numeric: tabular-nums;
}
.cx-planrow__usd strong {
    font-size: 1.1875rem;
    font-weight: 800;
    font-variant-numeric: tabular-nums;
    letter-spacing: -0.02em;
    color: #4338ca;
    transition: color 0.35s ease, transform 0.35s cubic-bezier(0.22, 1, 0.36, 1);
}
.cx-planrow--selected .cx-planrow__usd strong {
    transform: translateZ(0) scale(1.02);
}
.cx-planrow__per {
    display: block;
    font-size: 0.71875rem;
    font-weight: 600;
    color: #94a3b8;
    letter-spacing: 0.04em;
}
.cx-planrow__inc {
    display: block;
    margin-top: 5px;
    font-size: 0.71875rem;
    color: #94a3b8;
    letter-spacing: 0.02em;
}

@media (max-width: 420px) {
    .cx-planrow {
        grid-template-columns: 26px 1fr;
        grid-template-rows: auto auto;
    }
    .cx-planrow__pr {
        grid-column: 2 / -1;
        text-align: left;
        display: flex;
        flex-wrap: wrap;
        gap: 6px 12px;
        align-items: baseline;
    }
    .cx-planrow__per {
        display: inline;
    }
    .cx-planrow__inc {
        display: inline;
        margin-top: 0;
    }
}

/* 计费周期：默认（非 segmented）兜底 */
.checkout-cycle {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}

/* 分段控件 + 滑动高亮（thumb 位置由 page-esim-taocan.js 同步） */
.checkout-cycle.checkout-cycle--segmented {
    position: relative;
    flex-wrap: nowrap;
    gap: 4px;
    padding: 5px;
    max-width: 100%;
    background: linear-gradient(180deg, #eef2f7 0%, #e8edf3 100%);
    border: 1px solid rgba(15, 23, 42, 0.09);
    border-radius: 999px;
    box-shadow: inset 0 1px 1px rgba(255, 255, 255, 0.75), 0 1px 2px rgba(15, 23, 42, 0.04);
}

.checkout-cycle:not(.checkout-cycle--segmented) .checkout-cycle__thumb {
    display: none;
}

.checkout-cycle__thumb {
    position: absolute;
    left: 0;
    top: 5px;
    bottom: 5px;
    width: 4rem;
    border-radius: 999px;
    z-index: 0;
    pointer-events: none;
    background: linear-gradient(148deg, #4f46e5 0%, #6366f1 42%, #2563eb 92%, #1d4ed8 100%);
    box-shadow:
        0 0 0 1px rgba(255, 255, 255, 0.22) inset,
        0 6px 20px rgba(79, 70, 229, 0.35);
    transform: translateX(0);
    transition:
        transform 0.45s cubic-bezier(0.22, 1, 0.36, 1),
        width 0.45s cubic-bezier(0.22, 1, 0.36, 1),
        opacity 0.25s ease;
    will-change: transform, width;
}

.checkout-cycle--segmented .checkout-cycle__btn {
    position: relative;
    z-index: 1;
    flex: 1 1 0;
    min-width: 0;
    padding: 9px 6px;
    border: none;
    border-radius: 999px;
    background: transparent !important;
    box-shadow: none !important;
    font-size: 0.78125rem;
    font-weight: 700;
    letter-spacing: 0.02em;
    color: #64748b;
    cursor: pointer;
    font-family: inherit;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 4px;
    transition:
        color 0.35s cubic-bezier(0.22, 1, 0.36, 1),
        background 0.3s ease,
        transform 0.2s var(--cx-ease-tap);
}

.checkout-cycle--segmented .checkout-cycle__btn svg {
    width: 12px;
    height: 12px;
    stroke-width: 2.2px;
    opacity: 0.75;
    flex-shrink: 0;
}

.checkout-cycle--segmented .checkout-cycle__btn.is-active svg {
    opacity: 1;
}

.checkout-cycle--segmented .checkout-cycle__btn:hover:not(.is-active) {
    color: var(--cx-ink);
    background: rgba(255, 255, 255, 0.42) !important;
}

.checkout-cycle--segmented .checkout-cycle__btn:active {
    transform: scale(0.97);
}

.checkout-cycle--segmented .checkout-cycle__btn:focus-visible {
    outline: 2px solid rgba(99, 102, 241, 0.55);
    outline-offset: 2px;
}

.checkout-cycle--segmented .checkout-cycle__btn.is-active {
    color: #fff;
    font-weight: 800;
}

.checkout-cycle:not(.checkout-cycle--segmented) .checkout-cycle__btn {
    padding: 9px 16px;
    border: 1px solid rgba(15, 23, 42, 0.1);
    border-radius: 999px;
    background: linear-gradient(180deg, #fff 0%, #f8fafc 100%);
    font-size: 0.84375rem;
    font-weight: 700;
    letter-spacing: 0.02em;
    color: #475569;
    cursor: pointer;
    font-family: inherit;
    box-shadow: 0 1px 0 rgba(255, 255, 255, 0.9) inset, 0 1px 2px rgba(15, 23, 42, 0.04);
    transition:
        border-color 0.2s var(--cx-ease-out),
        background 0.2s var(--cx-ease-out),
        box-shadow 0.22s var(--cx-ease-out),
        color 0.2s ease,
        transform var(--cx-tap) var(--cx-ease-tap);
}
.checkout-cycle:not(.checkout-cycle--segmented) .checkout-cycle__btn:hover:not(.is-active) {
    border-color: rgba(99, 102, 241, 0.38);
    background: #fff;
    color: var(--cx-ink);
    box-shadow: 0 1px 0 rgba(255, 255, 255, 1) inset, 0 4px 14px rgba(99, 102, 241, 0.1);
}
.checkout-cycle:not(.checkout-cycle--segmented) .checkout-cycle__btn:active:not(.is-active) {
    transform: scale(0.96);
}
.checkout-cycle:not(.checkout-cycle--segmented) .checkout-cycle__btn:focus-visible {
    outline: 2px solid rgba(99, 102, 241, 0.55);
    outline-offset: 2px;
}
.checkout-cycle:not(.checkout-cycle--segmented) .checkout-cycle__btn.is-active {
    border-color: transparent;
    color: #fff;
    background: linear-gradient(145deg, #4f46e5 0%, #6366f1 42%, #2563eb 100%);
    box-shadow:
        0 0 0 1px rgba(255, 255, 255, 0.2) inset,
        0 8px 22px rgba(79, 70, 229, 0.38),
        0 0 0 3px rgba(99, 102, 241, 0.22);
}
.checkout-cycle:not(.checkout-cycle--segmented) .checkout-cycle__btn.is-active:active {
    transform: scale(0.97);
}

/* 数据中心：全部展示，不横向滑动 */
.checkout-dc-grid.checkout-dc-grid--expose {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 12px;
    width: 100%;
}

/* 通栏机房区：auto-fit 防过窄；≥768 与结账栅格同启 */
@media (min-width: 768px) {
    .cx-panel--wide .checkout-dc-grid.checkout-dc-grid--expose {
        grid-template-columns: repeat(auto-fit, minmax(88px, 1fr));
    }
}

/* 结账左/右栏布局：右栏机房固定 3×2（须排在上一段 .cx-panel--wide 之后以覆盖 auto-fit） */
@media (min-width: 768px) {
    .cx-formgrid--plan-first .cx-panel--runtime .checkout-dc-grid.checkout-dc-grid--expose {
        grid-template-columns: repeat(3, minmax(0, 1fr));
        grid-auto-flow: row;
    }
}

@media (max-width: 420px) {
    .checkout-dc-grid.checkout-dc-grid--expose {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

.checkout-dc-grid--expose .checkout-dc {
    width: 100%;
    min-width: 0;
    padding: 14px 12px 13px;
    border-radius: calc(var(--cx-radius-sm) + 2px);
    border: 1px solid rgba(15, 23, 42, 0.1);
    background: linear-gradient(180deg, #fff 0%, rgba(240, 253, 250, 0.35) 55%, #f8fafc 100%);
    box-shadow: 0 1px 0 rgba(255, 255, 255, 0.95) inset, 0 2px 8px rgba(15, 23, 42, 0.05);
    cursor: pointer;
    font-family: inherit;
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    gap: 6px;
    min-height: 78px;
    justify-content: center;
    transition:
        border-color 0.42s cubic-bezier(0.22, 1, 0.36, 1),
        box-shadow 0.48s cubic-bezier(0.22, 1, 0.36, 1),
        transform 0.32s cubic-bezier(0.22, 1, 0.36, 1),
        background 0.42s cubic-bezier(0.22, 1, 0.36, 1),
        color 0.35s ease,
        filter 0.35s ease;
}
.checkout-dc-grid--expose .checkout-dc:not(.is-active)::before {
    display: none;
}
.checkout-dc-grid--expose .checkout-dc:hover:not(.is-active) {
    transform: translateY(-3px);
    border-color: rgba(99, 102, 241, 0.42);
    box-shadow: var(--cx-shadow-hover);
    filter: saturate(1.04);
}
.checkout-dc-grid--expose .checkout-dc:active {
    transform: translateY(0) scale(0.975);
    transition-duration: 0.12s;
}
.checkout-dc-grid--expose .checkout-dc:focus-visible {
    outline: 2px solid rgba(99, 102, 241, 0.55);
    outline-offset: 2px;
}
.checkout-dc-grid--expose .checkout-dc.is-active {
    padding-right: 10px;
    padding-left: 10px;
    border-color: rgba(255, 255, 255, 0.12);
    color: #fff;
    background: linear-gradient(155deg, #4338ca 0%, #4f46e5 26%, #2563eb 58%, #0d9488 88%, #5eead4 130%);
    box-shadow:
        0 0 0 1px rgba(255, 255, 255, 0.2) inset,
        0 10px 28px rgba(67, 56, 202, 0.42),
        0 0 0 3px rgba(99, 102, 241, 0.2);
    filter: saturate(1.05);
}
.checkout-dc-grid--expose .checkout-dc.is-active:active {
    transform: scale(0.985);
    transition-duration: 0.14s;
}
.checkout-dc-grid--expose .checkout-dc.is-active:hover {
    transform: translateY(-2px);
    box-shadow:
        0 0 0 1px rgba(255, 255, 255, 0.22) inset,
        0 14px 36px rgba(67, 56, 202, 0.48),
        0 0 0 3px rgba(99, 102, 241, 0.24);
}
.checkout-dc-grid--expose .checkout-dc.is-active::after {
    display: none;
}

/* 国旗 emoji */
.checkout-dc-grid--expose .checkout-dc__flag {
    font-size: 1.25rem;
    line-height: 1;
    display: block;
    filter: drop-shadow(0 1px 2px rgba(15, 23, 42, 0.1));
    transition: transform 0.35s cubic-bezier(0.22, 1, 0.36, 1);
}

.checkout-dc-grid--expose .checkout-dc:hover .checkout-dc__flag {
    transform: scale(1.12) translateY(-1px);
}

.checkout-dc-grid--expose .checkout-dc.is-active .checkout-dc__flag {
    filter: drop-shadow(0 2px 4px rgba(0, 0, 0, 0.18));
    transform: scale(1.06);
}

.checkout-dc-grid--expose .checkout-dc__code {
    font-size: 0.59375rem;
    font-weight: 800;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: #4f46e5;
    transition: color 0.35s ease, opacity 0.3s ease;
}
.checkout-dc-grid--expose .checkout-dc.is-active .checkout-dc__code {
    color: rgba(255, 255, 255, 0.82);
}
.checkout-dc-grid--expose .checkout-dc__name {
    font-size: 0.78125rem;
    font-weight: 800;
    letter-spacing: -0.015em;
    line-height: 1.28;
    color: #0f172a;
    transition: color 0.35s ease;
    max-width: 100%;
    word-break: keep-all;
    overflow-wrap: break-word;
}

.checkout-dc-grid--expose .checkout-dc.is-active .checkout-dc__name {
    color: rgba(255, 255, 255, 0.98);
}

.cx-dc-msg.checkout-dc-msg {
    display: flex;
    align-items: center;
    gap: 7px;
    margin-top: 14px;
    padding: 10px 14px;
    border-radius: 10px;
    font-size: 0.8125rem;
    font-weight: 600;
    line-height: 1.45;
    letter-spacing: 0.01em;
    color: #64748b;
    background: rgba(15, 23, 42, 0.035);
    border: 1px solid rgba(15, 23, 42, 0.06);
}

.cx-dc-msg.checkout-dc-msg svg {
    width: 14px;
    height: 14px;
    stroke-width: 2.2px;
    flex-shrink: 0;
    opacity: 0.65;
}

.cx-dc-msg.checkout-dc-msg.is-ok {
    color: #115e59;
    background: linear-gradient(135deg, rgba(236, 253, 245, 0.85) 0%, rgba(238, 242, 255, 0.65) 100%);
    border-color: rgba(45, 212, 191, 0.35);
}

.cx-dc-msg.checkout-dc-msg.is-ok svg {
    color: #2dd4bf;
    opacity: 1;
}

/* —— 加购 —— */
.cx-addonlist {
    list-style: none;
    margin: 0;
    padding: 0;
    border-radius: var(--cx-radius-sm);
    overflow: hidden;
    border: 1px solid var(--cx-line);
    background: #fff;
    box-shadow: 0 2px 12px rgba(15, 23, 42, 0.04);
}

.cx-addonlist > li + li {
    border-top: 1px solid var(--cx-line-soft);
}

/* ——— 加购磁贴：正方形居中卡片（≥720px） ——— */
@media (min-width: 720px) {
    /* 网格容器：强制 3 等列，永不溢出 */
    .cx-addonlist.cx-addonlist--tiles {
        display: grid;
        grid-template-columns: repeat(3, minmax(0, 1fr));
        gap: 12px;
        border: none;
        background: transparent;
        box-shadow: none;
        overflow: visible;
        width: 100%;
        min-width: 0;
    }

    .cx-addonlist.cx-addonlist--tiles > li + li {
        border-top: none;
    }

    /* 正方形卡片 */
    .cx-addonlist.cx-addonlist--tiles .cx-addonrow.checkout-addon {
        position: relative;
        display: flex;
        flex-direction: column;
        align-items: center;
        justify-content: flex-start;
        text-align: center;
        min-width: 0;
        min-height: 0;
        width: 100%;
        gap: 8px;
        padding: 18px 12px 16px;
        border: 1px solid rgba(15, 23, 42, 0.08);
        border-radius: 18px;
        background: linear-gradient(160deg, #fff 0%, #f9fafb 100%);
        box-shadow:
            0 1px 0 rgba(255, 255, 255, 0.95) inset,
            0 2px 10px rgba(15, 23, 42, 0.05);
        overflow: hidden;
        transition:
            border-color 0.35s cubic-bezier(0.22, 1, 0.36, 1),
            box-shadow 0.4s cubic-bezier(0.22, 1, 0.36, 1),
            transform 0.28s cubic-bezier(0.22, 1, 0.36, 1);
    }

    /* 图标：居中，尺寸自适应列宽 */
    .cx-addonlist.cx-addonlist--tiles .cx-addonrow__ico {
        width: clamp(36px, 18cqw, 52px);
        height: clamp(36px, 18cqw, 52px);
        border-radius: 14px;
        flex-shrink: 0;
    }

    .cx-addonlist.cx-addonlist--tiles .cx-addonrow__ico svg {
        width: clamp(18px, 9cqw, 26px);
        height: clamp(18px, 9cqw, 26px);
        stroke-width: 1.85px;
    }

    .cx-addonlist.cx-addonlist--tiles .cx-addonrow__txt {
        display: flex;
        flex-direction: column;
        align-items: center;
        justify-content: center;
        min-width: 0;
        min-height: 0;
        width: 100%;
        gap: 3px;
    }

    .cx-addonlist.cx-addonlist--tiles .cx-addonrow__txt strong {
        font-size: clamp(0.75rem, 2.8cqw, 0.9375rem);
        line-height: 1.3;
        letter-spacing: -0.01em;
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
        max-width: 100%;
    }

    .cx-addonlist.cx-addonlist--tiles .cx-addonrow__desc {
        display: block;
        font-size: clamp(0.625rem, 2.2cqw, 0.75rem);
        line-height: 1.4;
        color: var(--cx-muted, #64748b);
        white-space: normal;
        text-align: center;
    }

    /* 价格 */
    .cx-addonlist.cx-addonlist--tiles .cx-addonrow__price {
        margin-top: 4px;
        font-size: clamp(0.7rem, 2.5cqw, 0.875rem);
        letter-spacing: -0.01em;
        white-space: nowrap;
    }

    /* 勾选框：右上角绝对定位 */
    .cx-addonlist.cx-addonlist--tiles .checkout-addon__tick {
        position: absolute;
        top: 9px;
        right: 9px;
    }

    /* hover：轻浮 */
    .cx-addonlist.cx-addonlist--tiles .cx-addonrow:hover {
        transform: translateY(-2px);
        border-color: rgba(99, 102, 241, 0.22);
        box-shadow:
            0 1px 0 rgba(255, 255, 255, 0.95) inset,
            0 6px 22px rgba(15, 23, 42, 0.08);
    }

    .cx-addonlist.cx-addonlist--tiles .cx-addonrow:active {
        transform: scale(0.97);
        transition-duration: 0.1s;
    }

    /* 选中：外圈光环 + 淡紫底 */
    .cx-addonlist.cx-addonlist--tiles .cx-addonrow.is-selected {
        border-color: rgba(79, 70, 229, 0.36);
        background: linear-gradient(160deg, rgba(238, 242, 255, 0.65) 0%, #fff 60%, #fafbff 100%);
        transform: translateY(-1px);
        box-shadow:
            0 1px 0 rgba(255, 255, 255, 0.95) inset,
            0 0 0 3px rgba(99, 102, 241, 0.1),
            0 6px 20px rgba(79, 70, 229, 0.1);
    }

    .cx-addonlist.cx-addonlist--tiles .cx-addonrow.is-selected .cx-addonrow__price {
        color: #4338ca;
    }

    .cx-addonlist.cx-addonlist--tiles .cx-addonrow.is-selected::before {
        content: none;
    }

    /* 勾选框底色 */
    .cx-addonlist.cx-addonlist--tiles .checkout-addon__tick {
        background: rgba(255, 255, 255, 0.6);
        border-color: rgba(15, 23, 42, 0.12);
    }

    .cx-addonlist.cx-addonlist--tiles .checkout-addon.is-selected .checkout-addon__tick {
        background: linear-gradient(145deg, #4f46e5 0%, #6366f1 55%, #4338ca 100%);
        border-color: rgba(79, 70, 229, 0.25);
        box-shadow: 0 2px 8px rgba(79, 70, 229, 0.25);
    }
}

/* 加购磁贴图标块 */
.cx-addonrow__ico {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 34px;
    height: 34px;
    border-radius: 10px;
    flex-shrink: 0;
    color: #fff;
}

.cx-addonrow__ico svg {
    width: 18px;
    height: 18px;
    stroke-width: 2px;
}

.cx-addonrow__ico--storage {
    background: linear-gradient(145deg, #6366f1 0%, #4f46e5 60%, #2563eb 100%);
    box-shadow:
        0 0 0 1px rgba(255, 255, 255, 0.18) inset,
        0 4px 12px rgba(79, 70, 229, 0.3);
}

.cx-addonrow__ico--storage2 {
    background: linear-gradient(145deg, #818cf8 0%, #6366f1 55%, #4f46e5 100%);
    box-shadow:
        0 0 0 1px rgba(255, 255, 255, 0.18) inset,
        0 4px 12px rgba(99, 102, 241, 0.3);
}

.cx-addonrow__ico--net {
    background: linear-gradient(145deg, #2dd4bf 0%, #14b8a6 55%, #0d9488 100%);
    box-shadow:
        0 0 0 1px rgba(255, 255, 255, 0.18) inset,
        0 4px 12px rgba(20, 184, 166, 0.3);
}

/* 选中：图标略缩放 */
.cx-addonrow.is-selected .cx-addonrow__ico {
    transform: scale(1.06);
}

.cx-addonrow.checkout-addon {
    display: flex;
    align-items: center;
    gap: 14px;
    padding: 14px 16px;
    margin: 0;
    border: none;
    border-radius: 0;
    box-shadow: none;
    cursor: pointer;
    transition:
        background 0.4s cubic-bezier(0.22, 1, 0.36, 1),
        transform 0.28s cubic-bezier(0.22, 1, 0.36, 1),
        border-color 0.35s ease,
        box-shadow 0.45s cubic-bezier(0.22, 1, 0.36, 1);
}
.cx-addonrow:hover {
    background: rgba(248, 250, 252, 0.95);
}
.cx-addonrow:active {
    transform: scale(0.99);
}
.cx-addonrow.is-selected {
    background: linear-gradient(90deg, rgba(238, 242, 255, 0.75) 0%, rgba(255, 255, 255, 0.98) 100%);
}
.cx-addonrow:focus-visible {
    outline: 2px solid var(--cx-signal);
    outline-offset: -2px;
}

.cx-addonrow__txt {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 6px;
    min-width: 0;
}

.cx-addonrow__txt strong {
    font-size: 0.96875rem;
    font-weight: 800;
    letter-spacing: -0.02em;
    line-height: 1.28;
    color: #0f172a;
}

.cx-addonrow__txt span {
    font-size: 0.8125rem;
    line-height: 1.5;
    letter-spacing: 0.01em;
    color: #64748b;
}

.cx-addonrow__price {
    font-size: 0.90625rem;
    font-weight: 800;
    font-variant-numeric: tabular-nums;
    letter-spacing: -0.015em;
    color: #4338ca;
}

.checkout-addon__tick {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 22px;
    height: 22px;
    border-radius: 7px;
    border: 2px solid #cbd5e1;
    flex-shrink: 0;
    box-sizing: border-box;
    background: #fff;
    transition:
        border-color 0.38s cubic-bezier(0.22, 1, 0.36, 1),
        box-shadow 0.42s cubic-bezier(0.22, 1, 0.36, 1),
        background 0.38s cubic-bezier(0.22, 1, 0.36, 1),
        transform 0.38s cubic-bezier(0.22, 1, 0.36, 1);
}

.checkout-addon.is-selected .checkout-addon__tick {
    border-color: rgba(79, 70, 229, 0.35);
    background: linear-gradient(145deg, #4f46e5 0%, #6366f1 48%, #4338ca 100%);
    box-shadow:
        inset 0 1px 0 rgba(255, 255, 255, 0.22),
        0 1px 2px rgba(30, 27, 75, 0.18);
    transform: scale(1);
}

/* 选中：对勾（避免「实心蓝块」像未完成状态） */
.checkout-addon.is-selected .checkout-addon__tick::after {
    content: "";
    position: absolute;
    left: 50%;
    top: 46%;
    width: 4px;
    height: 7px;
    margin: 0;
    border: solid #fff;
    border-width: 0 2px 2px 0;
    border-radius: 0 1px 0 0;
    transform: translate(-50%, -50%) rotate(45deg);
    box-sizing: border-box;
    opacity: 1;
}

.checkout-addon:not(.is-selected) .checkout-addon__tick::after {
    content: none;
}

.cx-footnote {
    margin: 28px 0 0;
    padding: 14px 16px;
    font-size: 0.8125rem;
    color: var(--cx-muted);
    line-height: 1.55;
    text-align: center;
    border-radius: var(--cx-radius-sm);
    background: linear-gradient(165deg, rgba(255, 255, 255, 0.62) 0%, rgba(240, 253, 250, 0.35) 100%);
    border: 1px solid rgba(45, 212, 191, 0.12);
    box-shadow:
        inset 0 1px 0 rgba(45, 212, 191, 0.2),
        0 8px 28px -14px rgba(45, 212, 191, 0.08);
}
.cx-footnote a {
    color: var(--cx-signal-deep);
    font-weight: 700;
}

/* —— 底栏 —— */
.cx-paybar {
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 50;
    background: linear-gradient(180deg, rgba(255, 255, 255, 0.82) 0%, rgba(255, 255, 255, 0.92) 100%);
    backdrop-filter: blur(var(--glass-blur, 24px)) saturate(var(--glass-saturate, 1.65));
    -webkit-backdrop-filter: blur(var(--glass-blur, 24px)) saturate(var(--glass-saturate, 1.65));
    border-top: 1px solid rgba(255, 255, 255, 0.72);
    box-shadow:
        0 -8px 32px rgba(15, 23, 42, 0.07),
        0 -1px 0 var(--stroke-outline, rgba(99, 102, 241, 0.12)),
        inset 0 1px 0 rgba(255, 255, 255, 0.95);
    padding: 10px 0 max(10px, env(safe-area-inset-bottom));
}

.cx-paybar__inner {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px 16px;
    max-width: var(--cx-layout-max);
}

/* —— 信任标记 + 条款列 —— */
.cx-paybar__trust-col {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 5px;
}

.cx-paybar__trust {
    display: flex;
    align-items: center;
    gap: 14px;
    flex-wrap: wrap;
}

.cx-paybar__trust-item {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    font-size: 0.75rem;
    font-weight: 600;
    color: var(--ink-light, #64748b);
    white-space: nowrap;
}

.cx-paybar__trust-item svg {
    width: 13px;
    height: 13px;
    flex-shrink: 0;
    color: var(--signal, #6366f1);
}

.cx-paybar__trust-item--b svg { color: var(--cx-mint-mid, #14b8a6); }
.cx-paybar__trust-item--c svg { color: var(--accent, #3b82f6); }

.cx-paybar__terms {
    margin: 0;
    font-size: 0.6875rem;
    line-height: 1.45;
    color: #94a3b8;
}

.cx-paybar__terms a {
    color: var(--signal, #6366f1);
    text-decoration: underline;
    text-underline-offset: 2px;
    font-weight: 600;
    transition: color 0.2s ease;
}
.cx-paybar__terms a:hover {
    color: var(--cx-signal-deep, #4f46e5);
    text-decoration: none;
}

/* —— 金额摘要 —— */
.cx-paybar__summary {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: 1px;
    flex-shrink: 0;
}

.cx-paybar__total-label {
    font-size: 0.6875rem;
    font-weight: 600;
    color: var(--ink-light, #64748b);
    letter-spacing: 0.02em;
}

.cx-paybar__total-row {
    display: flex;
    align-items: baseline;
    gap: 2px;
}

.cx-paybar__total-amt {
    font-size: 1.375rem;
    font-weight: 800;
    letter-spacing: -0.03em;
    font-variant-numeric: tabular-nums;
    background: linear-gradient(120deg, #312e81 0%, var(--signal, #6366f1) 48%, var(--accent, #3b82f6) 72%, #14b8a6 100%);
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
}
@supports not (background-clip: text) {
    .cx-paybar__total-amt { background: none; color: var(--ink, #0f172a); }
}

.cx-paybar__total-cycle {
    font-size: 0.8125rem;
    font-weight: 600;
    color: var(--ink-light, #64748b);
}

/* —— 付款主按钮：略抬对比度 + 按压回弹 —— */
.cx-paybar__btn {
    flex-shrink: 0;
    min-width: 156px;
    padding: 14px 24px;
    font-size: 0.96875rem;
    font-weight: 800;
    letter-spacing: 0.03em;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    text-align: center;
    border-radius: 999px;
    border: 1px solid rgba(255, 255, 255, 0.42) !important;
    background: linear-gradient(148deg, #4f46e5 0%, #6366f1 34%, #2563eb 62%, #14b8a6 88%, #5eead4 130%) !important;
    color: #fff !important;
    box-shadow:
        0 0 0 1px rgba(255, 255, 255, 0.12) inset,
        0 8px 28px rgba(67, 56, 202, 0.42),
        0 2px 0 rgba(255, 255, 255, 0.18) inset;
    transition:
        transform 0.28s var(--cx-ease-tap),
        box-shadow 0.28s var(--cx-ease-out),
        filter 0.2s ease;
}

.cx-paybar__btn svg {
    width: 16px;
    height: 16px;
    flex-shrink: 0;
}

.cx-paybar__btn:hover:not(:disabled) {
    color: #fff !important;
    transform: translateY(-3px);
    filter: saturate(1.08) brightness(1.03);
    box-shadow:
        0 0 0 1px rgba(255, 255, 255, 0.2) inset,
        0 14px 40px rgba(79, 70, 229, 0.48),
        0 2px 0 rgba(255, 255, 255, 0.22) inset;
}

.cx-paybar__btn:active:not(:disabled) {
    transform: translateY(0) scale(0.97) !important;
    filter: brightness(0.98);
    box-shadow:
        0 0 0 1px rgba(255, 255, 255, 0.1) inset,
        0 4px 16px rgba(67, 56, 202, 0.35) !important;
}

.cx-paybar__btn:focus-visible:not(:disabled) {
    outline: 3px solid rgba(99, 102, 241, 0.45);
    outline-offset: 3px;
}

.cx-paybar__btn:disabled {
    opacity: 0.45;
    cursor: not-allowed;
    transform: none;
    box-shadow: none;
    filter: none;
}

/* 移动端：信任列换行到底部 */
@media (max-width: 639px) {
    .cx-paybar {
        padding: 8px 0 max(8px, env(safe-area-inset-bottom));
    }

    .page-esim-taocan.cx-flow .cx-paybar::before {
        opacity: 0.55;
    }

    .cx-paybar__trust-col {
        order: 3;
        flex-basis: 100%;
        flex-direction: row;
        align-items: center;
        flex-wrap: wrap;
        gap: 4px 0;
    }

    .cx-paybar__trust {
        gap: 10px;
        flex: 1 1 auto;
    }

    .cx-paybar__terms {
        flex-basis: 100%;
    }

    .cx-paybar__summary {
        flex: 1;
        align-items: flex-start;
    }

    .cx-paybar__btn {
        min-width: 0;
        padding: 11px 18px;
        font-size: 0.875rem;
    }
}

/* ========== 结账页：环境动效（仅 no-preference） ========== */
@media (prefers-reduced-motion: no-preference) {
    @keyframes cxAmbDriftA {
        0% {
            transform: translate(0, 0) scale(1);
        }
        100% {
            transform: translate(32px, 26px) scale(1.07);
        }
    }

    @keyframes cxAmbDriftB {
        0% {
            transform: translate(0, 0) scale(1);
        }
        100% {
            transform: translate(-36px, 20px) scale(1.05);
        }
    }

    @keyframes cxAmbDriftC {
        0% {
            transform: translate(0, 0);
            opacity: 0.26;
        }
        100% {
            transform: translate(16px, -28px);
            opacity: 0.36;
        }
    }

    .page-esim-taocan.cx-flow .cx-ambient__blob--a {
        animation: cxAmbDriftA 24s ease-in-out infinite alternate;
    }

    .page-esim-taocan.cx-flow .cx-ambient__blob--b {
        animation: cxAmbDriftB 28s ease-in-out infinite alternate;
    }

    .page-esim-taocan.cx-flow .cx-ambient__blob--c {
        animation: cxAmbDriftC 19s ease-in-out infinite alternate;
    }

    /* 两侧：柔光柱漂移 + 细线渐变流动 + 节点呼吸 */
    @keyframes cxSideGlowShiftL {
        0%,
        100% {
            transform: translateX(-35%) translateY(0);
            opacity: 0.34;
        }
        50% {
            transform: translateX(-22%) translateY(18px);
            opacity: 0.52;
        }
    }

    @keyframes cxSideGlowShiftR {
        0%,
        100% {
            transform: translateX(35%) translateY(0);
            opacity: 0.3;
        }
        50% {
            transform: translateX(22%) translateY(-14px);
            opacity: 0.5;
        }
    }

    @keyframes cxSideRibFlowDown {
        0% {
            background-position: 0 0;
        }
        100% {
            background-position: 0 100%;
        }
    }

    @keyframes cxSideRibFlowUp {
        0% {
            background-position: 0 100%;
        }
        100% {
            background-position: 0 0;
        }
    }

    @keyframes cxSideNodePulse {
        0%,
        100% {
            opacity: 0.26;
            transform: scale(1);
            filter: blur(0);
        }
        50% {
            opacity: 0.62;
            transform: scale(1.2);
            filter: blur(0.2px);
        }
    }

    .page-esim-taocan.cx-flow .cx-sidedecor__glow--l {
        animation: cxSideGlowShiftL 12s ease-in-out infinite alternate;
    }

    .page-esim-taocan.cx-flow .cx-sidedecor__glow--r {
        animation: cxSideGlowShiftR 14s ease-in-out infinite alternate;
    }

    .page-esim-taocan.cx-flow .cx-sidedecor__rib--l {
        animation: cxSideRibFlowDown 17s linear infinite;
    }

    .page-esim-taocan.cx-flow .cx-sidedecor__rib--r {
        animation: cxSideRibFlowUp 20s linear infinite;
    }

    .page-esim-taocan.cx-flow .cx-sidedecor__node--tl {
        animation: cxSideNodePulse 4.4s ease-in-out infinite;
    }

    .page-esim-taocan.cx-flow .cx-sidedecor__node--tr {
        animation: cxSideNodePulse 5.2s ease-in-out infinite 0.7s;
    }

    .page-esim-taocan.cx-flow .cx-sidedecor__node--bl {
        animation: cxSideNodePulse 4.8s ease-in-out infinite 1.2s;
    }

    .page-esim-taocan.cx-flow .cx-sidedecor__node--br {
        animation: cxSideNodePulse 5.6s ease-in-out infinite 0.35s;
    }

    @keyframes cxTitleFlow {
        0% {
            background-position: 0% 50%;
        }
        100% {
            background-position: 100% 50%;
        }
    }

    .page-esim-taocan.cx-flow .cx-title {
        background-size: 220% auto;
        animation: cxTitleFlow 16s ease-in-out infinite alternate;
    }

    @supports not (background-clip: text) {
        .page-esim-taocan.cx-flow .cx-title {
            background-size: auto;
            animation: none;
        }
    }

    @keyframes cxFlowheadBreath {
        0% {
            box-shadow: var(--cx-shadow);
        }
        100% {
            box-shadow:
                0 14px 48px -18px rgba(99, 102, 241, 0.16),
                0 1px 2px rgba(15, 23, 42, 0.05);
        }
    }

    .page-esim-taocan.cx-flow .cx-flowhead {
        animation: cxFlowheadBreath 9s ease-in-out infinite alternate;
    }

    @keyframes cxStepGlow {
        0%,
        100% {
            box-shadow: 0 4px 12px rgba(99, 102, 241, 0.35);
        }
        50% {
            box-shadow:
                0 8px 26px rgba(99, 102, 241, 0.52),
                0 0 0 1px rgba(255, 255, 255, 0.12) inset;
        }
    }

    .page-esim-taocan.cx-flow .cx-flowhead__steps li.is-current .cx-flowhead__n {
        animation: cxStepGlow 3s ease-in-out infinite;
    }

    @keyframes cxIntroIconFloat {
        0%,
        100% {
            transform: translateY(0);
        }
        50% {
            transform: translateY(-5px);
        }
    }

    .page-esim-taocan.cx-flow .cx-intro__figure {
        animation: cxIntroIconFloat 5.5s ease-in-out infinite;
    }

    .page-esim-taocan.cx-flow .cx-intro::after {
        content: "";
        position: absolute;
        inset: -30% -50%;
        z-index: 0;
        background: linear-gradient(
            118deg,
            transparent 38%,
            rgba(255, 255, 255, 0.65) 49.5%,
            rgba(255, 255, 255, 0.08) 51%,
            transparent 62%
        );
        transform: translateX(-45%) rotate(11deg);
        animation: cxIntroSheen 12s ease-in-out infinite;
        pointer-events: none;
    }

    @keyframes cxIntroSheen {
        0%,
        42% {
            transform: translateX(-48%) rotate(11deg);
            opacity: 0;
        }
        48% {
            opacity: 1;
        }
        58%,
        100% {
            transform: translateX(52%) rotate(11deg);
            opacity: 0;
        }
    }

    @keyframes cxPaybarScan {
        0% {
            background-position: 0% 0;
        }
        100% {
            background-position: 200% 0;
        }
    }

    .page-esim-taocan.cx-flow .cx-paybar::before {
        content: "";
        position: absolute;
        left: 0;
        right: 0;
        top: 0;
        height: 2px;
        background: linear-gradient(
            90deg,
            transparent 0%,
            rgba(99, 102, 241, 0.18) 18%,
            rgba(45, 212, 191, 0.75) 48%,
            rgba(56, 189, 248, 0.55) 62%,
            rgba(99, 102, 241, 0.18) 82%,
            transparent 100%
        );
        background-size: 220% 100%;
        opacity: 0.72;
        animation: cxPaybarScan 8s linear infinite;
        pointer-events: none;
    }

    @keyframes cxPayCtaSheen {
        0%,
        70% {
            transform: skewX(-16deg) translateX(-140%);
            opacity: 0;
        }
        72% {
            opacity: 1;
        }
        88%,
        100% {
            transform: skewX(-16deg) translateX(420%);
            opacity: 0;
        }
    }

    .page-esim-taocan.cx-flow .cx-paybar__btn:not(:disabled) {
        position: relative;
        overflow: hidden;
    }

    .page-esim-taocan.cx-flow .cx-paybar__btn:not(:disabled)::after {
        content: "";
        position: absolute;
        top: -10%;
        bottom: -10%;
        left: -50%;
        width: 42%;
        background: linear-gradient(
            100deg,
            transparent 0%,
            rgba(255, 255, 255, 0.38) 48%,
            transparent 92%
        );
        transform: skewX(-16deg) translateX(-140%);
        animation: cxPayCtaSheen 6s ease-in-out infinite;
        pointer-events: none;
    }

    .page-esim-taocan.cx-flow .cx-paybar__btn:not(:disabled) > * {
        position: relative;
        z-index: 1;
    }

    @keyframes cxAmtShimmer {
        0% {
            background-position: 0% 50%;
        }
        100% {
            background-position: 100% 50%;
        }
    }

    .page-esim-taocan.cx-flow .cx-paybar__total-amt {
        background-size: 200% auto;
        animation: cxAmtShimmer 12s ease-in-out infinite alternate;
    }

    @supports not (background-clip: text) {
        .page-esim-taocan.cx-flow .cx-paybar__total-amt {
            animation: none;
            background-size: auto;
        }
    }
}

@media (prefers-reduced-motion: reduce) {
    .page-esim-taocan.cx-flow .cx-sidedecor__glow,
    .page-esim-taocan.cx-flow .cx-sidedecor__rib,
    .page-esim-taocan.cx-flow .cx-sidedecor__node {
        animation: none !important;
    }

    .page-esim-taocan.cx-flow .cx-sidedecor__glow--l {
        transform: translateX(-35%);
    }

    .page-esim-taocan.cx-flow .cx-sidedecor__glow--r {
        transform: translateX(35%);
    }

    .page-esim-taocan.cx-flow .cx-ambient__blob,
    .page-esim-taocan.cx-flow .cx-title,
    .page-esim-taocan.cx-flow .cx-flowhead,
    .page-esim-taocan.cx-flow .cx-flowhead__steps li.is-current .cx-flowhead__n,
    .page-esim-taocan.cx-flow .cx-intro__figure,
    .page-esim-taocan.cx-flow .cx-paybar__total-amt,
    .page-esim-taocan.cx-flow .cx-paybar__btn:not(:disabled)::after {
        animation: none !important;
    }

    .page-esim-taocan.cx-flow .cx-intro::after,
    .page-esim-taocan.cx-flow .cx-paybar::before {
        content: none !important;
    }

    .page-esim-taocan.cx-flow .cx-title,
    .page-esim-taocan.cx-flow .cx-paybar__total-amt {
        background-size: auto;
    }

    .page-esim-taocan.cx-flow .cx-paybar__btn:not(:disabled) {
        overflow: visible;
    }

    .page-esim-taocan.cx-flow .checkout-cycle__thumb {
        transition-duration: 0.06s !important;
    }

    .page-esim-taocan.cx-flow .checkout-dc-grid--expose .checkout-dc,
    .page-esim-taocan.cx-flow .cx-planrow,
    .page-esim-taocan.cx-flow .cx-addonrow.checkout-addon,
    .page-esim-taocan.cx-flow .cx-addonlist.cx-addonlist--tiles .cx-addonrow.checkout-addon,
    .page-esim-taocan.cx-flow .checkout-addon__tick {
        transition-duration: 0.1s !important;
    }

    .page-esim-taocan.cx-flow .cx-planrow:active,
    .page-esim-taocan.cx-flow .checkout-cycle--segmented .checkout-cycle__btn:active,
    .page-esim-taocan.cx-flow .checkout-cycle:not(.checkout-cycle--segmented) .checkout-cycle__btn:active,
    .page-esim-taocan.cx-flow .checkout-dc-grid--expose .checkout-dc:active,
    .page-esim-taocan.cx-flow .cx-addonrow:active,
    .page-esim-taocan.cx-flow .cx-addonlist.cx-addonlist--tiles .cx-addonrow:active,
    .page-esim-taocan.cx-flow .cx-paybar__btn:active:not(:disabled),
    .page-esim-taocan.cx-flow .cx-flowhead__btn:active {
        transform: none !important;
    }
}
