{"product_id":"xqt","title":"xqt","description":"\u003cstyle\u003e\n  :root {\n    --afb-bg-main: #ffffff;\n    --afb-bg-secondary: #fafafc;\n    --afb-card-border: #eaeaea;\n    --afb-accent-gold: #c59b27;\n    --afb-accent-red: #e11d48;\n    --afb-accent-purple: #4a2366;\n    --afb-text-main: #1f2937;\n    --afb-text-muted: #4b5563;\n  }\n  .afb-scroll-reveal, .afb-title-wow {\n    opacity: 1;\n    transform: translateY(0);\n    transition: opacity 0.8s cubic-bezier(0.25, 0.8, 0.25, 1), transform 0.8s cubic-bezier(0.25, 0.8, 0.25, 1);\n  }\n  .afb-title-wow {\n    background: linear-gradient(to right, #37174f 20%, #d4b5e0 40%, #d4b5e0 60%, #37174f 80%);\n    background-size: 200% auto;\n    background-position: 200% center;\n    -webkit-background-clip: text;\n    -webkit-text-fill-color: transparent;\n    background-clip: text;\n    color: transparent;\n    display: inline-block;\n  }\n  .is-ready-for-scroll .afb-scroll-reveal { opacity: 0; transform: translateY(30px); }\n  .is-ready-for-scroll .afb-title-wow { opacity: 0; transform: translateY(20px); }\n  .is-ready-for-scroll .afb-scroll-reveal.is-visible { opacity: 1; transform: translateY(0); }\n  .is-ready-for-scroll .afb-title-wow.is-visible {\n    opacity: 1; transform: translateY(0);\n    animation: afbShineSweepLoop 9s cubic-bezier(0.25, 0.8, 0.25, 1) 0.3s infinite;\n  }\n  .afb-waitlist-card {\n    background: linear-gradient(135deg, #fffbeb 0%, #ffffff 52%, #f5f3ff 100%);\n    border: 1px solid #eadcf5;\n    border-left: 4px solid #37174f;\n    border-radius: 14px;\n    padding: 18px 20px;\n    margin: 0 0 18px 0;\n    box-shadow: 0 8px 22px rgba(55,23,79,0.08);\n    transition: all 0.3s ease;\n  }\n  .afb-waitlist-card:hover {\n    transform: translateY(-2px);\n    border-color: #d4b5e0;\n    box-shadow: 0 12px 28px rgba(55,23,79,0.12);\n  }\n  .afb-waitlist-title {\n    font-size: 16px;\n    font-weight: 900;\n    color: #37174f;\n    margin-bottom: 6px;\n  }\n  .afb-waitlist-desc {\n    font-size: 13px;\n    color: #5b5563;\n    line-height: 1.75;\n  }\n  .afb-waitlist-desc strong {\n    color: #37174f;\n    font-weight: 900;\n  }\n  .afb-midnight-vip-card {\n    width: 100%;\n    background: linear-gradient(135deg, #2d1641 0%, #150920 100%);\n    border: 1px solid rgba(183, 132, 199, 0.3);\n    border-radius: 16px;\n    padding: 24px 20px;\n    margin: 0 0 24px 0;\n    box-shadow: 0 16px 40px rgba(45, 22, 65, 0.25), inset 0 1px 0 rgba(255,255,255,0.05);\n    transition: all 0.4s cubic-bezier(0.165, 0.84, 0.44, 1);\n    position: relative;\n    overflow: hidden;\n    box-sizing: border-box;\n    animation: afbMidnightCardPulse 3s infinite alternate;\n  }\n  .afb-midnight-vip-card::after {\n    content: '';\n    position: absolute;\n    top: 0;\n    left: -150%;\n    width: 60%;\n    height: 100%;\n    background: linear-gradient(to right, rgba(255,255,255,0) 0%, rgba(255,255,255,0.08) 50%, rgba(255,255,255,0) 100%);\n    transform: skewX(-25deg);\n    pointer-events: none;\n    z-index: 1;\n    animation: afbAutoGlassSweepDark 6s ease-in-out infinite;\n    opacity: 1;\n    transition: opacity 0.3s ease;\n  }\n  .afb-midnight-vip-card:hover {\n    transform: translateY(-4px);\n    border-color: #d4b5e0;\n  }\n  .afb-midnight-vip-card:hover::after {\n    opacity: 0;\n  }\n  .afb-midnight-status-pill {\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    padding: 4px 10px;\n    background: rgba(183, 132, 199, 0.15);\n    color: #e8daf5;\n    font-size: 11px;\n    font-weight: 800;\n    text-transform: uppercase;\n    letter-spacing: 1px;\n    border-radius: 6px;\n    margin-bottom: 16px;\n    border: 1px solid rgba(183, 132, 199, 0.3);\n    position: relative;\n    z-index: 2;\n    line-height: 1.2;\n  }\n  .afb-midnight-vip-header {\n    width: 100% !important;\n    display: grid !important;\n    grid-template-columns: minmax(0, 1fr) auto !important;\n    align-items: center !important;\n    gap: 16px !important;\n    margin: 0 0 16px 0 !important;\n    position: relative;\n    z-index: 2;\n    box-sizing: border-box;\n  }\n  .afb-vip-title-wrapper {\n    min-width: 0 !important;\n    display: flex !important;\n    align-items: center !important;\n    gap: 10px !important;\n    box-sizing: border-box;\n  }\n  .afb-midnight-vip-icon {\n    flex: 0 0 auto;\n    font-size: 22px;\n    line-height: 1;\n    filter: drop-shadow(0 2px 8px rgba(183, 132, 199, 0.5));\n  }\n  .afb-midnight-vip-title {\n    min-width: 0;\n    font-size: 20px;\n    font-weight: 900;\n    background: linear-gradient(to right, #e8daf5, #ffffff, #d4b5e0, #ffffff, #e8daf5);\n    background-size: 200% auto;\n    -webkit-background-clip: text;\n    -webkit-text-fill-color: transparent;\n    background-clip: text;\n    color: transparent;\n    letter-spacing: -0.5px;\n    line-height: 1.15;\n    margin: 0 !important;\n    animation: afbSilverLilacShine 4s linear infinite;\n    overflow-wrap: anywhere;\n  }\n  .afb-wa-btn-premium,\n  .afb-wa-btn-premium:link,\n  .afb-wa-btn-premium:visited,\n  .afb-wa-btn-premium:focus,\n  .afb-wa-btn-premium:active {\n    justify-self: end !important;\n    align-self: center !important;\n    width: auto !important;\n    max-width: 100% !important;\n    min-height: 38px !important;\n    display: inline-flex !important;\n    align-items: center !important;\n    justify-content: center !important;\n    gap: 7px !important;\n    padding: 9px 14px !important;\n    background: rgba(212, 181, 224, 0.1) !important;\n    border: 1px solid rgba(212, 181, 224, 0.3) !important;\n    color: #e8daf5 !important;\n    font-size: 11.5px !important;\n    font-weight: 800 !important;\n    text-transform: uppercase !important;\n    letter-spacing: 0.5px !important;\n    line-height: 1.1 !important;\n    border-radius: 9px !important;\n    text-decoration: none !important;\n    white-space: nowrap !important;\n    box-shadow: 0 4px 12px rgba(0,0,0,0.2) !important;\n    margin: 0 !important;\n    box-sizing: border-box !important;\n    -webkit-tap-highlight-color: transparent;\n    transition: transform 0.25s ease, background 0.25s ease, border-color 0.25s ease, box-shadow 0.25s ease !important;\n  }\n  .afb-wa-btn-premium svg {\n    flex: 0 0 auto !important;\n    width: 14px !important;\n    height: 14px !important;\n    fill: currentColor !important;\n    display: block !important;\n  }\n  .afb-wa-btn-premium span {\n    display: inline-block !important;\n    line-height: 1.1 !important;\n  }\n  .afb-wa-btn-premium:hover {\n    background: rgba(37, 211, 102, 0.2) !important;\n    border-color: #25d366 !important;\n    color: #ffffff !important;\n    box-shadow: 0 6px 16px rgba(37, 211, 102, 0.25) !important;\n    transform: translateY(-2px) scale(1.02) !important;\n    text-decoration: none !important;\n  }\n  .afb-midnight-vip-desc {\n    width: 100%;\n    font-size: 14px;\n    font-weight: 400;\n    color: #f8f9fa;\n    line-height: 1.7;\n    letter-spacing: 0.2px;\n    position: relative;\n    z-index: 2;\n    text-shadow: 0 1px 2px rgba(0,0,0,0.5);\n    box-sizing: border-box;\n  }\n  .afb-midnight-vip-desc p {\n    margin: 0 0 12px 0 !important;\n  }\n  .afb-midnight-vip-desc p:last-child {\n    margin-bottom: 0 !important;\n  }\n  .afb-midnight-vip-desc strong {\n    color: #d4b5e0;\n    font-weight: 600;\n    border-bottom: 1px solid rgba(212, 181, 224, 0.4);\n  }\n  .afb-bronze-vip-card {\n    background: linear-gradient(135deg, #4a2b18 0%, #241107 100%);\n    border: 1px solid rgba(197, 155, 39, 0.4);\n    border-radius: 20px;\n    padding: 28px 24px;\n    margin: 0 0 24px 0;\n    box-shadow: 0 16px 40px rgba(74, 43, 24, 0.2), inset 0 1px 0 rgba(255,255,255,0.08);\n    transition: all 0.4s cubic-bezier(0.165, 0.84, 0.44, 1);\n    position: relative;\n    overflow: hidden;\n    display: flex;\n    flex-direction: column;\n    align-items: flex-start;\n    animation: afbBronzeCardPulse 3s infinite alternate;\n  }\n  .afb-bronze-vip-card::after {\n    content: '';\n    position: absolute;\n    top: 0;\n    left: -150%;\n    width: 60%;\n    height: 100%;\n    background: linear-gradient(to right, rgba(255,255,255,0) 0%, rgba(255,255,255,0.08) 50%, rgba(255,255,255,0) 100%);\n    transform: skewX(-25deg);\n    pointer-events: none;\n    z-index: 1;\n    animation: afbAutoGlassSweepDark 6s ease-in-out infinite;\n    opacity: 1;\n    transition: opacity 0.3s ease;\n  }\n  .afb-bronze-vip-card:hover {\n    transform: translateY(-4px);\n    border-color: #fbbf24;\n  }\n  .afb-bronze-vip-card:hover::after { opacity: 0; }\n  .afb-bronze-status-pill {\n    display: inline-block;\n    padding: 5px 12px;\n    background: rgba(197, 155, 39, 0.18);\n    color: #fde68a;\n    font-size: 11px;\n    font-weight: 800;\n    text-transform: uppercase;\n    letter-spacing: 1.5px;\n    border-radius: 6px;\n    margin-bottom: 20px;\n    border: 1px solid rgba(197, 155, 39, 0.35);\n    position: relative;\n    z-index: 2;\n  }\n  .afb-bronze-vip-header {\n    display: flex;\n    align-items: center;\n    gap: 12px;\n    margin-bottom: 14px;\n    position: relative;\n    z-index: 2;\n  }\n  .afb-bronze-vip-icon {\n    font-size: 26px;\n    filter: drop-shadow(0 2px 8px rgba(197, 155, 39, 0.6));\n  }\n  .afb-bronze-vip-title {\n    font-size: 22px;\n    font-weight: 900;\n    background: linear-gradient(to right, #d4af37, #fff8dc, #aa7c11, #fff8dc, #d4af37);\n    background-size: 200% auto;\n    -webkit-background-clip: text;\n    -webkit-text-fill-color: transparent;\n    background-clip: text;\n    color: transparent;\n    letter-spacing: -0.5px;\n    line-height: 1.1;\n    animation: afbGoldTextShine 4s linear infinite;\n  }\n  .afb-bronze-vip-desc {\n    font-size: 15px;\n    font-weight: 400;\n    color: #f9fafb;\n    line-height: 1.8;\n    letter-spacing: 0.3px;\n    position: relative;\n    z-index: 2;\n    text-shadow: 0 1px 2px rgba(0,0,0,0.5);\n  }\n  .afb-bronze-vip-desc p {\n    margin: 0 0 14px 0;\n  }\n  .afb-bronze-vip-desc p:last-child {\n    margin-bottom: 0;\n  }\n  .afb-bronze-vip-desc strong {\n    color: #fde68a;\n    font-weight: 600;\n    border-bottom: 1px solid rgba(253, 230, 138, 0.4);\n  }\n  .afb-pill, .afb-spec-row, .afb-feature-card { transition: all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1); }\n  .afb-pill { display:inline-block; cursor:default; }\n  .afb-spec-row { border-left:3px solid transparent; }\n  .afb-feature-card { border:1px solid transparent; }\n  .afb-ar-btn {\n    display:inline-flex; align-items:center; justify-content:center; gap:8px;\n    text-decoration:none; cursor:pointer; border:none; position: relative; overflow: hidden;\n  }\n  .afb-ar-btn::after {\n    content: ''; position: absolute; top: 0; left: -100%; width: 50%; height: 100%;\n    background: linear-gradient(to right, rgba(255,255,255,0) 0%, rgba(255,255,255,0.25) 50%, rgba(255,255,255,0) 100%);\n    transform: skewX(-25deg); animation: afbShimmer 4s infinite;\n  }\n  .afb-icon-float { display: inline-block; animation: afbFloat 2s ease-in-out infinite; }\n  .afb-premium-card {\n    position: relative; overflow: hidden; background: linear-gradient(135deg, #111827 0%, #172033 100%);\n    border: 1px solid var(--afb-theme-border); border-radius: 20px; padding: 24px; margin: 0 0 18px 0;\n    box-shadow: 0 12px 30px rgba(0,0,0,0.15); transition: all 0.4s cubic-bezier(0.25, 0.8, 0.25, 1);\n    cursor: pointer; animation: afbPulseThemeBorder 3s infinite alternate;\n    display: block; text-decoration: none !important;\n  }\n  .afb-premium-card:hover, .afb-premium-card:active, .afb-premium-card:visited, .afb-premium-card:focus { text-decoration: none !important; }\n  .afb-premium-card:hover, .afb-premium-card:active {\n    transform: translateY(-4px) scale(1.01); border-color: var(--afb-theme-hover); box-shadow: 0 16px 40px var(--afb-theme-shadow);\n  }\n  .afb-premium-card::before {\n    content: ''; position: absolute; top: 0; left: -150%; width: 60%; height: 100%;\n    background: linear-gradient(to right, rgba(255,255,255,0) 0%, rgba(255,255,255,0.04) 50%, rgba(255,255,255,0) 100%);\n    transform: skewX(-25deg); animation: afbPremiumShine 6s infinite; pointer-events: none;\n  }\n  .afb-premium-glow {\n    position: absolute; top: -60px; right: -60px; width: 180px; height: 180px; background: var(--afb-theme-hex);\n    filter: blur(75px); opacity: 0.15; pointer-events: none; animation: afbPulseGlow 4s ease-in-out infinite alternate;\n  }\n  .afb-premium-inner { display: flex; gap: 20px; align-items: center; position: relative; z-index: 2; flex-wrap: nowrap; }\n  .afb-premium-icon-box {\n    flex: 0 0 auto; background: var(--afb-theme-soft); padding: 16px; border-radius: 16px;\n    border: 1px solid var(--afb-theme-border); display: flex; align-items: center; justify-content: center; transition: transform 0.3s ease;\n  }\n  .afb-premium-card:hover .afb-premium-icon-box { transform: scale(1.08) rotate(5deg); }\n  .afb-premium-icon-animated {\n    display: inline-block;\n    animation: afbIconFloat 2.4s ease-in-out infinite, afbIconGlow 2.4s ease-in-out infinite;\n    transform-origin: center;\n  }\n  .afb-premium-label { font-size: 12px; font-weight: 800; color: var(--afb-theme-hex); text-transform: uppercase; letter-spacing: 1.5px; margin-bottom: 4px; }\n  .afb-premium-title { font-size: 22px; font-weight: 800; color: #ffffff; margin-bottom: 6px; line-height: 1.2; }\n  .afb-premium-desc { font-size: 14px; color: #9ca3af; line-height: 1.6; }\n  .afb-premium-cta { font-size: 12px; color: var(--afb-theme-hex); font-weight: bold; margin-top: 8px; display: flex; align-items: center; gap: 6px; opacity: 0.8; transition: opacity 0.3s; }\n  .afb-premium-card:hover .afb-premium-cta { opacity: 1; }\n  .afb-highlights-title {\n    margin: 0 0 32px 0;\n    font-size: 24px;\n    font-weight: 700;\n    color: var(--afb-text-main);\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    gap: 12px;\n    letter-spacing: -0.3px;\n    width: 100%;\n  }\n  .afb-highlights-title::before {\n    content: '✦';\n    color: var(--afb-accent-gold);\n    font-size: 22px;\n    animation: afbPulseGlow 3s infinite alternate;\n  }\n  .afb-highlights-list {\n    margin: 0;\n    padding: 0;\n    list-style: none;\n  }\n  .afb-scroll-reveal h3:has(+ .afb-highlights-list) {\n    margin: 0 0 32px 0 !important;\n    font-size: 24px !important;\n    font-weight: 700 !important;\n    color: var(--afb-text-main) !important;\n    display: flex !important;\n    align-items: center !important;\n    justify-content: center !important;\n    gap: 12px !important;\n    letter-spacing: -0.3px !important;\n    width: 100%;\n  }\n  .afb-scroll-reveal h3:has(+ .afb-highlights-list)::before {\n    content: '✦';\n    color: var(--afb-accent-gold);\n    font-size: 22px;\n    animation: afbPulseGlow 3s infinite alternate;\n  }\n  .afb-highlights-list li {\n    position: relative;\n    padding-left: 32px;\n    margin-bottom: 16px;\n    font-size: 15.5px;\n    line-height: 1.8;\n    color: var(--afb-text-muted);\n    transition: all 0.3s ease;\n  }\n  .afb-highlights-list li:last-child { margin-bottom: 0; }\n  .afb-highlights-list li::before {\n    content: '';\n    position: absolute;\n    left: 4px;\n    top: 10px;\n    width: 7px;\n    height: 7px;\n    background: #d1d5db;\n    border-radius: 50%;\n    transition: all 0.3s ease;\n  }\n  .afb-highlights-list li:hover {\n    color: var(--afb-text-main);\n    transform: translateX(4px);\n  }\n  .afb-highlights-list li:hover::before {\n    transform: scale(1.6);\n    background: var(--afb-accent-purple);\n    box-shadow: 0 0 10px rgba(74, 35, 102, 0.4), 0 0 1px 1px var(--afb-accent-gold);\n  }\n  .afb-highlights-list strong {\n    color: var(--afb-text-main);\n    font-weight: 600;\n  }\n  .afb-highlights-list {\n    border-top: 1px solid rgba(74, 35, 102, 0.08);\n    padding-top: 8px;\n  }\n  .afb-premium-specs-box {\n    background: #ffffff;\n    border: 1px solid #eee3f4;\n    border-radius: 18px;\n    padding: 32px 24px;\n    position: relative;\n    overflow: visible;\n    transition: border-color 0.4s ease, box-shadow 0.4s ease;\n    box-shadow: 0 4px 12px rgba(55, 23, 79, 0.02);\n    margin: 0 0 24px 0;\n    box-sizing: border-box;\n  }\n  .afb-premium-specs-box:hover {\n    box-shadow: 0 8px 24px rgba(55, 23, 79, 0.06);\n    border-color: #d4b5e0;\n  }\n  .afb-specs-container {\n    position: relative;\n    z-index: 2;\n    display: flex;\n    flex-direction: column;\n    gap: 0;\n  }\n  .afb-spec-row-premium {\n    position: relative;\n    background: transparent;\n    border-bottom: 1px solid #f4f0f8;\n    padding: 10px 16px 10px 20px;\n    margin-bottom: 0;\n    font-size: 14.5px;\n    color: #4b4b4b;\n    transition: all 0.3s ease;\n    border-left: 3px solid transparent;\n    display: flex;\n    flex-direction: row;\n    align-items: flex-start;\n    box-sizing: border-box;\n  }\n  .afb-spec-row-premium:last-child { border-bottom: none; }\n  .afb-spec-row-premium strong {\n    color: #2f2f2f;\n    font-weight: 700;\n    margin-right: 12px;\n    min-width: 100px;\n    flex-shrink: 0;\n    margin-top: 2px;\n  }\n  .afb-spec-value {\n    flex-grow: 1;\n    line-height: 1.6;\n  }\n  .afb-spec-row-premium:hover {\n    background: linear-gradient(90deg, rgba(212, 181, 224, 0.1) 0%, transparent 100%);\n    border-left: 3px solid #37174f;\n    color: #2f2f2f;\n    transform: translateX(2px);\n  }\n  .afb-spec-spotlight {\n    width: 100%;\n    margin-top: 12px;\n    padding: 16px 20px;\n    border-radius: 14px;\n    border: 1px solid transparent;\n    box-sizing: border-box;\n    transition: all 0.3s ease;\n  }\n  .afb-spec-spotlight-copy { min-width: 0; }\n  .afb-spec-spotlight-badge {\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    padding: 6px 12px;\n    border-radius: 999px;\n    font-size: 13px;\n    font-weight: 800;\n    text-transform: uppercase;\n    letter-spacing: 0.8px;\n    white-space: nowrap;\n    margin-bottom: 8px;\n    transition: all 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275);\n  }\n  .afb-spec-spotlight-desc {\n    font-size: 13px;\n    color: #666;\n    line-height: 1.45;\n    word-break: break-word;\n  }\n  .afb-spec-spotlight.is-exclusive {\n    background: linear-gradient(135deg, #ffffff 0%, #fff1f2 100%);\n    border-color: #fecdd3;\n  }\n  .afb-spec-spotlight.is-exclusive .afb-spec-spotlight-badge {\n    background: rgba(225, 29, 72, 0.1);\n    color: #e11d48;\n    border: 1px solid rgba(225, 29, 72, 0.2);\n  }\n  .afb-spec-spotlight.is-exclusive:hover {\n    border-color: #e11d48;\n    box-shadow: 0 6px 20px rgba(225, 29, 72, 0.12);\n    transform: translateY(-2px);\n  }\n  .afb-spec-spotlight.is-exclusive:hover .afb-spec-spotlight-badge {\n    background: #e11d48;\n    color: #ffffff;\n    box-shadow: 0 4px 12px rgba(225, 29, 72, 0.3);\n    transform: scale(1.05);\n  }\n  .afb-spec-spotlight.is-deluxe {\n    background: linear-gradient(135deg, #ffffff 0%, #fefce8 100%);\n    border-color: #fde68a;\n  }\n  .afb-spec-spotlight.is-deluxe .afb-spec-spotlight-badge {\n    background: rgba(197, 155, 39, 0.12);\n    color: #c59b27;\n    border: 1px solid rgba(197, 155, 39, 0.28);\n  }\n  .afb-spec-spotlight.is-deluxe:hover {\n    border-color: #c59b27;\n    box-shadow: 0 6px 20px rgba(197, 155, 39, 0.14);\n    transform: translateY(-2px);\n  }\n  .afb-spec-spotlight.is-deluxe:hover .afb-spec-spotlight-badge {\n    background: #c59b27;\n    color: #ffffff;\n    box-shadow: 0 4px 12px rgba(197, 155, 39, 0.28);\n    transform: scale(1.05);\n  }\n  .afb-spec-spotlight.is-premium-format {\n    background: linear-gradient(135deg, #ffffff 0%, #eff6ff 100%);\n    border-color: #bfdbfe;\n  }\n  .afb-spec-spotlight.is-premium-format .afb-spec-spotlight-badge {\n    background: rgba(37, 99, 235, 0.1);\n    color: #2563eb;\n    border: 1px solid rgba(37, 99, 235, 0.2);\n  }\n  .afb-spec-spotlight.is-premium-format:hover {\n    border-color: #2563eb;\n    box-shadow: 0 6px 20px rgba(37, 99, 235, 0.12);\n    transform: translateY(-2px);\n  }\n  .afb-spec-spotlight.is-premium-format:hover .afb-spec-spotlight-badge {\n    background: #2563eb;\n    color: #ffffff;\n    box-shadow: 0 4px 12px rgba(37, 99, 235, 0.25);\n    transform: scale(1.05);\n  }\n  .afb-spec-spotlight.is-collector {\n    background: linear-gradient(135deg, #ffffff 0%, #f5f3ff 100%);\n    border-color: #ddd6fe;\n  }\n  .afb-spec-spotlight.is-collector .afb-spec-spotlight-badge {\n    background: rgba(109, 40, 217, 0.1);\n    color: #6d28d9;\n    border: 1px solid rgba(109, 40, 217, 0.2);\n  }\n  .afb-spec-spotlight.is-collector:hover {\n    border-color: #6d28d9;\n    box-shadow: 0 6px 20px rgba(109, 40, 217, 0.12);\n    transform: translateY(-2px);\n  }\n  .afb-spec-spotlight.is-collector:hover .afb-spec-spotlight-badge {\n    background: #6d28d9;\n    color: #ffffff;\n    box-shadow: 0 4px 12px rgba(109, 40, 217, 0.24);\n    transform: scale(1.05);\n  }\n  .afb-spec-spotlight.is-bonus {\n    background: linear-gradient(135deg, #ffffff 0%, #eff6ff 100%);\n    border-color: #93c5fd;\n  }\n  .afb-spec-spotlight.is-bonus .afb-spec-spotlight-badge {\n    background: rgba(37, 99, 235, 0.1);\n    color: #2563eb;\n    border: 1px solid rgba(37, 99, 235, 0.2);\n  }\n  .afb-spec-spotlight.is-bonus:hover {\n    border-color: #2563eb;\n    box-shadow: 0 6px 20px rgba(37, 99, 235, 0.12);\n    transform: translateY(-2px);\n  }\n  .afb-spec-spotlight.is-bonus:hover .afb-spec-spotlight-badge {\n    background: #2563eb;\n    color: #ffffff;\n    box-shadow: 0 4px 12px rgba(37, 99, 235, 0.24);\n    transform: scale(1.05);\n  }\n  .afb-spec-spotlight.is-masterline {\n    background: linear-gradient(135deg, #ffffff 0%, #eff6ff 100%);\n    border-color: #93c5fd;\n  }\n  .afb-spec-spotlight.is-masterline .afb-spec-spotlight-badge {\n    background: rgba(30, 64, 175, 0.1);\n    color: #1e40af;\n    border: 1px solid rgba(30, 64, 175, 0.2);\n  }\n  .afb-spec-spotlight.is-masterline:hover {\n    border-color: #1e40af;\n    box-shadow: 0 6px 20px rgba(30, 64, 175, 0.12);\n    transform: translateY(-2px);\n  }\n  .afb-spec-spotlight.is-masterline:hover .afb-spec-spotlight-badge {\n    background: #1e40af;\n    color: #ffffff;\n    box-shadow: 0 4px 12px rgba(30, 64, 175, 0.24);\n    transform: scale(1.05);\n  }\n  .afb-spec-spotlight.is-mythos {\n    background: linear-gradient(135deg, #ffffff 0%, #faf5ff 100%);\n    border-color: #d8b4fe;\n  }\n  .afb-spec-spotlight.is-mythos .afb-spec-spotlight-badge {\n    background: rgba(126, 34, 206, 0.1);\n    color: #7e22ce;\n    border: 1px solid rgba(126, 34, 206, 0.2);\n  }\n  .afb-spec-spotlight.is-mythos:hover {\n    border-color: #7e22ce;\n    box-shadow: 0 6px 20px rgba(126, 34, 206, 0.12);\n    transform: translateY(-2px);\n  }\n  .afb-spec-spotlight.is-mythos:hover .afb-spec-spotlight-badge {\n    background: #7e22ce;\n    color: #ffffff;\n    box-shadow: 0 4px 12px rgba(126, 34, 206, 0.24);\n    transform: scale(1.05);\n  }\n  .afb-ar-card { transition: all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1); }\n  .afb-ar-card:hover { transform:translateY(-3px); box-shadow:0 16px 36px rgba(55,23,79,0.10); }\n  .afb-ar-inner { display: flex; flex-wrap: wrap; gap: 16px; align-items: center; justify-content: space-between; }\n  .afb-ar-text { flex: 1 1 260px; min-width: 0; }\n  .afb-ar-cta { flex: 0 0 auto; }\n  @media (max-width: 600px) {\n    .afb-hero-card p { font-size: 13.5px !important; line-height: 1.6 !important; margin-bottom: 12px !important; }\n    .afb-waitlist-card { padding: 16px 14px; }\n    .afb-waitlist-title { font-size: 15px; }\n    .afb-waitlist-desc { font-size: 12.5px; line-height: 1.6; }\n    .afb-bronze-vip-card { padding: 24px 18px; }\n    .afb-bronze-vip-title { font-size: 19px; }\n    .afb-bronze-vip-desc { font-size: 14.5px; line-height: 1.6; }\n    .afb-bronze-vip-desc p { margin-bottom: 12px; }\n    .afb-premium-card { padding: 18px 14px; }\n    .afb-premium-inner { gap: 14px; align-items: flex-start; }\n    .afb-premium-icon-box { padding: 12px; border-radius: 12px; }\n    .afb-premium-icon-box span { font-size: 24px; }\n    .afb-premium-label { font-size: 10px; margin-bottom: 2px; }\n    .afb-premium-title { font-size: 18px; margin-bottom: 4px; }\n    .afb-premium-desc { font-size: 12.5px !important; line-height: 1.5 !important; }\n    .afb-highlights-title { font-size: 21px; margin-bottom: 24px; }\n    .afb-scroll-reveal h3:has(+ .afb-highlights-list) {\n      font-size: 21px !important;\n      margin-bottom: 24px !important;\n    }\n    .afb-highlights-list li { font-size: 14.5px; margin-bottom: 14px; padding-left: 28px; }\n    .afb-highlights-list li::before { left: 2px; top: 8px; }\n    .afb-spec-row-premium {\n      flex-direction: column;\n      padding: 10px 14px 10px 16px;\n    }\n    .afb-spec-row-premium strong {\n      margin-bottom: 4px;\n      color: #37174f;\n    }\n    .afb-limited-card {\n      flex-direction: column;\n      align-items: flex-start;\n      gap: 12px;\n    }\n    .afb-spec-spotlight { padding: 14px 16px; }\n    .afb-spec-spotlight-badge { white-space: normal; }\n    .afb-ar-inner { flex-direction: column; text-align: center; }\n    .afb-ar-text { flex: 1 1 auto; }\n    .afb-ar-cta { width: 100%; display: flex; justify-content: center; margin-top: 4px; }\n  }\n  @media (max-width: 720px) {\n    .afb-midnight-vip-header {\n      grid-template-columns: 1fr !important;\n      align-items: stretch !important;\n      gap: 14px !important;\n    }\n    .afb-wa-btn-premium,\n    .afb-wa-btn-premium:link,\n    .afb-wa-btn-premium:visited,\n    .afb-wa-btn-premium:focus,\n    .afb-wa-btn-premium:active {\n      width: 100% !important;\n      justify-self: stretch !important;\n      min-height: 42px !important;\n      padding: 11px 14px !important;\n    }\n  }\n  @media (max-width: 480px) {\n    .afb-midnight-vip-card {\n      padding: 20px 16px;\n      border-radius: 15px;\n    }\n    .afb-midnight-status-pill {\n      font-size: 10px;\n      margin-bottom: 14px;\n    }\n    .afb-vip-title-wrapper {\n      gap: 9px !important;\n    }\n    .afb-midnight-vip-icon {\n      font-size: 20px;\n    }\n    .afb-midnight-vip-title {\n      font-size: 18px;\n    }\n    .afb-midnight-vip-desc {\n      font-size: 13px;\n      line-height: 1.65;\n    }\n    .afb-wa-btn-premium,\n    .afb-wa-btn-premium:link,\n    .afb-wa-btn-premium:visited,\n    .afb-wa-btn-premium:focus,\n    .afb-wa-btn-premium:active {\n      font-size: 11px !important;\n      letter-spacing: 0.35px !important;\n    }\n  }\n  .afb-overlay { display:none; position:fixed; inset:0; background:rgba(15, 23, 42, 0.75); z-index:999999; padding:18px; box-sizing:border-box; align-items:center; justify-content:center; backdrop-filter:blur(8px); }\n  .afb-overlay.is-open, .afb-overlay:target { display:flex; animation: afbFadeIn 0.3s ease-out forwards; }\n  .afb-overlay-bg { position:absolute; inset:0; z-index:1; display:block; text-decoration:none !important; }\n  .afb-modal-card { width:100%; max-width:440px; background:#ffffff; border-radius:22px; box-shadow:0 24px 60px rgba(15,23,42,0.22); overflow:hidden; position:relative; animation:afbScaleIn 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275); }\n  .afb-modal-card-dark { background: linear-gradient(135deg, #111827 0%, #1f2937 100%); border: 1px solid var(--afb-theme-border); }\n  .afb-modal-close { position:absolute; top:12px; right:12px; width:34px; height:34px; border:none; border-radius:999px; background:#f5f5f5; color:#444; font-size:18px; cursor:pointer; transition: background 0.2s, transform 0.2s; display:flex; align-items:center; justify-content:center; }\n  .afb-modal-close:hover { background: #e0e0e0; transform: scale(1.1) rotate(90deg); }\n  .afb-modal-close-dark { background: rgba(255,255,255,0.1); color: #fff; }\n  .afb-modal-close-dark:hover { background: rgba(255,255,255,0.2); }\n  #afb-version-overlay .afb-modal-card { z-index: 2; }\n  #afb-version-overlay .afb-modal-close,\n  #afb-version-overlay .afb-modal-close:link,\n  #afb-version-overlay .afb-modal-close:visited,\n  #afb-version-overlay .afb-modal-close:hover,\n  #afb-version-overlay .afb-modal-close:active,\n  #afb-version-overlay .afb-modal-close:focus {\n    background: rgba(255,255,255,0.10) !important;\n    color: #ffffff !important;\n    text-decoration: none !important;\n    box-shadow: none !important;\n    outline: none !important;\n    z-index: 3;\n    -webkit-tap-highlight-color: transparent;\n    transition: transform 0.2s ease;\n  }\n  #afb-version-overlay .afb-modal-close:hover,\n  #afb-version-overlay .afb-modal-close:active {\n    background: rgba(255,255,255,0.10) !important;\n    transform: scale(1.1) rotate(90deg);\n  }\n  .afb-helper-link { display:inline-block; margin-top:10px; font-size:12px; color:#7a5f9d; text-decoration:none; font-weight:600; }\n  .afb-helper-link:hover { text-decoration:underline; }\n  .afb-pill:hover { transform:translateY(-3px) scale(1.03); box-shadow:0 4px 12px rgba(0,0,0,0.08); filter:brightness(0.97); }\n  .afb-spec-row:hover { background:#ffffff !important; border-left:3px solid #b784c7; transform:translateX(4px); box-shadow:0 2px 8px rgba(0,0,0,0.03); }\n  .afb-feature-card:hover { transform:translateY(-6px); background:#ffffff !important; border:1px solid #eee3f4; box-shadow:0 8px 20px rgba(55,23,79,0.06); }\n  .afb-premium-highlights-box {\n    background: #ffffff;\n    border: 1px solid #eee3f4;\n    border-radius: 18px;\n    padding: 32px 24px;\n    position: relative;\n    overflow: hidden;\n    transition: border-color 0.4s ease, box-shadow 0.4s ease;\n    box-shadow: 0 4px 12px rgba(55, 23, 79, 0.02);\n    margin: 0 0 24px 0;\n  }\n  .afb-premium-highlights-box:hover {\n    box-shadow: 0 8px 24px rgba(55, 23, 79, 0.06);\n    border-color: #d4b5e0;\n  }\n  .afb-premium-highlights-box::after {\n    content: '';\n    position: absolute;\n    top: 0;\n    left: -150%;\n    width: 50%;\n    height: 100%;\n    background: linear-gradient(to right, rgba(255,255,255,0) 0%, rgba(212,181,224,0.15) 50%, rgba(255,255,255,0) 100%);\n    transform: skewX(-25deg);\n    pointer-events: none;\n    z-index: 1;\n    animation: afbAutoGlassSweep 5s ease-in-out infinite;\n    opacity: 1;\n    transition: opacity 0.3s ease;\n  }\n  .afb-premium-highlights-box:hover::after { opacity: 0; }\n  .afb-title-amethyst {\n    background: linear-gradient(110deg, #37174f 0%, #37174f 30%, #e8daf5 45%, #ffffff 50%, #b784c7 55%, #37174f 70%, #37174f 100%);\n    background-size: 300% auto;\n    -webkit-background-clip: text;\n    -webkit-text-fill-color: transparent;\n    background-clip: text;\n    color: transparent;\n    display: inline-flex;\n    animation: afbMetallicPulse 5s cubic-bezier(0.25, 0.8, 0.25, 1) infinite;\n  }\n  .afb-highlights-header {\n    margin: 0 0 28px 0;\n    font-size: 24px;\n    font-weight: 900;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    gap: 12px;\n    letter-spacing: -0.5px;\n    position: relative;\n    z-index: 2;\n  }\n  .afb-icon-star-purple {\n    color: #37174f;\n    font-size: 20px;\n    display: inline-block;\n  }\n  .afb-hl-list {\n    margin: 0;\n    padding: 0;\n    list-style: none;\n    position: relative;\n    z-index: 2;\n  }\n  .afb-hl-list:empty { display: none; }\n  .afb-hl-list:empty + .afb-limited-card { margin-top: 0; }\n  .afb-hl-list li {\n    position: relative;\n    padding: 8px 16px 8px 32px;\n    margin-bottom: 8px;\n    font-size: 14.5px;\n    line-height: 1.8;\n    color: #4b4b4b;\n    border-radius: 8px;\n    transition: all 0.3s ease;\n    background: transparent;\n  }\n  .afb-hl-list li:last-child { margin-bottom: 0; }\n  .afb-hl-list li::before {\n    content: '';\n    position: absolute;\n    left: 12px;\n    top: 17px;\n    width: 5px;\n    height: 5px;\n    background: #d1d5db;\n    border-radius: 50%;\n    transition: all 0.3s ease;\n  }\n  .afb-hl-list li:hover {\n    color: #2f2f2f;\n    transform: translateX(2px);\n    background: linear-gradient(90deg, rgba(212, 181, 224, 0.1) 0%, transparent 100%);\n    box-shadow: inset 2px 0 0 #37174f;\n  }\n  .afb-hl-list li:hover::before {\n    background: #37174f;\n    transform: scale(1.2);\n  }\n  .afb-hl-list strong {\n    color: #2f2f2f;\n    font-weight: 700;\n  }\n  .afb-limited-card {\n    background: linear-gradient(135deg, #ffffff 0%, #fff1f2 100%);\n    border: 1px solid #fecdd3;\n    border-radius: 12px;\n    display: flex;\n    flex-direction: row;\n    align-items: center;\n    justify-content: space-between;\n    padding: 16px 20px;\n    margin-top: 24px;\n    position: relative;\n    z-index: 2;\n    transition: all 0.3s cubic-bezier(0.165, 0.84, 0.44, 1);\n    box-sizing: border-box;\n  }\n  .afb-limited-card:hover {\n    border-color: #e11d48;\n    box-shadow: 0 6px 20px rgba(225, 29, 72, 0.12);\n    transform: translateY(-2px);\n    border-left: 1px solid #e11d48;\n  }\n  .afb-limited-text {\n    flex: 1 1 auto;\n    min-width: 0;\n  }\n  .afb-limited-text strong {\n    color: #2f2f2f;\n    font-weight: 700;\n    font-size: 14.5px;\n    display: block;\n    line-height: 1.2;\n  }\n  .afb-limited-text span {\n    font-size: 13px;\n    color: #666;\n    margin-top: 4px;\n    line-height: 1.45;\n    display: block;\n  }\n  .afb-limited-badge {\n    display: inline-flex;\n    align-items: center;\n    gap: 6px;\n    padding: 6px 12px;\n    border-radius: 8px;\n    font-size: 13px;\n    font-weight: 800;\n    text-transform: uppercase;\n    letter-spacing: 1px;\n    background: rgba(225, 29, 72, 0.1);\n    color: #e11d48;\n    border: 1px solid rgba(225, 29, 72, 0.2);\n    transition: all 0.3s ease;\n    flex-shrink: 0;\n  }\n  .afb-limited-card:hover .afb-limited-badge {\n    background: #e11d48;\n    color: #ffffff;\n    box-shadow: 0 4px 12px rgba(225, 29, 72, 0.3);\n    transform: scale(1.05);\n  }\n  .afb-simple-pill {\n    display: inline-flex;\n    align-items: center;\n    gap: 6px;\n    background: linear-gradient(135deg, #e11d48 0%, #be123c 100%);\n    color: #ffffff;\n    padding: 6px 14px;\n    border-radius: 999px;\n    font-size: 13px;\n    font-weight: 800;\n    text-transform: uppercase;\n    letter-spacing: 1px;\n    box-shadow: 0 4px 12px rgba(225, 29, 72, 0.25);\n    border: 1px solid rgba(255, 255, 255, 0.2);\n  }\n  @keyframes afbScaleIn { from { opacity:0; transform:scale(0.90); } to { opacity:1; transform:scale(1); } }\n  @keyframes afbFadeIn { from { opacity:0; } to { opacity:1; } }\n  @keyframes afbShimmer { 0% { left: -100%; } 20% { left: 200%; } 100% { left: 200%; } }\n  @keyframes afbFloat { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-3px); } }\n  @keyframes afbShineSweepLoop {\n    0%, 14% { background-position: 200% center; }\n    34%, 72% { background-position: -200% center; }\n    100% { background-position: -200% center; }\n  }\n  @keyframes afbPremiumShine { 0% { left: -150%; } 20% { left: 200%; } 100% { left: 200%; } }\n  @keyframes afbPulseGlow { 0% { opacity: 0.10; transform: scale(0.9); } 100% { opacity: 0.22; transform: scale(1.1); } }\n  @keyframes afbPulseThemeBorder { 0% { border-color: var(--afb-theme-border); } 100% { border-color: var(--afb-theme-hover); box-shadow: 0 0 15px var(--afb-theme-shadow); } }\n  @keyframes afbMidnightCardPulse {\n    0% { border-color: rgba(183, 132, 199, 0.2); box-shadow: 0 16px 40px rgba(45, 22, 65, 0.15); }\n    100% { border-color: rgba(183, 132, 199, 0.6); box-shadow: 0 16px 40px rgba(45, 22, 65, 0.35); }\n  }\n  @keyframes afbBronzeCardPulse {\n    0% { border-color: rgba(197, 155, 39, 0.25); box-shadow: 0 16px 40px rgba(74, 43, 24, 0.2); }\n    100% { border-color: rgba(197, 155, 39, 0.7); box-shadow: 0 16px 40px rgba(197, 155, 39, 0.15); }\n  }\n  @keyframes afbIconFloat {\n    0%, 100% { transform: translateY(0) rotate(0deg) scale(1); }\n    25% { transform: translateY(-3px) rotate(-4deg) scale(1.04); }\n    50% { transform: translateY(-5px) rotate(4deg) scale(1.08); }\n    75% { transform: translateY(-3px) rotate(-2deg) scale(1.04); }\n  }\n  @keyframes afbIconGlow {\n    0%, 100% { filter: drop-shadow(0 4px 6px rgba(0,0,0,0.3)); }\n    50% { filter: drop-shadow(0 0 10px var(--afb-theme-hex)) drop-shadow(0 0 18px var(--afb-theme-shadow)); }\n  }\n  @keyframes afbAutoGlassSweepDark { 0% { left: -150%; } 30% { left: 200%; } 100% { left: 200%; } }\n  @keyframes afbSilverLilacShine { 0% { background-position: 200% center; } 100% { background-position: -200% center; } }\n  @keyframes afbAutoGlassSweep { 0% { left: -150%; } 30% { left: 200%; } 100% { left: 200%; } }\n  @keyframes afbGoldTextShine { 0% { background-position: 200% center; } 100% { background-position: -200% center; } }\n  @keyframes afbMetallicPulse { 0% { background-position: 150% center; } 30% { background-position: -50% center; } 100% { background-position: -50% center; } }\n\n  .afb-pill-row:hover .afb-pill,\n  .afb-pill-row.is-user-interacting .afb-pill { animation-play-state: paused; }\n  .afb-pill {\n    display:inline-flex;\n    align-items:center;\n    gap:8px;\n    cursor:default;\n    position:relative;\n    will-change:transform;\n    animation: afbPillWave 6s ease-in-out infinite;\n  }\n  .afb-pill:hover {\n    animation-play-state: paused;\n  }\n  .afb-pill-row .afb-pill:nth-child(1) { animation-delay: 0s; }\n  .afb-pill-row .afb-pill:nth-child(2) { animation-delay: 0.18s; }\n  .afb-pill-row .afb-pill:nth-child(3) { animation-delay: 0.36s; }\n  .afb-pill-row .afb-pill:nth-child(4) { animation-delay: 0.54s; }\n  .afb-pill-row .afb-pill:nth-child(5) { animation-delay: 0.72s; }\n  .afb-pill-row .afb-pill:nth-child(6) { animation-delay: 0.90s; }\n  .afb-pill-row .afb-pill:nth-child(7) { animation-delay: 1.08s; }\n  .afb-pill-row .afb-pill:nth-child(8) { animation-delay: 1.26s; }\n  .afb-pill-icon {\n    display:inline-flex;\n    align-items:center;\n    justify-content:center;\n    line-height:1;\n  }\n  .afb-pill-visual-reality {\n    cursor:pointer !important;\n    text-decoration:none !important;\n  }\n  .afb-pill-visual-reality:hover {\n    text-decoration:none !important;\n  }\n  .afb-visual-dot {\n    width:10px;\n    height:10px;\n    border-radius:999px;\n    background:#22c55e;\n    box-shadow:0 0 0 rgba(34,197,94,0.55);\n    animation: afbGreenPulse 1.5s ease-in-out infinite;\n    flex:0 0 auto;\n  }\n  .afb-ar-jump-target {\n    scroll-margin-top: 28px;\n  }\n  @keyframes afbGreenPulse {\n    0%, 100% {\n      transform: scale(0.95);\n      box-shadow: 0 0 0 0 rgba(34,197,94,0.45);\n      opacity: 0.95;\n    }\n    50% {\n      transform: scale(1.12);\n      box-shadow: 0 0 0 8px rgba(34,197,94,0);\n      opacity: 1;\n    }\n  }\n  @keyframes afbPillWave {\n    0%, 88%, 100% { transform: translateY(0); }\n    4% { transform: translateY(-4px); }\n    8% { transform: translateY(0); }\n  }\n  @media (max-width: 600px) {\n    .afb-pill { animation: none; }\n  }\n\u003c\/style\u003e\n\u003cspan id=\"afb-close-target\"\u003e\u003c\/span\u003e\n\u003cdiv class=\"afb-showcase-container\" id=\"afb-main-container\" style=\"--afb-theme-hex:#7c3aed; --afb-theme-border:rgba(124, 58, 237, 0.30); --afb-theme-hover:rgba(124, 58, 237, 0.80); --afb-theme-shadow:rgba(124, 58, 237, 0.15); --afb-theme-soft:rgba(124, 58, 237, 0.08); max-width:860px;margin:0 auto;padding:16px 14px 24px 14px;font-family:'Rubik',system-ui,sans-serif;color:#2f2f2f;line-height:1.75;box-sizing:border-box;\"\u003e\n\u003cp class=\"afb-scroll-reveal\" style=\"margin:0 0 10px 0;font-size:14px;color:#6b6b6b;text-align:center;\"\u003e\u003ca href=\"https:\/\/www.instagram.com\/actionfigure.brasil\/\" rel=\"noopener\" style=\"color:#b784c7;text-decoration:none;font-weight:600;transition:color 0.2s;\" target=\"_blank\"\u003eActionFigureBrasil\u003c\/a\u003e apresenta uma peça premium produzida pela \u003ca href=\"https:\/\/actionfigurebrasil.com.br\/collections\/vendors?q=Prime%201%20Studio\" rel=\"noopener\" style=\"color:#6b21a8;text-decoration:none;font-weight:700;\" target=\"_blank\"\u003ePrime 1 Studio\u003c\/a\u003e.\u003c\/p\u003e\n\u003cdiv style=\"text-align:center;\"\u003e\n\u003ch2 class=\"afb-title-wow\" style=\"margin:0;font-size:32px;line-height:1.2;font-weight:900;\"\u003eThe Batman Who Laughs \u0026amp; Robin King (Deluxe Bonus Version)\u003c\/h2\u003e\n\u003c\/div\u003e\n\u003cp class=\"afb-scroll-reveal\" style=\"margin:8px 0 0 0;font-size:14px;color:#7b7b7b;text-align:center;\"\u003e1:3 • Statue • Deluxe Bonus Version\u003c\/p\u003e\n\u003cdiv class=\"afb-scroll-reveal afb-pill-row\" style=\"display:flex;flex-wrap:wrap;justify-content:center;gap:10px;margin:18px 0 24px 0;\"\u003e\n\u003cspan class=\"afb-pill\" style=\"background:#fff7ed;color:#9a3412;padding:8px 14px;border-radius:999px;font-size:13px;font-weight:bold;box-shadow:0 4px 12px rgba(154,52,18,0.10);\"\u003e\u003cspan class=\"afb-pill-icon\"\u003e🎫\u003c\/span\u003e\u003cspan\u003ePré-venda\u003c\/span\u003e\u003c\/span\u003e\n\u003cspan class=\"afb-pill\" style=\"background:#eef2ff;color:#312e81;padding:8px 14px;border-radius:999px;font-size:13px;font-weight:bold;\"\u003e\u003cspan class=\"afb-pill-icon\"\u003e🌌\u003c\/span\u003e\u003cspan\u003eDC Comics\u003c\/span\u003e\u003c\/span\u003e\n\u003cspan class=\"afb-pill\" style=\"background:#f5f3ff;color:#6b21a8;padding:8px 14px;border-radius:999px;font-size:13px;font-weight:bold;\"\u003e\u003cspan class=\"afb-pill-icon\"\u003e🛠️\u003c\/span\u003e\u003cspan\u003ePrime 1 Studio\u003c\/span\u003e\u003c\/span\u003e\n\u003cspan class=\"afb-pill\" style=\"background:#eff6ff;color:#1d4ed8;padding:8px 14px;border-radius:999px;font-size:13px;font-weight:bold;\"\u003e\u003cspan class=\"afb-pill-icon\"\u003e📐\u003c\/span\u003e\u003cspan\u003eEscala 1:3\u003c\/span\u003e\u003c\/span\u003e\n\u003cspan class=\"afb-pill\" style=\"background:#ecfeff;color:#155e75;padding:8px 14px;border-radius:999px;font-size:13px;font-weight:bold;\"\u003e\u003cspan class=\"afb-pill-icon\"\u003e📏\u003c\/span\u003e\u003cspan\u003e33.85\"\u003c\/span\u003e\u003c\/span\u003e\n\u003cspan class=\"afb-pill\" style=\"background:#f0fdf4;color:#3f6212;padding:8px 14px;border-radius:999px;font-size:13px;font-weight:bold;\"\u003e\u003cspan class=\"afb-pill-icon\"\u003e⚖️\u003c\/span\u003e\u003cspan\u003e26,06 kg\u003c\/span\u003e\u003c\/span\u003e\n\u003cspan class=\"afb-pill\" style=\"background:#faf5ff;color:#7e22ce;padding:8px 14px;border-radius:999px;font-size:13px;font-weight:bold;\"\u003e\u003cspan class=\"afb-pill-icon\"\u003e🗿\u003c\/span\u003e\u003cspan\u003ePolystone\u003c\/span\u003e\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"afb-scroll-reveal afb-bronze-vip-card\"\u003e\n\u003cdiv class=\"afb-bronze-status-pill\"\u003eStatus do Lote\u003c\/div\u003e\n\u003cdiv class=\"afb-bronze-vip-header\"\u003e\n\u003cdiv class=\"afb-bronze-vip-icon\"\u003e🎫\u003c\/div\u003e\n\u003cdiv class=\"afb-bronze-vip-title\"\u003ePré-venda Prioritária\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"afb-bronze-vip-desc\"\u003e\n\u003cp\u003eNão corra o risco de ficar sem esta edição. A peça encontra-se em \u003cstrong\u003epré-venda\u003c\/strong\u003e e as cotas do lote oficial esgotam rapidamente.\u003c\/p\u003e\n\u003cp\u003eAo confirmar o seu pedido, você assegura a sua unidade e ganha \u003cstrong\u003eenvio prioritário internacional\u003c\/strong\u003e assim que a produção for finalizada e liberada para as nossas centrais.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003ca class=\"afb-scroll-reveal afb-premium-card\" href=\"#afb-version-overlay\" id=\"btn-open-version\" role=\"button\"\u003e\n\u003cdiv class=\"afb-premium-glow\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"afb-premium-inner\"\u003e\n\u003cdiv class=\"afb-premium-icon-box\"\u003e\u003cspan class=\"afb-premium-icon-animated\" style=\"font-size:28px;\"\u003e🏆\u003c\/span\u003e\u003c\/div\u003e\n\u003cdiv class=\"afb-premium-text-content\"\u003e\n\u003cdiv class=\"afb-premium-label\"\u003eLinha Prestige\u003c\/div\u003e\n\u003cdiv class=\"afb-premium-title\"\u003eMuseum Masterline\u003c\/div\u003e\n\u003cdiv class=\"afb-premium-desc\"\u003eLinha de altíssimo prestígio, com acabamento refinado e forte imponência de coleção.\u003c\/div\u003e\n\u003cdiv class=\"afb-premium-cta\"\u003e\u003cspan\u003e👉 Clique para ver os diferenciais da versão\u003c\/span\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/a\u003e\n\u003cstyle\u003e\n  .afb-product-description-body {\n    --afb-text: #37174f;\n    --afb-purple: #6d3291;\n    --afb-purple-dark: #37174f;\n    --afb-purple-light: #d4b5e0;\n    --afb-red: #d62839;\n    --afb-red-dark: #9f1020;\n    --afb-soft-text: rgba(55, 23, 79, 0.72);\n    --afb-muted-text: rgba(55, 23, 79, 0.46);\n    --afb-border: rgba(55, 23, 79, 0.12);\n    --afb-shadow: 0 18px 42px rgba(55, 23, 79, 0.10);\n    --afb-merchant-progress: 0;\n    --afb-narration-out-duration: 1.16s;\n    --afb-narration-out-delay: 0.08s;\n    --afb-merchant-in-duration: 1.02s;\n    --afb-merchant-in-delay: 0.66s;\n    width: 100%;\n    max-width: 980px;\n    margin: 0 auto;\n    color: var(--afb-text);\n    font-family: inherit;\n    box-sizing: border-box;\n    container-type: inline-size;\n  }\n\n  .afb-product-description-body * {\n    box-sizing: border-box;\n  }\n\n  .afb-product-description-body[data-body-theme-key=\"standard\"] {\n    --afb-theme-rgb: 107, 114, 128;\n    --afb-theme-deep-rgb: 55, 65, 81;\n    --afb-purple: #6b7280;\n    --afb-purple-dark: #374151;\n    --afb-purple-light: #e5e7eb;\n    --afb-border: rgba(107, 114, 128, 0.12);\n    --afb-shadow: 0 18px 42px rgba(107, 114, 128, 0.10);\n  }\n\n  .afb-product-description-body[data-body-theme-key=\"exclusive\"] {\n    --afb-theme-rgb: 225, 29, 72;\n    --afb-theme-deep-rgb: 136, 19, 55;\n    --afb-purple: #e11d48;\n    --afb-purple-dark: #881337;\n    --afb-purple-light: #fecdd3;\n    --afb-border: rgba(225, 29, 72, 0.14);\n    --afb-shadow: 0 18px 42px rgba(225, 29, 72, 0.12);\n  }\n\n  .afb-product-description-body[data-body-theme-key=\"deluxe\"] {\n    --afb-theme-rgb: 37, 99, 235;\n    --afb-theme-deep-rgb: 30, 58, 138;\n    --afb-purple: #2563eb;\n    --afb-purple-dark: #1e3a8a;\n    --afb-purple-light: #bfdbfe;\n    --afb-border: rgba(37, 99, 235, 0.14);\n    --afb-shadow: 0 18px 42px rgba(37, 99, 235, 0.10);\n  }\n\n  .afb-product-description-body[data-body-theme-key=\"bonus\"] {\n    --afb-theme-rgb: 236, 72, 153;\n    --afb-theme-deep-rgb: 157, 23, 77;\n    --afb-purple: #ec4899;\n    --afb-purple-dark: #9d174d;\n    --afb-purple-light: #fbcfe8;\n    --afb-border: rgba(236, 72, 153, 0.14);\n    --afb-shadow: 0 18px 42px rgba(236, 72, 153, 0.10);\n  }\n\n  .afb-product-description-body[data-body-theme-key=\"definitive\"] {\n    --afb-theme-rgb: 251, 191, 36;\n    --afb-theme-deep-rgb: 146, 64, 14;\n    --afb-purple: #fbbf24;\n    --afb-purple-dark: #92400e;\n    --afb-purple-light: #fde68a;\n    --afb-border: rgba(251, 191, 36, 0.16);\n    --afb-shadow: 0 18px 42px rgba(251, 191, 36, 0.12);\n  }\n\n  .afb-product-description-body[data-body-theme-key=\"prestige\"] {\n    --afb-theme-rgb: 124, 58, 237;\n    --afb-theme-deep-rgb: 76, 29, 149;\n    --afb-purple: #7c3aed;\n    --afb-purple-dark: #4c1d95;\n    --afb-purple-light: #ddd6fe;\n    --afb-border: rgba(124, 58, 237, 0.14);\n    --afb-shadow: 0 18px 42px rgba(124, 58, 237, 0.12);\n  }\n\n  .afb-audio-controls {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    gap: 14px;\n    flex-wrap: wrap;\n    margin-bottom: 22px;\n    position: relative;\n    z-index: 100;\n  }\n\n  .afb-audio-btn {\n    min-height: 56px;\n    min-width: 220px;\n    padding: 0 22px;\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    gap: 11px;\n    border-radius: 999px;\n    border: 1px solid rgba(212, 181, 224, 0.38);\n    background: linear-gradient(135deg, #4a1f68 0%, #6d3291 48%, #2d1042 100%);\n    color: #fff;\n    cursor: pointer;\n    font-size: 15.5px;\n    font-weight: 950;\n    letter-spacing: -0.01em;\n    box-shadow:\n      0 16px 34px rgba(55, 23, 79, 0.24),\n      inset 0 1px 0 rgba(255,255,255,0.18);\n    transition: transform 0.22s ease, box-shadow 0.22s ease, filter 0.22s ease;\n  }\n\n  .afb-audio-btn:hover {\n    transform: translateY(-2px);\n    filter: brightness(1.04);\n    box-shadow:\n      0 20px 40px rgba(55, 23, 79, 0.30),\n      inset 0 1px 0 rgba(255,255,255,0.22);\n  }\n\n  .afb-audio-btn svg {\n    width: 21px;\n    height: 21px;\n    flex: 0 0 21px;\n  }\n\n  .afb-audio-pause-btn {\n    min-height: 36px;\n    min-width: 36px;\n    width: auto;\n    padding: 0 12px 0 11px;\n    border-radius: 999px;\n    border: 1px solid rgba(var(--afb-theme-rgb), 0.26);\n    background: linear-gradient(135deg, rgba(255,255,255,0.96), rgba(245,243,255,0.98));\n    color: var(--afb-purple-dark);\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    gap: 8px;\n    box-shadow:\n      0 10px 18px rgba(var(--afb-theme-rgb), 0.10),\n      inset 0 1px 0 rgba(255,255,255,0.92);\n    cursor: pointer;\n    transition: transform 0.22s ease, box-shadow 0.22s ease, opacity 0.22s ease, filter 0.22s ease;\n    flex: 0 0 auto;\n  }\n\n  .afb-audio-pause-btn:hover {\n    transform: translateY(-1px) scale(1.02);\n    box-shadow:\n      0 14px 24px rgba(var(--afb-theme-rgb), 0.16),\n      inset 0 1px 0 rgba(255,255,255,0.96);\n    filter: brightness(1.02);\n  }\n\n  .afb-audio-pause-btn[disabled] {\n    opacity: 0.42;\n    cursor: default;\n    transform: none;\n    box-shadow:\n      0 8px 16px rgba(var(--afb-theme-rgb), 0.06),\n      inset 0 1px 0 rgba(255,255,255,0.82);\n  }\n\n  .afb-audio-pause-btn svg {\n    width: 12px;\n    height: 12px;\n    display: block;\n  }\n\n  .afb-audio-pause-btn-icon {\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    width: 14px;\n    height: 14px;\n    flex: 0 0 14px;\n  }\n\n  .afb-audio-pause-btn-text {\n    font-size: 10.5px;\n    font-weight: 950;\n    letter-spacing: 0.08em;\n    text-transform: uppercase;\n    line-height: 1;\n    white-space: nowrap;\n  }\n\n  .afb-audio-pause-btn.is-paused {\n    background: linear-gradient(135deg, rgba(var(--afb-theme-rgb), 0.96), rgba(var(--afb-theme-deep-rgb), 0.92));\n    color: #ffffff;\n    border-color: rgba(var(--afb-theme-rgb), 0.46);\n    box-shadow:\n      0 10px 20px rgba(var(--afb-theme-rgb), 0.22),\n      inset 0 1px 0 rgba(255,255,255,0.18);\n  }\n\n  .afb-voice-select-wrap {\n    min-height: 56px;\n    min-width: 280px;\n    position: relative;\n    display: inline-flex;\n    z-index: 998;\n  }\n\n  .afb-voice-select-wrap \u003e select {\n    position: absolute !important;\n    opacity: 0 !important;\n    pointer-events: none !important;\n    width: 1px !important;\n    height: 1px !important;\n    overflow: hidden !important;\n  }\n\n  .afb-voice-btn {\n    min-height: 56px;\n    width: 100%;\n    min-width: 280px;\n    padding: 0 18px 0 20px;\n    border-radius: 999px;\n    border: 1px solid rgba(212, 181, 224, 0.62);\n    background: linear-gradient(135deg, rgba(255,255,255,0.98), rgba(250,247,255,0.98));\n    box-shadow:\n      0 8px 20px rgba(55, 23, 79, 0.08),\n      inset 0 1px 0 rgba(255,255,255,0.82);\n    color: var(--afb-text);\n    display: inline-flex;\n    align-items: center;\n    justify-content: space-between;\n    gap: 14px;\n    cursor: pointer;\n    transition: transform 0.22s ease, box-shadow 0.22s ease, border-color 0.22s ease;\n  }\n\n  .afb-voice-btn:hover {\n    transform: translateY(-2px);\n    border-color: rgba(55, 23, 79, 0.24);\n    box-shadow:\n      0 12px 26px rgba(55, 23, 79, 0.12),\n      inset 0 1px 0 rgba(255,255,255,0.85);\n  }\n\n  .afb-voice-btn::after {\n    content: '';\n    flex: 0 0 auto;\n    width: 9px;\n    height: 9px;\n    border-right: 2px solid var(--afb-text);\n    border-bottom: 2px solid var(--afb-text);\n    transform: translateY(-2px) rotate(45deg);\n    opacity: 0.75;\n    transition: transform 0.18s ease;\n  }\n\n  .afb-voice-select-wrap.is-open .afb-voice-btn::after {\n    transform: translateY(2px) rotate(-135deg);\n  }\n\n  .afb-voice-btn-copy {\n    min-width: 0;\n    display: flex;\n    align-items: center;\n    gap: 12px;\n  }\n\n  .afb-voice-btn-mark {\n    width: 30px;\n    height: 30px;\n    min-width: 30px;\n    border-radius: 999px;\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    background: linear-gradient(135deg, rgba(55, 23, 79, 0.14), rgba(212, 181, 224, 0.28));\n    box-shadow: inset 0 1px 0 rgba(255,255,255,0.72);\n    color: #37174f;\n    font-size: 15px;\n    line-height: 1;\n  }\n\n  .afb-voice-btn[data-voice=\"premium\"] .afb-voice-btn-mark {\n    background: linear-gradient(135deg, rgba(178, 120, 212, 0.16), rgba(230, 210, 244, 0.72));\n    color: #6d28d9;\n  }\n\n  .afb-voice-btn[data-voice=\"epic\"] .afb-voice-btn-mark {\n    background: linear-gradient(135deg, rgba(225, 29, 72, 0.12), rgba(251, 191, 36, 0.24));\n    color: #ea580c;\n  }\n\n  .afb-voice-btn[data-voice=\"classic\"] .afb-voice-btn-mark {\n    background: linear-gradient(135deg, rgba(59, 130, 246, 0.12), rgba(191, 219, 254, 0.5));\n    color: #2563eb;\n  }\n\n  .afb-voice-btn-label {\n    min-width: 0;\n    overflow: hidden;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n    font-size: 14.5px;\n    font-weight: 900;\n    letter-spacing: -0.1px;\n  }\n\n  .afb-voice-menu {\n    position: absolute;\n    top: calc(100% + 10px);\n    left: 0;\n    min-width: 100%;\n    width: 100%;\n    padding: 8px;\n    border-radius: 18px;\n    background: rgba(255,255,255,0.98);\n    border: 1px solid rgba(55, 23, 79, 0.12);\n    box-shadow:\n      0 22px 55px rgba(55, 23, 79, 0.18),\n      0 0 0 1px rgba(255,255,255,0.8) inset;\n    opacity: 0;\n    visibility: hidden;\n    transform: translateY(-6px) scale(0.98);\n    transform-origin: top center;\n    transition: opacity 0.18s ease, transform 0.18s ease, visibility 0.18s ease;\n    z-index: 9999;\n  }\n\n  .afb-voice-select-wrap.is-open .afb-voice-menu {\n    opacity: 1;\n    visibility: visible;\n    transform: translateY(0) scale(1);\n  }\n\n  .afb-voice-menu button {\n    width: 100%;\n    min-height: 52px;\n    display: flex;\n    align-items: center;\n    gap: 12px;\n    padding: 10px 12px;\n    border: none;\n    border-radius: 14px;\n    background: transparent;\n    color: #2a103d;\n    text-align: left;\n    cursor: pointer;\n    transition: background 0.18s ease, color 0.18s ease, transform 0.18s ease;\n  }\n\n  .afb-voice-menu button:hover,\n  .afb-voice-menu button.is-selected {\n    background: linear-gradient(135deg, rgba(55, 23, 79, 0.09), rgba(212, 181, 224, 0.14));\n    color: #37174f;\n    transform: translateX(2px);\n  }\n\n  .afb-voice-option-mark {\n    width: 32px;\n    height: 32px;\n    min-width: 32px;\n    border-radius: 999px;\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    position: relative;\n    box-shadow:\n      0 0 0 1px rgba(55, 23, 79, 0.08),\n      inset 0 1px 0 rgba(255,255,255,0.72);\n  }\n\n  .afb-voice-option-mark::before {\n    content: '';\n    width: 12px;\n    height: 12px;\n    border-radius: 999px;\n    display: block;\n  }\n\n  .afb-voice-option[data-value=\"premium\"] .afb-voice-option-mark {\n    background: linear-gradient(135deg, rgba(178, 120, 212, 0.16), rgba(230, 210, 244, 0.72));\n  }\n\n  .afb-voice-option[data-value=\"premium\"] .afb-voice-option-mark::before {\n    background: linear-gradient(135deg, #7c3aed, #c084fc);\n  }\n\n  .afb-voice-option[data-value=\"epic\"] .afb-voice-option-mark {\n    background: linear-gradient(135deg, rgba(225, 29, 72, 0.12), rgba(251, 191, 36, 0.24));\n  }\n\n  .afb-voice-option[data-value=\"epic\"] .afb-voice-option-mark::before {\n    background: linear-gradient(135deg, #f97316, #facc15);\n  }\n\n  .afb-voice-option[data-value=\"classic\"] .afb-voice-option-mark {\n    background: linear-gradient(135deg, rgba(59, 130, 246, 0.12), rgba(191, 219, 254, 0.5));\n  }\n\n  .afb-voice-option[data-value=\"classic\"] .afb-voice-option-mark::before {\n    background: linear-gradient(135deg, #2563eb, #60a5fa);\n  }\n\n  .afb-voice-option-copy {\n    min-width: 0;\n    display: flex;\n    flex-direction: column;\n    gap: 2px;\n  }\n\n  .afb-voice-option-title {\n    font-size: 13.5px;\n    font-weight: 900;\n    line-height: 1.15;\n  }\n\n  .afb-voice-option-desc {\n    font-size: 11.5px;\n    font-weight: 600;\n    line-height: 1.25;\n    color: rgba(55, 23, 79, 0.68);\n  }\n\n  .afb-native-select-hidden {\n    position: absolute !important;\n    opacity: 0 !important;\n    pointer-events: none !important;\n    width: 1px !important;\n    height: 1px !important;\n    overflow: hidden !important;\n  }\n\n  .afb-lang-select {\n    position: relative;\n    display: inline-flex;\n    z-index: 999;\n  }\n\n  .afb-lang-btn {\n    min-height: 56px;\n    min-width: 56px;\n    width: 56px;\n    padding: 0;\n    border-radius: 999px;\n    border: 1px solid rgba(212, 181, 224, 0.62);\n    background: linear-gradient(135deg, rgba(255,255,255,0.98), rgba(250,247,255,0.98));\n    color: var(--afb-text);\n    cursor: pointer;\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    box-shadow:\n      0 8px 20px rgba(55, 23, 79, 0.08),\n      inset 0 1px 0 rgba(255,255,255,0.82);\n    transition: transform 0.22s ease, box-shadow 0.22s ease, border-color 0.22s ease;\n  }\n\n  .afb-lang-btn:hover {\n    transform: translateY(-2px);\n    border-color: rgba(55, 23, 79, 0.24);\n    box-shadow:\n      0 12px 26px rgba(55, 23, 79, 0.12),\n      inset 0 1px 0 rgba(255,255,255,0.85);\n  }\n\n  .afb-lang-menu {\n    position: absolute;\n    top: calc(100% + 10px);\n    right: 0;\n    min-width: 235px;\n    padding: 8px;\n    border-radius: 18px;\n    background: rgba(255,255,255,0.98);\n    border: 1px solid rgba(55, 23, 79, 0.12);\n    box-shadow:\n      0 22px 55px rgba(55, 23, 79, 0.18),\n      0 0 0 1px rgba(255,255,255,0.8) inset;\n    opacity: 0;\n    visibility: hidden;\n    transform: translateY(-6px) scale(0.98);\n    transform-origin: top right;\n    transition: opacity 0.18s ease, transform 0.18s ease, visibility 0.18s ease;\n    z-index: 9999;\n  }\n\n  .afb-lang-select.is-open .afb-lang-menu {\n    opacity: 1;\n    visibility: visible;\n    transform: translateY(0) scale(1);\n  }\n\n  .afb-lang-menu button {\n    width: 100%;\n    min-height: 40px;\n    display: flex;\n    align-items: center;\n    gap: 9px;\n    padding: 10px 12px;\n    border: none;\n    border-radius: 12px;\n    background: transparent;\n    color: #2a103d;\n    font-size: 13px;\n    font-weight: 800;\n    text-align: left;\n    white-space: nowrap;\n    cursor: pointer;\n    transition: background 0.18s ease, color 0.18s ease, transform 0.18s ease;\n  }\n\n  .afb-lang-menu button:hover,\n  .afb-lang-menu button.is-selected {\n    background: linear-gradient(135deg, rgba(55, 23, 79, 0.09), rgba(212, 181, 224, 0.14));\n    color: #37174f;\n    transform: translateX(2px);\n  }\n\n  .afb-flag {\n    width: 24px;\n    height: 24px;\n    min-width: 24px;\n    min-height: 24px;\n    display: inline-block;\n    position: relative;\n    overflow: hidden;\n    border-radius: 999px;\n    box-shadow:\n      0 0 0 1px rgba(55, 23, 79, 0.12),\n      0 4px 10px rgba(55, 23, 79, 0.10);\n    vertical-align: middle;\n  }\n\n  .afb-flag::before,\n  .afb-flag::after {\n    content: '';\n    position: absolute;\n    display: block;\n  }\n\n  .afb-flag-br { background: #169b62; }\n  .afb-flag-br::before {\n    width: 14px;\n    height: 14px;\n    background: #ffdf00;\n    left: 5px;\n    top: 5px;\n    transform: rotate(45deg);\n    border-radius: 2px;\n  }\n  .afb-flag-br::after {\n    width: 8px;\n    height: 8px;\n    background: #002776;\n    left: 8px;\n    top: 8px;\n    border-radius: 999px;\n  }\n  .afb-flag-pt { background: linear-gradient(90deg, #006600 0 42%, #ff0000 42% 100%); }\n  .afb-flag-pt::after {\n    width: 7px;\n    height: 7px;\n    background: #ffcc00;\n    left: 8px;\n    top: 8px;\n    border-radius: 999px;\n  }\n  .afb-flag-us {\n    background: repeating-linear-gradient(to bottom, #b22234 0 2px, #ffffff 2px 4px);\n  }\n  .afb-flag-us::before {\n    width: 11px;\n    height: 9px;\n    background: #3c3b6e;\n    left: 0;\n    top: 0;\n    border-radius: 999px 0 2px 0;\n  }\n  .afb-flag-gb {\n    background:\n      linear-gradient(32deg, transparent 0 39%, #ffffff 39% 45%, #c8102e 45% 51%, #ffffff 51% 57%, transparent 57% 100%),\n      linear-gradient(148deg, transparent 0 39%, #ffffff 39% 45%, #c8102e 45% 51%, #ffffff 51% 57%, transparent 57% 100%),\n      linear-gradient(90deg, transparent 0 41%, #ffffff 41% 59%, transparent 59% 100%),\n      linear-gradient(0deg, transparent 0 41%, #ffffff 41% 59%, transparent 59% 100%),\n      linear-gradient(90deg, transparent 0 46%, #c8102e 46% 54%, transparent 54% 100%),\n      linear-gradient(0deg, transparent 0 46%, #c8102e 46% 54%, transparent 54% 100%),\n      #012169;\n  }\n  .afb-flag-latam {\n    background:\n      radial-gradient(circle at 34% 34%, #bbf7d0 0 17%, #22c55e 18% 30%, transparent 31%),\n      radial-gradient(circle at 68% 62%, #86efac 0 13%, #16a34a 14% 22%, transparent 23%),\n      linear-gradient(135deg, #0ea5e9 0%, #2563eb 100%);\n  }\n  .afb-flag-es { background: linear-gradient(to bottom, #c60b1e 0 26%, #ffc400 26% 74%, #c60b1e 74% 100%); }\n  .afb-flag-fr { background: linear-gradient(90deg, #0055a4 0 33.33%, #ffffff 33.33% 66.66%, #ef4135 66.66% 100%); }\n  .afb-flag-it { background: linear-gradient(90deg, #009246 0 33.33%, #ffffff 33.33% 66.66%, #ce2b37 66.66% 100%); }\n  .afb-flag-de { background: linear-gradient(to bottom, #000000 0 33.33%, #dd0000 33.33% 66.66%, #ffce00 66.66% 100%); }\n  .afb-flag-jp { background: #ffffff; }\n  .afb-flag-jp::after {\n    width: 10px;\n    height: 10px;\n    background: #bc002d;\n    border-radius: 999px;\n    left: 7px;\n    top: 7px;\n  }\n\n  .afb-visible-description {\n    margin-bottom: 22px;\n    padding: 28px 28px 24px;\n    border-radius: 26px;\n    background:\n      radial-gradient(circle at top center, rgba(212, 181, 224, 0.16), transparent 46%),\n      linear-gradient(135deg, rgba(255,255,255,0.98), rgba(252,249,255,0.98));\n    border: 1px solid var(--afb-border);\n    box-shadow: var(--afb-shadow);\n    overflow: hidden;\n    max-height: 2500px;\n    opacity: 1;\n    transform: translateY(0) scale(1);\n    filter: blur(0);\n    transition:\n      opacity 0.58s cubic-bezier(0.16, 1, 0.3, 1),\n      transform 0.58s cubic-bezier(0.16, 1, 0.3, 1),\n      filter 0.58s cubic-bezier(0.16, 1, 0.3, 1),\n      max-height 0.58s cubic-bezier(0.16, 1, 0.3, 1),\n      padding 0.58s cubic-bezier(0.16, 1, 0.3, 1),\n      margin 0.58s cubic-bezier(0.16, 1, 0.3, 1),\n      border 0.58s cubic-bezier(0.16, 1, 0.3, 1);\n  }\n\n  .afb-visible-description p {\n    margin: 0 0 14px;\n    color: var(--afb-soft-text);\n    font-size: 15px;\n    line-height: 1.78;\n    font-weight: 700;\n  }\n\n  .afb-visible-description p:first-child {\n    color: var(--afb-text);\n    font-size: 18px;\n    font-weight: 950;\n    letter-spacing: -0.02em;\n  }\n\n  .afb-visible-description p:last-child {\n    margin-bottom: 0;\n  }\n\n  .afb-product-description-body.is-reading .afb-visible-description,\n  .afb-product-description-body.is-loading .afb-visible-description {\n    opacity: 0;\n    transform: translateY(12px) scale(0.985);\n    filter: blur(12px);\n    max-height: 0;\n    padding-top: 0;\n    padding-bottom: 0;\n    margin-bottom: 0;\n    border-width: 0;\n    pointer-events: none;\n  }\n\n  .afb-product-quote {\n    position: relative;\n    overflow: hidden;\n    isolation: isolate;\n    margin: 0;\n    padding: 0 26px;\n    min-height: 0;\n    max-height: 0;\n    opacity: 0;\n    transform: translateY(18px) scale(0.985);\n    filter: blur(12px);\n    pointer-events: none;\n    border-radius: 24px;\n    background:\n      linear-gradient(90deg, rgba(219,203,229,0.82) 0%, rgba(249,246,252,0.98) 38%, rgba(249,246,252,0.98) 62%, rgba(219,203,229,0.82) 100%);\n    border: 0 solid rgba(183, 160, 196, 0.52);\n    box-shadow:\n      0 10px 28px rgba(55, 23, 79, 0.08),\n      inset 0 1px 0 rgba(255,255,255,0.84);\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    transition:\n      opacity 0.62s cubic-bezier(0.16, 1, 0.3, 1),\n      transform 0.62s cubic-bezier(0.16, 1, 0.3, 1),\n      filter 0.62s cubic-bezier(0.16, 1, 0.3, 1),\n      max-height 0.62s cubic-bezier(0.16, 1, 0.3, 1),\n      min-height 0.62s cubic-bezier(0.16, 1, 0.3, 1),\n      padding 0.62s cubic-bezier(0.16, 1, 0.3, 1),\n      margin 0.62s cubic-bezier(0.16, 1, 0.3, 1),\n      border-width 0.62s cubic-bezier(0.16, 1, 0.3, 1);\n  }\n\n  .afb-product-description-body.is-intro-visible .afb-product-quote {\n    margin-bottom: 18px;\n    padding: 24px 26px;\n    min-height: 110px;\n    max-height: 180px;\n    opacity: 1;\n    transform: translateY(0) scale(1);\n    filter: blur(0);\n    pointer-events: auto;\n    border-width: 1px;\n  }\n\n  .afb-product-quote::before,\n  .afb-product-quote::after {\n    content: '';\n    position: absolute;\n    top: 0;\n    bottom: 0;\n    width: 52%;\n    z-index: 5;\n    pointer-events: none;\n    background:\n      radial-gradient(circle at center, rgba(212, 181, 224, 0.28), transparent 46%),\n      linear-gradient(135deg, rgba(250,247,255,0.98), rgba(235,222,245,0.96));\n    box-shadow:\n      0 0 24px rgba(55,23,79,0.10),\n      inset 0 1px 0 rgba(255,255,255,0.82);\n    transition: transform 1.12s cubic-bezier(0.16, 1, 0.3, 1);\n  }\n\n  .afb-product-quote::before {\n    left: 0;\n    border-right: 1px solid rgba(55, 23, 79, 0.12);\n    transform: translateX(0);\n  }\n\n  .afb-product-quote::after {\n    right: 0;\n    border-left: 1px solid rgba(55, 23, 79, 0.12);\n    transform: translateX(0);\n  }\n\n  .afb-product-description-body.is-curtain-open .afb-product-quote::before {\n    transform: translateX(-101%);\n  }\n\n  .afb-product-description-body.is-curtain-open .afb-product-quote::after {\n    transform: translateX(101%);\n  }\n\n  .afb-quote-text {\n    position: relative;\n    z-index: 2;\n    display: flex;\n    flex-wrap: wrap;\n    justify-content: center;\n    gap: 0.35em;\n    max-width: 100%;\n    text-align: center;\n    color: var(--afb-text);\n    font-size: 21px;\n    line-height: 1.42;\n    font-weight: 950;\n    letter-spacing: -0.02em;\n  }\n\n  .afb-quote-word {\n    opacity: 0.08;\n    transform: translateY(14px) scale(0.96);\n    filter: blur(6px);\n    transition:\n      opacity 0.26s ease,\n      transform 0.38s cubic-bezier(0.16, 1, 0.3, 1),\n      filter 0.38s cubic-bezier(0.16, 1, 0.3, 1);\n  }\n\n  .afb-quote-word.is-visible {\n    opacity: 1;\n    transform: translateY(0) scale(1);\n    filter: blur(0);\n  }\n\n  .afb-stage-card {\n    position: relative;\n    overflow: hidden;\n    padding: 0 18px;\n    border-radius: 28px;\n    border: 0 solid var(--afb-border);\n    background:\n      radial-gradient(circle at top center, rgba(212,181,224,0.22), transparent 46%),\n      linear-gradient(135deg, rgba(255,255,255,0.98), rgba(249,246,252,0.98));\n    box-shadow: none;\n    min-height: 0;\n    max-height: 0;\n    opacity: 0;\n    transform: translateY(22px) scale(0.985);\n    filter: blur(12px);\n    pointer-events: none;\n    transition:\n      max-height 0.68s cubic-bezier(0.16, 1, 0.3, 1),\n      min-height 0.68s cubic-bezier(0.16, 1, 0.3, 1),\n      padding 0.68s cubic-bezier(0.16, 1, 0.3, 1),\n      opacity 0.58s cubic-bezier(0.16, 1, 0.3, 1),\n      transform 0.58s cubic-bezier(0.16, 1, 0.3, 1),\n      filter 0.58s cubic-bezier(0.16, 1, 0.3, 1),\n      border-width 0.58s cubic-bezier(0.16, 1, 0.3, 1),\n      box-shadow 0.58s cubic-bezier(0.16, 1, 0.3, 1);\n  }\n\n  .afb-product-description-body.is-narration-visible .afb-stage-card {\n    padding: 18px;\n    border-width: 1px;\n    box-shadow: var(--afb-shadow);\n    min-height: 290px;\n    max-height: 1400px;\n    opacity: 1;\n    transform: translateY(0) scale(1);\n    filter: blur(0);\n    pointer-events: auto;\n  }\n\n  .afb-stage-top {\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    gap: 14px;\n    margin-bottom: 14px;\n    transition:\n      opacity 0.46s cubic-bezier(0.16, 1, 0.3, 1),\n      transform 0.46s cubic-bezier(0.16, 1, 0.3, 1),\n      filter 0.46s cubic-bezier(0.16, 1, 0.3, 1);\n  }\n\n  .afb-stage-badge {\n    display: inline-flex;\n    align-items: center;\n    gap: 10px;\n    min-height: 40px;\n    padding: 0 16px;\n    border-radius: 999px;\n    color: var(--afb-text);\n    background: linear-gradient(135deg, rgba(55,23,79,0.07), rgba(212,181,224,0.22));\n    font-size: 14px;\n    font-weight: 950;\n    letter-spacing: -0.01em;\n    box-shadow:\n      inset 0 1px 0 rgba(255,255,255,0.86),\n      0 8px 18px rgba(55, 23, 79, 0.06);\n  }\n\n  .afb-stage-badge-dot {\n    width: 10px;\n    height: 10px;\n    border-radius: 50%;\n    background: #c5c5d4;\n    box-shadow: 0 0 0 0 rgba(109, 50, 145, 0);\n  }\n\n  .afb-product-description-body.is-narration-visible .afb-stage-badge-dot {\n    background: var(--afb-purple);\n    animation: afbBadgePulse 1.6s ease-in-out infinite;\n    box-shadow:\n      0 0 0 8px rgba(109, 50, 145, 0.10),\n      0 0 14px rgba(109, 50, 145, 0.28);\n  }\n\n  @keyframes afbBadgePulse {\n    0% {\n      transform: scale(1);\n      box-shadow:\n        0 0 0 0 rgba(109, 50, 145, 0.24),\n        0 0 12px rgba(109, 50, 145, 0.28);\n    }\n    50% {\n      transform: scale(1.12);\n      box-shadow:\n        0 0 0 8px rgba(109, 50, 145, 0.08),\n        0 0 18px rgba(109, 50, 145, 0.34);\n    }\n    100% {\n      transform: scale(1);\n      box-shadow:\n        0 0 0 0 rgba(109, 50, 145, 0.24),\n        0 0 12px rgba(109, 50, 145, 0.28);\n    }\n  }\n\n  .afb-stage-time {\n    color: rgba(55, 23, 79, 0.78);\n    font-size: 14px;\n    font-weight: 950;\n    letter-spacing: -0.01em;\n    white-space: nowrap;\n    font-variant-numeric: tabular-nums;\n  }\n\n  .afb-stage-top-meta {\n    display: inline-flex;\n    align-items: center;\n    justify-content: flex-end;\n    gap: 8px;\n    margin-left: auto;\n    flex: 0 0 auto;\n    padding: 5px 7px 5px 14px;\n    border-radius: 999px;\n    background: linear-gradient(135deg, rgba(255,255,255,0.96), rgba(247,244,255,0.98));\n    border: 1px solid rgba(167, 139, 250, 0.16);\n    box-shadow:\n      0 12px 24px rgba(55, 23, 79, 0.08),\n      inset 0 1px 0 rgba(255,255,255,0.88);\n  }\n\n  .afb-steps {\n    display: flex;\n    gap: 8px;\n    margin-bottom: 18px;\n    transition:\n      opacity 0.5s cubic-bezier(0.16, 1, 0.3, 1),\n      transform 0.5s cubic-bezier(0.16, 1, 0.3, 1),\n      filter 0.5s cubic-bezier(0.16, 1, 0.3, 1);\n  }\n\n  .afb-step {\n    flex: 1;\n    height: 6px;\n    border-radius: 999px;\n    background: rgba(55, 23, 79, 0.10);\n    overflow: hidden;\n    position: relative;\n    cursor: pointer;\n    transition: transform 0.24s ease, box-shadow 0.24s ease, background 0.24s ease;\n  }\n\n  .afb-step::before {\n    content: '';\n    position: absolute;\n    inset: 0;\n    transform: scaleX(0);\n    transform-origin: left center;\n    background: linear-gradient(90deg, #4a1f68, #8c4fba);\n    border-radius: inherit;\n    transition: transform 0.42s cubic-bezier(0.16, 1, 0.3, 1);\n  }\n\n  .afb-step.is-done::before,\n  .afb-step.is-active::before {\n    transform: scaleX(1);\n  }\n\n  .afb-step.is-active::before {\n    animation: afbStepGlow 1.2s linear infinite;\n  }\n\n  .afb-step.has-spotlight {\n    background: linear-gradient(90deg, rgba(124, 58, 237, 0.14), rgba(168, 85, 247, 0.12));\n    box-shadow:\n      inset 0 0 0 1px rgba(124, 58, 237, 0.10),\n      0 0 0 0 rgba(124, 58, 237, 0.18);\n  }\n\n  .afb-step.has-spotlight::after {\n    content: '';\n    position: absolute;\n    inset: -2px;\n    border-radius: inherit;\n    background: linear-gradient(90deg, rgba(124,58,237,0.18), rgba(217,70,239,0.12));\n    opacity: 0;\n    filter: blur(8px);\n    transition: opacity 0.22s ease;\n    pointer-events: none;\n  }\n\n  .afb-step.has-spotlight.is-active::before,\n  .afb-step.has-spotlight.is-done::before {\n    background: linear-gradient(90deg, #7c3aed, #a855f7, #d946ef);\n    box-shadow:\n      0 0 14px rgba(124, 58, 237, 0.30),\n      0 0 24px rgba(217, 70, 239, 0.18);\n  }\n\n  .afb-step.has-spotlight.is-active::after,\n  .afb-step.has-spotlight:hover::after {\n    opacity: 1;\n  }\n\n  @keyframes afbStepGlow {\n    0% { filter: brightness(1); }\n    50% { filter: brightness(1.22); }\n    100% { filter: brightness(1); }\n  }\n\n  .afb-narration-copy {\n    transform-origin: top center;\n    transition:\n      opacity 0.52s cubic-bezier(0.16, 1, 0.3, 1),\n      transform 0.52s cubic-bezier(0.16, 1, 0.3, 1),\n      filter 0.52s cubic-bezier(0.16, 1, 0.3, 1);\n  }\n\n  .afb-narration-spotlight {\n    --afb-spotlight-accent-rgb: 109,50,145;\n    --afb-spotlight-accent-solid: #6d3291;\n    --afb-spotlight-accent-deep: #4c1d95;\n    --afb-spotlight-bg-image: none;\n    display: grid;\n    grid-template-columns: 1fr;\n    gap: 10px;\n    align-items: stretch;\n    position: absolute;\n    right: 22px;\n    top: 82px;\n    z-index: 35;\n    width: min(520px, calc(100% - 44px));\n    margin: 0;\n    padding: 0;\n    border-radius: 0;\n    border: 0;\n    background: transparent;\n    box-shadow: none;\n    opacity: 0;\n    transform: translateY(28px) scale(0.92);\n    filter: blur(16px);\n    max-height: none;\n    overflow: hidden;\n    pointer-events: none;\n    transition:\n      opacity 0.9s cubic-bezier(0.16, 1, 0.3, 1),\n      transform 0.9s cubic-bezier(0.16, 1, 0.3, 1),\n      filter 0.9s cubic-bezier(0.16, 1, 0.3, 1);\n  }\n\n  .afb-narration-spotlight.is-visible {\n    opacity: 1;\n    transform: translateY(0) scale(1);\n    filter: blur(0);\n    pointer-events: auto;\n    overflow: visible;\n  }\n\n  .afb-narration-spotlight.is-exiting {\n    opacity: 0;\n    transform: translateY(-18px) scale(0.95);\n    filter: blur(14px);\n    pointer-events: none;\n  }\n\n  .afb-narration-spotlight-media {\n    position: relative;\n    overflow: hidden;\n    isolation: isolate;\n    border-radius: 26px;\n    padding: 14px;\n    background:\n      radial-gradient(circle at top left, rgba(var(--afb-spotlight-accent-rgb),0.18), transparent 48%),\n      linear-gradient(145deg, rgba(255,255,255,0.26), rgba(255,255,255,0.10));\n    border: 1px solid rgba(var(--afb-spotlight-accent-rgb),0.16);\n    box-shadow:\n      0 18px 34px rgba(var(--afb-spotlight-accent-rgb),0.10),\n      inset 0 1px 0 rgba(255,255,255,0.34);\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    transition: box-shadow 0.28s ease, border-color 0.28s ease, transform 0.28s ease, opacity 0.16s ease;\n  }\n\n  .afb-narration-spotlight-media::before {\n    content: '';\n    position: absolute;\n    inset: 0;\n    z-index: 0;\n    background-image: var(--afb-spotlight-bg-image);\n    background-size: cover;\n    background-position: center center;\n    transform: scale(1.18);\n    filter: blur(26px) saturate(1.16);\n    opacity: 0.72;\n    pointer-events: none;\n  }\n\n  .afb-narration-spotlight-media::after {\n    content: '';\n    position: absolute;\n    inset: 0;\n    z-index: 1;\n    background: linear-gradient(115deg, transparent 0%, rgba(255,255,255,0) 36%, rgba(255,255,255,0.36) 50%, rgba(255,255,255,0) 64%, transparent 100%);\n    transform: translateX(-130%);\n    animation: afbSpotlightSweep 3.8s ease-in-out infinite;\n    pointer-events: none;\n  }\n\n  .afb-narration-spotlight img {\n    position: relative;\n    z-index: 2;\n    width: auto;\n    max-width: 100%;\n    height: auto;\n    max-height: min(46vh, 380px);\n    object-fit: contain;\n    display: block;\n    background: rgba(255,255,255,0.02);\n    border-radius: 24px;\n    margin: 0 auto;\n    filter: none;\n    box-shadow:\n      0 16px 34px rgba(15, 23, 42, 0.14),\n      0 0 0 1px rgba(255,255,255,0.18);\n  }\n\n  .afb-narration-spotlight-media[data-fit=\"cover\"] {\n    padding: 14px;\n  }\n\n  .afb-narration-spotlight-media[data-fit=\"cover\"] img {\n    width: auto;\n    height: auto;\n    max-width: 100%;\n    max-height: min(46vh, 380px);\n    object-fit: contain;\n    object-position: center center;\n    border-radius: 24px;\n    margin: 0 auto;\n  }\n\n  .afb-narration-spotlight-media[data-fit=\"contain\"] {\n    padding: 14px;\n  }\n\n  .afb-narration-spotlight-media[data-fit=\"contain\"] img {\n    width: auto;\n    height: auto;\n    max-width: 100%;\n    max-height: min(46vh, 380px);\n    object-fit: contain;\n    border-radius: 24px;\n    margin: 0 auto;\n    filter: none;\n  }\n\n  .afb-narration-spotlight-copy {\n    padding: 12px 14px 13px;\n    border-radius: 18px;\n    background:\n      radial-gradient(circle at top left, rgba(224,231,255,0.34), transparent 52%),\n      linear-gradient(145deg, rgba(255,255,255,0.98), rgba(243,247,255,0.98));\n    border: 1px solid rgba(124, 58, 237, 0.10);\n    box-shadow:\n      0 10px 24px rgba(55,23,79,0.08),\n      0 0 0 1px rgba(255,255,255,0.72) inset;\n    transition: background 0.28s ease, border-color 0.28s ease, box-shadow 0.28s ease, color 0.28s ease, opacity 0.16s ease, transform 0.16s ease;\n  }\n\n  .afb-narration-spotlight.is-switching .afb-narration-spotlight-media,\n  .afb-narration-spotlight.is-switching .afb-narration-spotlight-copy {\n    opacity: 0;\n    transform: translateY(8px) scale(0.972);\n    filter: blur(12px) saturate(1.18);\n  }\n\n  .afb-narration-spotlight.is-switching .afb-narration-spotlight-media {\n    box-shadow:\n      0 22px 46px rgba(var(--afb-spotlight-accent-rgb),0.18),\n      0 0 0 1px rgba(var(--afb-spotlight-accent-rgb),0.18),\n      inset 0 1px 0 rgba(255,255,255,0.38);\n  }\n\n  .afb-narration-spotlight:not(.is-switching) .afb-narration-spotlight-media,\n  .afb-narration-spotlight:not(.is-switching) .afb-narration-spotlight-copy {\n    animation: afbSpotlightSlideReveal 0.46s cubic-bezier(0.16, 1, 0.3, 1);\n  }\n\n  @keyframes afbSpotlightSlideReveal {\n    0% {\n      opacity: 0;\n      transform: translateY(10px) scale(0.975);\n      filter: blur(14px) saturate(1.12);\n    }\n    58% {\n      opacity: 1;\n      filter: blur(2px) saturate(1.08);\n    }\n    100% {\n      opacity: 1;\n      transform: translateY(0) scale(1);\n      filter: blur(0) saturate(1);\n    }\n  }\n\n  .afb-narration-spotlight-kicker {\n    display: inline-flex;\n    align-items: center;\n    gap: 8px;\n    margin-bottom: 6px;\n    color: #334155;\n    font-size: 10.5px;\n    font-weight: 950;\n    letter-spacing: 0.08em;\n    text-transform: uppercase;\n  }\n\n  .afb-narration-spotlight-dot {\n    width: 9px;\n    height: 9px;\n    border-radius: 999px;\n    background: var(--afb-purple);\n    box-shadow: 0 0 0 7px rgba(109,50,145,0.10);\n    animation: afbNarrationSpotlightPulse 1.5s ease-in-out infinite;\n  }\n\n  .afb-narration-spotlight-caption {\n    margin: 0;\n    color: #4c3a74;\n    font-size: 15px;\n    line-height: 1.52;\n    font-weight: 850;\n  }\n\n  .afb-narration-spotlight-version-window {\n    display: none;\n    margin: 0 0 10px 0;\n    padding: 14px 15px 15px;\n    border-radius: 18px;\n    background:\n      radial-gradient(circle at top right, rgba(255,255,255,0.34), transparent 44%),\n      linear-gradient(145deg, rgba(247,244,255,0.98), rgba(255,255,255,0.99));\n    border: 1px solid rgba(124, 58, 237, 0.14);\n    box-shadow:\n      0 14px 26px rgba(55,23,79,0.08),\n      inset 0 1px 0 rgba(255,255,255,0.94);\n  }\n\n  .afb-narration-spotlight-version-label {\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    min-height: 26px;\n    padding: 0 11px;\n    margin-bottom: 10px;\n    border-radius: 999px;\n    background: rgba(255,255,255,0.72);\n    border: 1px solid rgba(124, 58, 237, 0.14);\n    color: #5b21b6;\n    font-size: 10.5px;\n    font-weight: 950;\n    letter-spacing: 0.08em;\n    text-transform: uppercase;\n  }\n\n  .afb-narration-spotlight-version-title {\n    margin: 0 0 6px 0;\n    color: #2e1065;\n    font-size: 20px;\n    line-height: 1.08;\n    font-weight: 1000;\n    letter-spacing: -0.03em;\n  }\n\n  .afb-narration-spotlight-version-subtitle {\n    margin: 0;\n    color: rgba(76, 29, 149, 0.76);\n    font-size: 12.5px;\n    line-height: 1.5;\n    font-weight: 820;\n  }\n\n  @keyframes afbSpotlightSweep {\n    0%, 62%, 100% { transform: translateX(-130%); opacity: 0; }\n    70% { opacity: .75; }\n    92% { transform: translateX(130%); opacity: .08; }\n  }\n\n  @keyframes afbNarrationSpotlightPulse {\n    0%, 100% {\n      transform: scale(0.95);\n      box-shadow:\n        0 0 0 0 rgba(109,50,145,0.24),\n        0 0 0 7px rgba(109,50,145,0.08);\n    }\n    50% {\n      transform: scale(1.18);\n      box-shadow:\n        0 0 0 8px rgba(109,50,145,0),\n        0 0 0 11px rgba(109,50,145,0.04);\n    }\n  }\n\n  .afb-narration-spotlight.is-deluxe {\n    --afb-spotlight-accent-rgb: 37,99,235;\n    --afb-spotlight-accent-solid: #2563eb;\n    --afb-spotlight-accent-deep: #1e3a8a;\n    background: transparent;\n  }\n\n  .afb-narration-spotlight.is-deluxe .afb-narration-spotlight-media {\n    box-shadow:\n      0 0 0 1px rgba(37,99,235,0.20),\n      0 16px 30px rgba(37,99,235,0.10);\n  }\n\n  .afb-narration-spotlight.is-deluxe .afb-narration-spotlight-copy {\n    background:\n      radial-gradient(circle at top left, rgba(191,219,254,0.34), transparent 52%),\n      linear-gradient(145deg, rgba(255,255,255,0.99), rgba(239,246,255,0.98));\n    border-color: rgba(37,99,235,0.20);\n    box-shadow:\n      0 12px 28px rgba(37,99,235,0.10),\n      0 0 0 1px rgba(255,255,255,0.76) inset;\n  }\n\n  .afb-narration-spotlight.is-deluxe .afb-narration-spotlight-dot {\n    background: #2563eb;\n    box-shadow: 0 0 0 7px rgba(37,99,235,0.12);\n  }\n\n  .afb-narration-spotlight.is-deluxe .afb-narration-spotlight-kicker {\n    color: #1e3a8a;\n  }\n\n  .afb-narration-spotlight.is-deluxe .afb-narration-spotlight-caption {\n    color: #1e3a8a;\n  }\n\n  .afb-narration-spotlight.is-exclusive {\n    --afb-spotlight-accent-rgb: 225,29,72;\n    --afb-spotlight-accent-solid: #e11d48;\n    --afb-spotlight-accent-deep: #881337;\n    background: transparent;\n  }\n\n  .afb-narration-spotlight.is-exclusive .afb-narration-spotlight-media {\n    box-shadow:\n      0 0 0 1px rgba(225,29,72,0.20),\n      0 16px 30px rgba(225,29,72,0.10);\n  }\n\n  .afb-narration-spotlight.is-exclusive .afb-narration-spotlight-copy {\n    background:\n      radial-gradient(circle at top left, rgba(254,205,211,0.36), transparent 52%),\n      linear-gradient(145deg, rgba(255,255,255,0.99), rgba(255,241,242,0.98));\n    border-color: rgba(225,29,72,0.18);\n    box-shadow:\n      0 12px 28px rgba(225,29,72,0.10),\n      0 0 0 1px rgba(255,255,255,0.76) inset;\n  }\n\n  .afb-narration-spotlight.is-exclusive .afb-narration-spotlight-dot {\n    background: #e11d48;\n    box-shadow: 0 0 0 7px rgba(225,29,72,0.12);\n  }\n\n  .afb-narration-spotlight.is-exclusive .afb-narration-spotlight-kicker {\n    color: #9f1239;\n  }\n\n  .afb-narration-spotlight.is-exclusive .afb-narration-spotlight-caption {\n    color: #881337;\n  }\n\n  .afb-narration-spotlight.is-bonus {\n    --afb-spotlight-accent-rgb: 236,72,153;\n    --afb-spotlight-accent-solid: #ec4899;\n    --afb-spotlight-accent-deep: #9d174d;\n    background: transparent;\n  }\n\n  .afb-narration-spotlight.is-bonus .afb-narration-spotlight-media {\n    box-shadow:\n      0 0 0 1px rgba(236,72,153,0.20),\n      0 16px 30px rgba(236,72,153,0.12);\n  }\n\n  .afb-narration-spotlight.is-bonus .afb-narration-spotlight-copy {\n    background:\n      radial-gradient(circle at top left, rgba(251,207,232,0.40), transparent 52%),\n      linear-gradient(145deg, rgba(255,255,255,0.99), rgba(253,242,248,0.98));\n    border-color: rgba(236,72,153,0.20);\n    box-shadow:\n      0 12px 28px rgba(236,72,153,0.10),\n      0 0 0 1px rgba(255,255,255,0.76) inset;\n  }\n\n  .afb-narration-spotlight.is-bonus .afb-narration-spotlight-dot {\n    background: #ec4899;\n    box-shadow: 0 0 0 7px rgba(236,72,153,0.14);\n  }\n\n  .afb-narration-spotlight.is-bonus .afb-narration-spotlight-kicker {\n    color: #be185d;\n  }\n\n  .afb-narration-spotlight.is-bonus .afb-narration-spotlight-caption {\n    color: #9d174d;\n  }\n\n  .afb-narration-spotlight.is-prestige {\n    --afb-spotlight-accent-rgb: 124,58,237;\n    --afb-spotlight-accent-solid: #7c3aed;\n    --afb-spotlight-accent-deep: #4c1d95;\n    background: transparent;\n  }\n\n  .afb-narration-spotlight.is-prestige .afb-narration-spotlight-media {\n    box-shadow:\n      0 0 0 1px rgba(124,58,237,0.18),\n      0 16px 30px rgba(109,40,217,0.11);\n  }\n\n  .afb-narration-spotlight.is-prestige .afb-narration-spotlight-copy {\n    background:\n      radial-gradient(circle at top left, rgba(233,213,255,0.42), transparent 52%),\n      linear-gradient(145deg, rgba(255,255,255,0.99), rgba(250,245,255,0.98));\n    border-color: rgba(124,58,237,0.22);\n    box-shadow:\n      0 12px 28px rgba(109,40,217,0.10),\n      0 0 0 1px rgba(255,255,255,0.76) inset;\n  }\n\n  .afb-narration-spotlight.is-prestige .afb-narration-spotlight-dot {\n    background: #7c3aed;\n    box-shadow: 0 0 0 7px rgba(124,58,237,0.12);\n  }\n\n  .afb-narration-spotlight.is-prestige .afb-narration-spotlight-kicker {\n    color: #6d28d9;\n  }\n\n  .afb-narration-spotlight.is-prestige .afb-narration-spotlight-caption {\n    color: #4c1d95;\n  }\n\n  .afb-narration-spotlight.is-version-showcase .afb-narration-spotlight-version-window {\n    display: block;\n  }\n\n  .afb-narration-spotlight.is-version-showcase .afb-narration-spotlight-copy {\n    padding: 14px 15px 16px;\n  }\n\n  .afb-narration-spotlight.is-version-showcase .afb-narration-spotlight-caption {\n    font-size: 14px;\n    line-height: 1.55;\n  }\n\n  .afb-narration-spotlight.is-version-showcase .afb-narration-spotlight-media {\n    transform: translateY(-1px);\n  }\n\n  .afb-narration-spotlight:not(.is-version-showcase) .afb-narration-spotlight-copy {\n    padding: 9px 11px 10px;\n  }\n\n  .afb-narration-spotlight:not(.is-version-showcase) .afb-narration-spotlight-kicker {\n    margin-bottom: 4px;\n    font-size: 10px;\n  }\n\n  .afb-narration-spotlight:not(.is-version-showcase) .afb-narration-spotlight-caption {\n    font-size: 13.5px;\n    line-height: 1.4;\n  }\n\n  .afb-narration-spotlight.is-version-showcase {\n    width: min(500px, calc(100% - 44px));\n  }\n\n  .afb-narration-spotlight.is-deluxe.is-version-showcase .afb-narration-spotlight-version-window {\n    background:\n      radial-gradient(circle at top right, rgba(191,219,254,0.42), transparent 44%),\n      linear-gradient(145deg, rgba(239,246,255,0.98), rgba(255,255,255,0.99));\n    border-color: rgba(37,99,235,0.22);\n    box-shadow:\n      0 16px 28px rgba(37,99,235,0.12),\n      inset 0 1px 0 rgba(255,255,255,0.94);\n  }\n\n  .afb-narration-spotlight.is-deluxe.is-version-showcase .afb-narration-spotlight-version-label {\n    color: #1d4ed8;\n    border-color: rgba(37,99,235,0.18);\n  }\n\n  .afb-narration-spotlight.is-deluxe.is-version-showcase .afb-narration-spotlight-version-title {\n    color: #1e3a8a;\n  }\n\n  .afb-narration-spotlight.is-deluxe.is-version-showcase .afb-narration-spotlight-version-subtitle {\n    color: rgba(30,58,138,0.76);\n  }\n\n  .afb-narration-spotlight.is-bonus.is-version-showcase .afb-narration-spotlight-version-window {\n    background:\n      radial-gradient(circle at top right, rgba(251,207,232,0.44), transparent 44%),\n      linear-gradient(145deg, rgba(253,242,248,0.98), rgba(255,255,255,0.99));\n    border-color: rgba(236,72,153,0.22);\n    box-shadow:\n      0 16px 28px rgba(236,72,153,0.12),\n      inset 0 1px 0 rgba(255,255,255,0.94);\n  }\n\n  .afb-narration-spotlight.is-bonus.is-version-showcase .afb-narration-spotlight-version-label {\n    color: #db2777;\n    border-color: rgba(236,72,153,0.20);\n  }\n\n  .afb-narration-spotlight.is-bonus.is-version-showcase .afb-narration-spotlight-version-title {\n    color: #9d174d;\n  }\n\n  .afb-narration-spotlight.is-bonus.is-version-showcase .afb-narration-spotlight-version-subtitle {\n    color: rgba(157,23,77,0.78);\n  }\n\n  .afb-narration-spotlight.is-exclusive.is-version-showcase .afb-narration-spotlight-version-window {\n    background:\n      radial-gradient(circle at top right, rgba(254,205,211,0.44), transparent 44%),\n      linear-gradient(145deg, rgba(255,241,242,0.98), rgba(255,255,255,0.99));\n    border-color: rgba(225,29,72,0.20);\n    box-shadow:\n      0 16px 28px rgba(225,29,72,0.12),\n      inset 0 1px 0 rgba(255,255,255,0.94);\n  }\n\n  .afb-narration-spotlight.is-exclusive.is-version-showcase .afb-narration-spotlight-version-label {\n    color: #be123c;\n    border-color: rgba(225,29,72,0.18);\n  }\n\n  .afb-narration-spotlight.is-exclusive.is-version-showcase .afb-narration-spotlight-version-title {\n    color: #881337;\n  }\n\n  .afb-narration-spotlight.is-exclusive.is-version-showcase .afb-narration-spotlight-version-subtitle {\n    color: rgba(136,19,55,0.78);\n  }\n\n  .afb-narration-spotlight.is-prestige.is-version-showcase .afb-narration-spotlight-version-window {\n    background:\n      radial-gradient(circle at top right, rgba(233,213,255,0.46), transparent 44%),\n      linear-gradient(145deg, rgba(250,245,255,0.99), rgba(255,255,255,0.99));\n    border-color: rgba(124,58,237,0.22);\n    box-shadow:\n      0 16px 28px rgba(124,58,237,0.12),\n      inset 0 1px 0 rgba(255,255,255,0.94);\n  }\n\n  .afb-narration-spotlight.is-prestige.is-version-showcase .afb-narration-spotlight-version-label {\n    color: #6d28d9;\n    border-color: rgba(124,58,237,0.18);\n  }\n\n  .afb-narration-spotlight.is-prestige.is-version-showcase .afb-narration-spotlight-version-title {\n    color: #4c1d95;\n  }\n\n  .afb-narration-spotlight.is-prestige.is-version-showcase .afb-narration-spotlight-version-subtitle {\n    color: rgba(76,29,149,0.78);\n  }\n\n  .afb-merchant-detail-hotspots {\n    width: min(100%, 460px);\n    margin: 0 auto 12px;\n    display: grid;\n    grid-template-columns: repeat(auto-fit, minmax(118px, 1fr));\n    gap: 10px;\n    z-index: 8;\n    pointer-events: auto;\n  }\n\n  .afb-merchant-detail-hotspot {\n    appearance: none;\n    -webkit-appearance: none;\n    position: relative;\n    min-height: 68px;\n    width: 100%;\n    display: flex;\n    align-items: center;\n    gap: 9px;\n    padding: 9px 10px;\n    border: 1px solid rgba(225,29,72,0.18);\n    border-radius: 16px;\n    background:\n      radial-gradient(circle at top left, rgba(225,29,72,0.12), transparent 44%),\n      linear-gradient(135deg, rgba(255,255,255,0.98), rgba(255,247,249,0.96));\n    box-shadow:\n      0 10px 24px rgba(55,23,79,0.08),\n      0 0 0 0 rgba(225,29,72,0.12);\n    cursor: pointer;\n    transform: translateY(0) scale(1);\n    animation: afbHotspotPulse 1.65s ease-in-out infinite;\n    transition: transform 0.2s ease, filter 0.2s ease, border-color 0.2s ease, box-shadow 0.2s ease;\n  }\n\n  .afb-merchant-detail-hotspot::before {\n    content: '';\n    width: 11px;\n    height: 11px;\n    min-width: 11px;\n    border-radius: 999px;\n    background: #e11d48;\n    box-shadow: 0 0 0 7px rgba(225,29,72,0.10);\n  }\n\n  .afb-merchant-detail-hotspot::after {\n    content: none;\n  }\n\n  .afb-merchant-detail-hotspot-copy {\n    min-width: 0;\n    display: flex;\n    flex-direction: column;\n    gap: 2px;\n    text-align: left;\n  }\n\n  .afb-merchant-detail-hotspot-title {\n    color: var(--afb-text);\n    font-size: 11px;\n    font-weight: 950;\n    letter-spacing: 0.04em;\n    text-transform: uppercase;\n    line-height: 1.15;\n  }\n\n  .afb-merchant-detail-hotspot-caption {\n    color: rgba(55, 23, 79, 0.58);\n    font-size: 10.5px;\n    font-weight: 800;\n    line-height: 1.25;\n    overflow: hidden;\n    display: -webkit-box;\n    -webkit-line-clamp: 2;\n    -webkit-box-orient: vertical;\n  }\n\n  .afb-merchant-detail-hotspot:hover {\n    transform: translateY(-2px) scale(1.02);\n    filter: brightness(1.06);\n    border-color: rgba(225,29,72,0.42);\n    box-shadow: 0 14px 30px rgba(159,16,32,0.14);\n  }\n\n  @keyframes afbHotspotPulse {\n    0%, 100% {\n      box-shadow:\n        0 10px 24px rgba(55,23,79,0.08),\n        0 0 0 0 rgba(225,29,72,0.13);\n    }\n    55% {\n      box-shadow:\n        0 14px 30px rgba(159,16,32,0.13),\n        0 0 0 8px rgba(225,29,72,0);\n    }\n  }\n\n  .afb-detail-overlay {\n    position: fixed;\n    inset: 0;\n    z-index: 1000000;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    padding: 18px;\n    background: rgba(15, 8, 24, 0.72);\n    backdrop-filter: blur(10px);\n    opacity: 0;\n    visibility: hidden;\n    pointer-events: none;\n    transition: opacity 0.28s ease, visibility 0.28s ease;\n  }\n\n  .afb-detail-overlay.is-open {\n    opacity: 1;\n    visibility: visible;\n    pointer-events: auto;\n  }\n\n  .afb-detail-overlay-card {\n    position: relative;\n    width: min(100%, 520px);\n    max-height: min(86vh, 720px);\n    overflow: hidden;\n    border-radius: 28px;\n    background:\n      radial-gradient(circle at top left, rgba(212,181,224,0.28), transparent 42%),\n      linear-gradient(135deg, #ffffff, #fbf7ff);\n    border: 1px solid rgba(212,181,224,0.42);\n    box-shadow: 0 30px 80px rgba(0,0,0,0.32);\n    transform: translateY(18px) scale(0.96);\n    transition: transform 0.34s cubic-bezier(0.16, 1, 0.3, 1);\n  }\n\n  .afb-detail-overlay.is-open .afb-detail-overlay-card {\n    transform: translateY(0) scale(1);\n  }\n\n  .afb-detail-overlay-close {\n    position: absolute;\n    top: 12px;\n    right: 12px;\n    z-index: 3;\n    width: 38px;\n    height: 38px;\n    border: 0;\n    border-radius: 999px;\n    background: rgba(255,255,255,0.92);\n    color: var(--afb-text);\n    font-size: 24px;\n    line-height: 1;\n    cursor: pointer;\n    box-shadow: 0 8px 20px rgba(55,23,79,0.14);\n  }\n\n  .afb-detail-overlay-image {\n    display: block;\n    width: 100%;\n    max-height: 520px;\n    object-fit: contain;\n    background: #13091d;\n  }\n\n  .afb-detail-overlay-copy {\n    padding: 18px 20px 22px;\n  }\n\n  .afb-detail-overlay-kicker {\n    display: inline-flex;\n    align-items: center;\n    gap: 8px;\n    margin-bottom: 8px;\n    color: #9f1020;\n    font-size: 11px;\n    font-weight: 950;\n    letter-spacing: 0.08em;\n    text-transform: uppercase;\n  }\n\n  .afb-detail-overlay-caption {\n    margin: 0;\n    color: var(--afb-text);\n    font-size: 15px;\n    line-height: 1.62;\n    font-weight: 850;\n  }\n\n  .afb-narration-copy p {\n    margin: 0 0 18px;\n    color: rgba(55, 23, 79, 0.42);\n    font-size: 16px;\n    line-height: 1.72;\n    font-weight: 700;\n    position: relative;\n    cursor: pointer;\n    transition:\n      opacity 0.38s cubic-bezier(0.16, 1, 0.3, 1),\n      transform 0.38s cubic-bezier(0.16, 1, 0.3, 1),\n      filter 0.38s cubic-bezier(0.16, 1, 0.3, 1),\n      color 0.38s ease,\n      background 0.38s ease,\n      box-shadow 0.38s ease,\n      padding 0.38s ease;\n  }\n\n  .afb-narration-copy p:last-child {\n    margin-bottom: 0;\n  }\n\n  .afb-narration-copy p.has-spotlight::before {\n    content: '';\n    position: absolute;\n    left: -8px;\n    top: 50%;\n    width: 6px;\n    height: calc(100% - 14px);\n    min-height: 24px;\n    border-radius: 999px;\n    transform: translateY(-50%);\n    background: linear-gradient(180deg, rgba(124,58,237,0.76), rgba(217,70,239,0.82));\n    box-shadow:\n      0 0 0 0 rgba(124,58,237,0.24),\n      0 0 18px rgba(124,58,237,0.22);\n    opacity: 0.74;\n    animation: afbInteractiveRailPulse 1.8s ease-in-out infinite;\n  }\n\n  .afb-narration-copy p.is-active {\n    color: var(--afb-text);\n    opacity: 1;\n    transform: translateY(0) scale(1);\n    filter: blur(0);\n    padding: 12px 16px;\n    border-radius: 16px;\n    background: linear-gradient(90deg, rgba(224,213,232,0.74), rgba(251,249,252,0.98));\n    box-shadow:\n      inset 3px 0 0 0 var(--afb-purple-dark),\n      0 8px 20px rgba(55, 23, 79, 0.06);\n  }\n\n  .afb-narration-copy p.has-spotlight.is-active {\n    background: linear-gradient(90deg, rgba(233,213,255,0.92), rgba(255,255,255,0.98));\n    box-shadow:\n      inset 4px 0 0 0 #7c3aed,\n      0 12px 24px rgba(124,58,237,0.14),\n      0 0 0 1px rgba(196,181,253,0.22);\n  }\n\n  .afb-narration-copy p.is-past {\n    opacity: 0.24;\n    transform: translateY(-4px);\n    filter: blur(1px);\n  }\n\n  .afb-narration-copy p.is-future {\n    opacity: 0.38;\n    transform: translateY(0);\n    filter: blur(0);\n  }\n\n  @keyframes afbInteractiveRailPulse {\n    0%, 100% {\n      box-shadow:\n        0 0 0 0 rgba(124,58,237,0.18),\n        0 0 14px rgba(124,58,237,0.16);\n      filter: brightness(1);\n    }\n    50% {\n      box-shadow:\n        0 0 0 8px rgba(124,58,237,0),\n        0 0 24px rgba(217,70,239,0.24);\n      filter: brightness(1.06);\n    }\n  }\n\n  .afb-activation-badge {\n    position: absolute;\n    left: 50%;\n    top: 50%;\n    z-index: 20;\n    min-height: 58px;\n    min-width: min(86%, 380px);\n    padding: 0 26px;\n    border-radius: 999px;\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    gap: 12px;\n    color: rgba(55, 23, 79, 0.54);\n    background:\n      linear-gradient(135deg, rgba(255,255,255,0.96), rgba(244,241,247,0.94));\n    border: 1px solid rgba(55, 23, 79, 0.10);\n    box-shadow:\n      0 18px 42px rgba(55, 23, 79, 0.08),\n      inset 0 1px 0 rgba(255,255,255,0.92);\n    opacity: 0;\n    pointer-events: none;\n    transform: translate(-50%, -50%) scale(0.84);\n    filter: blur(14px);\n    overflow: hidden;\n    transition:\n      opacity 0.62s cubic-bezier(0.16, 1, 0.3, 1),\n      transform 0.78s cubic-bezier(0.16, 1, 0.3, 1),\n      filter 0.78s cubic-bezier(0.16, 1, 0.3, 1),\n      color 0.52s ease,\n      background 0.52s ease,\n      box-shadow 0.52s ease,\n      border-color 0.52s ease;\n  }\n\n  .afb-activation-badge::before {\n    content: '';\n    position: absolute;\n    inset: 0;\n    background:\n      linear-gradient(115deg,\n        transparent 0%,\n        rgba(255,255,255,0) 34%,\n        rgba(255,255,255,0.62) 48%,\n        rgba(255,255,255,0) 62%,\n        transparent 100%);\n    transform: translateX(-135%);\n    opacity: 0;\n    pointer-events: none;\n  }\n\n  .afb-activation-orbit {\n    position: absolute;\n    inset: 7px;\n    border-radius: 999px;\n    border: 1px solid rgba(109, 50, 145, 0.08);\n    opacity: 0;\n    transform: scale(0.9);\n    pointer-events: none;\n  }\n\n  .afb-activation-dot {\n    position: relative;\n    z-index: 2;\n    width: 12px;\n    height: 12px;\n    min-width: 12px;\n    min-height: 12px;\n    border-radius: 999px;\n    background: #b8b8c4;\n    box-shadow:\n      0 0 0 0 rgba(109, 50, 145, 0),\n      0 0 0 rgba(109, 50, 145, 0);\n    transition:\n      background 0.42s ease,\n      box-shadow 0.42s ease,\n      transform 0.42s ease;\n  }\n\n  .afb-activation-text {\n    position: relative;\n    z-index: 2;\n    font-size: clamp(15px, 2.1vw, 18px);\n    font-weight: 950;\n    letter-spacing: -0.025em;\n    white-space: nowrap;\n  }\n\n  .afb-product-description-body.is-preparing-experience .afb-stage-card {\n    padding: 18px;\n    border-width: 1px;\n    box-shadow: var(--afb-shadow);\n    min-height: 270px;\n    max-height: 620px;\n    opacity: 1;\n    transform: translateY(0) scale(1);\n    filter: blur(0);\n    pointer-events: auto;\n  }\n\n  .afb-product-description-body.is-preparing-experience .afb-stage-top,\n  .afb-product-description-body.is-preparing-experience .afb-steps,\n  .afb-product-description-body.is-preparing-experience .afb-narration-copy,\n  .afb-product-description-body.is-preparing-experience .afb-merchant-panel {\n    opacity: 0;\n    pointer-events: none;\n    transform: translateY(8px) scale(0.98);\n    filter: blur(10px);\n  }\n\n  .afb-product-description-body.is-activation-visible .afb-activation-badge {\n    opacity: 1;\n    transform: translate(-50%, -50%) scale(1);\n    filter: blur(0);\n  }\n\n  .afb-product-description-body.is-activation-lit .afb-activation-badge {\n    color: var(--afb-text);\n    background:\n      radial-gradient(circle at top right, rgba(212,181,224,0.32), transparent 38%),\n      linear-gradient(135deg, rgba(255,255,255,0.98), rgba(249,246,252,0.98));\n    border-color: rgba(109, 50, 145, 0.20);\n    box-shadow:\n      0 22px 52px rgba(55, 23, 79, 0.16),\n      0 0 0 8px rgba(109, 50, 145, 0.045),\n      inset 0 1px 0 rgba(255,255,255,0.94);\n    animation: afbActivationBreath 1.55s ease-in-out infinite;\n  }\n\n  .afb-product-description-body.is-activation-lit .afb-activation-badge::before {\n    animation: afbActivationShine 1.85s ease-in-out infinite;\n  }\n\n  .afb-product-description-body.is-activation-lit .afb-activation-orbit {\n    opacity: 1;\n    animation: afbActivationOrbit 1.8s ease-in-out infinite;\n  }\n\n  .afb-product-description-body.is-activation-lit .afb-activation-dot {\n    background: var(--afb-purple);\n    transform: scale(1.12);\n    box-shadow:\n      0 0 0 8px rgba(109, 50, 145, 0.10),\n      0 0 18px rgba(109, 50, 145, 0.38);\n    animation: afbActivationDotPulse 1.2s ease-in-out infinite;\n  }\n\n  .afb-product-description-body.is-activation-docking .afb-activation-badge {\n    top: 50% !important;\n    left: 50% !important;\n    min-height: 58px !important;\n    min-width: min(86%, 380px) !important;\n    padding: 0 26px !important;\n    color: var(--afb-text) !important;\n    transform: translate(-50%, -50%) scale(1) !important;\n    opacity: 1 !important;\n    filter: blur(0) !important;\n    animation: afbActivationCurtainHandoff 0.76s cubic-bezier(0.16, 1, 0.3, 1) both !important;\n    box-shadow:\n      0 22px 52px rgba(55, 23, 79, 0.14),\n      0 0 0 8px rgba(109, 50, 145, 0.045),\n      inset 0 1px 0 rgba(255,255,255,0.94) !important;\n  }\n\n  .afb-product-description-body.is-activation-docking .afb-activation-text {\n    font-size: clamp(15px, 2.1vw, 18px) !important;\n    opacity: 1;\n    animation: afbActivationTextHandoff 0.62s cubic-bezier(0.16, 1, 0.3, 1) both;\n  }\n\n  .afb-product-description-body.is-activation-docking .afb-activation-dot {\n    width: 12px !important;\n    height: 12px !important;\n    min-width: 12px !important;\n    min-height: 12px !important;\n    background: var(--afb-purple) !important;\n    animation: afbActivationDotHandoff 0.62s cubic-bezier(0.16, 1, 0.3, 1) both !important;\n  }\n\n  .afb-product-description-body.is-activation-docking .afb-activation-orbit {\n    animation: afbActivationOrbitHandoff 0.62s cubic-bezier(0.16, 1, 0.3, 1) both !important;\n  }\n\n  .afb-product-description-body.is-activation-docking .afb-activation-badge::before {\n    animation: none !important;\n    opacity: 0 !important;\n  }\n\n  @keyframes afbActivationBreath {\n    0%, 100% { transform: translate(-50%, -50%) scale(1); }\n    50% { transform: translate(-50%, -50%) scale(1.025); }\n  }\n\n  @keyframes afbActivationShine {\n    0%, 58%, 100% {\n      transform: translateX(-135%);\n      opacity: 0;\n    }\n    64% { opacity: 0.95; }\n    88% {\n      transform: translateX(135%);\n      opacity: 0.10;\n    }\n  }\n\n  @keyframes afbActivationOrbit {\n    0%, 100% {\n      transform: scale(0.92);\n      opacity: 0.35;\n    }\n    50% {\n      transform: scale(1);\n      opacity: 0.85;\n    }\n  }\n\n  @keyframes afbActivationDotPulse {\n    0% {\n      box-shadow:\n        0 0 0 0 rgba(109, 50, 145, 0.24),\n        0 0 14px rgba(109, 50, 145, 0.34);\n    }\n    60% {\n      box-shadow:\n        0 0 0 10px rgba(109, 50, 145, 0),\n        0 0 20px rgba(109, 50, 145, 0.42);\n    }\n    100% {\n      box-shadow:\n        0 0 0 0 rgba(109, 50, 145, 0),\n        0 0 14px rgba(109, 50, 145, 0.28);\n    }\n  }\n\n  @keyframes afbActivationCurtainHandoff {\n    0% {\n      opacity: 1;\n      transform: translate(-50%, -50%) scale(1);\n      filter: blur(0);\n    }\n    34% {\n      opacity: 1;\n      transform: translate(-50%, -50%) scale(1.018);\n      filter: blur(0);\n    }\n    68% {\n      opacity: 0.54;\n      transform: translate(-50%, -50%) scaleX(1.18) scaleY(0.88);\n      filter: blur(8px);\n    }\n    100% {\n      opacity: 0;\n      transform: translate(-50%, -50%) scaleX(1.42) scaleY(0.64);\n      filter: blur(18px);\n    }\n  }\n\n  @keyframes afbActivationTextHandoff {\n    0% {\n      opacity: 1;\n      transform: translateY(0);\n      filter: blur(0);\n    }\n    58% {\n      opacity: 0.72;\n      transform: translateY(-1px);\n      filter: blur(2px);\n    }\n    100% {\n      opacity: 0;\n      transform: translateY(-4px);\n      filter: blur(9px);\n    }\n  }\n\n  @keyframes afbActivationDotHandoff {\n    0% {\n      opacity: 1;\n      transform: scale(1.12);\n      box-shadow:\n        0 0 0 8px rgba(109, 50, 145, 0.10),\n        0 0 18px rgba(109, 50, 145, 0.38);\n    }\n    58% {\n      opacity: 0.78;\n      transform: scale(1.22);\n      box-shadow:\n        0 0 0 12px rgba(109, 50, 145, 0.055),\n        0 0 24px rgba(109, 50, 145, 0.30);\n    }\n    100% {\n      opacity: 0;\n      transform: scale(1.55);\n      box-shadow:\n        0 0 0 18px rgba(109, 50, 145, 0),\n        0 0 30px rgba(109, 50, 145, 0);\n    }\n  }\n\n  @keyframes afbActivationOrbitHandoff {\n    0% {\n      opacity: 1;\n      transform: scale(1);\n    }\n    100% {\n      opacity: 0;\n      transform: scale(1.22);\n    }\n  }\n\n  .afb-product-description-body.is-merchant-outro .afb-narration-copy {\n    opacity: 0;\n    transform: translateY(-20px) scale(0.94);\n    filter: blur(16px);\n    pointer-events: none;\n    transition:\n      opacity var(--afb-narration-out-duration) cubic-bezier(0.16, 1, 0.3, 1) var(--afb-narration-out-delay),\n      transform var(--afb-narration-out-duration) cubic-bezier(0.16, 1, 0.3, 1) var(--afb-narration-out-delay),\n      filter var(--afb-narration-out-duration) cubic-bezier(0.16, 1, 0.3, 1) var(--afb-narration-out-delay);\n  }\n\n  .afb-product-description-body.is-merchant-outro .afb-narration-spotlight {\n    opacity: 0;\n    transform: translateY(-18px) scale(0.94);\n    filter: blur(16px);\n    max-height: 0;\n    margin: 0;\n    padding-top: 0;\n    padding-bottom: 0;\n    pointer-events: none;\n  }\n\n  .afb-product-description-body.is-merchant-outro .afb-steps {\n    opacity: 0;\n    transform: translateY(-12px) scale(0.97);\n    filter: blur(10px);\n    pointer-events: none;\n    transition:\n      opacity 0.86s cubic-bezier(0.16, 1, 0.3, 1) 0.04s,\n      transform 0.86s cubic-bezier(0.16, 1, 0.3, 1) 0.04s,\n      filter 0.86s cubic-bezier(0.16, 1, 0.3, 1) 0.04s;\n  }\n\n  .afb-product-description-body.is-merchant-outro .afb-stage-top {\n    opacity: 0;\n    transform: translateY(-10px) scale(0.975);\n    filter: blur(8px);\n    pointer-events: none;\n    transition:\n      opacity 0.78s cubic-bezier(0.16, 1, 0.3, 1),\n      transform 0.78s cubic-bezier(0.16, 1, 0.3, 1),\n      filter 0.78s cubic-bezier(0.16, 1, 0.3, 1);\n  }\n\n  .afb-product-description-body.is-merchant-hold .afb-narration-copy,\n  .afb-product-description-body.is-merchant-hold .afb-narration-spotlight,\n  .afb-product-description-body.is-merchant-hold .afb-steps,\n  .afb-product-description-body.is-merchant-hold .afb-stage-top {\n    opacity: 0;\n    transform: translateY(-12px) scale(0.965);\n    filter: blur(10px);\n    pointer-events: none;\n    transition-delay: 0s;\n  }\n\n  .afb-merchant-panel {\n    position: absolute;\n    inset: 24px;\n    display: grid;\n    grid-template-columns: minmax(190px, 0.78fr) minmax(0, 1.22fr);\n    gap: clamp(18px, 3vw, 34px);\n    align-items: center;\n    opacity: 0;\n    pointer-events: none;\n    transform: translateY(26px) scale(0.965);\n    filter: blur(16px);\n    transition:\n      opacity 0.64s cubic-bezier(0.16, 1, 0.3, 1),\n      transform 0.64s cubic-bezier(0.16, 1, 0.3, 1),\n      filter 0.64s cubic-bezier(0.16, 1, 0.3, 1);\n  }\n\n  .afb-product-description-body.is-merchant-outro .afb-stage-card,\n  .afb-product-description-body.is-merchant-hold .afb-stage-card {\n    min-height: clamp(440px, 48vw, 560px);\n    max-height: 1800px;\n    overflow: hidden;\n  }\n\n  .afb-product-description-body.is-merchant-outro .afb-merchant-panel {\n    opacity: 1;\n    pointer-events: auto;\n    transform: translateY(0) scale(1);\n    filter: blur(0);\n    transition:\n      opacity var(--afb-merchant-in-duration) cubic-bezier(0.16, 1, 0.3, 1) var(--afb-merchant-in-delay),\n      transform var(--afb-merchant-in-duration) cubic-bezier(0.16, 1, 0.3, 1) var(--afb-merchant-in-delay),\n      filter var(--afb-merchant-in-duration) cubic-bezier(0.16, 1, 0.3, 1) var(--afb-merchant-in-delay);\n  }\n\n  .afb-product-description-body.is-merchant-hold .afb-merchant-panel {\n    opacity: 1;\n    pointer-events: auto;\n    transform: translateY(0) scale(1);\n    filter: blur(0);\n    transition-delay: 0s;\n  }\n\n  @media (min-width: 861px) {\n    .afb-product-description-body.is-merchant-outro .afb-narration-copy,\n    .afb-product-description-body.is-merchant-hold .afb-narration-copy,\n    .afb-product-description-body.is-merchant-outro .afb-narration-spotlight,\n    .afb-product-description-body.is-merchant-hold .afb-narration-spotlight,\n    .afb-product-description-body.is-merchant-outro .afb-steps,\n    .afb-product-description-body.is-merchant-hold .afb-steps,\n    .afb-product-description-body.is-merchant-outro .afb-stage-top,\n    .afb-product-description-body.is-merchant-hold .afb-stage-top {\n      max-height: 0;\n      height: 0;\n      margin: 0;\n      padding: 0;\n      overflow: hidden;\n      opacity: 0;\n      pointer-events: none;\n    }\n\n    .afb-product-description-body.is-merchant-outro .afb-stage-card,\n    .afb-product-description-body.is-merchant-hold .afb-stage-card {\n      min-height: 0;\n      height: auto;\n      max-height: none;\n      padding: 18px;\n      overflow: hidden;\n      border-radius: 26px;\n    }\n\n    .afb-product-description-body.is-merchant-outro .afb-merchant-panel,\n    .afb-product-description-body.is-merchant-hold .afb-merchant-panel {\n      position: relative;\n      inset: auto;\n      width: 100%;\n      display: grid;\n      grid-template-columns: minmax(220px, 0.82fr) minmax(340px, 1fr);\n      gap: clamp(20px, 2.4vw, 34px);\n      align-items: center;\n      margin: 0;\n      padding: 0;\n    }\n\n    .afb-merchant-copy {\n      max-width: 430px;\n      justify-self: start;\n      align-self: center;\n    }\n\n    .afb-merchant-media {\n      align-self: center;\n      justify-self: center;\n      margin: 0;\n    }\n\n    .afb-merchant-figure {\n      width: min(100%, 390px);\n      max-width: 390px;\n    }\n\n    .afb-merchant-figure img {\n      max-height: clamp(300px, 34vw, 430px);\n    }\n  }\n\n  .afb-merchant-media {\n    position: relative;\n    min-width: 0;\n    min-height: 0;\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n    justify-content: center;\n    background: transparent !important;\n    border: 0 !important;\n    box-shadow: none !important;\n    overflow: visible;\n  }\n\n  .afb-merchant-media::before,\n  .afb-merchant-media::after {\n    display: none !important;\n  }\n\n  .afb-merchant-media-glow {\n    position: absolute;\n    left: 50%;\n    top: 52%;\n    width: min(72%, 220px);\n    height: 58%;\n    transform: translate(-50%, -50%);\n    border-radius: 50%;\n    background: radial-gradient(circle, rgba(109,50,145,.18) 0%, rgba(109,50,145,.10) 36%, transparent 72%);\n    filter: blur(24px);\n    opacity: .42;\n    pointer-events: none;\n    animation: afbImageGlowPulse 2.2s ease-in-out infinite;\n  }\n\n  @keyframes afbImageGlowPulse {\n    0%, 100% {\n      opacity: .62;\n      transform: translate(-50%, -50%) scale(.92);\n    }\n    50% {\n      opacity: .95;\n      transform: translate(-50%, -50%) scale(1.06);\n    }\n  }\n\n  .afb-merchant-figure {\n    position: relative;\n    width: min(100%, 360px);\n    max-width: 360px;\n    margin: 0 auto;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    padding: 0;\n    background: transparent !important;\n    border: 0 !important;\n    box-shadow: none !important;\n    border-radius: 0;\n    overflow: visible;\n  }\n\n  .afb-merchant-figure::before {\n    content: none;\n  }\n\n  .afb-merchant-figure::after {\n    content: \"\";\n    position: absolute;\n    left: 18%;\n    right: 18%;\n    bottom: -16px;\n    height: 26px;\n    z-index: 1;\n    border-radius: 999px;\n    background: rgba(55, 23, 79, 0.16);\n    filter: blur(16px);\n    pointer-events: none;\n  }\n\n  .afb-merchant-figure img {\n    position: relative;\n    z-index: 2;\n    width: 100%;\n    height: auto;\n    max-height: clamp(280px, 32vw, 400px);\n    object-fit: contain;\n    display: block;\n    border-radius: 16px;\n    opacity: calc(0.12 + (var(--afb-merchant-progress) * 0.88));\n    transform:\n      translateY(calc(24px - (var(--afb-merchant-progress) * 24px)))\n      scale(calc(0.88 + (var(--afb-merchant-progress) * 0.12)));\n    filter:\n      blur(calc(10px - (var(--afb-merchant-progress) * 10px)))\n      drop-shadow(0 20px 36px rgba(55,23,79,.20))\n      saturate(1.03);\n    clip-path: inset(calc(30% - (var(--afb-merchant-progress) * 30%)) 0 0 0 round 16px);\n    transition:\n      opacity 0.18s linear,\n      transform 0.18s linear,\n      filter 0.18s linear,\n      clip-path 0.18s linear;\n  }\n\n  .afb-product-description-body.is-merchant-hold .afb-merchant-figure img {\n    opacity: 1;\n    transform: translateY(0) scale(1);\n    filter: drop-shadow(0 20px 36px rgba(55,23,79,.20)) saturate(1.03);\n    clip-path: inset(0 0 0 0 round 16px);\n  }\n\n  .afb-merchant-shine {\n    position: absolute;\n    inset: 0;\n    z-index: 4;\n    border-radius: 24px;\n    background:\n      linear-gradient(115deg,\n        transparent 0%,\n        rgba(255,255,255,0) 34%,\n        rgba(255,255,255,.55) 48%,\n        rgba(255,255,255,0) 62%,\n        transparent 100%);\n    transform: translateX(120%);\n    animation: afbMerchantShine 2.65s ease 1.1s infinite;\n    pointer-events: none;\n    mix-blend-mode: screen;\n  }\n\n  @keyframes afbMerchantShine {\n    0%, 68%, 100% {\n      transform: translateX(120%);\n      opacity: 0;\n    }\n    74% { opacity: .9; }\n    92% {\n      transform: translateX(-120%);\n      opacity: .12;\n    }\n  }\n\n  .afb-merchant-copy {\n    position: relative;\n    overflow: hidden;\n    width: 100%;\n    min-width: 0;\n    padding: clamp(20px, 3vw, 32px);\n    border-radius: 30px;\n    border: 1px solid rgba(55,23,79,.10);\n    background:\n      radial-gradient(circle at top right, rgba(214,40,57,.08), transparent 34%),\n      radial-gradient(circle at top left, rgba(212,181,224,.34), transparent 44%),\n      linear-gradient(135deg, rgba(255,255,255,.98), rgba(250,247,255,.93));\n    box-shadow:\n      0 18px 46px rgba(55,23,79,.10),\n      inset 0 1px 0 rgba(255,255,255,.88);\n  }\n\n  .afb-merchant-copy::before {\n    content: '';\n    position: absolute;\n    left: -20%;\n    top: 0;\n    width: 40%;\n    height: 100%;\n    background: linear-gradient(90deg, transparent, rgba(255,255,255,.32), transparent);\n    transform: skewX(-18deg);\n    animation: afbCardSweep 4.2s ease-in-out infinite;\n    pointer-events: none;\n  }\n\n  @keyframes afbCardSweep {\n    0%, 68%, 100% {\n      left: -45%;\n      opacity: 0;\n    }\n    72% { opacity: .7; }\n    92% {\n      left: 115%;\n      opacity: 0;\n    }\n  }\n\n  .afb-merchant-topline {\n    position: relative;\n    z-index: 2;\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    gap: 14px;\n    margin-bottom: 18px;\n  }\n\n  .afb-merchant-kicker {\n    display: inline-flex;\n    align-items: center;\n    gap: 8px;\n    padding: 9px 14px;\n    border-radius: 999px;\n    background: linear-gradient(135deg, rgba(55,23,79,.10), rgba(212,181,224,.22));\n    color: var(--afb-text);\n    font-size: 11px;\n    font-weight: 950;\n    letter-spacing: .08em;\n    text-transform: uppercase;\n    animation: afbMerchantFadeUp .65s cubic-bezier(.16,1,.3,1) .05s both;\n  }\n\n  .afb-merchant-dot {\n    width: 10px;\n    height: 10px;\n    min-width: 10px;\n    min-height: 10px;\n    border-radius: 999px;\n    background: #7b2cbf;\n    box-shadow:\n      0 0 0 0 rgba(123,44,191,.30),\n      0 0 10px rgba(123,44,191,.28);\n    animation: afbMerchantDotPulse 1.45s ease-in-out infinite;\n  }\n\n  @keyframes afbMerchantDotPulse {\n    0% {\n      transform: scale(1);\n      box-shadow:\n        0 0 0 0 rgba(123,44,191,.30),\n        0 0 10px rgba(123,44,191,.25);\n    }\n    50% {\n      transform: scale(1.18);\n      box-shadow:\n        0 0 0 9px rgba(123,44,191,0),\n        0 0 18px rgba(123,44,191,.22);\n    }\n    100% {\n      transform: scale(1);\n      box-shadow:\n        0 0 0 0 rgba(123,44,191,0),\n        0 0 10px rgba(123,44,191,.18);\n    }\n  }\n\n  .afb-merchant-timer {\n    display: inline-flex;\n    align-items: center;\n    gap: 7px;\n    padding: 8px 12px;\n    border-radius: 999px;\n    background: linear-gradient(135deg, rgba(255,255,255,.92), rgba(255,244,246,.92));\n    border: 1px solid rgba(214,40,57,.20);\n    box-shadow:\n      0 8px 18px rgba(55,23,79,.05),\n      0 0 0 0 rgba(214,40,57,.08);\n    color: var(--afb-red-dark);\n    font-size: 12px;\n    font-weight: 950;\n    letter-spacing: .03em;\n    line-height: 1;\n    white-space: nowrap;\n    animation:\n      afbMerchantFadeUp .65s cubic-bezier(.16,1,.3,1) .14s both,\n      afbTimerBoxPulse 1.4s ease-in-out 1.1s infinite;\n  }\n\n  .afb-merchant-timer.is-critical {\n    color: #fff;\n    background: linear-gradient(135deg, #d62839, #9f1020);\n    border-color: rgba(214,40,57,.55);\n    box-shadow:\n      0 12px 24px rgba(159,16,32,.22),\n      0 0 0 8px rgba(214,40,57,.10);\n  }\n\n  .afb-merchant-timer-icon {\n    width: 8px;\n    height: 8px;\n    border-radius: 999px;\n    background: var(--afb-red);\n    box-shadow: 0 0 0 0 rgba(214,40,57,.28);\n    animation: afbTimerPulse 1.15s ease-in-out infinite;\n  }\n\n  @keyframes afbTimerBoxPulse {\n    0%, 100% {\n      box-shadow:\n        0 8px 18px rgba(55,23,79,.05),\n        0 0 0 0 rgba(214,40,57,.08);\n    }\n    50% {\n      box-shadow:\n        0 10px 22px rgba(55,23,79,.07),\n        0 0 0 5px rgba(214,40,57,.045);\n    }\n  }\n\n  @keyframes afbTimerPulse {\n    0% { box-shadow: 0 0 0 0 rgba(214,40,57,.32); }\n    60% { box-shadow: 0 0 0 8px rgba(214,40,57,0); }\n    100% { box-shadow: 0 0 0 0 rgba(214,40,57,0); }\n  }\n\n  .afb-merchant-title {\n    position: relative;\n    z-index: 2;\n    margin: 0 0 18px;\n    color: var(--afb-text);\n    font-size: clamp(20px, 2.25vw, 30px);\n    line-height: 1.08;\n    font-weight: 950;\n    letter-spacing: -.04em;\n    max-width: 100%;\n    perspective: 900px;\n    overflow-wrap: anywhere;\n    word-break: normal;\n  }\n\n  .afb-merchant-title-line {\n    display: block;\n    overflow: hidden;\n  }\n\n  .afb-merchant-title-word {\n    display: inline-block;\n    opacity: 0;\n    transform: translateY(115%) rotateX(38deg) scale(.96);\n    transform-origin: left bottom;\n    filter: blur(8px);\n    animation: afbMerchantTitleCinematic .82s cubic-bezier(.16,1,.3,1) both;\n    animation-delay: calc(.06s + var(--afb-word-delay, 0ms));\n  }\n\n  .afb-merchant-title::after {\n    content: '';\n    display: block;\n    width: 0;\n    height: 2px;\n    margin-top: 12px;\n    border-radius: 999px;\n    background:\n      linear-gradient(90deg, rgba(55,23,79,0), rgba(214,40,57,.72), rgba(109,50,145,.82), rgba(212,181,224,0));\n    animation: afbMerchantUnderline .9s cubic-bezier(.16,1,.3,1) .54s both;\n  }\n\n  @keyframes afbMerchantTitleCinematic {\n    0% {\n      opacity: 0;\n      transform: translateY(115%) rotateX(38deg) scale(.96);\n      filter: blur(8px);\n    }\n    58% {\n      opacity: 1;\n      transform: translateY(-8%) rotateX(0deg) scale(1.012);\n      filter: blur(0);\n    }\n    100% {\n      opacity: 1;\n      transform: translateY(0) rotateX(0deg) scale(1);\n      filter: blur(0);\n    }\n  }\n\n  @keyframes afbMerchantUnderline {\n    0% { width: 0; opacity: 0; }\n    100% { width: 84%; opacity: 1; }\n  }\n\n  .afb-merchant-price {\n    position: relative;\n    z-index: 2;\n    display: flex;\n    flex-direction: column;\n    gap: 4px;\n    margin: 0 0 26px;\n    animation: afbMerchantFadeUp .68s cubic-bezier(.16,1,.3,1) .66s both;\n    opacity: 0;\n    transform: translateY(14px);\n    filter: blur(8px);\n  }\n\n  .afb-merchant-price-top {\n    color: #7c688e;\n    font-size: 12px;\n    font-weight: 900;\n    letter-spacing: .06em;\n    text-transform: uppercase;\n  }\n\n  .afb-merchant-price-main {\n    color: var(--afb-text);\n    font-size: clamp(30px, 3.4vw, 44px);\n    line-height: 1;\n    font-weight: 1000;\n    letter-spacing: -.058em;\n    white-space: normal;\n  }\n\n  .afb-merchant-price-amount {\n    color: var(--afb-red);\n    text-shadow:\n      0 8px 16px rgba(214,40,57,.12),\n      0 0 0 rgba(214,40,57,0);\n    animation: afbPriceUrgencyPulse 1.55s ease-in-out infinite;\n  }\n\n  @keyframes afbPriceUrgencyPulse {\n    0%, 100% {\n      filter: brightness(1);\n      text-shadow:\n        0 8px 16px rgba(214,40,57,.12),\n        0 0 0 rgba(214,40,57,0);\n    }\n    50% {\n      filter: brightness(1.06);\n      text-shadow:\n        0 10px 20px rgba(214,40,57,.18),\n        0 0 12px rgba(214,40,57,.12);\n    }\n  }\n\n  .afb-merchant-price-bottom {\n    color: #7b688d;\n    font-size: 13px;\n    font-weight: 780;\n    line-height: 1.4;\n  }\n\n  @keyframes afbMerchantFadeUp {\n    0% {\n      opacity: 0;\n      transform: translateY(14px);\n      filter: blur(8px);\n    }\n    100% {\n      opacity: 1;\n      transform: translateY(0);\n      filter: blur(0);\n    }\n  }\n\n  .afb-merchant-cta-row {\n    position: relative;\n    z-index: 2;\n    display: flex;\n    flex-direction: column;\n    justify-content: center;\n    align-items: center;\n    gap: 12px;\n    width: 100%;\n    margin-top: clamp(12px, 2vw, 20px);\n    padding-bottom: 4px;\n    animation: afbMerchantFadeUp .72s cubic-bezier(.16,1,.3,1) .82s both;\n    opacity: 0;\n    transform: translateY(14px);\n    filter: blur(8px);\n  }\n\n  .afb-merchant-cta-row::before {\n    content: '';\n    position: absolute;\n    inset: -18px 8%;\n    border-radius: 999px;\n    background: radial-gradient(circle, rgba(214,40,57,.16), transparent 62%);\n    filter: blur(16px);\n    opacity: .8;\n    pointer-events: none;\n    animation: afbCtaAura 1.8s ease-in-out infinite;\n  }\n\n  @keyframes afbCtaAura {\n    0%, 100% {\n      transform: scale(.92);\n      opacity: .52;\n    }\n    50% {\n      transform: scale(1.05);\n      opacity: .88;\n    }\n  }\n\n  .afb-merchant-cta-btn {\n    appearance: none;\n    -webkit-appearance: none;\n    border: 0;\n    outline: none;\n    cursor: pointer;\n    text-decoration: none;\n    position: relative;\n    overflow: hidden;\n    min-height: clamp(58px, 6vw, 68px);\n    width: min(100%, 460px);\n    max-width: 460px;\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    gap: 12px;\n    padding: 18px 34px;\n    border-radius: 999px;\n    background:\n      linear-gradient(135deg, #2d1042 0%, #6d3291 40%, #d62839 115%);\n    color: #fff;\n    font-size: 16px;\n    font-weight: 1000;\n    letter-spacing: .055em;\n    text-transform: uppercase;\n    box-shadow:\n      0 20px 38px rgba(55,23,79,.28),\n      0 0 0 0 rgba(214,40,57,.18),\n      inset 0 1px 0 rgba(255,255,255,.22);\n    transition:\n      transform .22s ease,\n      box-shadow .22s ease,\n      filter .22s ease,\n      background .22s ease;\n    animation:\n      afbMerchantCtaPulse 1.45s ease-in-out 1.2s infinite,\n      afbCtaMicroMove 2.8s ease-in-out 1.8s infinite;\n  }\n\n  .afb-merchant-cta-btn span {\n    position: relative;\n    z-index: 2;\n  }\n\n  .afb-merchant-cta-btn::before {\n    content: '';\n    position: absolute;\n    inset: 0;\n    background:\n      linear-gradient(115deg,\n        transparent 0%,\n        rgba(255,255,255,0) 32%,\n        rgba(255,255,255,.36) 48%,\n        rgba(255,255,255,0) 64%,\n        transparent 100%);\n    transform: translateX(-140%);\n    animation: afbCtaShine 2.45s ease .8s infinite;\n    pointer-events: none;\n  }\n\n  .afb-merchant-cta-btn::after {\n    content: '➜';\n    position: relative;\n    z-index: 2;\n    font-size: 16px;\n    line-height: 1;\n    transform: translateX(0);\n    transition: transform .22s ease;\n    animation: afbArrowNudge 1.1s ease-in-out infinite;\n  }\n\n  .afb-merchant-cta-btn:hover {\n    transform: translateY(-3px) scale(1.025);\n    filter: brightness(1.05);\n    box-shadow:\n      0 26px 48px rgba(55,23,79,.34),\n      0 0 0 9px rgba(214,40,57,.08),\n      inset 0 1px 0 rgba(255,255,255,.25);\n  }\n\n  @keyframes afbMerchantCtaPulse {\n    0% {\n      box-shadow:\n        0 20px 38px rgba(55,23,79,.28),\n        0 0 0 0 rgba(214,40,57,.18),\n        inset 0 1px 0 rgba(255,255,255,.22);\n    }\n    50% {\n      box-shadow:\n        0 24px 46px rgba(55,23,79,.32),\n        0 0 0 13px rgba(214,40,57,.07),\n        inset 0 1px 0 rgba(255,255,255,.22);\n    }\n    100% {\n      box-shadow:\n        0 20px 38px rgba(55,23,79,.28),\n        0 0 0 0 rgba(214,40,57,0),\n      inset 0 1px 0 rgba(255,255,255,.22);\n    }\n  }\n\n  .afb-merchant-secondary-btn {\n    appearance: none;\n    -webkit-appearance: none;\n    border: 1px solid rgba(173, 125, 8, .22);\n    outline: none;\n    cursor: pointer;\n    text-decoration: none;\n    position: relative;\n    overflow: hidden;\n    min-height: 52px;\n    width: min(100%, 460px);\n    max-width: 460px;\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    gap: 10px;\n    padding: 14px 24px;\n    border-radius: 999px;\n    background: linear-gradient(135deg, #fff6c9 0%, #ffd24a 52%, #f4b400 100%);\n    color: #5b3c00;\n    font-size: 14px;\n    font-weight: 950;\n    letter-spacing: .045em;\n    text-transform: uppercase;\n    box-shadow:\n      0 16px 30px rgba(201,138,0,.20),\n      inset 0 1px 0 rgba(255,255,255,.55);\n    transition:\n      transform .22s ease,\n      box-shadow .22s ease,\n      filter .22s ease,\n      background .22s ease;\n  }\n\n  .afb-merchant-secondary-btn::before {\n    content: '';\n    position: absolute;\n    inset: 0;\n    background:\n      linear-gradient(115deg,\n        transparent 0%,\n        rgba(255,255,255,0) 30%,\n        rgba(255,255,255,.42) 48%,\n        rgba(255,255,255,0) 66%,\n        transparent 100%);\n    transform: translateX(-150%);\n    animation: afbCtaShine 3.1s ease 1.1s infinite;\n    pointer-events: none;\n  }\n\n  .afb-merchant-secondary-btn span {\n    position: relative;\n    z-index: 2;\n  }\n\n  .afb-merchant-secondary-btn::after {\n    content: 'WhatsApp';\n    position: relative;\n    z-index: 2;\n    font-size: 10px;\n    line-height: 1;\n    letter-spacing: .08em;\n    opacity: .72;\n  }\n\n  .afb-merchant-secondary-btn:hover {\n    transform: translateY(-2px) scale(1.015);\n    filter: brightness(1.02);\n    box-shadow:\n      0 20px 38px rgba(201,138,0,.24),\n      inset 0 1px 0 rgba(255,255,255,.62);\n  }\n\n  @keyframes afbCtaMicroMove {\n    0%, 100% { transform: translateY(0) scale(1); }\n    50% { transform: translateY(-1px) scale(1.01); }\n  }\n\n  @keyframes afbCtaShine {\n    0%, 64%, 100% {\n      transform: translateX(-140%);\n      opacity: 0;\n    }\n    70% { opacity: .95; }\n    92% {\n      transform: translateX(140%);\n      opacity: .15;\n    }\n  }\n\n  @keyframes afbArrowNudge {\n    0%, 100% { transform: translateX(0); }\n    50% { transform: translateX(4px); }\n  }\n\n  .afb-merchant-safe-note {\n    position: relative;\n    z-index: 2;\n    margin-top: 12px;\n    text-align: center;\n    color: rgba(55,23,79,.58);\n    font-size: 11.5px;\n    font-weight: 800;\n    animation: afbMerchantFadeUp .72s cubic-bezier(.16,1,.3,1) .94s both;\n    opacity: 0;\n    transform: translateY(12px);\n    filter: blur(7px);\n  }\n\n  .afb-merchant-safe-note strong {\n    color: var(--afb-text);\n    font-weight: 950;\n  }\n\n  .afb-product-description-body.is-ending .afb-stage-card {\n    opacity: 0;\n    transform: translateY(-16px) scale(0.94);\n    filter: blur(16px);\n    max-height: 0;\n    min-height: 0;\n    padding-top: 0;\n    padding-bottom: 0;\n    border-width: 0;\n    box-shadow: none;\n  }\n\n  .afb-product-description-body.is-ending .afb-merchant-panel {\n    opacity: 0;\n    transform: translateY(-18px) scale(0.9);\n    filter: blur(18px);\n    pointer-events: none;\n  }\n\n  .afb-tts-hidden {\n    position: absolute !important;\n    left: -99999px !important;\n    top: auto !important;\n    width: 1px !important;\n    height: 1px !important;\n    overflow: hidden !important;\n    opacity: 0 !important;\n    pointer-events: none !important;\n  }\n\n  .afb-product-description-body.is-merchant-outro .afb-product-quote,\n  .afb-product-description-body.is-merchant-hold .afb-product-quote,\n  .afb-product-description-body.is-ending .afb-product-quote {\n    max-height: 0 !important;\n    min-height: 0 !important;\n    height: 0 !important;\n    margin: 0 !important;\n    padding: 0 !important;\n    border-width: 0 !important;\n    opacity: 0 !important;\n    transform: translateY(-14px) scale(0.96) !important;\n    filter: blur(12px) !important;\n    overflow: hidden !important;\n    pointer-events: none !important;\n    box-shadow: none !important;\n  }\n\n  .afb-product-description-body.is-merchant-outro .afb-quote-text,\n  .afb-product-description-body.is-merchant-hold .afb-quote-text,\n  .afb-product-description-body.is-ending .afb-quote-text {\n    max-height: 0 !important;\n    height: 0 !important;\n    opacity: 0 !important;\n    overflow: hidden !important;\n    margin: 0 !important;\n    padding: 0 !important;\n  }\n\n  .afb-product-description-body.is-merchant-outro .afb-product-quote::before,\n  .afb-product-description-body.is-merchant-outro .afb-product-quote::after,\n  .afb-product-description-body.is-merchant-hold .afb-product-quote::before,\n  .afb-product-description-body.is-merchant-hold .afb-product-quote::after,\n  .afb-product-description-body.is-ending .afb-product-quote::before,\n  .afb-product-description-body.is-ending .afb-product-quote::after {\n    display: none !important;\n  }\n\n  @media (max-width: 860px) {\n    .afb-merchant-panel {\n      grid-template-columns: 1fr;\n      gap: 18px;\n    }\n\n    .afb-product-description-body.is-narration-visible .afb-stage-card {\n      min-height: 0;\n    }\n\n    .afb-merchant-figure {\n      max-width: 230px;\n    }\n\n    .afb-merchant-copy {\n      padding: 22px 18px 24px;\n    }\n\n    .afb-merchant-topline {\n      flex-wrap: wrap;\n      align-items: center;\n    }\n\n    .afb-merchant-title {\n      font-size: clamp(20px, 5vw, 25px);\n    }\n\n    .afb-merchant-price-main {\n      font-size: clamp(31px, 7vw, 39px);\n    }\n\n    .afb-merchant-cta-btn {\n      width: 100%;\n      max-width: none;\n      min-height: 60px;\n    }\n\n    .afb-merchant-secondary-btn {\n      width: 100%;\n      max-width: none;\n      min-height: 52px;\n      font-size: 13px;\n      padding: 14px 18px;\n    }\n  }\n\n  @media (max-width: 768px) {\n    .afb-product-description-body.is-merchant-outro .afb-narration-copy,\n    .afb-product-description-body.is-merchant-hold .afb-narration-copy,\n    .afb-product-description-body.is-merchant-outro .afb-narration-spotlight,\n    .afb-product-description-body.is-merchant-hold .afb-narration-spotlight {\n      max-height: 0;\n      height: 0;\n      margin: 0;\n      padding: 0;\n      overflow: hidden;\n      opacity: 0;\n      transform: translateY(-18px) scale(0.94);\n      filter: blur(16px);\n      pointer-events: none;\n    }\n\n    .afb-product-description-body.is-merchant-outro .afb-narration-copy p,\n    .afb-product-description-body.is-merchant-hold .afb-narration-copy p {\n      margin: 0;\n      padding: 0;\n    }\n\n    .afb-product-description-body.is-merchant-outro .afb-steps,\n    .afb-product-description-body.is-merchant-hold .afb-steps,\n    .afb-product-description-body.is-merchant-outro .afb-stage-top,\n    .afb-product-description-body.is-merchant-hold .afb-stage-top {\n      max-height: 0;\n      height: 0;\n      margin: 0;\n      padding: 0;\n      overflow: hidden;\n      opacity: 0;\n      pointer-events: none;\n    }\n\n    .afb-product-description-body.is-merchant-outro .afb-stage-card,\n    .afb-product-description-body.is-merchant-hold .afb-stage-card {\n      min-height: 0;\n      height: auto;\n      max-height: none;\n      padding: 14px;\n      overflow: visible;\n      border-radius: 24px;\n    }\n\n    .afb-narration-spotlight {\n      position: relative;\n      left: auto;\n      right: auto;\n      top: auto;\n      bottom: auto;\n      z-index: 4;\n      width: 100%;\n      max-width: 100%;\n      grid-template-columns: 1fr;\n      gap: 9px;\n      margin: 0;\n      padding: 0;\n      border-radius: 0;\n      box-shadow: none;\n      max-height: 0;\n      opacity: 0;\n      overflow: hidden;\n      transform: translateY(-10px) scale(0.98);\n      transform-origin: top center;\n      transition:\n        opacity 0.34s ease,\n        transform 0.34s ease,\n        filter 0.34s ease,\n        max-height 0.42s ease,\n        margin 0.34s ease;\n    }\n\n    .afb-narration-spotlight.is-visible {\n      margin: 12px 0 18px;\n      max-height: 900px;\n      opacity: 1;\n      transform: translateY(0) scale(1);\n      filter: blur(0);\n      overflow: visible;\n    }\n\n    .afb-narration-spotlight.is-exiting {\n      margin: 0;\n      max-height: 0;\n      opacity: 0;\n      transform: translateY(-10px) scale(0.98);\n      overflow: hidden;\n    }\n\n    .afb-product-description-body.is-merchant-outro .afb-merchant-panel,\n    .afb-product-description-body.is-merchant-hold .afb-merchant-panel {\n      position: relative;\n      inset: auto;\n      width: 100%;\n      display: grid;\n      grid-template-columns: 1fr;\n      gap: 14px;\n      margin: 0;\n      padding: 0;\n      align-items: stretch;\n      opacity: 1;\n      pointer-events: auto;\n      transform: translateY(0) scale(1);\n      filter: blur(0);\n    }\n\n    .afb-merchant-media {\n      min-height: auto;\n      height: auto;\n      padding: 0;\n      margin: 0 0 6px;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      overflow: visible;\n      background: transparent;\n      border: 0;\n      box-shadow: none;\n    }\n\n    .afb-merchant-detail-hotspots {\n      width: 100%;\n      grid-template-columns: repeat(2, minmax(0, 1fr));\n      gap: 8px;\n      margin-bottom: 10px;\n    }\n\n    .afb-merchant-detail-hotspot {\n      min-height: 58px;\n      padding: 8px;\n      border-radius: 14px;\n    }\n\n    .afb-merchant-media-glow {\n      inset: 10% 22%;\n      filter: blur(14px);\n      opacity: 0.55;\n    }\n\n    .afb-merchant-figure {\n      width: min(100%, 220px);\n      max-width: 220px;\n      height: auto;\n      aspect-ratio: 1 \/ 1;\n      margin: 0 auto;\n    }\n\n    .afb-merchant-figure img {\n      width: 100%;\n      height: auto;\n      max-height: 220px;\n      object-fit: contain;\n      border-radius: 22px;\n    }\n\n    .afb-merchant-copy {\n      width: 100%;\n      padding: 18px 15px 18px;\n      border-radius: 22px;\n    }\n\n    .afb-merchant-topline {\n      gap: 8px;\n      margin-bottom: 14px;\n      flex-wrap: nowrap;\n      align-items: center;\n    }\n\n    .afb-merchant-kicker {\n      font-size: 9.5px;\n      padding: 7px 10px;\n      gap: 6px;\n      white-space: nowrap;\n    }\n\n    .afb-merchant-dot {\n      width: 8px;\n      height: 8px;\n      min-width: 8px;\n      min-height: 8px;\n    }\n\n    .afb-merchant-timer {\n      margin-left: auto;\n      font-size: 10.5px;\n      padding: 7px 9px;\n      white-space: nowrap;\n    }\n\n    .afb-merchant-title {\n      font-size: 20px;\n      line-height: 1.12;\n      letter-spacing: -0.035em;\n      margin-bottom: 14px;\n      overflow-wrap: anywhere;\n    }\n\n    .afb-merchant-price {\n      margin-bottom: 18px;\n    }\n\n    .afb-merchant-price-main {\n      font-size: 31px;\n      line-height: 1.03;\n      letter-spacing: -0.05em;\n    }\n\n    .afb-merchant-cta-btn {\n      width: 100%;\n      max-width: none;\n      min-height: 56px;\n      padding: 15px 18px;\n      font-size: 13.5px;\n      border-radius: 999px;\n    }\n  }\n\n  @media (max-width: 600px) {\n    .afb-audio-controls {\n      gap: 10px;\n    }\n\n    .afb-audio-btn {\n      min-width: 100%;\n      min-height: 54px;\n      font-size: 15px;\n    }\n\n    .afb-audio-pause-btn {\n      min-height: 34px;\n      min-width: 34px;\n      padding: 0 10px;\n      gap: 0;\n    }\n\n    .afb-audio-pause-btn-text {\n      display: none;\n    }\n\n    .afb-voice-select-wrap {\n      min-width: calc(100% - 68px);\n      flex: 1 1 calc(100% - 68px);\n      min-height: 54px;\n    }\n\n    .afb-voice-btn {\n      min-width: 100%;\n      min-height: 54px;\n    }\n\n    .afb-lang-btn {\n      min-height: 54px;\n      min-width: 54px;\n      width: 54px;\n    }\n\n    .afb-visible-description {\n      padding: 22px 18px 20px;\n    }\n\n    .afb-product-description-body.is-intro-visible .afb-product-quote {\n      min-height: 94px;\n      padding: 18px 16px;\n    }\n\n    .afb-quote-text {\n      font-size: 18px;\n    }\n\n    .afb-product-description-body.is-narration-visible .afb-stage-card {\n      padding: 14px;\n      border-radius: 22px;\n    }\n\n    .afb-stage-top {\n      gap: 10px;\n      margin-bottom: 12px;\n    }\n\n    .afb-narration-spotlight {\n      width: 100%;\n      gap: 8px;\n      transform: translateY(-8px) scale(0.985);\n    }\n\n    .afb-narration-spotlight.is-visible {\n      margin: 10px 0 16px;\n      transform: translateY(0) scale(1);\n    }\n\n    .afb-narration-spotlight.is-exiting {\n      margin: 0;\n      transform: translateY(-8px) scale(0.985);\n    }\n\n    .afb-narration-spotlight img {\n      max-height: 210px;\n    }\n\n    .afb-narration-spotlight-media {\n      padding: 10px;\n      border-radius: 22px;\n    }\n\n    .afb-narration-spotlight-media[data-fit=\"cover\"] {\n      padding: 10px;\n    }\n\n    .afb-narration-spotlight-media[data-fit=\"cover\"] img {\n      max-height: 210px;\n      border-radius: 18px;\n    }\n\n    .afb-narration-spotlight-media[data-fit=\"contain\"] {\n      padding: 10px;\n    }\n\n    .afb-narration-spotlight-media[data-fit=\"contain\"] img {\n      max-height: 210px;\n      border-radius: 18px;\n    }\n\n    .afb-narration-spotlight-copy {\n      padding: 11px 12px 12px;\n      border-radius: 16px;\n    }\n\n    .afb-narration-spotlight-version-window {\n      padding: 12px 12px 13px;\n      border-radius: 16px;\n      margin-bottom: 9px;\n    }\n\n    .afb-narration-spotlight-version-title {\n      font-size: 18px;\n    }\n\n    .afb-narration-spotlight-version-subtitle {\n      font-size: 12px;\n    }\n\n    .afb-narration-spotlight:not(.is-version-showcase) .afb-narration-spotlight-copy {\n      padding: 9px 10px 10px;\n    }\n\n    .afb-narration-spotlight:not(.is-version-showcase) .afb-narration-spotlight-caption {\n      font-size: 13px;\n      line-height: 1.36;\n    }\n\n    .afb-stage-badge {\n      min-height: 36px;\n      padding: 0 12px;\n      font-size: 13px;\n    }\n\n    .afb-stage-time {\n      font-size: 13px;\n    }\n\n    .afb-stage-top-meta {\n      gap: 6px;\n      padding: 5px 6px 5px 12px;\n    }\n\n    .afb-narration-spotlight-kicker {\n      font-size: 10px;\n      gap: 7px;\n    }\n\n    .afb-narration-spotlight-caption {\n      font-size: 14px;\n      line-height: 1.45;\n    }\n\n    .afb-narration-copy p {\n      font-size: 15px;\n      line-height: 1.68;\n    }\n\n    .afb-narration-copy p.is-active {\n      padding: 10px 12px;\n      border-radius: 14px;\n    }\n\n    .afb-product-description-body.is-preparing-experience .afb-stage-card {\n      min-height: 230px;\n      padding: 14px;\n      border-radius: 22px;\n    }\n\n    .afb-activation-badge {\n      min-width: min(92%, 330px);\n      min-height: 54px;\n      padding: 0 20px;\n    }\n\n    .afb-activation-text {\n      font-size: 15px;\n    }\n\n    .afb-product-description-body.is-activation-docking .afb-activation-badge {\n      top: 50% !important;\n      left: 50% !important;\n      min-width: min(92%, 330px) !important;\n      min-height: 54px !important;\n      padding: 0 20px !important;\n      transform: translate(-50%, -50%) scale(1) !important;\n    }\n\n    .afb-product-description-body.is-activation-docking .afb-activation-text {\n      font-size: 15px !important;\n    }\n  }\n\n  @media (max-width: 420px) {\n    .afb-merchant-figure {\n      width: min(100%, 190px);\n      max-width: 190px;\n    }\n\n    .afb-merchant-figure img {\n      max-height: 190px;\n    }\n\n    .afb-merchant-copy {\n      padding: 16px 13px 16px;\n      border-radius: 20px;\n    }\n\n    .afb-merchant-title {\n      font-size: 19px;\n    }\n\n    .afb-merchant-price-main {\n      font-size: 29px;\n    }\n\n    .afb-merchant-cta-btn {\n      min-height: 54px;\n      font-size: 13px;\n    }\n  }\n\u003c\/style\u003e\n\u003cdiv class=\"afb-product-description-body\" data-body-theme-key=\"definitive\" data-checkout-url=\"\/checkout\" data-default-locale=\"pt-br\" data-product-image=\"https:\/\/www.sideshow.com\/storage\/product-images\/9155883\/prime-1-studio-dc-comics-the-batman-who-laughs-robin-king-deluxe-bonus-version-1-3-scale-statue-gallery-69ea5b5d42075.jpg\" data-product-image-alt=\"Estátua Deluxe The Batman Who Laughs \u0026amp; Robin King com iluminação vermelha, imagem ActionFigureWorld\" data-product-price=\"25347.90\" data-product-title=\"The Batman Who Laughs \u0026amp; Robin King (Deluxe Bonus Version)\" data-product-url=\"https:\/\/www.actionfigurebrasil.com.br\/products\/the-batman-who-laughs-robin-king-deluxe-bonus-version\" data-product-version=\"Deluxe Bonus Version\" id=\"afb-product-description\"\u003e\n\u003cdiv class=\"afb-audio-controls\"\u003e\n\u003cbutton class=\"afb-audio-btn\" id=\"afb-audio-btn\" type=\"button\"\u003e\n\u003cspan class=\"afb-audio-btn-icon\"\u003e\n\u003csvg aria-hidden=\"true\" fill=\"none\" viewbox=\"0 0 24 24\"\u003e\n\u003cpath d=\"M14.5 5.5L9.5 9H6.5C5.67157 9 5 9.67157 5 10.5V13.5C5 14.3284 5.67157 15 6.5 15H9.5L14.5 18.5V5.5Z\" stroke=\"currentColor\" stroke-linejoin=\"round\" stroke-width=\"2\"\u003e\u003c\/path\u003e\n\u003cpath d=\"M18 9C19.3333 10.2 19.3333 13.8 18 15\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-width=\"2\"\u003e\u003c\/path\u003e\n\u003cpath d=\"M20.5 6.5C23.1667 8.83333 23.1667 15.1667 20.5 17.5\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-width=\"2\"\u003e\u003c\/path\u003e\n\u003c\/svg\u003e\n\u003c\/span\u003e\n\u003cspan id=\"afb-audio-btn-label\"\u003eOuvir Descrição\u003c\/span\u003e\n\u003c\/button\u003e\n\u003cdiv class=\"afb-voice-select-wrap\"\u003e\n\u003cselect aria-label=\"Escolher estilo da narração\" class=\"afb-voice-select\" id=\"afb-voice-select\"\u003e\n\u003coption value=\"premium\"\u003eExperiência Premium\u003c\/option\u003e\n\u003coption selected value=\"epic\"\u003eExperiência Épica\u003c\/option\u003e\n\u003coption value=\"classic\"\u003eExperiência Clássica\u003c\/option\u003e\n\u003c\/select\u003e\n\u003cbutton aria-expanded=\"false\" aria-label=\"Escolher estilo da narração\" class=\"afb-voice-btn\" data-voice=\"epic\" id=\"afb-voice-btn\" type=\"button\"\u003e\n\u003cspan class=\"afb-voice-btn-copy\"\u003e\n\u003cspan aria-hidden=\"true\" class=\"afb-voice-btn-mark\"\u003e⚡\u003c\/span\u003e\n\u003cspan class=\"afb-voice-btn-label\"\u003eExperiência Épica\u003c\/span\u003e\n\u003c\/span\u003e\n\u003c\/button\u003e\n\u003cdiv class=\"afb-voice-menu\" id=\"afb-voice-menu\"\u003e\n\u003cbutton class=\"afb-voice-option\" data-value=\"premium\" type=\"button\"\u003e\n\u003cspan aria-hidden=\"true\" class=\"afb-voice-option-mark\"\u003e\u003c\/span\u003e\n\u003cspan class=\"afb-voice-option-copy\"\u003e\n\u003cspan class=\"afb-voice-option-title\"\u003eExperiência Premium\u003c\/span\u003e\n\u003cspan class=\"afb-voice-option-desc\"\u003eEquilíbrio entre atmosfera e clareza\u003c\/span\u003e\n\u003c\/span\u003e\n\u003c\/button\u003e\n\u003cbutton class=\"afb-voice-option is-selected\" data-value=\"epic\" type=\"button\"\u003e\n\u003cspan aria-hidden=\"true\" class=\"afb-voice-option-mark\"\u003e\u003c\/span\u003e\n\u003cspan class=\"afb-voice-option-copy\"\u003e\n\u003cspan class=\"afb-voice-option-title\"\u003eExperiência Épica\u003c\/span\u003e\n\u003cspan class=\"afb-voice-option-desc\"\u003eMais impacto dramático e presença\u003c\/span\u003e\n\u003c\/span\u003e\n\u003c\/button\u003e\n\u003cbutton class=\"afb-voice-option\" data-value=\"classic\" type=\"button\"\u003e\n\u003cspan aria-hidden=\"true\" class=\"afb-voice-option-mark\"\u003e\u003c\/span\u003e\n\u003cspan class=\"afb-voice-option-copy\"\u003e\n\u003cspan class=\"afb-voice-option-title\"\u003eExperiência Clássica\u003c\/span\u003e\n\u003cspan class=\"afb-voice-option-desc\"\u003eLeitura limpa, direta e elegante\u003c\/span\u003e\n\u003c\/span\u003e\n\u003c\/button\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cselect aria-hidden=\"true\" class=\"afb-native-select-hidden\" id=\"afb-audio-language-select\" tabindex=\"-1\"\u003e\n\u003coption value=\"pt-br\"\u003ePortuguês Brasil\u003c\/option\u003e\n\u003coption value=\"pt-pt\"\u003ePortuguês Portugal\u003c\/option\u003e\n\u003coption value=\"en-us\"\u003eEnglish US\u003c\/option\u003e\n\u003coption value=\"en-gb\"\u003eEnglish UK\u003c\/option\u003e\n\u003coption value=\"es-latam\"\u003eEspañol Latino\u003c\/option\u003e\n\u003coption value=\"es-es\"\u003eEspañol España\u003c\/option\u003e\n\u003coption value=\"fr-fr\"\u003eFrançais\u003c\/option\u003e\n\u003coption value=\"it-it\"\u003eItaliano\u003c\/option\u003e\n\u003coption value=\"de-de\"\u003eDeutsch\u003c\/option\u003e\n\u003coption value=\"ja-jp\"\u003e日本語\u003c\/option\u003e\n\u003c\/select\u003e\n\u003cdiv class=\"afb-lang-select\" id=\"afb-lang-select\"\u003e\n\u003cbutton aria-label=\"Escolher idioma\" class=\"afb-lang-btn\" id=\"afb-lang-btn\" type=\"button\"\u003e\n\u003cspan aria-hidden=\"true\" class=\"afb-flag afb-flag-br\"\u003e\u003c\/span\u003e\n\u003c\/button\u003e\n\u003cdiv class=\"afb-lang-menu\" id=\"afb-lang-menu\"\u003e\n\u003cbutton data-value=\"pt-br\" type=\"button\"\u003e\u003cspan class=\"afb-flag afb-flag-br\"\u003e\u003c\/span\u003e\u003cspan\u003ePortuguês Brasil\u003c\/span\u003e\u003c\/button\u003e\n\u003cbutton data-value=\"pt-pt\" type=\"button\"\u003e\u003cspan class=\"afb-flag afb-flag-pt\"\u003e\u003c\/span\u003e\u003cspan\u003ePortuguês Portugal\u003c\/span\u003e\u003c\/button\u003e\n\u003cbutton data-value=\"en-us\" type=\"button\"\u003e\u003cspan class=\"afb-flag afb-flag-us\"\u003e\u003c\/span\u003e\u003cspan\u003eEnglish US\u003c\/span\u003e\u003c\/button\u003e\n\u003cbutton data-value=\"en-gb\" type=\"button\"\u003e\u003cspan class=\"afb-flag afb-flag-gb\"\u003e\u003c\/span\u003e\u003cspan\u003eEnglish UK\u003c\/span\u003e\u003c\/button\u003e\n\u003cbutton data-value=\"es-latam\" type=\"button\"\u003e\u003cspan class=\"afb-flag afb-flag-latam\"\u003e\u003c\/span\u003e\u003cspan\u003eEspañol Latino\u003c\/span\u003e\u003c\/button\u003e\n\u003cbutton data-value=\"es-es\" type=\"button\"\u003e\u003cspan class=\"afb-flag afb-flag-es\"\u003e\u003c\/span\u003e\u003cspan\u003eEspañol España\u003c\/span\u003e\u003c\/button\u003e\n\u003cbutton data-value=\"fr-fr\" type=\"button\"\u003e\u003cspan class=\"afb-flag afb-flag-fr\"\u003e\u003c\/span\u003e\u003cspan\u003eFrançais\u003c\/span\u003e\u003c\/button\u003e\n\u003cbutton data-value=\"it-it\" type=\"button\"\u003e\u003cspan class=\"afb-flag afb-flag-it\"\u003e\u003c\/span\u003e\u003cspan\u003eItaliano\u003c\/span\u003e\u003c\/button\u003e\n\u003cbutton data-value=\"de-de\" type=\"button\"\u003e\u003cspan class=\"afb-flag afb-flag-de\"\u003e\u003c\/span\u003e\u003cspan\u003eDeutsch\u003c\/span\u003e\u003c\/button\u003e\n\u003cbutton data-value=\"ja-jp\" type=\"button\"\u003e\u003cspan class=\"afb-flag afb-flag-jp\"\u003e\u003c\/span\u003e\u003cspan\u003e日本語\u003c\/span\u003e\u003c\/button\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"afb-visible-description\" id=\"afb-visible-description\"\u003e\n\u003cp\u003e“Um conquistador manchando o mundo com o mal. Um rei inocente se deleitando na maldade.”\u003c\/p\u003e\n\u003cp\u003eActionFigureBrasil e \u003cstrong\u003ePrime 1 Studio\u003c\/strong\u003e apresentam \u003cstrong\u003eThe Batman Who Laughs \u0026amp; Robin King (Deluxe Bonus Version)\u003c\/strong\u003e, uma impressionante estátua em escala 1:3 da linha \u003cstrong\u003eMuseum Masterline\u003c\/strong\u003e, inspirada no evento Dark Nights: Death Metal da \u003cstrong\u003eDC Comics\u003c\/strong\u003e.\u003c\/p\u003e\n\u003cp\u003eA proposta da \u003cstrong\u003eMuseum Masterline\u003c\/strong\u003e é capturar, em detalhes tridimensionais excepcionais, os momentos mais marcantes e sombrios do universo DC. Nesta peça, a ressonância da loucura de The Batman Who Laughs e Robin King se materializa em um cenário infernal, traduzindo toda a intensidade do confronto final pelo destino do multiverso.\u003c\/p\u003e\n\u003cp\u003eA base da estátua foi cuidadosamente projetada para evocar um ambiente infernal, repleto de detalhes que remetem ao caos e à corrupção do universo retratado em Dark Nights: Death Metal. Com dimensões imponentes — altura de 86 cm, largura e profundidade de 67 cm —, a composição reforça a presença ameaçadora dos personagens, tornando a peça um verdadeiro destaque em qualquer coleção.\u003c\/p\u003e\n\u003cp\u003eThe Batman Who Laughs surge em uma pose dominante, transmitindo poder absoluto e ambição desmedida. Seu visor foi reinterpretado com linhas afiadas, enquanto os tons metálicos de aço, com um leve toque azulado, contrastam com a capa negra que flui de maneira ameaçadora. Cada elemento visual, da escultura à pintura, contribui para criar uma atmosfera sombria e majestosa.\u003c\/p\u003e\n\u003cp\u003eEm contraponto, o Robin King é retratado em uma postura inquieta, como se estivesse prestes a cometer sua próxima atrocidade. Seu sorriso astuto e destemido — distinto dos Groblins — foi esculpido com precisão, revelando a malícia pura e sem filtros que habita seu pequeno corpo. Os detalhes minuciosos da escultura evidenciam a dualidade e a perversidade do personagem.\u003c\/p\u003e\n\u003cp\u003eA estátua oferece opções de exibição variadas graças às peças intercambiáveis: múltiplos retratos para The Batman Who Laughs e um braço esquerdo alternativo para o Robin King, com garras estendidas, permitem personalizar a apresentação conforme a preferência do colecionador.\u003c\/p\u003e\n\u003cp\u003eExclusivo da Deluxe Bonus Version, o Robin King traz ainda um braço esquerdo extra segurando a cabeça do Batman, com o crânio exposto sob a máscara — um símbolo impactante de um futuro sem esperança. Esse acessório adicional reforça o tom sombrio e a dramaticidade da peça.\u003c\/p\u003e\n\u003cp\u003eProduzida em polystone de alta qualidade, a estátua destaca-se pelo acabamento refinado, texturas realistas e riqueza de detalhes técnicos, elevando o padrão de colecionáveis premium da \u003cstrong\u003ePrime 1 Studio\u003c\/strong\u003e.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eThe Batman Who Laughs \u0026amp; Robin King (Deluxe Bonus Version)\u003c\/strong\u003e é uma celebração visual da insanidade e do poder, trazendo à vida dois dos vilões mais marcantes da \u003cstrong\u003eDC Comics\u003c\/strong\u003e em uma obra de arte definitiva para fãs e colecionadores exigentes.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"afb-product-quote\" id=\"afb-product-quote\"\u003e\n\u003cdiv class=\"afb-quote-text\" id=\"afb-quote-text\"\u003e“Um conquistador manchando o mundo com o mal. Um rei inocente se deleitando na maldade.”\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"afb-stage-card\" id=\"afb-stage-card\"\u003e\n\u003cdiv aria-hidden=\"true\" class=\"afb-activation-badge\" id=\"afb-activation-badge\"\u003e\n\u003cspan class=\"afb-activation-orbit\"\u003e\u003c\/span\u003e\n\u003cspan class=\"afb-activation-dot\"\u003e\u003c\/span\u003e\n\u003cspan class=\"afb-activation-text\" id=\"afb-activation-label\"\u003eModo Narração Premium\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"afb-stage-top\"\u003e\n\u003cdiv class=\"afb-stage-badge\" id=\"afb-stage-badge\"\u003e\n\u003cspan class=\"afb-stage-badge-dot\"\u003e\u003c\/span\u003e\n\u003cspan id=\"afb-stage-badge-label\"\u003eModo Narração Premium\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"afb-stage-top-meta\"\u003e\n\u003cdiv class=\"afb-stage-time\" id=\"afb-stage-time\"\u003e00:00 \/ 00:00\u003c\/div\u003e\n\u003cbutton aria-label=\"Pausar áudio\" class=\"afb-audio-pause-btn\" disabled id=\"afb-audio-pause-btn\" title=\"Pausar áudio\" type=\"button\"\u003e\n\u003cspan aria-hidden=\"true\" class=\"afb-audio-pause-btn-icon\"\u003e\n\u003csvg aria-hidden=\"true\" fill=\"none\" viewbox=\"0 0 24 24\"\u003e\n\u003cpath d=\"M8 6.5V17.5\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-width=\"2.4\"\u003e\u003c\/path\u003e\n\u003cpath d=\"M16 6.5V17.5\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-width=\"2.4\"\u003e\u003c\/path\u003e\n\u003c\/svg\u003e\n\u003c\/span\u003e\n\u003cspan class=\"afb-audio-pause-btn-text\"\u003ePausar\u003c\/span\u003e\n\u003c\/button\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"afb-steps\" id=\"afb-steps\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"afb-narration-copy\" id=\"afb-narration-copy\"\u003e\u003c\/div\u003e\n\u003cdiv aria-hidden=\"true\" class=\"afb-narration-spotlight\" id=\"afb-narration-spotlight\"\u003e\n\u003cdiv class=\"afb-narration-spotlight-media\" data-fit=\"contain\" id=\"afb-narration-spotlight-media\"\u003e\n\u003cimg alt=\"\" id=\"afb-narration-spotlight-image\" src=\"\"\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"afb-narration-spotlight-copy\"\u003e\n\u003cdiv class=\"afb-narration-spotlight-kicker\"\u003e\n\u003cspan class=\"afb-narration-spotlight-dot\"\u003e\u003c\/span\u003e\n\u003cspan id=\"afb-narration-spotlight-kicker-label\"\u003eDetalhe em cena\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"afb-narration-spotlight-version-window\" id=\"afb-narration-spotlight-version-window\"\u003e\n\u003cdiv class=\"afb-narration-spotlight-version-label\" id=\"afb-narration-spotlight-version-label\"\u003eVersão em destaque\u003c\/div\u003e\n\u003ch4 class=\"afb-narration-spotlight-version-title\" id=\"afb-narration-spotlight-version-title\"\u003eDeluxe Version\u003c\/h4\u003e\n\u003cp class=\"afb-narration-spotlight-version-subtitle\" id=\"afb-narration-spotlight-version-subtitle\"\u003eConfiguração expandida com peças e opções de display.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cp class=\"afb-narration-spotlight-caption\" id=\"afb-narration-spotlight-caption\"\u003e\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv aria-hidden=\"true\" class=\"afb-merchant-panel\" id=\"afb-merchant-panel\"\u003e\n\u003cdiv class=\"afb-merchant-media\"\u003e\n\u003cdiv class=\"afb-merchant-media-glow\"\u003e\u003c\/div\u003e\n\u003cdiv aria-label=\"Detalhes visuais da peça\" class=\"afb-merchant-detail-hotspots\" id=\"afb-merchant-detail-hotspots\"\u003e\u003c\/div\u003e\n\u003cfigure class=\"afb-merchant-figure\"\u003e\n\u003cimg alt=\"Estátua Deluxe The Batman Who Laughs \u0026amp; Robin King com iluminação vermelha, imagem ActionFigureWorld\" id=\"afb-merchant-image\" src=\"https:\/\/www.sideshow.com\/storage\/product-images\/9155883\/prime-1-studio-dc-comics-the-batman-who-laughs-robin-king-deluxe-bonus-version-1-3-scale-statue-gallery-69ea5b5d42075.jpg\"\u003e\n\u003cspan class=\"afb-merchant-shine\"\u003e\u003c\/span\u003e\n\u003c\/figure\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"afb-merchant-copy\"\u003e\n\u003cdiv class=\"afb-merchant-topline\"\u003e\n\u003cdiv class=\"afb-merchant-kicker\"\u003e\n\u003cspan class=\"afb-merchant-dot\"\u003e\u003c\/span\u003e\n\u003cspan id=\"afb-merchant-kicker-text\"\u003eDisponibilidade limitada\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv aria-label=\"Tempo restante da oferta\" class=\"afb-merchant-timer\" data-seconds=\"40\" id=\"afb-merchant-timer\"\u003e\n\u003cspan class=\"afb-merchant-timer-icon\"\u003e\u003c\/span\u003e\n\u003cspan id=\"afb-merchant-timer-text\"\u003e00:40\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003ch3 class=\"afb-merchant-title\" id=\"afb-merchant-title\"\u003eThe Batman Who Laughs \u0026amp; Robin King (Deluxe Bonus Version)\u003c\/h3\u003e\n\u003cp class=\"afb-merchant-price\" data-price=\"25347.90\" id=\"afb-merchant-price\"\u003e\u003c\/p\u003e\n\u003cdiv class=\"afb-merchant-cta-row\"\u003e\n\u003cbutton class=\"afb-merchant-cta-btn\" data-afb-go-yever=\"1\" id=\"afb-merchant-btn\" type=\"button\"\u003e\n\u003cspan id=\"afb-merchant-btn-text\"\u003eCOMPRE AGORA!\u003c\/span\u003e\n\u003c\/button\u003e\n\u003cbutton class=\"afb-merchant-secondary-btn\" id=\"afb-merchant-custom-btn\" type=\"button\"\u003e\n\u003cspan id=\"afb-merchant-custom-btn-text\"\u003ePagamento Personalizado\u003c\/span\u003e\n\u003c\/button\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"afb-merchant-safe-note\" id=\"afb-merchant-safe-note\"\u003e\n          Compra segura com a garantia \u003cstrong\u003eActionFigureBrasil\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv aria-hidden=\"true\" class=\"afb-detail-overlay\" id=\"afb-detail-overlay\"\u003e\n\u003cdiv aria-label=\"Detalhe visual da peça\" aria-modal=\"true\" class=\"afb-detail-overlay-card\" role=\"dialog\"\u003e\n\u003cbutton aria-label=\"Fechar detalhe\" class=\"afb-detail-overlay-close\" id=\"afb-detail-overlay-close\" type=\"button\"\u003e×\u003c\/button\u003e\n\u003cimg alt=\"\" class=\"afb-detail-overlay-image\" id=\"afb-detail-overlay-image\" src=\"\"\u003e\n\u003cdiv class=\"afb-detail-overlay-copy\"\u003e\n\u003cdiv class=\"afb-detail-overlay-kicker\"\u003e\n\u003cspan class=\"afb-merchant-dot\"\u003e\u003c\/span\u003e\n\u003cspan\u003eDetalhe da peça\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cp class=\"afb-detail-overlay-caption\" id=\"afb-detail-overlay-caption\"\u003e\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv aria-hidden=\"true\" class=\"afb-tts-source afb-tts-hidden\" data-locale=\"pt-br\" data-nosnippet=\"true\"\u003e\n\u003cp data-sync-id=\"intro\" data-sync-role=\"intro\"\u003eUm conquistador, manchando o mundo com o mal. E um rei inocente, que se deleita na maldade.\u003c\/p\u003e\n\u003cp data-sync-id=\"narration_1\" data-sync-role=\"narration\"\u003eActionFigureBrasil e Praime Uan Stúdio apresentam Batman que Ri e Robin King, na versão Deluxe Bônus.\u003c\/p\u003e\n\u003cp data-sync-id=\"narration_1_2\" data-sync-role=\"narration\"\u003eUma estátua monumental, em escala um para três, da linha Míuziam Masterlaine.\u003c\/p\u003e\n\u003cp data-sync-id=\"narration_2\" data-sync-role=\"narration\"\u003eA coleção Míuziam Masterlaine, da Praime Uan Stúdio, é reconhecida por retratar com fidelidade e riqueza de detalhes os personagens mais marcantes da Dí Cí Comics.\u003c\/p\u003e\n\u003cp data-sync-id=\"narration_2_2\" data-sync-role=\"narration\"\u003eEsta peça é inspirada no evento Dárk Náits Déf Métau.\u003c\/p\u003e\n\u003cp data-sync-id=\"narration_3\" data-sync-role=\"narration\"\u003eA base da estátua foi criada como um cenário infernal, com composição minuciosa e dimensões impressionantes: oitenta e seis centímetros de altura, por sessenta e sete de largura e profundidade.\u003c\/p\u003e\n\u003cp data-sync-id=\"narration_3_2\" data-sync-role=\"narration\"\u003eTudo para evocar o caos do universo Déf Métau.\u003c\/p\u003e\n\u003cp data-sync-id=\"narration_4\" data-sync-role=\"narration\"\u003eO Batman que Ri surge em uma pose dominante, com visor afiado, tons de aço azulados e uma capa negra, ameaçadora.\u003c\/p\u003e\n\u003cp data-sync-id=\"narration_4_2\" data-sync-role=\"narration\"\u003eJá o Robin King exibe uma postura inquieta e um sorriso astuto, ressaltando o contraste visual e a atmosfera sômbria.\u003c\/p\u003e\n\u003cp data-sync-id=\"narration_5\" data-sync-role=\"narration\"\u003eA peça traz múltiplos retratos para o Batman que Ri e um braço esquerdo alternativo para o Robin King, com garras estendidas.\u003c\/p\u003e\n\u003cp data-sync-id=\"narration_5_2\" data-sync-role=\"narration\"\u003eAssim, é possível explorar diferentes expressões e a dualidade entre mestre e discípulo.\u003c\/p\u003e\n\u003cp data-sync-id=\"narration_6\" data-sync-role=\"narration\"\u003eA escultura em Poliestone apresenta acabamento refinado, texturas realistas e pintura detalhada.\u003c\/p\u003e\n\u003cp data-sync-id=\"narration_6_2\" data-sync-role=\"narration\"\u003eCada elemento visual e técnico se destaca nesta obra.\u003c\/p\u003e\n\u003cp data-sync-id=\"narration_7\" data-sync-role=\"narration\"\u003eNa versão Deluxe Bônus, o Robin King traz como extra exclusivo um braço esquerdo segurando a cabeça do Bátman, com o crânio exposto sob a máscara.\u003c\/p\u003e\n\u003cp data-sync-id=\"narration_7_2\" data-sync-role=\"narration\"\u003eEsse acessório amplia as opções de exibição e o impacto dramático da peça.\u003c\/p\u003e\n\u003cp data-sync-id=\"merchant\" data-sync-role=\"merchant\"\u003eGaranta esta estátua na ActionFigureBrasil, com parcelamento em até dez vezes sem juros de dois mil quinhentos e trinta e quatro reais e setenta e nove centavos. Você também pode pagar com dois cartões, ou combinar Pix e cartão.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv aria-hidden=\"true\" class=\"afb-narration-source afb-tts-hidden\" data-locale=\"pt-br\" data-nosnippet=\"true\" data-quote=\"“Um conquistador manchando o mundo com o mal. Um rei inocente se deleitando na maldade.”\"\u003e\n\u003cp data-sync-id=\"narration_1\"\u003eActionFigureBrasil e Prime 1 Studio apresentam The Batman Who Laughs \u0026amp; Robin King (Deluxe Bonus Version).\u003c\/p\u003e\n\u003cp data-sync-id=\"narration_1_2\"\u003eUma estátua monumental em escala 1:3 da linha Museum Masterline.\u003c\/p\u003e\n\u003cp data-sync-id=\"narration_2\"\u003eA coleção Museum Masterline da Prime 1 Studio é reconhecida por retratar com fidelidade e riqueza de detalhes os personagens mais icônicos da DC Comics.\u003c\/p\u003e\n\u003cp data-sync-id=\"narration_2_2\"\u003eE esta peça é inspirada no evento Dark Nights: Death Metal.\u003c\/p\u003e\n\u003cp data-sync-id=\"narration_3\"\u003eA base da estátua foi concebida como um cenário infernal com composição meticulosa e dimensões impressionantes de 86 centímetros de altura por 67 centímetros de largura e profundidade evocando o caos do universo.\u003c\/p\u003e\n\u003cp data-sync-id=\"narration_3_2\"\u003eDeath Metal.\u003c\/p\u003e\n\u003cp data-sync-id=\"narration_4\"\u003eThe Batman Who Laughs aparece em uma pose dominante, com visor afiado, tons de aço azulados e uma capa negra ameaçadora.\u003c\/p\u003e\n\u003cp data-sync-id=\"narration_4_2\"\u003eEnquanto Robin King exibe postura inquieta e sorriso astuto, ressaltando o contraste visual e a atmosfera sombria.\u003c\/p\u003e\n\u003cp data-sync-id=\"narration_5\"\u003eA peça inclui múltiplos retratos para The Batman Who Laughs e um braço esquerdo alternativo para o Robin King com garras estendidas.\u003c\/p\u003e\n\u003cp data-sync-id=\"narration_5_2\"\u003ePermitindo explorar diferentes expressões e a dualidade entre mestre e discípulo.\u003c\/p\u003e\n\u003cp data-sync-id=\"narration_6\"\u003eA escultura em polystone apresenta acabamento refinado.\u003c\/p\u003e\n\u003cp data-sync-id=\"narration_6_2\"\u003eTexturas realistas e pintura detalhada, destacando cada elemento visual e técnico da obra.\u003c\/p\u003e\n\u003cp data-sync-id=\"narration_7\"\u003eA versão Deluxe Bonus traz como extra exclusivo o braço esquerdo do Robin King segurando a cabeça do Batman.\u003c\/p\u003e\n\u003cp data-sync-id=\"narration_7_2\"\u003eCom o crânio exposto sob a máscara, ampliando as opções de exibição e o impacto dramático da peça.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv aria-hidden=\"true\" class=\"afb-spotlight-source afb-tts-hidden\" data-locale=\"pt-br\" data-nosnippet=\"true\"\u003e\n\u003cp data-alt=\"Foto horizontal da estátua The Batman Who Laughs \u0026amp; Robin King, imagem ActionFigureWorld\" data-caption=\"Cena cinematica da peca e da colecao em destaque\" data-fit=\"contain\" data-image=\"https:\/\/www.sideshow.com\/storage\/product-images\/9155883\/prime-1-studio-dc-comics-the-batman-who-laughs-robin-king-deluxe-bonus-version-1-3-scale-statue-gallery-69ea5b5e387eb.jpg\" data-kicker=\"Cena completa\" data-layout=\"standard\" data-sync-id=\"narration_2\" data-tone=\"definitive\" data-version-mode=\"\" data-version-title=\"\" data-visual-intent=\"general_scene\"\u003e\u003c\/p\u003e\n\u003cp data-alt=\"Estátua completa isolada The Batman Who Laughs \u0026amp; Robin King, imagem ActionFigureWorld\" data-caption=\"Base infernal e composicao da cena em destaque\" data-fit=\"contain\" data-image=\"https:\/\/www.sideshow.com\/storage\/product-images\/9155883\/prime-1-studio-dc-comics-the-batman-who-laughs-robin-king-deluxe-bonus-version-1-3-scale-statue-silo.png\" data-kicker=\"Cena completa\" data-layout=\"standard\" data-sync-id=\"narration_3\" data-tone=\"definitive\" data-version-mode=\"\" data-version-title=\"\" data-visual-intent=\"general_scene\"\u003e\u003c\/p\u003e\n\u003cp data-alt=\"Dimensões da base da estátua visíveis na imagem na ActionFigureWorld\" data-caption=\"Dimensões da base da estátua: 85 cm de altura por 67 cm de largura e profundidade\" data-fit=\"contain\" data-image=\"https:\/\/www.sideshow.com\/storage\/product-images\/9155883\/prime-1-studio-dc-comics-the-batman-who-laughs-robin-king-deluxe-bonus-version-1-3-scale-statue-gallery-69ea5b5e74362.jpg\" data-kicker=\"Medidas da peca\" data-layout=\"standard\" data-sync-id=\"narration_3\" data-tone=\"deluxe\" data-version-mode=\"\" data-version-title=\"\" data-visual-intent=\"dimensions\"\u003e\u003c\/p\u003e\n\u003cp data-alt=\"The Batman Who Laughs em pose dominante com armadura metálica na ActionFigureWorld\" data-caption=\"The Batman Who Laughs em pose dominante com armadura metálica e capa negra\" data-fit=\"cover\" data-image=\"https:\/\/www.sideshow.com\/storage\/product-images\/9155883\/prime-1-studio-dc-comics-the-batman-who-laughs-robin-king-deluxe-bonus-version-1-3-scale-statue-gallery-69ea5b5d42075.jpg\" data-kicker=\"Personagem em foco\" data-layout=\"standard\" data-sync-id=\"narration_4\" data-tone=\"definitive\" data-version-mode=\"\" data-version-title=\"\" data-visual-intent=\"main_character_pose\"\u003e\u003c\/p\u003e\n\u003cp data-alt=\"Detalhe do Robin King segurando caveira com máscara do Batman, imagem ActionFigureWorld\" data-caption=\"Robin King em foco com postura e expressao visiveis\" data-fit=\"cover\" data-image=\"https:\/\/www.sideshow.com\/storage\/product-images\/9155883\/prime-1-studio-dc-comics-the-batman-who-laughs-robin-king-deluxe-bonus-version-1-3-scale-statue-gallery-69ea5b5bb1f49.jpg\" data-kicker=\"Personagem secundario\" data-layout=\"standard\" data-sync-id=\"narration_4_2\" data-tone=\"definitive\" data-version-mode=\"\" data-version-title=\"\" data-visual-intent=\"secondary_character\"\u003e\u003c\/p\u003e\n\u003cp data-alt=\"Braço alternativo com garras segurando caveira do Batman, imagem ActionFigureWorld\" data-caption=\"Retratos, bracos e partes intercambiaveis em destaque\" data-fit=\"cover\" data-image=\"https:\/\/www.sideshow.com\/storage\/product-images\/9155883\/prime-1-studio-dc-comics-the-batman-who-laughs-robin-king-deluxe-bonus-version-1-3-scale-statue-scale-69ea5b5ec0521.jpg\" data-kicker=\"Partes e acessorios\" data-layout=\"standard\" data-sync-id=\"narration_5\" data-tone=\"prestige\" data-version-mode=\"\" data-version-title=\"\" data-visual-intent=\"accessories_parts\"\u003e\u003c\/p\u003e\n\u003cp data-alt=\"Partes intercambiáveis da estátua com retratos e braço alternativo na ActionFigureWorld\" data-caption=\"Retratos intercambiáveis e braço esquerdo alternativo com garras\" data-fit=\"cover\" data-image=\"https:\/\/www.sideshow.com\/storage\/product-images\/9155883\/prime-1-studio-dc-comics-the-batman-who-laughs-robin-king-deluxe-bonus-version-1-3-scale-statue-gallery-69ea5b5ddeed2.jpg\" data-kicker=\"Extra da versao\" data-layout=\"version-showcase\" data-sync-id=\"narration_5\" data-tone=\"bonus\" data-version-mode=\"bonus-extra\" data-version-title=\"Deluxe Bonus Version\" data-visual-intent=\"bonus_exclusive\"\u003e\u003c\/p\u003e\n\u003cp data-alt=\"Detalhes do acabamento e texturas da estátua na ActionFigureWorld\" data-caption=\"Acabamento refinado em polystone com texturas realistas e pintura detalhada\" data-fit=\"cover\" data-image=\"https:\/\/www.sideshow.com\/storage\/product-images\/9155883\/prime-1-studio-dc-comics-the-batman-who-laughs-robin-king-deluxe-bonus-version-1-3-scale-statue-gallery-69ea5b5ce901a.jpg\" data-kicker=\"Acabamento premium\" data-layout=\"standard\" data-sync-id=\"narration_6\" data-tone=\"prestige\" data-version-mode=\"\" data-version-title=\"\" data-visual-intent=\"texture_finish\"\u003e\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cscript\u003e\n    (function () {\n      const root = document.getElementById('afb-product-description');\n      if (!root) return;\n      const getById = function (id) { return root.querySelector('#' + id); };\n\n      const TTS_ENDPOINT = 'https:\/\/tts.actionfigurebrasil.com.br\/api\/tts';\n      const MERCHANT_HOLD_MS = 40000;\n      const ENDING_MS = 950;\n      const MIN_PREMIUM_LOADING_MS = 2800;\n      const ACTIVATION_LIT_DELAY_MS = 520;\n      const ACTIVATION_DOCKING_MS = 760;\n      const SPOTLIGHT_SHOW_DELAY_MS = 700;\n      const SPOTLIGHT_HOLD_MS = 12000;\n      const SPOTLIGHT_EXIT_MS = 1100;\n\n      const audioBtn = getById('afb-audio-btn');\n      const pauseBtn = getById('afb-audio-pause-btn');\n      const audioBtnLabel = getById('afb-audio-btn-label');\n      const voiceSelect = getById('afb-voice-select');\n      const voiceBox = voiceSelect ? voiceSelect.closest('.afb-voice-select-wrap') : null;\n      const langSelect = getById('afb-audio-language-select');\n      const langBox = getById('afb-lang-select');\n      const langBtn = getById('afb-lang-btn');\n      const langMenu = getById('afb-lang-menu');\n      const activationLabel = getById('afb-activation-label');\n      const stageBadgeLabel = getById('afb-stage-badge-label');\n      const stageTime = getById('afb-stage-time');\n      const stageCard = getById('afb-stage-card');\n      const stepsWrap = getById('afb-steps');\n      const narrationCopy = getById('afb-narration-copy');\n      const spotlightPanel = getById('afb-narration-spotlight');\n      const spotlightMedia = getById('afb-narration-spotlight-media');\n      const spotlightImage = getById('afb-narration-spotlight-image');\n      const spotlightKickerLabel = getById('afb-narration-spotlight-kicker-label');\n      const spotlightVersionWindow = getById('afb-narration-spotlight-version-window');\n      const spotlightVersionLabel = getById('afb-narration-spotlight-version-label');\n      const spotlightVersionTitle = getById('afb-narration-spotlight-version-title');\n      const spotlightVersionSubtitle = getById('afb-narration-spotlight-version-subtitle');\n      const spotlightCaption = getById('afb-narration-spotlight-caption');\n      const spotlightOriginalParent = spotlightPanel ? spotlightPanel.parentNode : null;\n      const spotlightOriginalNextSibling = spotlightPanel ? spotlightPanel.nextSibling : null;\n      const quoteTextEl = getById('afb-quote-text');\n      const merchantTitle = getById('afb-merchant-title');\n      const merchantImage = getById('afb-merchant-image');\n      const merchantBtn = getById('afb-merchant-btn');\n      const merchantBtnText = getById('afb-merchant-btn-text');\n      const merchantCustomBtn = getById('afb-merchant-custom-btn');\n      const merchantCustomBtnText = getById('afb-merchant-custom-btn-text');\n      const merchantKickerText = getById('afb-merchant-kicker-text');\n      const merchantSafeNote = getById('afb-merchant-safe-note');\n      const merchantPrice = getById('afb-merchant-price');\n      const merchantTimer = getById('afb-merchant-timer');\n      const merchantTimerText = getById('afb-merchant-timer-text');\n      const merchantHotspots = getById('afb-merchant-detail-hotspots');\n      const detailOverlay = getById('afb-detail-overlay');\n      const detailOverlayClose = getById('afb-detail-overlay-close');\n      const detailOverlayImage = getById('afb-detail-overlay-image');\n      const detailOverlayCaption = getById('afb-detail-overlay-caption');\n      const requiredElements = {\n        audioBtn,\n        audioBtnLabel,\n        voiceSelect,\n        langSelect,\n        activationLabel,\n        stageBadgeLabel,\n        stageTime,\n        stepsWrap,\n        narrationCopy,\n        spotlightPanel,\n        spotlightImage,\n        spotlightKickerLabel,\n        spotlightVersionWindow,\n        spotlightVersionLabel,\n        spotlightVersionTitle,\n        spotlightVersionSubtitle,\n        spotlightCaption,\n        quoteTextEl,\n        merchantTitle,\n        merchantImage,\n        merchantBtn,\n        merchantBtnText,\n        merchantKickerText,\n        merchantSafeNote,\n        merchantPrice,\n        merchantTimer,\n        merchantTimerText,\n        merchantHotspots\n      };\n      const missingRequiredElements = Object.entries(requiredElements)\n        .filter(function (entry) { return !entry[1]; })\n        .map(function (entry) { return entry[0]; });\n      if (missingRequiredElements.length) {\n        console.warn('AFB premium narration aborted: missing required elements', missingRequiredElements);\n        return;\n      }\n\n      let voiceBtn = null;\n      let voiceBtnLabelEl = null;\n      let voiceBtnMarkEl = null;\n      let voiceMenu = null;\n\n      let audio = new Audio();\n      audio.preload = 'auto';\n\n      let currentData = null;\n      let currentTimings = null;\n      let isLoading = false;\n      let rafId = null;\n      let holdTimer = null;\n      let endingTimer = null;\n      let merchantCountdownInterval = null;\n      let merchantCountdownTotal = 40;\n      let activationLitTimer = null;\n      let quoteWords = [];\n      let narrationParagraphEls = [];\n      let stepEls = [];\n      let spotlightMap = {};\n      let spotlightShowTimer = null;\n      let spotlightHideTimer = null;\n      let spotlightExitTimer = null;\n      let spotlightSlideTimer = null;\n      let spotlightRequestToken = 0;\n      let activeSpotlightKey = '';\n      let currentActiveIndex = -1;\n      let activeScrollTimer = null;\n      let merchantScrollTimer = null;\n      let merchantScrollDone = false;\n      let isPausedByUser = false;\n\n      const cache = new Map();\n      const productTitle = root.dataset.productTitle || 'Produto Premium';\n      const productVersionTitle = root.dataset.productVersion || '';\n      const productImage = root.dataset.productImage || '';\n      const productImageAlt = root.dataset.productImageAlt || productTitle;\n      const productPrice = root.dataset.productPrice || '0';\n      const checkoutUrl = root.dataset.checkoutUrl || '\/checkout';\n      const productUrl = root.dataset.productUrl || '';\n\n      if (productImage) merchantImage.src = productImage;\n      merchantImage.alt = productImageAlt;\n      merchantPrice.setAttribute('data-price', productPrice);\n\n      const localeFlagClasses = {\n        'pt-br': 'afb-flag-br',\n        'pt-pt': 'afb-flag-pt',\n        'en-us': 'afb-flag-us',\n        'en-gb': 'afb-flag-gb',\n        'es-latam': 'afb-flag-latam',\n        'es-es': 'afb-flag-es',\n        'fr-fr': 'afb-flag-fr',\n        'it-it': 'afb-flag-it',\n        'de-de': 'afb-flag-de',\n        'ja-jp': 'afb-flag-jp'\n      };\n\n      const UI = {\n        'pt-br': {\n          play: 'Ouvir Descrição',\n          loading: 'Preparando sua experiência...',\n          stop: 'Parar áudio',\n          close: 'Fechar',\n          badgePremium: 'Modo Narração Premium',\n          badgeEpic: 'Modo Narração Épica',\n          badgeClassic: 'Modo Narração Clássica',\n          premium: 'Experiência Premium',\n          epic: 'Experiência Épica',\n          classic: 'Experiência Clássica',\n          kicker: 'Disponibilidade limitada',\n          buy: 'COMPRE AGORA!',\n          customPay: 'Pagamento Personalizado',\n          priceTop: 'Em até',\n          pricePrefix: '10x de',\n          priceBottom: 'sem juros no cartão',\n          safe: 'Compra segura com a garantia \u003cstrong\u003eActionFigureBrasil\u003c\/strong\u003e'\n        },\n        'pt-pt': {\n          play: 'Ouvir Descrição',\n          loading: 'A preparar a sua experiência...',\n          stop: 'Parar áudio',\n          close: 'Fechar',\n          badgePremium: 'Modo Narração Premium',\n          badgeEpic: 'Modo Narração Épica',\n          badgeClassic: 'Modo Narração Clássica',\n          premium: 'Experiência Premium',\n          epic: 'Experiência Épica',\n          classic: 'Experiência Clássica',\n          kicker: 'Disponibilidade limitada',\n          buy: 'COMPRAR AGORA!',\n          customPay: 'Pagamento Personalizado',\n          priceTop: 'Em até',\n          pricePrefix: '10x de',\n          priceBottom: 'sem juros no cartão',\n          safe: 'Compra segura com a garantia \u003cstrong\u003eActionFigureWorld\u003c\/strong\u003e'\n        },\n        'en-us': {\n          play: 'Listen',\n          loading: 'Preparing your experience...',\n          stop: 'Stop audio',\n          close: 'Close',\n          badgePremium: 'Premium Narration Mode',\n          badgeEpic: 'Epic Narration Mode',\n          badgeClassic: 'Classic Narration Mode',\n          premium: 'Premium Experience',\n          epic: 'Epic Experience',\n          classic: 'Classic Experience',\n          kicker: 'Limited availability',\n          buy: 'BUY NOW!',\n          customPay: 'Custom Payment',\n          priceTop: 'Up to',\n          pricePrefix: '10x of',\n          priceBottom: 'interest-free on card',\n          safe: 'Secure purchase with \u003cstrong\u003eActionFigureWorld\u003c\/strong\u003e curation'\n        },\n        'en-gb': {\n          play: 'Listen',\n          loading: 'Preparing your experience...',\n          stop: 'Stop audio',\n          close: 'Close',\n          badgePremium: 'Premium Narration Mode',\n          badgeEpic: 'Epic Narration Mode',\n          badgeClassic: 'Classic Narration Mode',\n          premium: 'Premium Experience',\n          epic: 'Epic Experience',\n          classic: 'Classic Experience',\n          kicker: 'Limited availability',\n          buy: 'BUY NOW!',\n          customPay: 'Custom Payment',\n          priceTop: 'Up to',\n          pricePrefix: '10x of',\n          priceBottom: 'interest-free on card',\n          safe: 'Secure purchase with \u003cstrong\u003eActionFigureWorld\u003c\/strong\u003e curation'\n        },\n        'es-latam': {\n          play: 'Escuchar',\n          loading: 'Preparando tu experiencia...',\n          stop: 'Detener audio',\n          close: 'Cerrar',\n          badgePremium: 'Modo Narración Premium',\n          badgeEpic: 'Modo Narración Épica',\n          badgeClassic: 'Modo Narración Clásica',\n          premium: 'Experiencia Premium',\n          epic: 'Experiencia Épica',\n          classic: 'Experiencia Clásica',\n          kicker: 'Disponibilidad limitada',\n          buy: '¡COMPRAR AHORA!',\n          customPay: 'Pago Personalizado',\n          priceTop: 'Hasta',\n          pricePrefix: '10x de',\n          priceBottom: 'sin intereses en tarjeta',\n          safe: 'Compra segura con la curaduría de \u003cstrong\u003eActionFigureWorld\u003c\/strong\u003e'\n        },\n        'es-es': {\n          play: 'Escuchar',\n          loading: 'Preparando tu experiencia...',\n          stop: 'Detener audio',\n          close: 'Cerrar',\n          badgePremium: 'Modo Narración Premium',\n          badgeEpic: 'Modo Narración Épica',\n          badgeClassic: 'Modo Narración Clásica',\n          premium: 'Experiencia Premium',\n          epic: 'Experiencia Épica',\n          classic: 'Experiencia Clásica',\n          kicker: 'Disponibilidad limitada',\n          buy: '¡COMPRAR AHORA!',\n          customPay: 'Pago Personalizado',\n          priceTop: 'Hasta',\n          pricePrefix: '10x de',\n          priceBottom: 'sin intereses en tarjeta',\n          safe: 'Compra segura con la selección de \u003cstrong\u003eActionFigureWorld\u003c\/strong\u003e'\n        },\n        'fr-fr': {\n          play: 'Écouter',\n          loading: 'Préparation de votre expérience...',\n          stop: 'Arrêter',\n          close: 'Fermer',\n          badgePremium: 'Mode Narration Premium',\n          badgeEpic: 'Mode Narration Épique',\n          badgeClassic: 'Mode Narration Classique',\n          premium: 'Expérience Premium',\n          epic: 'Expérience Épique',\n          classic: 'Expérience Classique',\n          kicker: 'Disponibilité limitée',\n          buy: 'ACHETER MAINTENANT!',\n          customPay: 'Paiement Personnalisé',\n          priceTop: 'Jusqu’à',\n          pricePrefix: '10x de',\n          priceBottom: 'sans intérêt par carte',\n          safe: 'Achat sécurisé avec la sélection \u003cstrong\u003eActionFigureWorld\u003c\/strong\u003e'\n        },\n        'it-it': {\n          play: 'Ascolta',\n          loading: 'Preparazione della tua esperienza...',\n          stop: 'Ferma audio',\n          close: 'Chiudi',\n          badgePremium: 'Modalità Narrazione Premium',\n          badgeEpic: 'Modalità Narrazione Epica',\n          badgeClassic: 'Modalità Narrazione Classica',\n          premium: 'Esperienza Premium',\n          epic: 'Esperienza Epica',\n          classic: 'Esperienza Classica',\n          kicker: 'Disponibilità limitata',\n          buy: 'ACQUISTA ORA!',\n          customPay: 'Pagamento Personalizzato',\n          priceTop: 'Fino a',\n          pricePrefix: '10x da',\n          priceBottom: 'senza interessi con carta',\n          safe: 'Acquisto sicuro con la selezione \u003cstrong\u003eActionFigureWorld\u003c\/strong\u003e'\n        },\n        'de-de': {\n          play: 'Anhören',\n          loading: 'Ihr Erlebnis wird vorbereitet...',\n          stop: 'Audio stoppen',\n          close: 'Schließen',\n          badgePremium: 'Premium-Erzählmodus',\n          badgeEpic: 'Epischer Erzählmodus',\n          badgeClassic: 'Klassischer Erzählmodus',\n          premium: 'Premium-Erlebnis',\n          epic: 'Episches Erlebnis',\n          classic: 'Klassisches Erlebnis',\n          kicker: 'Begrenzte Verfügbarkeit',\n          buy: 'JETZT KAUFEN!',\n          customPay: 'Individuelle Zahlung',\n          priceTop: 'Bis zu',\n          pricePrefix: '10x von',\n          priceBottom: 'zinsfrei per Karte',\n          safe: 'Sicherer Kauf mit \u003cstrong\u003eActionFigureWorld\u003c\/strong\u003e Auswahl'\n        },\n        'ja-jp': {\n          play: '再生',\n          loading: '体験を準備しています...',\n          stop: '停止',\n          close: '閉じる',\n          badgePremium: 'プレミアム音声モード',\n          badgeEpic: 'エピック音声モード',\n          badgeClassic: 'クラシック音声モード',\n          premium: 'プレミアム体験',\n          epic: 'エピック体験',\n          classic: 'クラシック体験',\n          kicker: '在庫わずか',\n          buy: '今すぐ購入!',\n          customPay: '個別支払い',\n          priceTop: '最大',\n          pricePrefix: '10回払い',\n          priceBottom: 'カードで分割払い',\n          safe: '\u003cstrong\u003eActionFigureWorld\u003c\/strong\u003e のキュレーションで安心購入'\n        }\n      };\n\n      function getLocale() {\n        return langSelect ? (langSelect.value || root.dataset.defaultLocale || 'pt-br') : (root.dataset.defaultLocale || 'pt-br');\n      }\n\n      function getCopy() {\n        return UI[getLocale()] || UI['pt-br'];\n      }\n\n      function getVoicePresentationMap() {\n        const locale = getLocale();\n        const copy = getCopy();\n        const descriptions = {\n          'pt-br': {\n            premium: 'Equilíbrio entre atmosfera e clareza',\n            epic: 'Mais impacto dramático e presença',\n            classic: 'Leitura limpa, direta e elegante'\n          },\n          'pt-pt': {\n            premium: 'Equilíbrio entre atmosfera e clareza',\n            epic: 'Mais impacto dramático e presença',\n            classic: 'Leitura limpa, direta e elegante'\n          },\n          'en-us': {\n            premium: 'Balanced, refined and immersive',\n            epic: 'More cinematic intensity and punch',\n            classic: 'Clean, direct and elegant reading'\n          },\n          'en-gb': {\n            premium: 'Balanced, refined and immersive',\n            epic: 'More cinematic intensity and punch',\n            classic: 'Clean, direct and elegant reading'\n          },\n          'es-latam': {\n            premium: 'Equilibrio entre atmósfera y claridad',\n            epic: 'Más impacto dramático y presencia',\n            classic: 'Lectura limpia, directa y elegante'\n          },\n          'es-es': {\n            premium: 'Equilibrio entre atmósfera y claridad',\n            epic: 'Más impacto dramático y presencia',\n            classic: 'Lectura limpia, directa y elegante'\n          },\n          'fr-fr': {\n            premium: 'Équilibre entre atmosphère et clarté',\n            epic: 'Plus d’impact dramatique et de présence',\n            classic: 'Lecture nette, directe et élégante'\n          },\n          'it-it': {\n            premium: 'Equilibrio tra atmosfera e chiarezza',\n            epic: 'Più impatto drammatico e presenza',\n            classic: 'Lettura pulita, diretta ed elegante'\n          },\n          'de-de': {\n            premium: 'Balance aus Atmosphäre und Klarheit',\n            epic: 'Mehr dramatische Wucht und Präsenz',\n            classic: 'Klar, direkt und elegant gelesen'\n          },\n          'ja-jp': {\n            premium: '雰囲気と明瞭さのバランス',\n            epic: 'よりドラマチックで力強い演出',\n            classic: '端正でまっすぐな読み上げ'\n          }\n        };\n        const currentDescriptions = descriptions[locale] || descriptions['pt-br'];\n        return {\n          premium: { label: copy.premium, desc: currentDescriptions.premium, mark: '✦' },\n          epic: { label: copy.epic, desc: currentDescriptions.epic, mark: '⚡' },\n          classic: { label: copy.classic, desc: currentDescriptions.classic, mark: '◦' }\n        };\n      }\n\n      function ensureVoiceControl() {\n        if (!voiceBox || !voiceSelect) return;\n\n        voiceSelect.classList.add('afb-native-select-hidden');\n        voiceSelect.setAttribute('aria-hidden', 'true');\n        voiceSelect.setAttribute('tabindex', '-1');\n\n        if (!voiceBtn) voiceBtn = voiceBox.querySelector('#afb-voice-btn');\n        if (!voiceMenu) voiceMenu = voiceBox.querySelector('#afb-voice-menu');\n        if (!voiceBtnLabelEl \u0026\u0026 voiceBtn) voiceBtnLabelEl = voiceBtn.querySelector('.afb-voice-btn-label');\n        if (!voiceBtnMarkEl \u0026\u0026 voiceBtn) voiceBtnMarkEl = voiceBtn.querySelector('.afb-voice-btn-mark');\n\n        if (voiceBtn \u0026\u0026 voiceMenu \u0026\u0026 voiceBtnLabelEl \u0026\u0026 voiceBtnMarkEl) return;\n\n        voiceBtn = document.createElement('button');\n        voiceBtn.type = 'button';\n        voiceBtn.className = 'afb-voice-btn';\n        voiceBtn.id = 'afb-voice-btn';\n        voiceBtn.setAttribute('aria-label', 'Escolher estilo da narração');\n        voiceBtn.setAttribute('aria-expanded', 'false');\n        voiceBtn.innerHTML =\n          '\u003cspan class=\"afb-voice-btn-copy\"\u003e' +\n            '\u003cspan class=\"afb-voice-btn-mark\" aria-hidden=\"true\"\u003e✦\u003c\/span\u003e' +\n            '\u003cspan class=\"afb-voice-btn-label\"\u003e\u003c\/span\u003e' +\n          '\u003c\/span\u003e';\n\n        voiceMenu = document.createElement('div');\n        voiceMenu.className = 'afb-voice-menu';\n        voiceMenu.id = 'afb-voice-menu';\n\n        ['premium', 'epic', 'classic'].forEach(function (value) {\n          const option = document.createElement('button');\n          option.type = 'button';\n          option.className = 'afb-voice-option';\n          option.setAttribute('data-value', value);\n          option.innerHTML =\n            '\u003cspan class=\"afb-voice-option-mark\" aria-hidden=\"true\"\u003e\u003c\/span\u003e' +\n            '\u003cspan class=\"afb-voice-option-copy\"\u003e' +\n              '\u003cspan class=\"afb-voice-option-title\"\u003e\u003c\/span\u003e' +\n              '\u003cspan class=\"afb-voice-option-desc\"\u003e\u003c\/span\u003e' +\n            '\u003c\/span\u003e';\n          voiceMenu.appendChild(option);\n        });\n\n        voiceBox.appendChild(voiceBtn);\n        voiceBox.appendChild(voiceMenu);\n\n        voiceBtnLabelEl = voiceBtn.querySelector('.afb-voice-btn-label');\n        voiceBtnMarkEl = voiceBtn.querySelector('.afb-voice-btn-mark');\n      }\n\n      function syncVoiceControl() {\n        ensureVoiceControl();\n        if (!voiceBtn || !voiceMenu || !voiceSelect) return;\n\n        const presentations = getVoicePresentationMap();\n        const selectedValue = voiceSelect.value || 'epic';\n        const selected = presentations[selectedValue] || presentations.epic || presentations.premium;\n\n        voiceBtn.dataset.voice = selectedValue;\n        voiceBtn.setAttribute('aria-expanded', voiceBox.classList.contains('is-open') ? 'true' : 'false');\n        voiceBtn.setAttribute('aria-label', selected.label);\n        if (voiceBtnLabelEl) voiceBtnLabelEl.textContent = selected.label;\n        if (voiceBtnMarkEl) voiceBtnMarkEl.textContent = selected.mark;\n\n        Array.from(voiceMenu.querySelectorAll('button[data-value]')).forEach(function (button) {\n          const value = button.getAttribute('data-value');\n          const item = presentations[value] || presentations.epic || presentations.premium;\n          const titleEl = button.querySelector('.afb-voice-option-title');\n          const descEl = button.querySelector('.afb-voice-option-desc');\n          if (titleEl) titleEl.textContent = item.label;\n          if (descEl) descEl.textContent = item.desc;\n          button.classList.toggle('is-selected', value === selectedValue);\n        });\n      }\n\n      function getCurrentTTSSource() {\n        return (\n          root.querySelector('.afb-tts-source[data-locale=\"' + getLocale() + '\"]') ||\n          root.querySelector('.afb-tts-source[data-locale=\"' + (root.dataset.defaultLocale || 'pt-br') + '\"]') ||\n          root.querySelector('.afb-tts-source[data-locale=\"pt-br\"]')\n        );\n      }\n\n      function getCurrentNarrationSource() {\n        return (\n          root.querySelector('.afb-narration-source[data-locale=\"' + getLocale() + '\"]') ||\n          root.querySelector('.afb-narration-source[data-locale=\"' + (root.dataset.defaultLocale || 'pt-br') + '\"]') ||\n          root.querySelector('.afb-narration-source[data-locale=\"pt-br\"]')\n        );\n      }\n\n      function getCurrentSpotlightSource() {\n        return (\n          root.querySelector('.afb-spotlight-source[data-locale=\"' + getLocale() + '\"]') ||\n          root.querySelector('.afb-spotlight-source[data-locale=\"' + (root.dataset.defaultLocale || 'pt-br') + '\"]') ||\n          root.querySelector('.afb-spotlight-source[data-locale=\"pt-br\"]')\n        );\n      }\n\n      function getNarrationSpotlightMap() {\n        const source = getCurrentSpotlightSource();\n        const map = {};\n        if (!source) return map;\n\n        Array.from(source.querySelectorAll('p[data-sync-id][data-image]')).forEach(function (item) {\n          const syncId = item.getAttribute('data-sync-id') || '';\n          const image = item.getAttribute('data-image') || '';\n          if (!syncId || !image) return;\n          const spotlightItem = {\n            image: image,\n            alt: item.getAttribute('data-alt') || '',\n            kicker: item.getAttribute('data-kicker') || 'Detalhe em cena',\n            caption: item.getAttribute('data-caption') || 'Detalhe visual destacado na narração',\n            fit: item.getAttribute('data-fit') || 'contain',\n            tone: item.getAttribute('data-tone') || root.dataset.bodyThemeKey || 'standard',\n            layout: item.getAttribute('data-layout') || 'standard',\n            versionMode: item.getAttribute('data-version-mode') || '',\n            versionTitle: item.getAttribute('data-version-title') || ''\n          };\n          if (!map[syncId]) {\n            map[syncId] = spotlightItem;\n            map[syncId].slides = [spotlightItem];\n          } else {\n            map[syncId].slides = map[syncId].slides || [map[syncId]];\n            map[syncId].slides.push(spotlightItem);\n          }\n        });\n        return map;\n      }\n\n      function getSpotlightItemForSyncId(syncId) {\n        if (!spotlightMap || !syncId) return null;\n        if (spotlightMap[syncId]) return spotlightMap[syncId];\n        return null;\n      }\n\n      function getSpotlightVersionTexts(item) {\n        const locale = getLocale();\n        const mode = (item \u0026\u0026 item.versionMode) || 'version-overview';\n        const textsByLocale = {\n          'pt-br': {\n            'bonus-extra': { label: 'Extra da versão', subtitle: 'Acessório especial da variante ativa em destaque visual.' },\n            'display-parts': { label: 'Versão expandida', subtitle: 'Configuração com partes extras e opções mais completas de display.' },\n            'prestige-line': { label: 'Linha em foco', subtitle: 'Leitura premium da linha com presença forte de coleção.' },\n            'exclusive-edition': { label: 'Edição especial', subtitle: 'Diferenciais visuais de uma variante mais rara e especial.' },\n            'version-overview': { label: 'Versão em destaque', subtitle: 'Janela visual dedicada aos diferenciais da variante selecionada.' }\n          },\n          'pt-pt': {\n            'bonus-extra': { label: 'Extra da versão', subtitle: 'Acessório especial da variante ativa em destaque visual.' },\n            'display-parts': { label: 'Versão expandida', subtitle: 'Configuração com peças extra e opções mais completas de exposição.' },\n            'prestige-line': { label: 'Linha em foco', subtitle: 'Leitura premium da linha com forte presença de coleção.' },\n            'exclusive-edition': { label: 'Edição especial', subtitle: 'Diferenciais visuais de uma variante mais rara e especial.' },\n            'version-overview': { label: 'Versão em destaque', subtitle: 'Janela visual dedicada aos diferenciais da variante selecionada.' }\n          },\n          'en-us': {\n            'bonus-extra': { label: 'Version Extra', subtitle: 'A signature bonus accessory from the active variant.' },\n            'display-parts': { label: 'Expanded Version', subtitle: 'Extra parts and broader display options from this version.' },\n            'prestige-line': { label: 'Line Focus', subtitle: 'A premium line presentation with stronger shelf presence.' },\n            'exclusive-edition': { label: 'Special Edition', subtitle: 'Visual differentials from a rarer and more special variant.' },\n            'version-overview': { label: 'Version Focus', subtitle: 'A dedicated visual window for the selected variant.' }\n          },\n          'en-gb': {\n            'bonus-extra': { label: 'Version Extra', subtitle: 'A signature bonus accessory from the active variant.' },\n            'display-parts': { label: 'Expanded Version', subtitle: 'Extra parts and broader display options from this version.' },\n            'prestige-line': { label: 'Line Focus', subtitle: 'A premium line presentation with stronger shelf presence.' },\n            'exclusive-edition': { label: 'Special Edition', subtitle: 'Visual differentials from a rarer and more special variant.' },\n            'version-overview': { label: 'Version Focus', subtitle: 'A dedicated visual window for the selected variant.' }\n          },\n          'es-latam': {\n            'bonus-extra': { label: 'Extra de versión', subtitle: 'Accesorio especial de la variante activa en destaque visual.' },\n            'display-parts': { label: 'Versión ampliada', subtitle: 'Configuración con piezas extra y opciones más completas de exhibición.' },\n            'prestige-line': { label: 'Línea en foco', subtitle: 'Lectura premium de la línea con fuerte presencia de colección.' },\n            'exclusive-edition': { label: 'Edición especial', subtitle: 'Diferenciales visuales de una variante más rara y especial.' },\n            'version-overview': { label: 'Versión destacada', subtitle: 'Ventana visual dedicada a los diferenciales de la variante seleccionada.' }\n          },\n          'es-es': {\n            'bonus-extra': { label: 'Extra de versión', subtitle: 'Accesorio especial de la variante activa en destaque visual.' },\n            'display-parts': { label: 'Versión ampliada', subtitle: 'Configuración con piezas extra y opciones más completas de exhibición.' },\n            'prestige-line': { label: 'Línea en foco', subtitle: 'Lectura premium de la línea con fuerte presencia de colección.' },\n            'exclusive-edition': { label: 'Edición especial', subtitle: 'Diferenciales visuales de una variante más rara y especial.' },\n            'version-overview': { label: 'Versión destacada', subtitle: 'Ventana visual dedicada a los diferenciales de la variante seleccionada.' }\n          },\n          'fr-fr': {\n            'bonus-extra': { label: 'Extra de version', subtitle: 'Accessoire spécial de la variante active en mise en avant visuelle.' },\n            'display-parts': { label: 'Version enrichie', subtitle: 'Pièces supplémentaires et options de présentation plus complètes.' },\n            'prestige-line': { label: 'Ligne en focus', subtitle: 'Lecture premium de la ligne avec une forte présence de collection.' },\n            'exclusive-edition': { label: 'Edition spéciale', subtitle: 'Différentiels visuels d’une variante plus rare et spéciale.' },\n            'version-overview': { label: 'Version mise en avant', subtitle: 'Fenêtre visuelle dédiée aux différentiels de la variante sélectionnée.' }\n          },\n          'it-it': {\n            'bonus-extra': { label: 'Extra versione', subtitle: 'Accessorio speciale della variante attiva in evidenza visiva.' },\n            'display-parts': { label: 'Versione estesa', subtitle: 'Configurazione con parti extra e opzioni di display più complete.' },\n            'prestige-line': { label: 'Linea in focus', subtitle: 'Lettura premium della linea con forte presenza da collezione.' },\n            'exclusive-edition': { label: 'Edizione speciale', subtitle: 'Differenze visive di una variante più rara e speciale.' },\n            'version-overview': { label: 'Versione in evidenza', subtitle: 'Finestra visiva dedicata ai differenziali della variante selezionata.' }\n          },\n          'de-de': {\n            'bonus-extra': { label: 'Versions-Extra', subtitle: 'Besonderes Zubehör der aktiven Variante im visuellen Fokus.' },\n            'display-parts': { label: 'Erweiterte Version', subtitle: 'Zusatzteile und umfassendere Display-Optionen dieser Version.' },\n            'prestige-line': { label: 'Linie im Fokus', subtitle: 'Premium-Linienauftritt mit stärkerer Sammlerpräsenz.' },\n            'exclusive-edition': { label: 'Sonderedition', subtitle: 'Visuelle Differenziale einer selteneren und besonderen Variante.' },\n            'version-overview': { label: 'Version im Fokus', subtitle: 'Eigenes visuelles Fenster für die ausgewählte Variante.' }\n          },\n          'ja-jp': {\n            'bonus-extra': { label: 'バージョン特典', subtitle: '選択中バリアントの特別アクセサリーを強調表示。' },\n            'display-parts': { label: '拡張バージョン', subtitle: '追加パーツとより広いディスプレイ表現をまとめて表示。' },\n            'prestige-line': { label: 'ラインフォーカス', subtitle: 'コレクション映えするプレミアムラインの見せ場。' },\n            'exclusive-edition': { label: '特別版', subtitle: 'より希少で特別なバリアントの視覚的な違いを提示。' },\n            'version-overview': { label: 'バージョンフォーカス', subtitle: '選択中バリアントの魅力を見せる専用ウィンドウ。' }\n          }\n        };\n        const localeTexts = textsByLocale[locale] || textsByLocale['pt-br'];\n        return localeTexts[mode] || localeTexts['version-overview'];\n      }\n\n      function getTTSSegments() {\n        const source = getCurrentTTSSource();\n        if (!source) return [];\n\n        return Array.from(source.querySelectorAll('p'))\n          .map(function (p, index) {\n            const text = p.textContent.replace(\/\\s+\/g, ' ').trim();\n            if (!text) return null;\n\n            const fallbackId = index === 0 ? 'intro' : 'narration_' + index;\n            const id = p.getAttribute('data-sync-id') || fallbackId;\n            const role = p.getAttribute('data-sync-role') || (\n              id === 'intro' ? 'intro' :\n              id === 'merchant' ? 'merchant' :\n              'narration'\n            );\n\n            return { id: id, role: role, text: text };\n          })\n          .filter(Boolean);\n      }\n\n      function getNarrationParagraphs() {\n        const source = getCurrentNarrationSource();\n        if (!source) return [];\n\n        return Array.from(source.querySelectorAll('p'))\n          .map(function (p, index) {\n            const text = p.textContent.replace(\/\\s+\/g, ' ').trim();\n            if (!text) return null;\n\n            return {\n              id: p.getAttribute('data-sync-id') || 'narration_' + (index + 1),\n              text: text\n            };\n          })\n          .filter(Boolean);\n      }\n\n      function escapeHTML(value) {\n        return String(value || '')\n          .replace(\/\u0026\/g, '\u0026amp;')\n          .replace(\/\u003c\/g, '\u0026lt;')\n          .replace(\/\u003e\/g, '\u0026gt;')\n          .replace(\/\"\/g, '\u0026quot;')\n          .replace(\/'\/g, '\u0026#039;');\n      }\n\n      function formatBRL(value) {\n        return value.toLocaleString('pt-BR', { style: 'currency', currency: 'BRL' });\n      }\n\n      function renderMerchantTitleCinematic(title) {\n        const cleanTitle = String(title || '').replace(\/\\s+\/g, ' ').trim();\n        if (!cleanTitle) {\n          merchantTitle.textContent = '';\n          return;\n        }\n\n        const words = cleanTitle.split(' ');\n        let html = '\u003cspan class=\"afb-merchant-title-line\"\u003e';\n        words.forEach(function (word, index) {\n          const delay = Math.min(index * 36, 640);\n          html += '\u003cspan class=\"afb-merchant-title-word\" style=\"--afb-word-delay:' + delay + 'ms\"\u003e' + escapeHTML(word) + '\u003c\/span\u003e';\n          if (index \u003c words.length - 1) html += ' ';\n        });\n        html += '\u003c\/span\u003e';\n        merchantTitle.innerHTML = html;\n      }\n\n      function updateMerchantPrice() {\n        const copy = getCopy();\n        let total = parseFloat(String(productPrice || '0').replace(',', '.'));\n        if (!isFinite(total)) total = 0;\n        const installment = total \/ 10;\n        merchantPrice.innerHTML =\n          '\u003cspan class=\"afb-merchant-price-top\"\u003e' + escapeHTML(copy.priceTop) + '\u003c\/span\u003e' +\n          '\u003cspan class=\"afb-merchant-price-main\"\u003e' + escapeHTML(copy.pricePrefix) + ' \u003cspan class=\"afb-merchant-price-amount\"\u003e' + formatBRL(installment) + '\u003c\/span\u003e\u003c\/span\u003e' +\n          '\u003cspan class=\"afb-merchant-price-bottom\"\u003e' + escapeHTML(copy.priceBottom) + '\u003c\/span\u003e';\n      }\n\n      function buildCustomPaymentWhatsappUrl() {\n        const fallbackProductUrl = (\n          productUrl ||\n          (\n            window.location \u0026\u0026\n            \/^https?:\/i.test(String(window.location.href || '')) \u0026\u0026\n            !\/\\\/checkout(?:[\/?#]|$)\/i.test(String(window.location.href || ''))\n              ? window.location.href\n              : ''\n          ) ||\n          checkoutUrl\n        );\n        const message = [\n          'Olá! Quero um pagamento personalizado para este produto.',\n          'Produto: ' + productTitle\n        ];\n        if (fallbackProductUrl) {\n          message.push('URL: ' + fallbackProductUrl);\n        }\n        return 'https:\/\/wa.me\/5531994025018?text=' + encodeURIComponent(message.join('\\n'));\n      }\n\n      function applyMerchantImageRatioClass() {\n        const figure = merchantImage \u0026\u0026 merchantImage.closest('.afb-merchant-figure');\n        if (!figure) return;\n\n        function apply() {\n          const w = merchantImage.naturalWidth || 0;\n          const h = merchantImage.naturalHeight || 0;\n          figure.classList.remove('is-portrait', 'is-landscape', 'is-square', 'is-tall', 'is-wide');\n          if (!w || !h) {\n            figure.classList.add('is-square');\n            return;\n          }\n\n          const ratio = w \/ h;\n          figure.style.setProperty('--afb-img-ratio', ratio.toFixed(3));\n          if (ratio \u003c 0.58) {\n            figure.classList.add('is-portrait', 'is-tall');\n          } else if (ratio \u003c 0.82) {\n            figure.classList.add('is-portrait');\n          } else if (ratio \u003e 1.75) {\n            figure.classList.add('is-landscape', 'is-wide');\n          } else if (ratio \u003e 1.22) {\n            figure.classList.add('is-landscape');\n          } else {\n            figure.classList.add('is-square');\n          }\n        }\n\n        if (merchantImage.complete \u0026\u0026 merchantImage.naturalWidth) {\n          apply();\n        } else {\n          merchantImage.addEventListener('load', apply, { once: true });\n          merchantImage.addEventListener('error', function () {\n            figure.classList.remove('is-portrait', 'is-landscape', 'is-tall', 'is-wide');\n            figure.classList.add('is-square');\n          }, { once: true });\n        }\n      }\n\n      function updateStageBadge() {\n        const copy = getCopy();\n        const labels = {\n          premium: copy.badgePremium,\n          epic: copy.badgeEpic,\n          classic: copy.badgeClassic\n        };\n        const label = labels[voiceSelect.value] || labels.epic || labels.premium;\n        stageBadgeLabel.textContent = label;\n        if (activationLabel) activationLabel.textContent = label;\n      }\n\n      function updateUITranslations() {\n        const copy = getCopy();\n        const premiumOption = voiceSelect.querySelector('option[value=\"premium\"]');\n        const epicOption = voiceSelect.querySelector('option[value=\"epic\"]');\n        const classicOption = voiceSelect.querySelector('option[value=\"classic\"]');\n\n        if (premiumOption) premiumOption.textContent = copy.premium;\n        if (epicOption) epicOption.textContent = copy.epic;\n        if (classicOption) classicOption.textContent = copy.classic;\n\n        merchantKickerText.textContent = copy.kicker;\n        merchantBtnText.textContent = copy.buy;\n        if (merchantCustomBtnText) merchantCustomBtnText.textContent = copy.customPay || 'Pagamento Personalizado';\n        merchantSafeNote.innerHTML = copy.safe;\n\n        syncVoiceControl();\n        updateStageBadge();\n        updateMerchantPrice();\n        updateButtonState();\n      }\n\n      function buildQuoteWords() {\n        const source = getCurrentNarrationSource();\n        const rawText = (\n          source \u0026\u0026 source.getAttribute('data-quote')\n            ? source.getAttribute('data-quote')\n            : quoteTextEl.textContent\n        ).replace(\/\\s+\/g, ' ').trim();\n\n        const words = rawText.split(\/\\s+\/).filter(Boolean);\n        quoteTextEl.innerHTML = '';\n        quoteWords = [];\n\n        words.forEach(function (word) {\n          const span = document.createElement('span');\n          span.className = 'afb-quote-word';\n          span.textContent = word;\n          quoteTextEl.appendChild(span);\n          quoteWords.push(span);\n        });\n      }\n\n      function setQuoteRevealProgress(progress) {\n        if (!quoteWords.length) return;\n\n        const total = quoteWords.length;\n        const visibleCount = Math.max(0, Math.min(total, Math.ceil(progress * total)));\n        quoteWords.forEach(function (word, index) {\n          word.classList.toggle('is-visible', index \u003c visibleCount);\n        });\n      }\n\n      function restoreSpotlightPanelPlacement() {\n        if (!spotlightPanel || !spotlightOriginalParent) return;\n        if (spotlightOriginalNextSibling \u0026\u0026 spotlightOriginalNextSibling.parentNode === spotlightOriginalParent) {\n          spotlightOriginalParent.insertBefore(spotlightPanel, spotlightOriginalNextSibling);\n          return;\n        }\n        spotlightOriginalParent.appendChild(spotlightPanel);\n      }\n\n      function updateDesktopSpotlightPosition(activeEl) {\n        if (!spotlightPanel) return;\n        if (isMobileNarrationViewport()) {\n          spotlightPanel.style.removeProperty('top');\n          return;\n        }\n        if (!activeEl || !narrationCopy || !stageCard) {\n          spotlightPanel.style.removeProperty('top');\n          return;\n        }\n        window.requestAnimationFrame(function () {\n          const panelHeight = spotlightPanel.offsetHeight || 0;\n          const paragraphTop = (narrationCopy.offsetTop || 0) + (activeEl.offsetTop || 0);\n          const desiredTop = Math.max(82, paragraphTop - panelHeight - 18);\n          const maxTop = Math.max(82, (stageCard.clientHeight || 0) - panelHeight - 18);\n          spotlightPanel.style.top = Math.min(desiredTop, maxTop) + 'px';\n        });\n      }\n\n      function preloadSpotlightImage(url, callback) {\n        if (!url) {\n          callback();\n          return;\n        }\n        if (spotlightImage \u0026\u0026 spotlightImage.getAttribute('src') === url \u0026\u0026 spotlightImage.complete) {\n          callback();\n          return;\n        }\n        const probe = new Image();\n        let settled = false;\n        function done() {\n          if (settled) return;\n          settled = true;\n          callback();\n        }\n        probe.onload = done;\n        probe.onerror = done;\n        probe.src = url;\n      }\n\n      function getSpotlightShowDelay() {\n        return isMobileNarrationViewport() ? 120 : SPOTLIGHT_SHOW_DELAY_MS;\n      }\n\n      function syncSpotlightPanelPlacement(activeEl) {\n        if (!spotlightPanel) return;\n        if (!isMobileNarrationViewport()) {\n          restoreSpotlightPanelPlacement();\n          updateDesktopSpotlightPosition(activeEl);\n          return;\n        }\n        spotlightPanel.style.removeProperty('top');\n        if (!activeEl || !activeEl.parentNode) {\n          restoreSpotlightPanelPlacement();\n          return;\n        }\n        if (activeEl.nextSibling !== spotlightPanel) {\n          activeEl.parentNode.insertBefore(spotlightPanel, activeEl.nextSibling);\n        }\n      }\n\n      function buildNarrationBlocks() {\n        const paragraphs = getNarrationParagraphs();\n        spotlightMap = getNarrationSpotlightMap();\n        renderMerchantDetailHotspots();\n        restoreSpotlightPanelPlacement();\n        narrationCopy.innerHTML = '';\n        narrationParagraphEls = [];\n        stepsWrap.innerHTML = '';\n        stepEls = [];\n\n        paragraphs.forEach(function (item) {\n          const p = document.createElement('p');\n          p.textContent = item.text;\n          p.dataset.syncId = item.id;\n          p.classList.add('is-future');\n          if (getSpotlightItemForSyncId(item.id)) p.classList.add('has-spotlight');\n          p.setAttribute('role', 'button');\n          p.setAttribute('tabindex', '0');\n          p.setAttribute('aria-label', 'Voltar para este trecho da narração');\n          p.addEventListener('click', function () {\n            jumpToSyncId(item.id);\n          });\n          p.addEventListener('keydown', function (event) {\n            if (event.key === 'Enter' || event.key === ' ') {\n              event.preventDefault();\n              jumpToSyncId(item.id);\n            }\n          });\n          narrationCopy.appendChild(p);\n          narrationParagraphEls.push(p);\n\n          const step = document.createElement('div');\n          step.className = 'afb-step';\n          step.dataset.syncId = item.id;\n          if (getSpotlightItemForSyncId(item.id)) step.classList.add('has-spotlight');\n          step.setAttribute('role', 'button');\n          step.setAttribute('tabindex', '0');\n          step.setAttribute('aria-label', 'Voltar para este trecho da narração');\n          step.addEventListener('click', function () {\n            jumpToSyncId(item.id);\n          });\n          step.addEventListener('keydown', function (event) {\n            if (event.key === 'Enter' || event.key === ' ') {\n              event.preventDefault();\n              jumpToSyncId(item.id);\n            }\n          });\n          stepsWrap.appendChild(step);\n          stepEls.push(step);\n        });\n      }\n\n      function getSpotlightItems() {\n        const seen = {};\n        return Object.keys(spotlightMap || {})\n          .map(function (key) {\n            const item = spotlightMap[key] || {};\n            return {\n              key: key,\n              image: item.image || '',\n              caption: item.caption || 'Detalhe visual destacado na narração'\n            };\n          })\n          .filter(function (item) {\n            if (!item.image || seen[item.image]) return false;\n            seen[item.image] = true;\n            return true;\n          });\n      }\n\n      function openDetailOverlay(image, caption) {\n        if (!detailOverlay || !detailOverlayImage || !detailOverlayCaption || !image) return;\n        detailOverlayImage.src = image;\n        detailOverlayImage.alt = caption || productTitle;\n        detailOverlayCaption.textContent = caption || 'Detalhe visual destacado na narração';\n        detailOverlay.classList.add('is-open');\n        detailOverlay.setAttribute('aria-hidden', 'false');\n      }\n\n      function closeDetailOverlay() {\n        if (!detailOverlay) return;\n        detailOverlay.classList.remove('is-open');\n        detailOverlay.setAttribute('aria-hidden', 'true');\n      }\n\n      function isMobileNarrationViewport() {\n        return window.matchMedia \u0026\u0026 window.matchMedia('(max-width: 768px)').matches;\n      }\n\n      function scrollElementSoftly(element, block) {\n        if (!element || !isMobileNarrationViewport()) return;\n        try {\n          element.scrollIntoView({ behavior: 'smooth', block: block || 'center', inline: 'nearest' });\n        } catch (error) {\n          element.scrollIntoView();\n        }\n      }\n\n      function scrollActiveNarrationIntoView(element) {\n        if (!element || !isMobileNarrationViewport()) return;\n        if (activeScrollTimer) clearTimeout(activeScrollTimer);\n        activeScrollTimer = setTimeout(function () {\n          scrollElementSoftly(element, 'start');\n          activeScrollTimer = null;\n        }, 180);\n      }\n\n      function scrollMerchantIntoView() {\n        if (!isMobileNarrationViewport() || merchantScrollDone) return;\n        merchantScrollDone = true;\n        if (merchantScrollTimer) clearTimeout(merchantScrollTimer);\n        merchantScrollTimer = setTimeout(function () {\n          const target = document.getElementById('afb-stage-card') || document.getElementById('afb-merchant-panel');\n          scrollElementSoftly(target, 'start');\n          merchantScrollTimer = null;\n        }, 360);\n      }\n\n      function renderMerchantDetailHotspots() {\n        if (!merchantHotspots) return;\n        const items = getSpotlightItems().slice(0, 4);\n        merchantHotspots.innerHTML = '';\n        merchantHotspots.style.display = items.length ? '' : 'none';\n\n        items.forEach(function (item, index) {\n          const button = document.createElement('button');\n          button.type = 'button';\n          button.className = 'afb-merchant-detail-hotspot';\n          button.setAttribute('aria-label', item.caption || 'Abrir detalhe visual');\n\n          const copy = document.createElement('span');\n          copy.className = 'afb-merchant-detail-hotspot-copy';\n          const title = document.createElement('span');\n          title.className = 'afb-merchant-detail-hotspot-title';\n          title.textContent = 'Detalhe ' + (index + 1);\n          const caption = document.createElement('span');\n          caption.className = 'afb-merchant-detail-hotspot-caption';\n          caption.textContent = item.caption || 'Ver detalhe da peça';\n          copy.appendChild(title);\n          copy.appendChild(caption);\n          button.appendChild(copy);\n\n          button.addEventListener('click', function (event) {\n            event.preventDefault();\n            event.stopPropagation();\n            openDetailOverlay(item.image, item.caption);\n          });\n          merchantHotspots.appendChild(button);\n        });\n      }\n\n      function clearSpotlightTimers() {\n        if (spotlightShowTimer) {\n          clearTimeout(spotlightShowTimer);\n          spotlightShowTimer = null;\n        }\n        if (spotlightHideTimer) {\n          clearTimeout(spotlightHideTimer);\n          spotlightHideTimer = null;\n        }\n        if (spotlightExitTimer) {\n          clearTimeout(spotlightExitTimer);\n          spotlightExitTimer = null;\n        }\n        if (spotlightSlideTimer) {\n          clearTimeout(spotlightSlideTimer);\n          spotlightSlideTimer = null;\n        }\n      }\n\n      function hideNarrationSpotlight(immediate) {\n        if (!spotlightPanel) return;\n        clearSpotlightTimers();\n        spotlightRequestToken += 1;\n        activeSpotlightKey = '';\n\n        if (immediate) {\n          spotlightPanel.classList.remove('is-visible', 'is-exiting', 'is-switching', 'is-deluxe', 'is-exclusive', 'is-bonus', 'is-prestige', 'is-version-showcase');\n          spotlightPanel.setAttribute('aria-hidden', 'true');\n          return;\n        }\n\n        if (!spotlightPanel.classList.contains('is-visible')) {\n          spotlightPanel.classList.remove('is-exiting', 'is-switching');\n          spotlightPanel.setAttribute('aria-hidden', 'true');\n          return;\n        }\n\n        spotlightPanel.classList.remove('is-visible');\n        spotlightPanel.classList.add('is-exiting', 'is-switching');\n        spotlightExitTimer = setTimeout(function () {\n          spotlightPanel.classList.remove('is-exiting', 'is-switching', 'is-deluxe', 'is-exclusive', 'is-bonus', 'is-prestige', 'is-version-showcase');\n          spotlightPanel.setAttribute('aria-hidden', 'true');\n          spotlightExitTimer = null;\n        }, SPOTLIGHT_EXIT_MS);\n      }\n\n      function showNarrationSpotlight(syncId) {\n        if (!spotlightPanel || !spotlightImage || !spotlightCaption) return;\n        const item = getSpotlightItemForSyncId(syncId);\n        if (!item || !item.image) {\n          hideNarrationSpotlight(false);\n          return;\n        }\n        if (activeSpotlightKey === syncId \u0026\u0026 spotlightPanel.classList.contains('is-visible')) return;\n\n        clearSpotlightTimers();\n        if (spotlightPanel.classList.contains('is-visible')) {\n          spotlightPanel.classList.remove('is-visible');\n          spotlightPanel.classList.add('is-exiting', 'is-switching');\n        }\n\n        const requestToken = ++spotlightRequestToken;\n        preloadSpotlightImage(item.image, function () {\n        if (requestToken !== spotlightRequestToken) return;\n        spotlightShowTimer = setTimeout(function () {\n        if (requestToken !== spotlightRequestToken) return;\n        if (spotlightImage.getAttribute('src') !== item.image) {\n          spotlightImage.setAttribute('src', item.image);\n        }\n        if (spotlightMedia) {\n          spotlightMedia.setAttribute('data-fit', item.fit || 'contain');\n          spotlightMedia.style.setProperty('--afb-spotlight-bg-image', 'url(\"' + String(item.image || '').replace(\/\"\/g, '\\\"') + '\")');\n        }\n        spotlightImage.setAttribute('alt', item.alt || item.caption || productTitle);\n          spotlightKickerLabel.textContent = item.kicker || 'Detalhe em cena';\n          const isVersionShowcase = item.layout === 'version-showcase';\n          const versionTexts = getSpotlightVersionTexts(item);\n          spotlightPanel.classList.toggle('is-version-showcase', isVersionShowcase);\n          spotlightVersionLabel.textContent = versionTexts.label;\n          spotlightVersionTitle.textContent = item.versionTitle || productVersionTitle || productTitle;\n          spotlightVersionSubtitle.textContent = versionTexts.subtitle;\n          spotlightCaption.textContent = item.caption || 'Detalhe visual destacado na narração';\n          spotlightPanel.classList.remove('is-deluxe', 'is-exclusive', 'is-bonus', 'is-prestige');\n          if (item.tone \u0026\u0026 item.tone !== 'standard') {\n            spotlightPanel.classList.add('is-' + item.tone);\n          }\n          spotlightPanel.classList.remove('is-exiting', 'is-switching');\n          spotlightPanel.classList.add('is-visible');\n          spotlightPanel.setAttribute('aria-hidden', 'false');\n          activeSpotlightKey = syncId;\n          spotlightShowTimer = null;\n          updateDesktopSpotlightPosition(currentActiveIndex \u003e= 0 ? narrationParagraphEls[currentActiveIndex] : null);\n\n          spotlightHideTimer = setTimeout(function () {\n            hideNarrationSpotlight(false);\n          }, SPOTLIGHT_HOLD_MS);\n        }, getSpotlightShowDelay());\n        });\n      }\n\n      function applyNarrationSpotlightSlide(item, requestToken, isSlideChange) {\n        if (!item || !item.image || requestToken !== spotlightRequestToken) return;\n        if (isSlideChange) spotlightPanel.classList.add('is-switching');\n        preloadSpotlightImage(item.image, function () {\n          if (requestToken !== spotlightRequestToken) return;\n          window.setTimeout(function () {\n            if (requestToken !== spotlightRequestToken) return;\n            if (spotlightImage.getAttribute('src') !== item.image) {\n              spotlightImage.setAttribute('src', item.image);\n            }\n            if (spotlightMedia) {\n              spotlightMedia.setAttribute('data-fit', item.fit || 'contain');\n              spotlightMedia.style.setProperty('--afb-spotlight-bg-image', 'url(\"' + String(item.image || '').replace(\/\"\/g, '\\\"') + '\")');\n            }\n            spotlightImage.setAttribute('alt', item.alt || item.caption || productTitle);\n            spotlightKickerLabel.textContent = item.kicker || 'Detalhe em cena';\n            const isVersionShowcase = item.layout === 'version-showcase';\n            const versionTexts = getSpotlightVersionTexts(item);\n            spotlightPanel.classList.toggle('is-version-showcase', isVersionShowcase);\n            spotlightVersionLabel.textContent = versionTexts.label;\n            spotlightVersionTitle.textContent = item.versionTitle || productVersionTitle || productTitle;\n            spotlightVersionSubtitle.textContent = versionTexts.subtitle;\n            spotlightCaption.textContent = item.caption || 'Detalhe visual destacado na narraÃ§Ã£o';\n            spotlightPanel.classList.remove('is-deluxe', 'is-exclusive', 'is-bonus', 'is-prestige');\n            if (item.tone \u0026\u0026 item.tone !== 'standard') {\n              spotlightPanel.classList.add('is-' + item.tone);\n            }\n            spotlightPanel.classList.remove('is-exiting', 'is-switching');\n            spotlightPanel.classList.add('is-visible');\n            spotlightPanel.setAttribute('aria-hidden', 'false');\n            updateDesktopSpotlightPosition(currentActiveIndex \u003e= 0 ? narrationParagraphEls[currentActiveIndex] : null);\n          }, isSlideChange ? 180 : 0);\n        });\n      }\n\n      function getNarrationSpotlightSlideInterval(syncId, slideCount) {\n        const fallback = Math.max(2800, Math.floor(SPOTLIGHT_HOLD_MS \/ Math.max(1, slideCount || 1)));\n        const timing = getTimingSegment(syncId);\n        if (!timing || !slideCount || slideCount \u003c 2) return fallback;\n        const durationMs = Math.max(0, (Number(timing.end || 0) - Number(timing.start || 0)) * 1000);\n        if (!durationMs) return fallback;\n        return Math.max(1800, Math.min(5200, Math.floor(durationMs \/ slideCount)));\n      }\n\n      function scheduleNarrationSpotlightSlides(syncId, slides, requestToken) {\n        if (!Array.isArray(slides) || slides.length \u003c 2) return;\n        const interval = getNarrationSpotlightSlideInterval(syncId, slides.length);\n        let index = 1;\n        function nextSlide() {\n          if (requestToken !== spotlightRequestToken || index \u003e= slides.length) return;\n          applyNarrationSpotlightSlide(slides[index], requestToken, true);\n          index += 1;\n          if (index \u003c slides.length) {\n            spotlightSlideTimer = setTimeout(nextSlide, interval);\n          }\n        }\n        spotlightSlideTimer = setTimeout(nextSlide, interval);\n      }\n\n      showNarrationSpotlight = function(syncId) {\n        if (!spotlightPanel || !spotlightImage || !spotlightCaption) return;\n        const item = getSpotlightItemForSyncId(syncId);\n        if (!item || !item.image) {\n          hideNarrationSpotlight(false);\n          return;\n        }\n        if (activeSpotlightKey === syncId \u0026\u0026 spotlightPanel.classList.contains('is-visible')) return;\n\n        clearSpotlightTimers();\n        if (spotlightPanel.classList.contains('is-visible')) {\n          spotlightPanel.classList.remove('is-visible');\n          spotlightPanel.classList.add('is-exiting', 'is-switching');\n        }\n\n        const slides = Array.isArray(item.slides) \u0026\u0026 item.slides.length ? item.slides : [item];\n        const requestToken = ++spotlightRequestToken;\n        spotlightShowTimer = setTimeout(function () {\n          if (requestToken !== spotlightRequestToken) return;\n          applyNarrationSpotlightSlide(slides[0], requestToken, false);\n          activeSpotlightKey = syncId;\n          spotlightShowTimer = null;\n          scheduleNarrationSpotlightSlides(syncId, slides, requestToken);\n          spotlightHideTimer = setTimeout(function () {\n            hideNarrationSpotlight(false);\n          }, SPOTLIGHT_HOLD_MS);\n        }, getSpotlightShowDelay());\n      };\n\n      function setActiveNarration(index) {\n        if (!narrationParagraphEls.length) return;\n        currentActiveIndex = index;\n\n        narrationParagraphEls.forEach(function (p, i) {\n          p.classList.remove('is-active', 'is-past', 'is-future');\n          if (i \u003c index) p.classList.add('is-past');\n          else if (i === index) p.classList.add('is-active');\n          else p.classList.add('is-future');\n        });\n\n        stepEls.forEach(function (step, i) {\n          step.classList.remove('is-active', 'is-done');\n          if (i \u003c index) step.classList.add('is-done');\n          else if (i === index) step.classList.add('is-active');\n        });\n\n        const activeEl = narrationParagraphEls[index];\n        syncSpotlightPanelPlacement(activeEl);\n        showNarrationSpotlight(activeEl ? activeEl.dataset.syncId : '');\n        scrollActiveNarrationIntoView(activeEl);\n      }\n\n      function clearActiveNarration() {\n        currentActiveIndex = -1;\n        narrationParagraphEls.forEach(function (p) {\n          p.classList.remove('is-active', 'is-past');\n          p.classList.add('is-future');\n        });\n        stepEls.forEach(function (step) {\n          step.classList.remove('is-active', 'is-done');\n        });\n        hideNarrationSpotlight(true);\n        restoreSpotlightPanelPlacement();\n      }\n\n      function formatTime(seconds) {\n        const safe = Math.max(0, Math.floor(seconds || 0));\n        const min = Math.floor(safe \/ 60).toString().padStart(2, '0');\n        const sec = Math.floor(safe % 60).toString().padStart(2, '0');\n        return min + ':' + sec;\n      }\n\n      function updateClock() {\n        const current = audio.currentTime || 0;\n        const duration = audio.duration || 0;\n        stageTime.textContent = formatTime(current) + ' \/ ' + formatTime(duration);\n      }\n\n      function getPauseButtonLabels() {\n        const locale = getLocale();\n        if (locale === 'pt-br' || locale === 'pt-pt') {\n          return { pause: 'Pausar áudio', resume: 'Retomar áudio' };\n        }\n        if (locale.indexOf('es-') === 0) {\n          return { pause: 'Pausar audio', resume: 'Reanudar audio' };\n        }\n        if (locale.indexOf('fr-') === 0) {\n          return { pause: 'Mettre en pause', resume: 'Reprendre l’audio' };\n        }\n        if (locale.indexOf('it-') === 0) {\n          return { pause: 'Metti in pausa', resume: 'Riprendi audio' };\n        }\n        if (locale.indexOf('de-') === 0) {\n          return { pause: 'Audio pausieren', resume: 'Audio fortsetzen' };\n        }\n        if (locale.indexOf('ja-') === 0) {\n          return { pause: '一時停止', resume: '再開' };\n        }\n        return { pause: 'Pause audio', resume: 'Resume audio' };\n      }\n\n      function setPauseButtonIcon(pausedState) {\n        if (!pauseBtn) return;\n        if (pausedState) {\n          pauseBtn.innerHTML =\n            '\u003csvg viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\"\u003e' +\n              '\u003cpath d=\"M9 7.2V16.8L16.6 12L9 7.2Z\" fill=\"currentColor\"\u003e\u003c\/path\u003e' +\n            '\u003c\/svg\u003e';\n          return;\n        }\n        pauseBtn.innerHTML =\n          '\u003csvg viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\"\u003e' +\n            '\u003cpath d=\"M8 6.5V17.5\" stroke=\"currentColor\" stroke-width=\"2.4\" stroke-linecap=\"round\"\u003e\u003c\/path\u003e' +\n            '\u003cpath d=\"M16 6.5V17.5\" stroke=\"currentColor\" stroke-width=\"2.4\" stroke-linecap=\"round\"\u003e\u003c\/path\u003e' +\n          '\u003c\/svg\u003e';\n      }\n\n      function updatePauseButtonState() {\n        if (!pauseBtn) return;\n        const labels = getPauseButtonLabels();\n        const canToggle = !isLoading \u0026\u0026 !root.classList.contains('is-merchant-hold') \u0026\u0026 !root.classList.contains('is-ending') \u0026\u0026 !!currentTimings \u0026\u0026 !!audio.src;\n        const pausedState = canToggle \u0026\u0026 !!(audio.paused || audio.ended || isPausedByUser);\n        pauseBtn.disabled = !canToggle;\n        pauseBtn.classList.toggle('is-paused', pausedState);\n        pauseBtn.setAttribute('aria-label', pausedState ? labels.resume : labels.pause);\n        pauseBtn.setAttribute('title', pausedState ? labels.resume : labels.pause);\n        setPauseButtonIcon(pausedState);\n      }\n\n      function getPauseButtonLabels() {\n        const locale = getLocale();\n        if (locale === 'pt-br' || locale === 'pt-pt') {\n          return { pause: 'Pausar áudio', resume: 'Retomar áudio', pauseShort: 'Pausar', resumeShort: 'Retomar' };\n        }\n        if (locale.indexOf('es-') === 0) {\n          return { pause: 'Pausar audio', resume: 'Reanudar audio', pauseShort: 'Pausar', resumeShort: 'Reanudar' };\n        }\n        if (locale.indexOf('fr-') === 0) {\n          return { pause: 'Mettre en pause', resume: 'Reprendre l’audio', pauseShort: 'Pause', resumeShort: 'Reprendre' };\n        }\n        if (locale.indexOf('it-') === 0) {\n          return { pause: 'Metti in pausa', resume: 'Riprendi audio', pauseShort: 'Pausa', resumeShort: 'Riprendi' };\n        }\n        if (locale.indexOf('de-') === 0) {\n          return { pause: 'Audio pausieren', resume: 'Audio fortsetzen', pauseShort: 'Pause', resumeShort: 'Weiter' };\n        }\n        if (locale.indexOf('ja-') === 0) {\n          return { pause: '一時停止', resume: '再開', pauseShort: '停止', resumeShort: '再開' };\n        }\n        return { pause: 'Pause audio', resume: 'Resume audio', pauseShort: 'Pause', resumeShort: 'Resume' };\n      }\n\n      function setPauseButtonIcon(pausedState, labels) {\n        if (!pauseBtn) return;\n        const buttonText = pausedState ? labels.resumeShort : labels.pauseShort;\n        if (pausedState) {\n          pauseBtn.innerHTML =\n            '\u003cspan class=\"afb-audio-pause-btn-icon\" aria-hidden=\"true\"\u003e' +\n              '\u003csvg viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\"\u003e' +\n                '\u003cpath d=\"M9 7.2V16.8L16.6 12L9 7.2Z\" fill=\"currentColor\"\u003e\u003c\/path\u003e' +\n              '\u003c\/svg\u003e' +\n            '\u003c\/span\u003e' +\n            '\u003cspan class=\"afb-audio-pause-btn-text\"\u003e' + buttonText + '\u003c\/span\u003e';\n          return;\n        }\n        pauseBtn.innerHTML =\n          '\u003cspan class=\"afb-audio-pause-btn-icon\" aria-hidden=\"true\"\u003e' +\n            '\u003csvg viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\"\u003e' +\n              '\u003cpath d=\"M8 6.5V17.5\" stroke=\"currentColor\" stroke-width=\"2.4\" stroke-linecap=\"round\"\u003e\u003c\/path\u003e' +\n              '\u003cpath d=\"M16 6.5V17.5\" stroke=\"currentColor\" stroke-width=\"2.4\" stroke-linecap=\"round\"\u003e\u003c\/path\u003e' +\n            '\u003c\/svg\u003e' +\n          '\u003c\/span\u003e' +\n          '\u003cspan class=\"afb-audio-pause-btn-text\"\u003e' + buttonText + '\u003c\/span\u003e';\n      }\n\n      function updatePauseButtonState() {\n        if (!pauseBtn) return;\n        const labels = getPauseButtonLabels();\n        const canToggle = !isLoading \u0026\u0026 !root.classList.contains('is-merchant-hold') \u0026\u0026 !root.classList.contains('is-ending') \u0026\u0026 !!currentTimings \u0026\u0026 !!audio.src;\n        const pausedState = canToggle \u0026\u0026 !!(audio.paused || audio.ended || isPausedByUser);\n        pauseBtn.disabled = !canToggle;\n        pauseBtn.classList.toggle('is-paused', pausedState);\n        pauseBtn.setAttribute('aria-label', pausedState ? labels.resume : labels.pause);\n        pauseBtn.setAttribute('title', pausedState ? labels.resume : labels.pause);\n        setPauseButtonIcon(pausedState, labels);\n      }\n\n      function getVoiceKey() {\n        return getLocale() + '-' + (voiceSelect.value || 'epic');\n      }\n\n      function updateButtonState() {\n        const copy = getCopy();\n\n        if (isLoading) {\n          audioBtnLabel.textContent = copy.loading;\n          updatePauseButtonState();\n          return;\n        }\n        if (root.classList.contains('is-merchant-hold')) {\n          audioBtnLabel.textContent = copy.close;\n          updatePauseButtonState();\n          return;\n        }\n        if (!audio.paused \u0026\u0026 !audio.ended) {\n          audioBtnLabel.textContent = copy.stop;\n          updatePauseButtonState();\n          return;\n        }\n        audioBtnLabel.textContent = copy.play;\n        updatePauseButtonState();\n      }\n\n      function getTimingSegment(syncId) {\n        if (!currentTimings || !currentTimings.segments) return null;\n        return currentTimings.segments[syncId] || null;\n      }\n\n      function getVisualTimings() {\n        if (!currentTimings || !currentTimings.segments) return [];\n        return narrationParagraphEls\n          .map(function (el, index) {\n            const syncId = el.dataset.syncId;\n            const timing = getTimingSegment(syncId);\n            if (!timing) return null;\n            return {\n              id: syncId,\n              index: index,\n              role: timing.role || 'narration',\n              start: Number(timing.start || 0),\n              end: Number(timing.end || 0)\n            };\n          })\n          .filter(Boolean);\n      }\n\n      function getIntroTiming() {\n        return getTimingSegment('intro') || {\n          start: Number(currentTimings \u0026\u0026 currentTimings.intro_start || 0),\n          end: Number(currentTimings \u0026\u0026 currentTimings.intro_end || 0)\n        };\n      }\n\n      function getMerchantTiming() {\n        return getTimingSegment('merchant');\n      }\n\n      function getActiveTimingByCurrentTime(current, list) {\n        return (list || []).find(function (item) {\n          return current \u003e= Number(item.start || 0) \u0026\u0026 current \u003c Number(item.end || 0);\n        }) || null;\n      }\n\n      function setMerchantProgress(progress) {\n        const clamped = Math.max(0, Math.min(1, progress || 0));\n        root.style.setProperty('--afb-merchant-progress', String(clamped));\n      }\n\n      function clearActivationTimer() {\n        if (activationLitTimer) {\n          clearTimeout(activationLitTimer);\n          activationLitTimer = null;\n        }\n      }\n\n      function clearTimers() {\n        if (rafId) {\n          cancelAnimationFrame(rafId);\n          rafId = null;\n        }\n        if (holdTimer) {\n          clearTimeout(holdTimer);\n          holdTimer = null;\n        }\n        if (endingTimer) {\n          clearTimeout(endingTimer);\n          endingTimer = null;\n        }\n        if (merchantCountdownInterval) {\n          clearInterval(merchantCountdownInterval);\n          merchantCountdownInterval = null;\n        }\n        if (activeScrollTimer) {\n          clearTimeout(activeScrollTimer);\n          activeScrollTimer = null;\n        }\n        if (merchantScrollTimer) {\n          clearTimeout(merchantScrollTimer);\n          merchantScrollTimer = null;\n        }\n        clearActivationTimer();\n        clearSpotlightTimers();\n      }\n\n      function resetMerchantCountdown() {\n        merchantCountdownTotal = 40;\n        merchantTimer.classList.remove('is-critical');\n        merchantTimerText.textContent = '00:40';\n      }\n\n      function startMerchantCountdown() {\n        if (merchantCountdownInterval) {\n          clearInterval(merchantCountdownInterval);\n          merchantCountdownInterval = null;\n        }\n        merchantCountdownTotal = 40;\n        resetMerchantCountdown();\n        merchantCountdownInterval = setInterval(function () {\n          if (merchantCountdownTotal \u003e 0) {\n            merchantCountdownTotal -= 1;\n            const mins = Math.floor(merchantCountdownTotal \/ 60);\n            const secs = merchantCountdownTotal % 60;\n            merchantTimerText.textContent =\n              String(mins).padStart(2, '0') + ':' + String(secs).padStart(2, '0');\n            if (merchantCountdownTotal \u003c= 5) merchantTimer.classList.add('is-critical');\n          }\n        }, 1000);\n      }\n\n      function waitForAudioReady() {\n        return new Promise(function (resolve, reject) {\n          if (audio.readyState \u003e= 1) {\n            resolve();\n            return;\n          }\n\n          let settled = false;\n          let timeoutId = null;\n\n          function cleanup() {\n            audio.removeEventListener('loadedmetadata', onReady);\n            audio.removeEventListener('canplay', onReady);\n            audio.removeEventListener('error', onError);\n            if (timeoutId) {\n              clearTimeout(timeoutId);\n              timeoutId = null;\n            }\n          }\n\n          function onReady() {\n            if (settled) return;\n            settled = true;\n            cleanup();\n            resolve();\n          }\n\n          function onError() {\n            if (settled) return;\n            settled = true;\n            cleanup();\n            reject(new Error('Audio metadata failed to load.'));\n          }\n\n          timeoutId = setTimeout(onReady, 2400);\n          audio.addEventListener('loadedmetadata', onReady);\n          audio.addEventListener('canplay', onReady);\n          audio.addEventListener('error', onError);\n        });\n      }\n\n      async function resumePlayback() {\n        if (!currentTimings || !audio.src) {\n          await startPlayback();\n          return;\n        }\n\n        await waitForAudioReady();\n        isPausedByUser = false;\n        await audio.play();\n        updateClock();\n        updatePlaybackUX();\n        updateButtonState();\n        if (!rafId) rafId = requestAnimationFrame(tick);\n      }\n\n      function pausePlayback() {\n        if (audio.paused || audio.ended || !currentTimings) return;\n        if (rafId) {\n          cancelAnimationFrame(rafId);\n          rafId = null;\n        }\n        clearSpotlightTimers();\n        audio.pause();\n        isPausedByUser = true;\n        updateButtonState();\n      }\n\n      async function jumpToSyncId(syncId) {\n        if (!syncId || isLoading) return;\n\n        if (root.classList.contains('is-merchant-hold') || root.classList.contains('is-ending') || !currentTimings || !audio.src) {\n          await startPlayback(syncId);\n          return;\n        }\n\n        const timing = getTimingSegment(syncId);\n        if (!timing) return;\n\n        await waitForAudioReady();\n        try {\n          audio.currentTime = Math.max(0, Number(timing.start || 0) + 0.02);\n        } catch (error) {\n          console.warn('AFB premium narration seek failed', error);\n          return;\n        }\n\n        updateClock();\n        updatePlaybackUX();\n\n        if (audio.paused || audio.ended || isPausedByUser) {\n          await resumePlayback();\n          return;\n        }\n\n        if (!rafId) rafId = requestAnimationFrame(tick);\n      }\n\n      function clearPlaybackUX() {\n        clearTimers();\n        isPausedByUser = false;\n        root.classList.remove(\n          'is-loading',\n          'is-reading',\n          'is-intro-visible',\n          'is-curtain-open',\n          'is-narration-visible',\n          'is-merchant-outro',\n          'is-merchant-hold',\n          'is-ending',\n          'is-preparing-experience',\n          'is-activation-visible',\n          'is-activation-lit',\n          'is-activation-docking'\n        );\n        root.style.setProperty('--afb-merchant-progress', '0');\n        merchantScrollDone = false;\n        setQuoteRevealProgress(0);\n        clearActiveNarration();\n        resetMerchantCountdown();\n        updateClock();\n        updateButtonState();\n        currentTimings = null;\n        currentData = null;\n      }\n\n      function beginEndingUX() {\n        clearTimers();\n        root.classList.remove('is-merchant-hold');\n        root.classList.add('is-ending');\n        endingTimer = setTimeout(function () {\n          audio.pause();\n          try { audio.currentTime = 0; } catch (e) {}\n          clearPlaybackUX();\n        }, ENDING_MS);\n      }\n\n      function beginMerchantHold() {\n        clearTimers();\n        root.classList.add('is-merchant-outro');\n        root.classList.add('is-merchant-hold');\n        root.classList.add('is-narration-visible');\n        root.classList.remove('is-loading');\n        setMerchantProgress(1);\n        clearActiveNarration();\n        scrollMerchantIntoView();\n        startMerchantCountdown();\n        updateButtonState();\n        holdTimer = setTimeout(function () {\n          beginEndingUX();\n        }, MERCHANT_HOLD_MS);\n      }\n\n      function resetAudioOnly() {\n        if (rafId) {\n          cancelAnimationFrame(rafId);\n          rafId = null;\n        }\n        audio.pause();\n        try { audio.currentTime = 0; } catch (e) {}\n      }\n\n      async function prepareAudio() {\n        const segments = getTTSSegments();\n        const voice = getVoiceKey();\n        if (!segments.length) {\n          throw new Error('Nenhum segmento TTS encontrado.');\n        }\n\n        const cacheKey = voice + '__segments__' + JSON.stringify(segments);\n        if (cache.has(cacheKey)) return cache.get(cacheKey);\n\n        const response = await fetch(TTS_ENDPOINT, {\n          method: 'POST',\n          headers: { 'Content-Type': 'application\/json' },\n          body: JSON.stringify({ voz: voice, segments: segments })\n        });\n        if (!response.ok) {\n          throw new Error('Não foi possível gerar o áudio.');\n        }\n        const data = await response.json();\n        cache.set(cacheKey, data);\n        return data;\n      }\n\n      function tick() {\n        updateClock();\n        updatePlaybackUX();\n        if (!audio.paused \u0026\u0026 !audio.ended) {\n          rafId = requestAnimationFrame(tick);\n        }\n      }\n\n      function updatePlaybackUX() {\n        if (!currentTimings) return;\n\n        const current = audio.currentTime || 0;\n        const introTiming = getIntroTiming();\n        const introStart = Number(introTiming.start || 0);\n        const introEnd = Number(introTiming.end || 0);\n\n        if (current \u003e= introStart) {\n          root.classList.add('is-reading');\n          root.classList.add('is-intro-visible');\n        }\n\n        if (current \u003e= introStart + 0.12) {\n          root.classList.add('is-curtain-open');\n        }\n\n        if (introEnd \u003e introStart \u0026\u0026 current \u003c= introEnd) {\n          const introProgress = (current - introStart) \/ Math.max(0.001, introEnd - introStart);\n          setQuoteRevealProgress(Math.max(0, Math.min(1, introProgress)));\n        } else if (current \u003e introEnd) {\n          setQuoteRevealProgress(1);\n        }\n\n        if (current \u003e introEnd - 0.05) {\n          root.classList.add('is-narration-visible');\n        }\n\n        const merchantTiming = getMerchantTiming();\n        if (merchantTiming \u0026\u0026 current \u003e= Number(merchantTiming.start || 0)) {\n          if (!root.classList.contains('is-merchant-outro')) {\n            resetMerchantCountdown();\n          }\n\n          root.classList.add('is-merchant-outro');\n          root.classList.add('is-narration-visible');\n          clearActiveNarration();\n          scrollMerchantIntoView();\n\n          const merchantStart = Number(merchantTiming.start || 0);\n          const merchantEnd = Number(merchantTiming.end || 0);\n          const merchantProgress = (current - merchantStart) \/ Math.max(0.001, merchantEnd - merchantStart);\n          setMerchantProgress(merchantProgress);\n          return;\n        }\n\n        root.classList.remove('is-merchant-outro');\n        root.classList.remove('is-merchant-hold');\n        setMerchantProgress(0);\n\n        const active = getActiveTimingByCurrentTime(current, getVisualTimings());\n        if (!active) {\n          clearActiveNarration();\n          return;\n        }\n\n        const activeIndex = Number(active.index || 0);\n        if (activeIndex !== currentActiveIndex) {\n          setActiveNarration(activeIndex);\n        }\n      }\n\n      async function startPlayback(targetSyncId) {\n        if (isLoading) return;\n\n        try {\n          clearTimers();\n          isLoading = true;\n          isPausedByUser = false;\n\n          root.classList.add('is-loading');\n          root.classList.add('is-preparing-experience');\n          root.classList.add('is-activation-visible');\n          root.classList.remove(\n            'is-reading',\n            'is-intro-visible',\n            'is-curtain-open',\n            'is-narration-visible',\n            'is-merchant-outro',\n            'is-merchant-hold',\n            'is-ending',\n            'is-activation-lit',\n            'is-activation-docking'\n          );\n\n          setQuoteRevealProgress(0);\n          clearActiveNarration();\n          setMerchantProgress(0);\n          resetMerchantCountdown();\n          updateUITranslations();\n          updateButtonState();\n\n          activationLitTimer = setTimeout(function () {\n            if (isLoading) root.classList.add('is-activation-lit');\n          }, ACTIVATION_LIT_DELAY_MS);\n\n          const loadingStartedAt = Date.now();\n          const data = await prepareAudio();\n          const elapsed = Date.now() - loadingStartedAt;\n          const remaining = Math.max(0, MIN_PREMIUM_LOADING_MS - elapsed);\n\n          await new Promise(function (resolve) { setTimeout(resolve, remaining); });\n          root.classList.add('is-activation-docking');\n          await new Promise(function (resolve) { setTimeout(resolve, ACTIVATION_DOCKING_MS); });\n\n          currentData = data;\n          currentTimings = data.timings || null;\n          audio.src = data.audio_url;\n          audio.load();\n          await waitForAudioReady();\n          if (targetSyncId) {\n            const targetTiming = getTimingSegment(targetSyncId);\n            if (targetTiming) {\n              try {\n                audio.currentTime = Math.max(0, Number(targetTiming.start || 0) + 0.02);\n              } catch (error) {\n                console.warn('AFB premium narration initial seek failed', error);\n              }\n            }\n          }\n          await audio.play();\n\n          root.classList.remove('is-loading');\n          root.classList.remove('is-preparing-experience');\n          root.classList.remove('is-activation-visible');\n          root.classList.remove('is-activation-lit');\n          root.classList.remove('is-activation-docking');\n          root.classList.add('is-reading');\n\n          isLoading = false;\n          updateClock();\n          updatePlaybackUX();\n          updateButtonState();\n          rafId = requestAnimationFrame(tick);\n        } catch (error) {\n          console.error(error);\n          isLoading = false;\n          root.classList.remove('is-loading');\n          root.classList.remove('is-preparing-experience');\n          root.classList.remove('is-activation-visible');\n          root.classList.remove('is-activation-lit');\n          root.classList.remove('is-activation-docking');\n          resetAudioOnly();\n          clearPlaybackUX();\n          alert('Não foi possível preparar a experiência agora.');\n        }\n      }\n\n      function stopPlayback(manual) {\n        resetAudioOnly();\n        if (manual) beginEndingUX();\n        else clearPlaybackUX();\n      }\n\n      function syncLanguageButton() {\n        if (!langBtn || !langMenu) return;\n        const locale = getLocale();\n        const flagClass = localeFlagClasses[locale] || 'afb-flag-br';\n        langBtn.innerHTML = '\u003cspan class=\"afb-flag ' + flagClass + '\" aria-hidden=\"true\"\u003e\u003c\/span\u003e';\n\n        Array.from(langMenu.querySelectorAll('button[data-value]')).forEach(function (button) {\n          button.classList.toggle('is-selected', button.getAttribute('data-value') === locale);\n        });\n      }\n\n      function rebuildLanguageContent() {\n        buildQuoteWords();\n        buildNarrationBlocks();\n        syncLanguageButton();\n        updateUITranslations();\n        setQuoteRevealProgress(0);\n        clearActiveNarration();\n      }\n\n      if (voiceBox \u0026\u0026 voiceSelect) {\n        ensureVoiceControl();\n\n        if (voiceBtn \u0026\u0026 voiceMenu) {\n          voiceBtn.addEventListener('click', function (event) {\n            event.preventDefault();\n            event.stopPropagation();\n            if (langBox) langBox.classList.remove('is-open');\n            voiceBox.classList.toggle('is-open');\n            syncVoiceControl();\n          });\n\n          Array.from(voiceMenu.querySelectorAll('button[data-value]')).forEach(function (button) {\n            button.addEventListener('click', function (event) {\n              event.preventDefault();\n              event.stopPropagation();\n              const value = button.getAttribute('data-value');\n              if (voiceSelect.querySelector('option[value=\"' + value + '\"]')) {\n                voiceSelect.value = value;\n              }\n              voiceBox.classList.remove('is-open');\n              syncVoiceControl();\n              voiceSelect.dispatchEvent(new Event('change', { bubbles: true }));\n            });\n          });\n        }\n      }\n\n      if (langBtn \u0026\u0026 langBox \u0026\u0026 langMenu \u0026\u0026 langSelect) {\n        langBtn.addEventListener('click', function (event) {\n          event.preventDefault();\n          event.stopPropagation();\n          if (voiceBox) voiceBox.classList.remove('is-open');\n          langBox.classList.toggle('is-open');\n        });\n\n        Array.from(langMenu.querySelectorAll('button[data-value]')).forEach(function (button) {\n          button.addEventListener('click', function (event) {\n            event.preventDefault();\n            event.stopPropagation();\n            const value = button.getAttribute('data-value');\n            if (langSelect.querySelector('option[value=\"' + value + '\"]')) {\n              langSelect.value = value;\n            }\n            langBox.classList.remove('is-open');\n            if (!audio.paused \u0026\u0026 !audio.ended) stopPlayback(true);\n            clearPlaybackUX();\n            rebuildLanguageContent();\n          });\n        });\n\n        document.addEventListener('click', function () {\n          langBox.classList.remove('is-open');\n          if (voiceBox) voiceBox.classList.remove('is-open');\n          syncVoiceControl();\n        });\n      }\n\n      audio.addEventListener('loadedmetadata', function () {\n        updateClock();\n        updatePauseButtonState();\n      });\n\n      audio.addEventListener('ended', function () {\n        isPausedByUser = false;\n        const merchantTiming = getMerchantTiming();\n        if (merchantTiming) {\n          beginMerchantHold();\n          return;\n        }\n        beginEndingUX();\n      });\n\n      audioBtn.addEventListener('click', async function () {\n        if (root.classList.contains('is-merchant-hold')) {\n          beginEndingUX();\n          return;\n        }\n        if (isLoading) return;\n        if (!audio.paused \u0026\u0026 !audio.ended) {\n          stopPlayback(true);\n          return;\n        }\n        if ((audio.paused || audio.ended) \u0026\u0026 currentTimings \u0026\u0026 audio.src \u0026\u0026 isPausedByUser) {\n          await resumePlayback();\n          return;\n        }\n        await startPlayback();\n      });\n\n      if (pauseBtn) {\n        pauseBtn.addEventListener('click', async function () {\n          if (isLoading || root.classList.contains('is-merchant-hold')) return;\n          if (!currentTimings || !audio.src) return;\n          if (!audio.paused \u0026\u0026 !audio.ended) {\n            pausePlayback();\n            return;\n          }\n          await resumePlayback();\n        });\n      }\n\n      voiceSelect.addEventListener('change', function () {\n        syncVoiceControl();\n        updateStageBadge();\n        if (!audio.paused \u0026\u0026 !audio.ended) stopPlayback(true);\n      });\n\n      merchantBtn.addEventListener('click', function () {\n        if (merchantBtn.hasAttribute('data-afb-go-yever')) {\n          window.location.href = checkoutUrl;\n        }\n      });\n\n      if (merchantCustomBtn) {\n        merchantCustomBtn.addEventListener('click', function () {\n          window.location.href = buildCustomPaymentWhatsappUrl();\n        });\n      }\n\n      if (detailOverlayClose) {\n        detailOverlayClose.addEventListener('click', function (event) {\n          event.preventDefault();\n          closeDetailOverlay();\n        });\n      }\n\n      if (detailOverlay) {\n        detailOverlay.addEventListener('click', function (event) {\n          if (event.target === detailOverlay) closeDetailOverlay();\n        });\n      }\n\n      window.addEventListener('resize', function () {\n        const activeEl = currentActiveIndex \u003e= 0 ? narrationParagraphEls[currentActiveIndex] : null;\n        syncSpotlightPanelPlacement(activeEl || null);\n      });\n\n      renderMerchantTitleCinematic(productTitle);\n      applyMerchantImageRatioClass();\n      ensureVoiceControl();\n      buildQuoteWords();\n      buildNarrationBlocks();\n      syncLanguageButton();\n      syncVoiceControl();\n      updateUITranslations();\n      updateStageBadge();\n      updateClock();\n      resetMerchantCountdown();\n      updateButtonState();\n      clearPlaybackUX();\n    })();\n  \u003c\/script\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"afb-scroll-reveal afb-premium-highlights-box\"\u003e\n\u003ch3 class=\"afb-highlights-header\"\u003e\n\u003cspan class=\"afb-icon-star-purple\"\u003e✦\u003c\/span\u003e\u003cspan class=\"afb-title-amethyst\"\u003eDestaques da Peça\u003c\/span\u003e\n\u003c\/h3\u003e\n\u003cul class=\"afb-hl-list\"\u003e\u003c\/ul\u003e\n\u003cdiv class=\"afb-limited-card\"\u003e\n\u003cdiv class=\"afb-limited-text\"\u003e\n\u003cstrong\u003eTiragem Restrita Global\u003c\/strong\u003e\u003cspan\u003eDisponibilidade altamente limitada para colecionadores.\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"afb-limited-badge\"\u003e\n\u003cspan\u003e🔥\u003c\/span\u003e Limited: 350\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"afb-scroll-reveal afb-premium-specs-box\"\u003e\n\u003ch3 class=\"afb-highlights-header\"\u003e\n\u003cspan class=\"afb-icon-star-purple\"\u003e✦\u003c\/span\u003e\u003cspan class=\"afb-title-amethyst\"\u003eFicha Técnica\u003c\/span\u003e\n\u003c\/h3\u003e\n\u003cdiv class=\"afb-specs-container\"\u003e\n\u003cdiv class=\"afb-spec-row-premium\"\u003e\n\u003cstrong\u003ePersonagem:\u003c\/strong\u003e\u003cspan class=\"afb-spec-value\"\u003eBatman Robin\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"afb-spec-row-premium\"\u003e\n\u003cstrong\u003eMarca:\u003c\/strong\u003e\u003cspan class=\"afb-spec-value\"\u003eDC Comics\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"afb-spec-row-premium\"\u003e\n\u003cstrong\u003eFabricante:\u003c\/strong\u003e\u003cspan class=\"afb-spec-value\"\u003ePrime 1 Studio\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"afb-spec-row-premium\"\u003e\n\u003cstrong\u003eTipo:\u003c\/strong\u003e\u003cspan class=\"afb-spec-value\"\u003eStatue\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"afb-spec-row-premium\"\u003e\n\u003cstrong\u003eMaterial:\u003c\/strong\u003e\u003cspan class=\"afb-spec-value\"\u003ePolystone\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"afb-spec-row-premium\"\u003e\n\u003cstrong\u003eDimensões:\u003c\/strong\u003e\u003cspan class=\"afb-spec-value\"\u003eAltura: 33.85\" (86 cm) | Largura: 26.37\" (67 cm) | Profundidade: 26.37\" (67 cm)\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"afb-spec-row-premium\"\u003e\n\u003cstrong\u003ePeso:\u003c\/strong\u003e\u003cspan class=\"afb-spec-value\"\u003e26,06 kg\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"afb-spec-spotlight is-masterline\"\u003e\u003cdiv class=\"afb-spec-spotlight-copy\"\u003e\n\u003cspan class=\"afb-spec-spotlight-badge\"\u003eMuseum Masterline\u003c\/span\u003e\u003cdiv class=\"afb-spec-spotlight-desc\"\u003eLinha de altíssimo prestígio, com acabamento refinado e forte imponência de coleção.\u003c\/div\u003e\n\u003c\/div\u003e\u003c\/div\u003e\n\u003cdiv class=\"afb-spec-spotlight is-masterline\"\u003e\u003cdiv class=\"afb-spec-spotlight-copy\"\u003e\n\u003cspan class=\"afb-spec-spotlight-badge\"\u003eMasterline\u003c\/span\u003e\u003cdiv class=\"afb-spec-spotlight-desc\"\u003eUma apresentação premium de alto prestígio, com escala marcante e construção pensada para protagonizar a coleção.\u003c\/div\u003e\n\u003c\/div\u003e\u003c\/div\u003e\n\u003cdiv class=\"afb-spec-spotlight is-deluxe\"\u003e\u003cdiv class=\"afb-spec-spotlight-copy\"\u003e\n\u003cspan class=\"afb-spec-spotlight-badge\"\u003eDeluxe Bonus Version\u003c\/span\u003e\u003cdiv class=\"afb-spec-spotlight-desc\"\u003eLinha de altíssimo prestígio, com acabamento refinado e forte imponência de coleção.\u003c\/div\u003e\n\u003c\/div\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"afb-scroll-reveal\" style=\"margin-top:22px;\"\u003e\n\u003cdiv style=\"display:flex;flex-wrap:wrap;gap:10px;justify-content:space-between;\"\u003e\n\u003cdiv class=\"afb-feature-card afb-scroll-reveal\" style=\"flex:1 1 200px;background:#f9f9f9;border-radius:12px;padding:14px;box-sizing:border-box;\"\u003e\n\u003cdiv style=\"font-size:14px;font-weight:bold;color:#37174f;margin-bottom:4px;\"\u003e🛡️ Envio Seguro\u003c\/div\u003e\n\u003cdiv style=\"font-size:12px;color:#555;\"\u003eLogística tratada com cuidado para colecionáveis premium de grande porte.\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"afb-feature-card afb-scroll-reveal\" style=\"flex:1 1 200px;background:#f9f9f9;border-radius:12px;padding:14px;box-sizing:border-box;\"\u003e\n\u003cdiv style=\"font-size:14px;font-weight:bold;color:#37174f;margin-bottom:4px;\"\u003e📍 Rastreamento\u003c\/div\u003e\n\u003cdiv style=\"font-size:12px;color:#555;\"\u003eAcompanhamento detalhado do processo até a chegada ao colecionador.\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"afb-feature-card afb-scroll-reveal\" style=\"flex:1 1 200px;background:#f9f9f9;border-radius:12px;padding:14px;box-sizing:border-box;\"\u003e\n\u003cdiv style=\"font-size:14px;font-weight:bold;color:#37174f;margin-bottom:4px;\"\u003e💎 Produto Original\u003c\/div\u003e\n\u003cdiv style=\"font-size:12px;color:#555;\"\u003eSeleção focada em fabricantes reconhecidos e alto padrão de acabamento.\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"afb-feature-card afb-scroll-reveal\" style=\"flex:1 1 200px;background:#f9f9f9;border-radius:12px;padding:14px;box-sizing:border-box;\"\u003e\n\u003cdiv style=\"font-size:14px;font-weight:bold;color:#37174f;margin-bottom:4px;\"\u003e🏛️ Peça de Exposição\u003c\/div\u003e\n\u003cdiv style=\"font-size:12px;color:#555;\"\u003eEscala imponente e visual ideal para coleções de absoluto destaque.\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"afb-overlay\" id=\"afb-version-overlay\"\u003e\n\u003ca aria-label=\"Fechar modal\" class=\"afb-overlay-bg\" href=\"#afb-close-target\"\u003e\u003c\/a\u003e\n\u003cdiv class=\"afb-modal-card afb-modal-card-dark\"\u003e\n\u003cbutton class=\"afb-modal-close afb-modal-close-dark\" id=\"btn-close-version\" type=\"button\"\u003e×\u003c\/button\u003e\n\u003ca aria-label=\"Fechar modal\" class=\"afb-modal-close afb-modal-close-dark\" href=\"#afb-close-target\" style=\"z-index:4;\"\u003e×\u003c\/a\u003e\n\u003cdiv style=\"padding: 32px 24px 28px 24px;\"\u003e\n\u003cdiv style=\"display:flex; align-items:center; gap:14px; margin-bottom:20px;\"\u003e\n\u003cdiv style=\"font-size:32px; filter:drop-shadow(0 2px 4px rgba(0,0,0,0.5));\"\u003e🏆\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cdiv style=\"font-size:11px; font-weight:800; color:#7c3aed; text-transform:uppercase; letter-spacing:1px;\"\u003eSobre esta linha\u003c\/div\u003e\n\u003cdiv style=\"font-size:20px; font-weight:800; color:#ffffff; line-height:1.2;\"\u003eMuseum Masterline\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv style=\"margin-bottom: 16px;\"\u003e\u003cspan class=\"afb-simple-pill\"\u003e\u003cspan\u003e🔥\u003c\/span\u003e Limited: 350\u003c\/span\u003e\u003c\/div\u003e\n\u003cdiv style=\"font-size:14px; color:#d1d5db; line-height:1.7; margin-bottom:18px;\"\u003eMuseum Masterline posiciona a peça em um patamar elevado de apresentação, com foco em imponência, refinamento e impacto visual.\u003c\/div\u003e\n\u003cdiv style=\"background:rgba(0,0,0,0.2); border:1px solid rgba(255,255,255,0.05); border-radius:14px; padding:16px;\"\u003e\n\u003cul style=\"margin:0; padding-left:18px; color:#f3f4f6; font-size:14px; line-height:1.8;\"\u003e\n\u003cli\u003eLinha premium de alto prestígio.\u003c\/li\u003e\n\u003cli\u003eReforça escala, acabamento e imponência visual.\u003c\/li\u003e\n\u003cli\u003ePensada para protagonizar coleções de alto nível.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cscript\u003e\n  document.addEventListener('DOMContentLoaded', function() {\n    \/\/ Pega os elementos pelo ID\n    const btnOpenVersion = document.getElementById('btn-open-version');\n    const btnCloseVersion = document.getElementById('btn-close-version');\n    const modalVersion = document.getElementById('afb-version-overlay');\n\n    \/\/ Se o botão e o modal existirem na página\n    if (btnOpenVersion \u0026\u0026 modalVersion) {\n      \n      \/\/ 1. Abrir o modal ao clicar no card\n      btnOpenVersion.addEventListener('click', function() {\n      });\n\n      \/\/ 2. Fechar o modal ao clicar no 'X'\n      if (btnCloseVersion) {\n        btnCloseVersion.addEventListener('click', function(e) {\n          e.preventDefault();\n          window.location.hash = 'afb-close-target';\n        });\n      }\n\n      \/\/ 3. Fechar o modal ao clicar fora da caixinha (no fundo escuro)\n      modalVersion.addEventListener('click', function(e) {\n        if (e.target === modalVersion) {\n          window.location.hash = 'afb-close-target';\n        }\n      });\n      \n      btnOpenVersion.addEventListener('keydown', function(e) {\n        if (e.key === ' ') {\n          e.preventDefault();\n          window.location.hash = 'afb-version-overlay';\n        }\n      });\n    }\n\n    \/\/ REGRA FIXA DO AR:\n    \/\/ - Desktop sempre abre o modal com QR Code\n    \/\/ - Mobile sempre redireciona por plataforma\n    \/\/ - O HTML nunca expõe um link direto para download em desktop\n    const isMobile = \/Android|iPhone|iPad|iPod|Mobile\/i.test(navigator.userAgent || '');\n    const isAndroid = \/Android\/i.test(navigator.userAgent || '');\n    const isIOS = \/iPhone|iPad|iPod\/i.test(navigator.userAgent || '');\n    const modalAR = document.getElementById('afb-ar-overlay');\n    const btnAR = document.getElementById('btn-open-ar');\n    const btnCloseAR = document.getElementById('btn-close-ar');\n\n    function resolveARMobileUrl(buttonEl) {\n      if (!buttonEl) return '';\n      const iosUrl = buttonEl.getAttribute('data-ar-ios-url') || '';\n      const androidUrl = buttonEl.getAttribute('data-ar-android-url') || '';\n      const fallbackUrl = buttonEl.getAttribute('data-ar-fallback-url') || '';\n\n      if (isIOS \u0026\u0026 iosUrl) return iosUrl;\n      if (isAndroid \u0026\u0026 androidUrl) return androidUrl;\n      return iosUrl || androidUrl || fallbackUrl;\n    }\n\n    if (btnAR \u0026\u0026 modalAR) {\n      btnAR.addEventListener('click', function(e) {\n        e.preventDefault();\n        if (isMobile) {\n          const mobileUrl = resolveARMobileUrl(btnAR);\n          if (mobileUrl) {\n            window.location.href = mobileUrl;\n          }\n          return;\n        }\n        modalAR.classList.add('is-open');\n      });\n\n      if (btnCloseAR) {\n        btnCloseAR.addEventListener('click', function() {\n          modalAR.classList.remove('is-open');\n        });\n      }\n\n      modalAR.addEventListener('click', function(e) {\n        if (e.target === modalAR) {\n          modalAR.classList.remove('is-open');\n        }\n      });\n    }\n\n    const mainContainer = document.getElementById('afb-main-container');\n    const isEditor = window.Shopify \u0026\u0026 window.Shopify.designMode;\n    if (!isEditor \u0026\u0026 mainContainer \u0026\u0026 'IntersectionObserver' in window) {\n      mainContainer.classList.add('is-ready-for-scroll');\n      const reveals = mainContainer.querySelectorAll('.afb-scroll-reveal, .afb-title-wow');\n      const observer = new IntersectionObserver(function(entries, obs) {\n        entries.forEach(function(entry) {\n          if (entry.isIntersecting) {\n            entry.target.classList.add('is-visible');\n            obs.unobserve(entry.target);\n          }\n        });\n      }, { root: null, rootMargin: '0px', threshold: 0.01 });\n      reveals.forEach(function(el) { observer.observe(el); });\n    }\n  });\n\u003c\/script\u003e\u003cscript\u003e\ndocument.addEventListener('DOMContentLoaded', function() {\n  const jumpAr = document.getElementById('btn-jump-ar');\n  const arSection = document.getElementById('afb-ar-section');\n  const pillRow = document.querySelector('.afb-pill-row');\n\n  if (jumpAr \u0026\u0026 arSection) {\n    jumpAr.addEventListener('click', function(e) {\n      e.preventDefault();\n      arSection.scrollIntoView({ behavior: 'smooth', block: 'start' });\n    });\n  }\n\n  if (pillRow) {\n    pillRow.addEventListener('touchstart', function() {\n      pillRow.classList.add('is-user-interacting');\n    }, { passive: true });\n\n    const clearTouchState = function() {\n      window.setTimeout(function() {\n        pillRow.classList.remove('is-user-interacting');\n      }, 900);\n    };\n\n    pillRow.addEventListener('touchend', clearTouchState, { passive: true });\n    pillRow.addEventListener('touchcancel', clearTouchState, { passive: true });\n  }\n});\n\u003c\/script\u003e","brand":"ActionFigure Brasil","offers":[{"title":"Default Title","offer_id":51779629777192,"sku":null,"price":0.0,"currency_code":"BRL","in_stock":false}],"url":"https:\/\/afigureworld.com\/products\/xqt","provider":"ActionFigure Brasil","version":"1.0","type":"link"}