        #psc-root {
            --c-bg: #f4efe9;
            --c-ink: #1a1714;
            --c-muted: rgba(26, 23, 20, 0.45);
            --c-border: rgba(0, 0, 0, 0.07);
            --c-radius: 28px;
            background: var(--c-bg);
            color: var(--c-ink);
            padding-top: clamp(5rem, 11vw, 7.5rem);
            padding-bottom: clamp(60px, 10vw, 120px);
            font-family: 'Noto Sans SC', -apple-system, sans-serif;
        }

        #psc-root .font-serif {
            font-family: 'Fraunces', serif;
        }

        /* ── Eyebrow ── */
        #psc-root .psc-eyebrow {
            font-size: 10px;
            font-weight: 700;
            letter-spacing: 0.18em;
            text-transform: uppercase;
            color: var(--c-muted);
        }

        /* ── Config block ── */
        #psc-root .psc-block {
            background: rgba(255, 255, 255, 0.5);
            border: 1px solid var(--c-border);
            border-radius: var(--c-radius);
            padding: clamp(1.5rem, 4vw, 2.5rem);
            transition: box-shadow 0.3s ease;
        }

        /* ── DC chips ── */
        #psc-root .dc-chip {
            background: #fff !important;
            border: 1.5px solid transparent !important;
            border-radius: 20px !important;
            padding: 1.25rem 1rem !important;
            text-align: left !important;
            cursor: pointer !important;
            transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1) !important;
            width: 100% !important;
            display: block !important;
        }
        #psc-root .dc-chip:hover {
            transform: translateY(-2px) !important;
            box-shadow: 0 8px 24px rgba(0, 0, 0, 0.05) !important;
        }
        #psc-root .dc-chip.is-active {
            border-color: var(--c-ink) !important;
            box-shadow: 0 0 0 3px rgba(26, 23, 20, 0.07) !important;
        }
        #psc-root #dc-status {
            font-size: 12px;
            color: var(--c-muted);
            margin-top: 1rem;
        }
        #psc-root #dc-status.is-ok {
            color: #0d5c4d;
        }

        /* ── Period pill ── */
        #psc-root .psc-period-pill {
            background: rgba(0, 0, 0, 0.05);
            padding: 4px;
            border-radius: 999px;
            display: inline-flex;
            flex-wrap: wrap;
        }
        #psc-root .toggle-btn {
            border-radius: 999px !important;
            padding: 7px 18px !important;
            font-size: 13px !important;
            font-weight: 500 !important;
            font-family: inherit !important;
            color: var(--c-muted) !important;
            background: transparent !important;
            border: none !important;
            cursor: pointer !important;
            transition: all 0.25s ease !important;
            /* reset any icon layout from old CSS */
            display: inline-flex !important;
            align-items: center !important;
            gap: 0 !important;
        }
        #psc-root .toggle-btn .psc-cycle-tile__ico { display: none !important; }
        #psc-root .toggle-btn .psc-cycle-tile__note { display: none !important; }
        #psc-root .toggle-btn .psc-cycle-tile__label,
        #psc-root .toggle-btn .psc-cycle-tile__body { display: contents !important; }
        #psc-root .toggle-btn:hover { color: var(--c-ink) !important; }
        #psc-root .toggle-btn.active {
            background: #fff !important;
            color: var(--c-ink) !important;
            box-shadow: 0 2px 10px rgba(0, 0, 0, 0.07) !important;
        }

        /* ── Plan cards ── */
        #psc-root .pricing-card {
            background: #fff !important;
            border: 1.5px solid var(--c-border) !important;
            border-radius: 24px !important;
            padding: 1.75rem 2rem !important;
            cursor: pointer !important;
            transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1) !important;
            display: flex !important;
            align-items: center !important;
            justify-content: space-between !important;
            gap: 1.25rem !important;
            position: relative !important;
            /* reset inherited table/grid stuff */
            box-shadow: none !important;
            outline: none !important;
        }
        #psc-root .pricing-card:hover {
            transform: translateY(-2px) !important;
            box-shadow: 0 12px 32px rgba(0, 0, 0, 0.05) !important;
        }
        #psc-root .pricing-card--selected {
            border-color: var(--c-ink) !important;
            box-shadow: 0 0 0 3px rgba(26, 23, 20, 0.07), 0 12px 32px rgba(0, 0, 0, 0.06) !important;
        }
        #psc-root .plan-icon {
            width: 44px;
            height: 44px;
            background: rgba(0, 0, 0, 0.05);
            border-radius: 50%;
            display: flex;
            align-items: center;
            justify-content: center;
            flex-shrink: 0;
            transition: all 0.25s ease;
            color: rgba(26, 23, 20, 0.5);
        }
        #psc-root .pricing-card--selected .plan-icon,
        #psc-root .pricing-card:hover .plan-icon {
            background: var(--c-ink);
            color: #fff;
        }
        #psc-root .popular-badge {
            position: absolute !important;
            top: -10px !important;
            right: 20px !important;
            background: var(--c-ink) !important;
            color: #fff !important;
            font-size: 10px !important;
            font-weight: 700 !important;
            letter-spacing: 0.1em !important;
            text-transform: uppercase !important;
            padding: 3px 12px !important;
            border-radius: 999px !important;
        }

        /* ── Addon items ── */
        #psc-root .addon-item {
            background: #fff !important;
            border: 1.5px solid var(--c-border) !important;
            border-radius: 20px !important;
            padding: 1.5rem !important;
            cursor: pointer !important;
            transition: all 0.25s ease !important;
            user-select: none !important;
        }
        #psc-root .addon-item:hover {
            transform: translateY(-2px) !important;
            box-shadow: 0 8px 24px rgba(0, 0, 0, 0.05) !important;
        }
        #psc-root .addon-item.selected {
            border-color: var(--c-ink) !important;
            box-shadow: 0 0 0 3px rgba(26, 23, 20, 0.07) !important;
        }
        #psc-root .addon-check {
            width: 20px !important;
            height: 20px !important;
            border-radius: 50% !important;
            border: 1.5px solid rgba(0, 0, 0, 0.15) !important;
            display: flex !important;
            align-items: center !important;
            justify-content: center !important;
            flex-shrink: 0 !important;
            transition: all 0.2s ease !important;
            background: transparent !important;
            color: transparent !important;
        }
        #psc-root .addon-item.selected .addon-check {
            background: var(--c-ink) !important;
            border-color: var(--c-ink) !important;
            color: #fff !important;
        }

        /* ── Sticky sidebar ── */
        #psc-root .psc-sticky-sidebar {
            position: sticky;
            top: max(5.5rem, calc(env(safe-area-inset-top, 0px) + 4.25rem));
            z-index: 8;
            background: #fff;
            border-radius: var(--c-radius);
            padding: clamp(1.5rem, 3vw, 2.25rem);
            box-shadow: 0 40px 80px -20px rgba(0, 0, 0, 0.07);
            border: 1px solid var(--c-border);
            max-height: calc(100vh - 6.5rem - env(safe-area-inset-bottom, 0px));
            overflow-y: auto;
            -webkit-overflow-scrolling: touch;
        }
        #psc-root .psc-summary-row {
            display: flex;
            justify-content: space-between;
            align-items: flex-start;
            gap: 0.75rem;
        }
        #psc-root .psc-summary-k {
            font-size: 12px;
            color: var(--c-muted);
            flex-shrink: 0;
        }
        #psc-root .psc-summary-v {
            font-size: 12px;
            font-weight: 600;
            text-align: right;
        }

        /* ── Pay button ── */
        #psc-root #psc-bar-pay {
            width: 100% !important;
            background: var(--c-ink) !important;
            color: #fff !important;
            padding: 1.05rem 1.25rem !important;
            border-radius: 16px !important;
            font-weight: 700 !important;
            font-size: 14px !important;
            font-family: inherit !important;
            border: none !important;
            cursor: pointer !important;
            transition: all 0.2s ease !important;
            box-shadow: 0 8px 24px rgba(0, 0, 0, 0.14) !important;
        }
        #psc-root #psc-bar-pay:hover:not(:disabled) {
            transform: scale(1.015) !important;
            box-shadow: 0 14px 32px rgba(0, 0, 0, 0.2) !important;
        }
        #psc-root #psc-bar-pay:active:not(:disabled) { transform: scale(0.98) !important; }
        #psc-root #psc-bar-pay:disabled {
            opacity: 0.45 !important;
            cursor: not-allowed !important;
            transform: none !important;
        }

        /* ── Trust items ── */
        #psc-root .psc-trust-item {
            display: flex;
            align-items: center;
            gap: 8px;
            font-size: 11px;
            font-weight: 500;
            color: var(--c-muted);
        }

        /* ── Price flash animation ── */
        #psc-root .price-flash {
            animation: pscFlash 0.4s ease-out;
        }
        @keyframes pscFlash {
            from { opacity: 0; transform: translateY(4px); }
            to   { opacity: 1; transform: translateY(0); }
        }

        /* ── Fade-in observer ── */
        #psc-root .fade-in { opacity: 0; transform: translateY(12px); transition: opacity 0.5s ease, transform 0.5s ease; }
        #psc-root .fade-in.visible { opacity: 1; transform: none; }

        /* ── Payment modal ── */
        body.pay-modal-open { overflow: hidden; }

        .pay-modal {
            position: fixed;
            inset: 0;
            z-index: 9999;
            display: flex;
            align-items: center;
            justify-content: center;
            padding: 20px;
            box-sizing: border-box;
        }
        .pay-modal__backdrop {
            position: absolute;
            inset: 0;
            background: rgba(10, 8, 20, 0.42);
            -webkit-backdrop-filter: blur(10px) saturate(1.1);
            backdrop-filter: blur(10px) saturate(1.1);
            cursor: pointer;
        }
        .pay-modal__sheet {
            position: relative;
            z-index: 1;
            width: 100%;
            max-width: 380px;
            background: #fdfcf9;
            border-radius: 28px;
            box-shadow:
                0 0 0 1px rgba(0,0,0,0.06),
                0 32px 80px -12px rgba(0,0,0,0.24),
                0 8px 24px -8px rgba(0,0,0,0.1);
            overflow: hidden;
            animation: payModalIn 0.32s cubic-bezier(0.34, 1.48, 0.64, 1) both;
        }
        @keyframes payModalIn {
            from { opacity: 0; transform: scale(0.88) translateY(18px); }
            to   { opacity: 1; transform: scale(1) translateY(0); }
        }
        @media (prefers-reduced-motion: reduce) {
            .pay-modal__sheet { animation: none; }
        }

        .pay-modal__head {
            padding: 28px 24px 22px;
            text-align: center;
            border-bottom: 1px solid rgba(0,0,0,0.07);
            background: #ffffff;
        }
        .pay-modal__title {
            font-size: 19px;
            font-weight: 800;
            color: #1a1714;
            margin: 0 0 7px;
            letter-spacing: -0.025em;
            font-family: 'Noto Sans SC', -apple-system, sans-serif;
        }
        .pay-modal__meta {
            font-size: 12px;
            font-weight: 600;
            color: rgba(26,23,20,0.42);
            margin: 0;
            line-height: 1.5;
        }

        .pay-modal__list {
            padding: 16px 16px 6px;
            display: flex;
            flex-direction: column;
            gap: 10px;
        }
        .pay-modal__option {
            width: 100%;
            display: flex;
            align-items: center;
            gap: 14px;
            padding: 15px 16px;
            background: rgba(26,23,20,0.04);
            border: 1.5px solid transparent;
            border-radius: 18px;
            cursor: pointer;
            font-family: 'Noto Sans SC', -apple-system, sans-serif;
            text-align: left;
            transition: background 0.18s ease, border-color 0.18s ease, box-shadow 0.2s ease, transform 0.18s ease;
        }
        .pay-modal__option:hover {
            background: #ffffff;
            border-color: #1a1714;
            box-shadow: 0 8px 24px -8px rgba(0,0,0,0.1);
            transform: translateY(-1px);
        }
        .pay-modal__option:active { transform: scale(0.985); box-shadow: none; }

        .pay-modal__option-ico {
            width: 46px;
            height: 46px;
            border-radius: 13px;
            background: #ffffff;
            border: 1px solid rgba(0,0,0,0.09);
            display: flex;
            align-items: center;
            justify-content: center;
            flex-shrink: 0;
            box-shadow: 0 2px 8px rgba(0,0,0,0.07);
            color: #1a1714;
            overflow: hidden;
        }
        .pay-modal__option-ico img,
        .pay-modal__option-ico svg { display: block; max-width: 26px; max-height: 26px; object-fit: contain; }

        .pay-modal__option-body {
            flex: 1;
            min-width: 0;
            display: flex;
            flex-direction: column;
            gap: 3px;
        }
        .pay-modal__option-name {
            font-size: 15px;
            font-weight: 800;
            color: #1a1714;
            line-height: 1.25;
            letter-spacing: -0.01em;
        }
        .pay-modal__option-desc {
            font-size: 12px;
            font-weight: 600;
            color: rgba(26,23,20,0.42);
        }
        .pay-modal__option-arrow {
            color: rgba(26,23,20,0.25);
            flex-shrink: 0;
            display: flex;
            align-items: center;
            transition: color 0.18s ease, transform 0.18s ease;
        }
        .pay-modal__option:hover .pay-modal__option-arrow {
            color: rgba(26,23,20,0.65);
            transform: translateX(2px);
        }

        .pay-modal__cancel {
            display: block;
            width: 100%;
            padding: 14px 16px 18px;
            background: none;
            border: none;
            cursor: pointer;
            font-family: 'Noto Sans SC', -apple-system, sans-serif;
            font-size: 14px;
            font-weight: 700;
            color: rgba(26,23,20,0.38);
            text-align: center;
            transition: color 0.2s ease;
        }
        .pay-modal__cancel:hover { color: rgba(26,23,20,0.75); }

        /*
         * Fix sticky sidebar:
         * common.css sets overflow-x: hidden on html — that breaks position: sticky
         * for descendants in Chromium/WebKit. overflow-x: clip avoids horizontal
         * bleed without establishing the same scroll containment.
         */
        html:has(#page-esim-taocan) {
            overflow-x: clip !important;
        }
        html.home-editorial:has(#page-esim-taocan) body {
            overflow-x: clip !important;
        }
        #page-esim-taocan.page-main {
            overflow-x: clip !important;
            overflow-y: visible !important;
        }
        #psc-root,
        #psc-root > div {
            overflow: visible !important;
        }
        /* 侧栏列：撑满网格行高，给 sticky 足够的粘滞区间 */
        #page-esim-taocan .psc-order-rail {
            align-self: stretch !important;
            min-height: 0;
        }

        /* Mobile（< 1024px Tailwind lg:）：单列布局，sidebar 不再 sticky */
        @media (max-width: 1023px) {
            #psc-root .psc-sticky-sidebar {
                position: static;
                max-height: none;
                overflow-y: visible;
                box-shadow: none;
                border-radius: var(--c-radius);
            }
            #page-esim-taocan .psc-order-rail {
                align-self: auto !important;
            }
        }
