{"id":6480,"date":"2026-03-01T00:00:21","date_gmt":"2026-03-01T00:00:21","guid":{"rendered":"https:\/\/raistheme.com\/?page_id=6480"},"modified":"2026-04-04T06:26:54","modified_gmt":"2026-04-04T06:26:54","slug":"snapchat","status":"publish","type":"page","link":"https:\/\/raistheme.com\/tools\/social-viewer\/snapchat\/","title":{"rendered":"Snapchat Viewer \u2013 Watch Public Stories Anonymously Free"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"6480\" class=\"elementor elementor-6480\">\n\t\t\t\t<div class=\"elementor-element elementor-element-43d58ad1 e-con-full e-flex e-con e-parent\" data-id=\"43d58ad1\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-1fa46961 elementor-widget elementor-widget-shortcode\" data-id=\"1fa46961\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">   \r\n    <link rel=\"stylesheet\" href=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/font-awesome\/6.5.0\/css\/all.min.css\">\r\n    <script src=\"https:\/\/code.jquery.com\/jquery-3.6.0.min.js\"><\/script>\r\n    <style>\r\n        \/* Reset and Base Styles *\/\r\n        .sc-anonymous-viewer * {\r\n            margin: 0;\r\n            padding: 0;\r\n            box-sizing: border-box;\r\n        }\r\n\r\n        .sc-anonymous-viewer {\r\n            font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;\r\n            background-color: #0f172a;\r\n            background-image:\r\n                radial-gradient(ellipse 100% 70% at 85% 0%, rgba(79, 70, 229, 0.28), transparent 52%),\r\n                radial-gradient(ellipse 80% 55% at 0% 100%, rgba(14, 165, 233, 0.14), transparent 48%),\r\n                linear-gradient(165deg, #0f172a 0%, #1e293b 38%, #1e1b4b 72%, #134e4a 100%);\r\n            line-height: 1.6;\r\n            min-height: 100vh;\r\n            padding: 20px 40px;\r\n            width: 100%;\r\n            max-width: 100%;\r\n            overflow-x: hidden;\r\n            box-sizing: border-box;\r\n        }\r\n\r\n        .sc-anonymous-viewer .sc-main-wrap {\r\n            width: min(100%, 1400px);\r\n            margin: 0 auto;\r\n            padding: 20px;\r\n        }\r\n\r\n        \/* Heading + intro sit above the glass card, on the page background *\/\r\n        .sc-anonymous-viewer .sc-header {\r\n            text-align: center;\r\n            margin: 0 auto 28px;\r\n            padding: 8px 16px 0;\r\n            width: 100%;\r\n        }\r\n\r\n        \/* Tool Wrapper \u2014 white panel, professional contrast *\/\r\n        .sc-anonymous-viewer .sc-tool-wrapper {\r\n            width: min(100%, 1400px);\r\n            margin: 0 auto 20px;\r\n            padding: 1.5rem 1.5rem 1.75rem;\r\n            border-radius: 16px;\r\n            background: #ffffff;\r\n            color: #334155;\r\n            text-align: center;\r\n            box-shadow: 0 1px 3px rgba(15, 23, 42, 0.06), 0 8px 24px rgba(15, 23, 42, 0.08);\r\n            position: relative;\r\n            overflow: hidden;\r\n            border: 1px solid #e2e8f0;\r\n        }\r\n\r\n        .sc-anonymous-viewer .sc-tool-wrapper::before {\r\n            content: \"\";\r\n            position: absolute;\r\n            top: 0;\r\n            left: 0;\r\n            width: 100%;\r\n            height: 100%;\r\n            background: radial-gradient(circle at 100% 0%, rgba(99, 102, 241, 0.06), transparent 52%);\r\n            pointer-events: none;\r\n        }\r\n\r\n        .sc-anonymous-viewer .sc-heading-primary {\r\n            font-size: clamp(1.5rem, 2.5vw + 1rem, 2.5rem);\r\n            font-weight: 700;\r\n            color: #fff;\r\n            margin-bottom: 0.5rem;\r\n            letter-spacing: -0.02em;\r\n            text-shadow: 0 1px 6px rgba(0, 0, 0, 0.15);\r\n            line-height: 1.25;\r\n            word-wrap: break-word;\r\n            overflow-wrap: anywhere;\r\n        }\r\n\r\n        .sc-anonymous-viewer .sc-heading-primary span {\r\n            color: #FF9800;\r\n            position: relative;\r\n            display: inline-block;\r\n        }\r\n\r\n        .sc-anonymous-viewer .sc-heading-primary span::after {\r\n            content: \"\";\r\n            position: absolute;\r\n            bottom: -3px;\r\n            left: 0;\r\n            width: 100%;\r\n            height: 3px;\r\n            background: #FF9800;\r\n            border-radius: 10px;\r\n        }\r\n\r\n        .sc-anonymous-viewer .sc-lead-text {\r\n            font-size: clamp(0.875rem, 0.35vw + 0.8rem, 1rem);\r\n            margin: 0.75rem auto 0;\r\n            line-height: 1.55;\r\n            font-weight: 400;\r\n            max-width: 36rem;\r\n            color: rgba(255, 255, 255, 0.92);\r\n            padding: 0 0.25rem;\r\n            word-wrap: break-word;\r\n            overflow-wrap: anywhere;\r\n        }\r\n\r\n        \/* Input Area *\/\r\n        .sc-anonymous-viewer .sc-input-area {\r\n            display: flex;\r\n            align-items: center;\r\n            background: #f8fafc;\r\n            padding: 1rem 1.125rem;\r\n            border-radius: 12px;\r\n            gap: 12px;\r\n            margin: 0 auto;\r\n            max-width: 100%;\r\n            flex-wrap: wrap;\r\n            border: 1px solid #e2e8f0;\r\n            position: relative;\r\n            z-index: 1;\r\n        }\r\n\r\n        .sc-anonymous-viewer .sc-input-label-row {\r\n            width: 100%;\r\n            text-align: left;\r\n            margin-bottom: 2px;\r\n        }\r\n\r\n        .sc-anonymous-viewer .sc-input-label-row span {\r\n            font-weight: 600;\r\n            color: #1e293b;\r\n            font-size: 0.9375rem;\r\n        }\r\n\r\n        .sc-anonymous-viewer .sc-input-brand-icon {\r\n            color: #fffc00;\r\n            font-size: clamp(1rem, 2.5vw, 1.125rem);\r\n            margin-right: 8px;\r\n            vertical-align: middle;\r\n        }\r\n\r\n        .sc-anonymous-viewer .sc-username-input {\r\n            flex-grow: 1;\r\n\t\t\t\t\t\tmargin-bottom: 0;\r\n            padding: 18px;\r\n            font-size: 0.9375rem;\r\n            border: 1px solid #cbd5e1;\r\n            outline: none;\r\n            min-width: min(200px, 100%);\r\n            background: #fff;\r\n            border-radius: 10px;\r\n            transition: border-color 0.25s, box-shadow 0.25s;\r\n            color: #1e293b;\r\n            font-weight: 500;\r\n        }\r\n\r\n        .sc-anonymous-viewer .sc-username-input:focus {\r\n            border-color: #6366f1;\r\n            box-shadow: 0 0 0 4px rgba(99, 102, 241, 0.2);\r\n        }\r\n\r\n        .sc-anonymous-viewer .sc-view-profile {\r\n            border: none;\r\n            border-radius: 10px;\r\n            padding: 18px;\r\n            cursor: pointer;\r\n            font-weight: 600;\r\n            transition: transform 0.2s, box-shadow 0.2s;\r\n            display: inline-flex;\r\n            align-items: center;\r\n            justify-content: center;\r\n            gap: 8px;\r\n            font-size: 0.9375rem;\r\n            background: linear-gradient(135deg, #06b6d4 0%, #8b5cf6 45%, #f97316 100%);\r\n            color: white;\r\n            box-shadow: 0 8px 24px rgba(139, 92, 246, 0.35);\r\n            position: relative;\r\n            z-index: 1;\r\n        }\r\n\r\n        .sc-anonymous-viewer .sc-view-profile:hover {\r\n            transform: translateY(-2px);\r\n            box-shadow: 0 12px 28px rgba(6, 182, 212, 0.35);\r\n        }\r\n\r\n        .sc-anonymous-viewer .sc-view-profile:disabled {\r\n            opacity: 0.6;\r\n            cursor: not-allowed;\r\n        }\r\n\r\n        .sc-anonymous-viewer #error-message {\r\n            color: #b91c1c;\r\n            margin-top: 12px;\r\n            display: none;\r\n            font-weight: 500;\r\n            font-size: 0.875rem;\r\n            background: #fef2f2;\r\n            padding: 0.625rem 0.75rem;\r\n            border-radius: 8px;\r\n            border: 1px solid #fecaca;\r\n            position: relative;\r\n            z-index: 1;\r\n        }\r\n\r\n        \/* Result Section *\/\r\n        .sc-anonymous-viewer .tools-result {\r\n            width: min(100%, 1400px);\r\n            max-width: 100%;\r\n            min-width: 0;\r\n            margin: 60px auto;\r\n            display: block; \/* Visible by default with placeholder *\/\r\n            box-sizing: border-box;\r\n        }\r\n\r\n        .sc-anonymous-viewer .sc-result {\r\n            margin-top: 1.5rem;\r\n            background: #ffffff;\r\n            border-radius: 16px;\r\n            padding: 1.5rem;\r\n            color: #334155;\r\n            box-shadow: 0 1px 3px rgba(15, 23, 42, 0.06), 0 8px 24px rgba(15, 23, 42, 0.08);\r\n            animation: fadeIn 0.5s ease-out;\r\n            border: 1px solid #e2e8f0;\r\n            overflow-x: visible;\r\n            overflow-y: visible;\r\n            min-width: 0;\r\n            container-type: inline-size;\r\n            container-name: snap-sc-result;\r\n        }\r\n\r\n        @keyframes fadeIn {\r\n            from { opacity: 0; transform: translateY(20px); }\r\n            to { opacity: 1; transform: translateY(0); }\r\n        }\r\n\r\n        \/* Skeleton loaders \u2014 keep inside card: no 1000px bg sweep, flex children need min-width:0 *\/\r\n        .sc-anonymous-viewer #skeleton-loading {\r\n            max-width: 100%;\r\n            min-width: 0;\r\n            overflow-x: hidden;\r\n            box-sizing: border-box;\r\n        }\r\n\r\n        @keyframes shimmer {\r\n            0% {\r\n                background-position: 100% 0;\r\n            }\r\n            100% {\r\n                background-position: -100% 0;\r\n            }\r\n        }\r\n\r\n        .sc-anonymous-viewer .skeleton-avatar,\r\n        .sc-anonymous-viewer .skeleton-username,\r\n        .sc-anonymous-viewer .skeleton-fullname,\r\n        .sc-anonymous-viewer .skeleton-stat,\r\n        .sc-anonymous-viewer .skeleton-bio,\r\n        .sc-anonymous-viewer .skeleton-tab,\r\n        .sc-anonymous-viewer .skeleton-content-img {\r\n            background: linear-gradient(90deg, #f1f5f9 0%, #e2e8f0 50%, #f1f5f9 100%);\r\n            background-size: 200% 100%;\r\n            animation: shimmer 2s infinite linear;\r\n        }\r\n\r\n        .sc-anonymous-viewer .skeleton-profile {\r\n            width: 100%;\r\n            max-width: 100%;\r\n            min-width: 0;\r\n            animation: fadeIn 0.5s ease-out;\r\n            box-sizing: border-box;\r\n        }\r\n\r\n        .sc-anonymous-viewer .skeleton-profile-header {\r\n            display: flex;\r\n            gap: 30px;\r\n            padding: 1.5rem;\r\n            background: #f8fafc;\r\n            border-radius: 12px;\r\n            margin-bottom: 1rem;\r\n            border: 1px solid #e2e8f0;\r\n            max-width: 100%;\r\n            min-width: 0;\r\n            box-sizing: border-box;\r\n        }\r\n\r\n        .sc-anonymous-viewer .skeleton-avatar {\r\n            width: 150px;\r\n            height: 150px;\r\n            border-radius: 50%;\r\n            flex-shrink: 0;\r\n            border: 3px solid #e2e8f0;\r\n            box-shadow: 0 4px 12px rgba(15, 23, 42, 0.06);\r\n        }\r\n\r\n        .sc-anonymous-viewer .skeleton-profile-info {\r\n            flex: 1;\r\n            min-width: 0;\r\n            display: flex;\r\n            flex-direction: column;\r\n            gap: 15px;\r\n        }\r\n\r\n        .sc-anonymous-viewer .skeleton-username {\r\n            height: 22px;\r\n            width: 180px;\r\n            max-width: 100%;\r\n            border-radius: 6px;\r\n        }\r\n\r\n        .sc-anonymous-viewer .skeleton-fullname {\r\n            height: 16px;\r\n            width: 140px;\r\n            max-width: 100%;\r\n            border-radius: 6px;\r\n        }\r\n\r\n        .sc-anonymous-viewer .skeleton-stats {\r\n            display: flex;\r\n            gap: 25px;\r\n            margin-top: 10px;\r\n            flex-wrap: wrap;\r\n            min-width: 0;\r\n        }\r\n\r\n        .sc-anonymous-viewer .skeleton-stat {\r\n            height: 36px;\r\n            width: 60px;\r\n            flex-shrink: 0;\r\n            border-radius: 6px;\r\n        }\r\n\r\n        .sc-anonymous-viewer .skeleton-bio {\r\n            height: 56px;\r\n            width: 100%;\r\n            max-width: 100%;\r\n            border-radius: 6px;\r\n            margin-top: 15px;\r\n            box-sizing: border-box;\r\n        }\r\n\r\n        .sc-anonymous-viewer .skeleton-tabs {\r\n            display: flex;\r\n            justify-content: center;\r\n            gap: 15px;\r\n            margin-bottom: 30px;\r\n            flex-wrap: wrap;\r\n            max-width: 100%;\r\n            min-width: 0;\r\n        }\r\n\r\n        .sc-anonymous-viewer .skeleton-tab {\r\n            height: 36px;\r\n            width: 100px;\r\n            flex-shrink: 0;\r\n            border-radius: 50px;\r\n        }\r\n\r\n        \/* Content Skeleton *\/\r\n        .sc-anonymous-viewer .skeleton-content-grid {\r\n            display: grid;\r\n            grid-template-columns: repeat(auto-fill, minmax(min(200px, 100%), 1fr));\r\n            gap: 20px;\r\n            max-width: 100%;\r\n            min-width: 0;\r\n        }\r\n\r\n        .sc-anonymous-viewer .skeleton-content-item {\r\n            border-radius: 12px;\r\n            overflow: hidden;\r\n            background: #f1f5f9;\r\n            box-shadow: 0 2px 8px rgba(15, 23, 42, 0.06);\r\n            border: 1px solid #e2e8f0;\r\n            height: 200px;\r\n            aspect-ratio: auto;\r\n            min-width: 0;\r\n        }\r\n\r\n        .sc-anonymous-viewer .skeleton-content-img {\r\n            width: 100%;\r\n            height: 100%;\r\n        }\r\n\r\n        \/* Profile Header *\/\r\n        .sc-anonymous-viewer .sc-profile-header {\r\n            margin-bottom: 1.5rem;\r\n            position: relative;\r\n            background: linear-gradient(180deg, #f8fafc 0%, #f1f5f9 100%);\r\n            border-radius: 12px;\r\n            padding: 1.25rem 1.5rem;\r\n            box-shadow: 0 1px 2px rgba(15, 23, 42, 0.04);\r\n            border: 1px solid #e2e8f0;\r\n        }\r\n\r\n        .sc-anonymous-viewer .profile-header-content {\r\n            display: flex;\r\n            align-items: center;\r\n            gap: 30px;\r\n            flex-wrap: wrap;\r\n        }\r\n\r\n        .sc-anonymous-viewer .profile-image-container {\r\n            position: relative;\r\n            flex-shrink: 0;\r\n        }\r\n\r\n        .sc-anonymous-viewer .profile-image {\r\n            width: 120px;\r\n            height: 120px;\r\n            border-radius: 50%;\r\n            object-fit: cover;\r\n            border: 3px solid #e2e8f0;\r\n            box-shadow: 0 4px 14px rgba(15, 23, 42, 0.08);\r\n            transition: transform 0.3s;\r\n            background: linear-gradient(135deg, #e0f2fe 0%, #fae8ff 100%);\r\n            padding: 3px;\r\n            min-height: 120px;\r\n            min-width: 120px;\r\n            display: flex;\r\n            align-items: center;\r\n            justify-content: center;\r\n            color: #94a3b8;\r\n            font-size: 2.75rem;\r\n        }\r\n\r\n        .sc-anonymous-viewer .profile-image:hover {\r\n            transform: scale(1.03);\r\n        }\r\n\r\n        .sc-anonymous-viewer .sc-profile-placeholder-icon {\r\n            font-size: clamp(2rem, 14vw, 3.75rem);\r\n            line-height: 1;\r\n        }\r\n\r\n        .sc-anonymous-viewer .view-profile-img {\r\n            position: absolute;\r\n            bottom: 5px;\r\n            right: 5px;\r\n            background: linear-gradient(135deg, #06b6d4, #8b5cf6, #f97316);\r\n            color: white;\r\n            border: none;\r\n            border-radius: 50%;\r\n            width: 38px;\r\n            height: 38px;\r\n            display: flex;\r\n            justify-content: center;\r\n            align-items: center;\r\n            cursor: pointer;\r\n            transition: transform 0.25s, box-shadow 0.25s;\r\n            box-shadow: 0 6px 18px rgba(139, 92, 246, 0.45);\r\n            z-index: 5;\r\n        }\r\n\r\n        .sc-anonymous-viewer .view-profile-img:hover {\r\n            transform: scale(1.1) rotate(12deg);\r\n            box-shadow: 0 8px 24px rgba(249, 115, 22, 0.45);\r\n        }\r\n\r\n        .sc-anonymous-viewer .profile-info {\r\n            flex: 1;\r\n            text-align: left;\r\n            min-width: 250px;\r\n        }\r\n\r\n        .sc-anonymous-viewer .sc-profile-username {\r\n            font-size: 1.25rem;\r\n            margin: 0 0 4px;\r\n            font-weight: 700;\r\n            color: #0f172a;\r\n        }\r\n\r\n        .sc-anonymous-viewer .sc-profile-fullname {\r\n            font-size: 1rem;\r\n            margin: 0 0 12px;\r\n            font-weight: 500;\r\n            color: #64748b;\r\n        }\r\n\r\n        .sc-anonymous-viewer .stats {\r\n            display: flex;\r\n            gap: 25px;\r\n            margin: 15px 0;\r\n        }\r\n\r\n        .sc-anonymous-viewer .stat-item {\r\n            display: flex;\r\n            flex-direction: column;\r\n            align-items: center;\r\n        }\r\n\r\n        .sc-anonymous-viewer .stat-value {\r\n            font-size: 1.125rem;\r\n            font-weight: 700;\r\n            color: #0d9488;\r\n        }\r\n\r\n        .sc-anonymous-viewer .stat-label {\r\n            font-size: 0.8125rem;\r\n            color: #64748b;\r\n            margin-top: 2px;\r\n        }\r\n\r\n        .sc-anonymous-viewer .profile-bio {\r\n            margin-top: 1rem;\r\n            padding-top: 1rem;\r\n            border-top: 1px solid #e2e8f0;\r\n            text-align: left;\r\n            color: #475569;\r\n            font-size: 0.9375rem;\r\n            line-height: 1.55;\r\n        }\r\n\r\n        .sc-anonymous-viewer .profile-bio .sc-profile-bio-text {\r\n            margin: 0;\r\n        }\r\n\r\n        .sc-anonymous-viewer .profile-link {\r\n            display: inline-flex;\r\n            align-items: center;\r\n            gap: 5px;\r\n            color: #4f46e5;\r\n            font-size: 0.9375rem;\r\n            text-decoration: none;\r\n            font-weight: 500;\r\n            margin-top: 10px;\r\n            transition: all 0.3s;\r\n        }\r\n\r\n        .sc-anonymous-viewer .profile-link:hover {\r\n            color: #4338ca;\r\n            text-decoration: underline;\r\n        }\r\n\r\n        \/* Tabs \u2014 wide screens: wrap; narrow\/medium overrides use horizontal scroll *\/\r\n        .sc-anonymous-viewer .sc-tabs {\r\n            display: flex;\r\n            justify-content: center;\r\n            align-items: center;\r\n            margin: 1.25rem 0 10px;\r\n            gap: 8px;\r\n            flex-wrap: wrap;\r\n            width: 100%;\r\n            max-width: 100%;\r\n            min-width: 0;\r\n            box-sizing: border-box;\r\n        }\r\n\r\n        .sc-anonymous-viewer .sc-tabs .sc-tab-trigger {\r\n            background: #f1f5f9;\r\n            color: #475569;\r\n            font-weight: 600;\r\n            font-size: 0.875rem;\r\n            padding: 0.5rem 1rem;\r\n            cursor: pointer;\r\n            border-radius: 999px;\r\n            transition: transform 0.2s, box-shadow 0.2s, background 0.2s, color 0.2s;\r\n            display: inline-flex;\r\n            align-items: center;\r\n            gap: 8px;\r\n            box-shadow: none;\r\n            border: 1px solid #e2e8f0;\r\n            flex-shrink: 0;\r\n            white-space: nowrap;\r\n        }\r\n\r\n        .sc-anonymous-viewer .sc-tabs .sc-tab-trigger i {\r\n            font-size: 0.875rem;\r\n            opacity: 0.9;\r\n        }\r\n\r\n        .sc-anonymous-viewer .sc-tabs .sc-tab-trigger.active {\r\n            background: linear-gradient(135deg, #0891b2 0%, #6366f1 50%, #7c3aed 100%);\r\n            color: #fff;\r\n            box-shadow: 0 4px 14px rgba(99, 102, 241, 0.25);\r\n            transform: translateY(-1px);\r\n            border-color: transparent;\r\n        }\r\n\r\n        .sc-anonymous-viewer .sc-tabs .sc-tab-trigger:hover:not(.active) {\r\n            background: #e2e8f0;\r\n            color: #334155;\r\n            border-color: #cbd5e1;\r\n        }\r\n\r\n        \/* Tab output: no inner scroll \u2014 page scrolls naturally *\/\r\n        .sc-anonymous-viewer #tab-content {\r\n            margin-top: 10px;\r\n            overflow: visible;\r\n            min-width: 0;\r\n            max-width: 100%;\r\n        }\r\n\r\n        \/* Tab Content *\/\r\n        .sc-anonymous-viewer .tab-content {\r\n            padding: 12px 4px 20px;\r\n            text-align: center;\r\n            color: #64748b;\r\n            font-size: 0.9375rem;\r\n            display: none;\r\n        }\r\n\r\n        .sc-anonymous-viewer .tab-content.active {\r\n            display: block;\r\n        }\r\n\r\n        .sc-anonymous-viewer .no-result {\r\n            border: 1px dashed #cbd5e1;\r\n            padding: 1.5rem 1.25rem;\r\n            margin-top: 0.75rem;\r\n            text-align: center;\r\n            font-size: 0.9375rem;\r\n            font-weight: 500;\r\n            line-height: 1.55;\r\n            border-radius: 12px;\r\n            color: #64748b;\r\n            background: #f8fafc;\r\n        }\r\n\r\n        .sc-anonymous-viewer .no-result i {\r\n            font-size: clamp(1.5rem, 6vw, 2rem);\r\n            color: #cbd5e1;\r\n            margin-bottom: 0.75rem;\r\n            display: block;\r\n        }\r\n\r\n        .sc-anonymous-viewer .no-result .sc-no-result-msg {\r\n            font-size: clamp(0.8125rem, 1.5vw + 0.65rem, 0.9375rem);\r\n            word-wrap: break-word;\r\n            overflow-wrap: anywhere;\r\n        }\r\n\r\n        \/* Other tab: responsive card grid *\/\r\n        .sc-anonymous-viewer .sc-other-grid {\r\n            display: grid;\r\n            grid-template-columns: repeat(auto-fill, minmax(min(100%, 450px), 1fr));\r\n            gap: 1rem 1.25rem;\r\n            margin-top: 0.5rem;\r\n            padding: 0.25rem 0 1rem;\r\n            align-items: stretch;\r\n            text-align: left;\r\n        }\r\n\r\n        .sc-anonymous-viewer .sc-other-card {\r\n            margin: 0;\r\n            padding: 14px;\r\n            background: #f8fafc;\r\n            border-radius: 12px;\r\n            border: 1px solid #e2e8f0;\r\n            min-height: 0;\r\n        }\r\n\r\n        .sc-anonymous-viewer .sc-other-card-wide {\r\n            grid-column: 1 \/ -1;\r\n        }\r\n\r\n        .sc-anonymous-viewer .sc-other-card-center {\r\n            text-align: center;\r\n        }\r\n\r\n        \/* Other tab: cover \/ hero image \u2014 fixed frame so tall portraits don\u2019t stretch the page *\/\r\n        .sc-anonymous-viewer .sc-cover-image-frame {\r\n            cursor: pointer;\r\n            border-radius: 12px;\r\n            overflow: hidden;\r\n            box-shadow: 0 4px 14px rgba(15, 23, 42, 0.12);\r\n            max-width: 600px;\r\n            width: 100%;\r\n            margin: 0 auto;\r\n            height: 220px;\r\n            background: #f1f5f9;\r\n        }\r\n\r\n        .sc-anonymous-viewer .sc-cover-image-img {\r\n            width: 100%;\r\n            height: 100%;\r\n            object-fit: cover;\r\n            object-position: center;\r\n            display: block;\r\n        }\r\n\r\n        \/* Stories\/Spotlights Grid *\/\r\n        \/* Section Separators *\/\r\n        .sc-anonymous-viewer .sc-section-divider {\r\n            margin: 50px 0 30px;\r\n            text-align: center;\r\n            position: relative;\r\n        }\r\n\r\n        .sc-anonymous-viewer .sc-section-divider::before {\r\n            content: '';\r\n            position: absolute;\r\n            top: 50%;\r\n            left: 0;\r\n            right: 0;\r\n            height: 2px;\r\n            background: linear-gradient(90deg, transparent, rgba(255, 107, 0, 0.3), transparent);\r\n        }\r\n\r\n        .sc-anonymous-viewer .sc-section-divider .sc-section-heading {\r\n            display: inline-block;\r\n            background: linear-gradient(135deg, #FFFC00, #FFD700);\r\n            padding: clamp(10px, 2vw, 15px) clamp(16px, 5vw, 40px);\r\n            border-radius: 30px;\r\n            font-size: clamp(1.125rem, 2.5vw + 0.65rem, 1.75rem);\r\n            font-weight: 800;\r\n            color: #333;\r\n            box-shadow: 0 4px 15px rgba(255, 107, 0, 0.3);\r\n            position: relative;\r\n            z-index: 1;\r\n            margin: 0;\r\n            max-width: 100%;\r\n            box-sizing: border-box;\r\n            word-wrap: break-word;\r\n            line-height: 1.25;\r\n        }\r\n\r\n        .sc-anonymous-viewer .stories-grid {\r\n            display: grid;\r\n            grid-template-columns: repeat(auto-fill, minmax(min(100%, 250px), 1fr));\r\n            gap: 1.25rem;\r\n            margin-top: 1rem;\r\n            padding: 0.5rem 0 1.25rem;\r\n            align-items: stretch;\r\n        }\r\n\r\n        .sc-anonymous-viewer .story-card {\r\n            display: flex;\r\n            flex-direction: column;\r\n            height: 100%;\r\n            min-height: 0;\r\n            border-radius: 12px;\r\n            overflow: hidden;\r\n            background: #ffffff;\r\n            box-shadow: 0 1px 3px rgba(15, 23, 42, 0.06), 0 4px 14px rgba(15, 23, 42, 0.06);\r\n            transition: transform 0.25s, box-shadow 0.25s;\r\n            border: 1px solid #e2e8f0;\r\n            animation: slideUp 0.5s ease-out;\r\n            animation-fill-mode: both;\r\n        }\r\n\r\n        @keyframes slideUp {\r\n            from { opacity: 0; transform: translateY(20px); }\r\n            to { opacity: 1; transform: translateY(0); }\r\n        }\r\n\r\n        .sc-anonymous-viewer .story-card:hover {\r\n            transform: translateY(-4px);\r\n            box-shadow: 0 8px 24px rgba(15, 23, 42, 0.1);\r\n            border-color: #cbd5e1;\r\n        }\r\n\r\n        .sc-anonymous-viewer .story-img-container {\r\n            position: relative;\r\n            overflow: hidden;\r\n            width: 100%;\r\n            height: 200px;\r\n            max-height: 200px;\r\n            flex-shrink: 0;\r\n            background: #f1f5f9;\r\n        }\r\n\r\n        .sc-anonymous-viewer .story-thumb {\r\n            width: 100%;\r\n            height: 100%;\r\n            object-fit: cover;\r\n            display: block;\r\n        }\r\n\r\n        \/* Overlay title row on thumbnail (story tab) *\/\r\n        .sc-anonymous-viewer .story-img-container .story-title {\r\n            font-size: 0.9375rem;\r\n            font-weight: 700;\r\n            color: #fff;\r\n            text-shadow: 0 2px 12px rgba(0, 0, 0, 0.85);\r\n            line-height: 1.3;\r\n            max-width: 65%;\r\n            text-align: left;\r\n        }\r\n\r\n        .sc-anonymous-viewer .story-img-container .story-badge {\r\n            background: linear-gradient(135deg, #0891b2, #7c3aed);\r\n            color: #fff;\r\n            font-size: 0.8125rem;\r\n            font-weight: 600;\r\n            padding: 5px 10px;\r\n            border-radius: 999px;\r\n            display: inline-flex;\r\n            align-items: center;\r\n            gap: 6px;\r\n            cursor: pointer;\r\n            border: 1px solid rgba(255, 255, 255, 0.35);\r\n            box-shadow: 0 4px 14px rgba(0, 0, 0, 0.35);\r\n            transition: transform 0.2s, filter 0.2s;\r\n        }\r\n\r\n        .sc-anonymous-viewer .story-img-container .story-badge:hover {\r\n            transform: scale(1.03);\r\n            filter: brightness(1.08);\r\n        }\r\n\r\n        .sc-anonymous-viewer .sc-card-section {\r\n            flex: 1 1 auto;\r\n            display: flex;\r\n            flex-direction: column;\r\n            min-height: 0;\r\n            padding: 1rem 1.125rem 1.25rem;\r\n        }\r\n\r\n        .sc-anonymous-viewer .sc-card-section .story-card-heading {\r\n            font-size: 1rem;\r\n            font-weight: 700;\r\n            color: #0f172a;\r\n            margin-bottom: 0.375rem;\r\n            text-align: center;\r\n            line-height: 1.35;\r\n        }\r\n\r\n        .sc-anonymous-viewer .sc-card-section .story-card-sub {\r\n            font-size: 0.875rem;\r\n            color: #64748b;\r\n            text-align: center;\r\n            margin-bottom: 0.625rem;\r\n            line-height: 1.45;\r\n        }\r\n\r\n        .sc-anonymous-viewer .story-stat-bar {\r\n            display: flex;\r\n            justify-content: center;\r\n            flex-wrap: wrap;\r\n            gap: 1rem 1.5rem;\r\n            margin-bottom: 0.75rem;\r\n            padding: 0.625rem 0.875rem;\r\n            background: #f8fafc;\r\n            border-radius: 10px;\r\n            border: 1px solid #e2e8f0;\r\n        }\r\n\r\n        .sc-anonymous-viewer .story-stat-bar .stat-num {\r\n            font-weight: 700;\r\n            font-size: 0.9375rem;\r\n            color: #0d9488;\r\n        }\r\n\r\n        .sc-anonymous-viewer .story-stat-bar .stat-num.accent {\r\n            color: #c2410c;\r\n        }\r\n\r\n        .sc-anonymous-viewer .story-stat-bar .stat-lbl {\r\n            font-size: 0.75rem;\r\n            color: #64748b;\r\n            margin-top: 2px;\r\n        }\r\n\r\n        .sc-anonymous-viewer .story-snaps-grid {\r\n            margin: 0.75rem 0;\r\n            padding: 0.875rem;\r\n            background: linear-gradient(180deg, #faf5ff 0%, #f5f3ff 100%);\r\n            border-radius: 12px;\r\n            border: 1px solid #e9d5ff;\r\n            box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.8);\r\n            overflow: hidden;\r\n        }\r\n\r\n        \/* Only the snap thumbnails grid scrolls; title stays fixed above *\/\r\n        .sc-anonymous-viewer .story-snaps-grid-inner {\r\n            display: grid;\r\n            grid-template-columns: repeat(auto-fill, minmax(100px, 1fr));\r\n            gap: 10px;\r\n            align-content: start;\r\n            max-height: min(42vh, 380px);\r\n            overflow-y: auto;\r\n            overflow-x: hidden;\r\n            padding-right: 4px;\r\n            -webkit-overflow-scrolling: touch;\r\n            scrollbar-gutter: stable;\r\n        }\r\n\r\n        .sc-anonymous-viewer .story-snaps-grid-inner::-webkit-scrollbar {\r\n            width: 8px;\r\n        }\r\n\r\n        .sc-anonymous-viewer .story-snaps-grid-inner::-webkit-scrollbar-track {\r\n            background: #ede9fe;\r\n            border-radius: 8px;\r\n        }\r\n\r\n        .sc-anonymous-viewer .story-snaps-grid-inner::-webkit-scrollbar-thumb {\r\n            background: linear-gradient(180deg, #06b6d4, #a855f7);\r\n            border-radius: 8px;\r\n        }\r\n\r\n        .sc-anonymous-viewer .story-snaps-grid-inner::-webkit-scrollbar-thumb:hover {\r\n            background: linear-gradient(180deg, #22d3ee, #c084fc);\r\n        }\r\n\r\n        .sc-anonymous-viewer .story-snaps-grid-title {\r\n            font-size: 0.8125rem;\r\n            color: #5b21b6;\r\n            margin-bottom: 10px;\r\n            font-weight: 600;\r\n            text-align: center;\r\n            letter-spacing: 0.01em;\r\n        }\r\n\r\n        .sc-anonymous-viewer .story-snap-cell {\r\n            position: relative;\r\n            cursor: pointer;\r\n            border-radius: 10px;\r\n            overflow: hidden;\r\n            aspect-ratio: 1;\r\n            background: #f1f5f9;\r\n            border: 1px solid #ddd6fe;\r\n            box-shadow: 0 1px 3px rgba(15, 23, 42, 0.06);\r\n            transition: transform 0.2s ease, box-shadow 0.2s ease, border-color 0.2s ease;\r\n        }\r\n\r\n        .sc-anonymous-viewer .story-snap-cell:hover {\r\n            transform: translateY(-2px);\r\n            border-color: #a78bfa;\r\n            box-shadow: 0 6px 16px rgba(99, 102, 241, 0.15);\r\n        }\r\n\r\n        .sc-anonymous-viewer .story-snap-cell img {\r\n            width: 100%;\r\n            height: 100%;\r\n            object-fit: cover;\r\n            display: block;\r\n            cursor: pointer;\r\n        }\r\n\r\n        .sc-anonymous-viewer .story-snap-cell .story-always-play,\r\n        .sc-anonymous-viewer .story-snap-cell .story-always-download {\r\n            z-index: 12;\r\n        }\r\n\r\n        .sc-anonymous-viewer .story-card-footer-time {\r\n            text-align: center;\r\n            font-size: 0.8125rem;\r\n            color: #64748b;\r\n            margin-top: 0.625rem;\r\n            padding-top: 0.625rem;\r\n            border-top: 1px solid #e2e8f0;\r\n        }\r\n\r\n        .sc-anonymous-viewer .sc-gradient-action {\r\n            padding: 0.625rem 1.25rem;\r\n            background: linear-gradient(135deg, #0891b2 0%, #6366f1 50%, #7c3aed 100%);\r\n            color: #fff !important;\r\n            border: none;\r\n            border-radius: 999px;\r\n            font-weight: 600;\r\n            cursor: pointer;\r\n            font-size: 0.875rem;\r\n            width: 100%;\r\n            box-shadow: 0 8px 24px rgba(139, 92, 246, 0.35);\r\n            transition: transform 0.2s, box-shadow 0.2s;\r\n        }\r\n\r\n        .sc-anonymous-viewer .sc-gradient-action:hover {\r\n            transform: translateY(-2px);\r\n            box-shadow: 0 12px 28px rgba(6, 182, 212, 0.35);\r\n        }\r\n\r\n        .sc-anonymous-viewer .story-duration-pill {\r\n            position: absolute;\r\n            bottom: 10px;\r\n            right: 10px;\r\n            background: linear-gradient(135deg, rgba(15, 23, 42, 0.95) 0%, rgba(88, 28, 135, 0.9) 100%);\r\n            color: #fff;\r\n            padding: 6px 11px;\r\n            border-radius: 10px;\r\n            font-size: 0.8125rem;\r\n            font-weight: 700;\r\n            border: 1px solid rgba(255, 255, 255, 0.22);\r\n            z-index: 8;\r\n            box-shadow: 0 4px 14px rgba(0, 0, 0, 0.35);\r\n        }\r\n\r\n        .sc-anonymous-viewer .spotlight-desc {\r\n            margin: 0.625rem 0;\r\n            padding: 0.625rem 0.875rem;\r\n            background: #f8fafc;\r\n            border-radius: 10px;\r\n            font-size: 0.875rem;\r\n            color: #475569;\r\n            line-height: 1.5;\r\n            text-align: center;\r\n            border: 1px solid #e2e8f0;\r\n            overflow: visible;\r\n        }\r\n\r\n        .sc-anonymous-viewer .hashtag-chip {\r\n            display: inline-block;\r\n            background: linear-gradient(135deg, #fff7ed 0%, #fce7f3 100%);\r\n            color: #9a3412;\r\n            padding: 4px 10px;\r\n            border-radius: 999px;\r\n            font-size: 0.75rem;\r\n            font-weight: 600;\r\n            margin: 3px;\r\n            border: 1px solid #fed7aa;\r\n        }\r\n\r\n        \/* Related tab (injected markup uses these classes) *\/\r\n        .sc-anonymous-viewer .sc-related-wrap {\r\n            padding: clamp(12px, 3vw, 20px);\r\n        }\r\n\r\n        .sc-anonymous-viewer .sc-related-header {\r\n            text-align: center;\r\n            margin-bottom: clamp(16px, 4vw, 25px);\r\n        }\r\n\r\n        .sc-anonymous-viewer .sc-related-title {\r\n            color: #0f172a;\r\n            font-size: clamp(1.0625rem, 2vw + 0.5rem, 1.25rem);\r\n            font-weight: 700;\r\n            margin-bottom: 8px;\r\n            line-height: 1.3;\r\n            word-wrap: break-word;\r\n        }\r\n\r\n        .sc-anonymous-viewer .sc-related-desc {\r\n            color: #64748b;\r\n            font-size: clamp(0.8125rem, 0.5vw + 0.75rem, 0.875rem);\r\n            line-height: 1.45;\r\n        }\r\n\r\n        .sc-anonymous-viewer .sc-related-grid {\r\n            display: grid;\r\n            grid-template-columns: repeat(auto-fill, minmax(min(100%, 140px), 1fr));\r\n            gap: clamp(12px, 3vw, 20px);\r\n        }\r\n\r\n        .sc-anonymous-viewer .sc-related-card {\r\n            text-align: center;\r\n            padding: clamp(12px, 3vw, 20px);\r\n            background: linear-gradient(165deg, rgba(255, 255, 255, 0.08) 0%, rgba(15, 23, 42, 0.4) 100%);\r\n            border-radius: 16px;\r\n            transition: transform 0.25s, box-shadow 0.25s, border-color 0.25s;\r\n            border: 1px solid rgba(255, 255, 255, 0.12);\r\n            box-shadow: 0 6px 20px rgba(0, 0, 0, 0.15);\r\n            min-width: 0;\r\n        }\r\n\r\n        .sc-anonymous-viewer .sc-related-card:hover {\r\n            transform: translateY(-4px);\r\n            box-shadow: 0 12px 28px rgba(99, 102, 241, 0.25);\r\n            border-color: rgba(6, 182, 212, 0.45);\r\n        }\r\n\r\n        .sc-anonymous-viewer .sc-related-avatar {\r\n            width: clamp(64px, 18vw, 80px);\r\n            height: clamp(64px, 18vw, 80px);\r\n            border-radius: 50%;\r\n            object-fit: cover;\r\n            margin: 0 auto 12px;\r\n            display: block;\r\n            border: 2px solid #e2e8f0;\r\n        }\r\n\r\n        .sc-anonymous-viewer .sc-related-avatar-placeholder {\r\n            width: clamp(64px, 18vw, 80px);\r\n            height: clamp(64px, 18vw, 80px);\r\n            border-radius: 50%;\r\n            background: #f1f5f9;\r\n            margin: 0 auto 12px;\r\n            display: flex;\r\n            align-items: center;\r\n            justify-content: center;\r\n        }\r\n\r\n        .sc-anonymous-viewer .sc-related-avatar-placeholder i {\r\n            font-size: clamp(1.5rem, 5vw, 2.1875rem);\r\n            color: #64748b;\r\n        }\r\n\r\n        .sc-anonymous-viewer .sc-related-name {\r\n            font-weight: 700;\r\n            color: #f1f5f9;\r\n            font-size: clamp(0.875rem, 1.5vw + 0.5rem, 1rem);\r\n            margin-bottom: 6px;\r\n            word-wrap: break-word;\r\n            overflow-wrap: anywhere;\r\n        }\r\n\r\n        .sc-anonymous-viewer .sc-related-handle {\r\n            font-size: clamp(0.8125rem, 1vw + 0.65rem, 0.875rem);\r\n            color: #94a3b8;\r\n            word-break: break-all;\r\n        }\r\n\r\n        .sc-anonymous-viewer .story-overlay {\r\n            position: absolute;\r\n            top: 0;\r\n            left: 0;\r\n            right: 0;\r\n            bottom: 0;\r\n            background: linear-gradient(to bottom, rgba(0, 0, 0, 0) 50%, rgba(0, 0, 0, 0.7) 100%);\r\n            display: flex;\r\n            align-items: center;\r\n            justify-content: center;\r\n            opacity: 0;\r\n            transition: opacity 0.3s ease;\r\n            pointer-events: none;\r\n        }\r\n\r\n        .sc-anonymous-viewer .story-overlay .story-view-btn,\r\n        .sc-anonymous-viewer .story-overlay .story-download-btn,\r\n        .sc-anonymous-viewer .story-overlay .story-comment-btn,\r\n        .sc-anonymous-viewer .story-overlay .story-fullscreen-btn {\r\n            pointer-events: auto;\r\n        }\r\n\r\n        .sc-anonymous-viewer .story-img-container:hover .story-overlay {\r\n            opacity: 1;\r\n        }\r\n\r\n        \/* Always visible download icon in corner *\/\r\n        .sc-anonymous-viewer .story-always-download {\r\n            position: absolute;\r\n            top: 10px;\r\n            right: 10px;\r\n            background: linear-gradient(135deg, #f97316 0%, #ec4899 100%);\r\n            color: white;\r\n            width: 38px;\r\n            height: 38px;\r\n            border-radius: 50%;\r\n            display: flex;\r\n            align-items: center;\r\n            justify-content: center;\r\n            cursor: pointer;\r\n            transition: transform 0.2s, box-shadow 0.2s;\r\n            border: 2px solid rgba(255, 255, 255, 0.45);\r\n            font-size: 0.875rem;\r\n            z-index: 10;\r\n            box-shadow: 0 4px 16px rgba(236, 72, 153, 0.45);\r\n        }\r\n\r\n        .sc-anonymous-viewer .story-always-download:hover {\r\n            transform: scale(1.12);\r\n            box-shadow: 0 6px 22px rgba(249, 115, 22, 0.5);\r\n        }\r\n\r\n        \/* Always visible play icon for videos *\/\r\n        .sc-anonymous-viewer .story-always-play {\r\n            position: absolute;\r\n            top: 10px;\r\n            left: 10px;\r\n            background: linear-gradient(135deg, #06b6d4 0%, #6366f1 100%);\r\n            color: white;\r\n            width: 38px;\r\n            height: 38px;\r\n            border-radius: 50%;\r\n            display: flex;\r\n            align-items: center;\r\n            justify-content: center;\r\n            cursor: pointer;\r\n            transition: transform 0.2s, box-shadow 0.2s;\r\n            border: 2px solid rgba(255, 255, 255, 0.45);\r\n            font-size: 0.875rem;\r\n            z-index: 10;\r\n            box-shadow: 0 4px 16px rgba(6, 182, 212, 0.45);\r\n        }\r\n\r\n        .sc-anonymous-viewer .story-always-play:hover {\r\n            transform: scale(1.12);\r\n            box-shadow: 0 6px 22px rgba(99, 102, 241, 0.5);\r\n        }\r\n\r\n        .sc-anonymous-viewer .story-view-btn,\r\n        .sc-anonymous-viewer .story-download-btn,\r\n        .sc-anonymous-viewer .story-comment-btn {\r\n            background: linear-gradient(145deg, #fff 0%, #e2e8f0 100%);\r\n            color: #7c3aed;\r\n            width: 48px;\r\n            height: 48px;\r\n            border-radius: 50%;\r\n            display: flex;\r\n            align-items: center;\r\n            justify-content: center;\r\n            cursor: pointer;\r\n            transition: transform 0.2s, box-shadow 0.2s;\r\n            border: none;\r\n            font-size: 1rem;\r\n            margin: 0 6px;\r\n            box-shadow: 0 6px 20px rgba(0, 0, 0, 0.25);\r\n        }\r\n\r\n        .sc-anonymous-viewer .story-view-btn:hover,\r\n        .sc-anonymous-viewer .story-download-btn:hover,\r\n        .sc-anonymous-viewer .story-comment-btn:hover {\r\n            transform: scale(1.08) translateY(-2px);\r\n            box-shadow: 0 10px 28px rgba(124, 58, 237, 0.35);\r\n        }\r\n\r\n        \/* Comment Modal Styles (scoped to tool wrapper for WordPress embeds) *\/\r\n        .sc-anonymous-viewer .sc-comment-modal {\r\n            position: fixed;\r\n            top: 0;\r\n            left: 0;\r\n            width: 100%;\r\n            height: 100%;\r\n            z-index: 10000;\r\n            display: none;\r\n            align-items: center;\r\n            justify-content: center;\r\n            background: rgba(0, 0, 0, 0.8);\r\n        }\r\n\r\n        .sc-anonymous-viewer .sc-comment-modal.active {\r\n            display: flex;\r\n        }\r\n\r\n        .sc-anonymous-viewer .sc-comment-modal-content {\r\n            background: white;\r\n            border-radius: 20px;\r\n            width: 90%;\r\n            max-width: 600px;\r\n            max-height: 80vh;\r\n            display: flex;\r\n            flex-direction: column;\r\n            box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3);\r\n        }\r\n\r\n        .sc-anonymous-viewer .sc-comment-modal-header {\r\n            padding: 20px;\r\n            border-bottom: 2px solid #eee;\r\n            display: flex;\r\n            justify-content: space-between;\r\n            align-items: center;\r\n        }\r\n\r\n        .sc-anonymous-viewer .sc-comment-modal-title {\r\n            margin: 0;\r\n            color: #1e293b;\r\n            font-size: 1.125rem;\r\n            font-weight: 700;\r\n        }\r\n\r\n        .sc-anonymous-viewer .sc-comment-modal-close {\r\n            background: linear-gradient(135deg, #e2e8f0, #cbd5e1);\r\n            border: none;\r\n            font-size: 1.125rem;\r\n            color: #334155;\r\n            cursor: pointer;\r\n            padding: 8px 14px;\r\n            border-radius: 12px;\r\n            font-weight: 700;\r\n            box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);\r\n        }\r\n\r\n        .sc-anonymous-viewer .sc-comment-modal-close:hover {\r\n            background: linear-gradient(135deg, #f97316, #fb923c);\r\n            color: #fff;\r\n        }\r\n\r\n        .sc-anonymous-viewer .sc-comment-modal-body {\r\n            padding: 20px;\r\n            overflow-y: auto;\r\n            flex: 1;\r\n        }\r\n\r\n        .sc-anonymous-viewer .sc-comment-item {\r\n            padding: 15px;\r\n            margin-bottom: 15px;\r\n            background: rgba(255, 252, 0, 0.05);\r\n            border-radius: 12px;\r\n            border-left: 4px solid #FF6B00;\r\n        }\r\n\r\n        .sc-anonymous-viewer .sc-comment-header {\r\n            display: flex;\r\n            align-items: center;\r\n            margin-bottom: 8px;\r\n        }\r\n\r\n        .sc-anonymous-viewer .sc-comment-author {\r\n            font-weight: 700;\r\n            color: #333;\r\n            font-size: 14px;\r\n            margin-right: 10px;\r\n        }\r\n\r\n        .sc-anonymous-viewer .sc-comment-time {\r\n            font-size: 11px;\r\n            color: #999;\r\n        }\r\n\r\n        .sc-anonymous-viewer .sc-comment-text {\r\n            color: #333;\r\n            font-size: 14px;\r\n            line-height: 1.5;\r\n            margin-bottom: 8px;\r\n        }\r\n\r\n        .sc-anonymous-viewer .sc-comment-stats {\r\n            display: flex;\r\n            gap: 15px;\r\n            font-size: 12px;\r\n            color: #666;\r\n        }\r\n\r\n        .sc-anonymous-viewer .sc-comment-stats span {\r\n            display: flex;\r\n            align-items: center;\r\n            gap: 5px;\r\n        }\r\n\r\n        .sc-anonymous-viewer .story-video {\r\n            width: 100%;\r\n            height: 100%;\r\n            object-fit: cover;\r\n            display: none;\r\n            position: absolute;\r\n            top: 0;\r\n            left: 0;\r\n            z-index: 2;\r\n        }\r\n\r\n        \/* Story Meta and Actions *\/\r\n        .sc-anonymous-viewer .story-meta {\r\n            padding: 0.875rem 1rem;\r\n            border-top: 1px solid #e2e8f0;\r\n            background: #f8fafc;\r\n        }\r\n\r\n        .sc-anonymous-viewer .story-meta-row {\r\n            display: flex;\r\n            justify-content: space-between;\r\n            gap: 12px;\r\n            margin-bottom: 8px;\r\n            font-size: 0.875rem;\r\n            line-height: 1.45;\r\n        }\r\n\r\n        .sc-anonymous-viewer .story-meta-row:last-child {\r\n            margin-bottom: 0;\r\n        }\r\n\r\n        .sc-anonymous-viewer .story-meta-label {\r\n            color: #64748b;\r\n            font-weight: 500;\r\n        }\r\n\r\n        .sc-anonymous-viewer .story-meta-value {\r\n            color: #1e293b;\r\n            text-align: right;\r\n        }\r\n\r\n        .sc-anonymous-viewer .story-actions {\r\n            display: flex;\r\n            gap: 10px;\r\n            padding: 12px;\r\n            border-top: 1px solid #e2e8f0;\r\n            background: #fff;\r\n        }\r\n\r\n        .sc-anonymous-viewer .story-action-btn {\r\n            flex: 1;\r\n            padding: 0.5rem 12px;\r\n            border-radius: 10px;\r\n            border: none;\r\n            background: linear-gradient(135deg, rgba(6, 182, 212, 0.85) 0%, rgba(99, 102, 241, 0.9) 100%);\r\n            color: #fff;\r\n            cursor: pointer;\r\n            font-weight: 600;\r\n            font-size: 0.8125rem;\r\n            display: flex;\r\n            align-items: center;\r\n            justify-content: center;\r\n            gap: 6px;\r\n            transition: transform 0.2s, box-shadow 0.2s;\r\n            box-shadow: 0 2px 8px rgba(99, 102, 241, 0.2);\r\n        }\r\n\r\n        .sc-anonymous-viewer .story-action-btn:hover {\r\n            transform: translateY(-1px);\r\n            box-shadow: 0 4px 14px rgba(6, 182, 212, 0.25);\r\n        }\r\n\r\n        .sc-anonymous-viewer .story-action-btn[data-action=\"download\"] {\r\n            background: linear-gradient(135deg, #ea580c 0%, #db2777 100%);\r\n            box-shadow: 0 2px 8px rgba(234, 88, 12, 0.25);\r\n        }\r\n\r\n        .sc-anonymous-viewer .story-action-btn[data-action=\"download\"]:hover {\r\n            box-shadow: 0 4px 14px rgba(219, 39, 119, 0.3);\r\n        }\r\n\r\n        .sc-anonymous-viewer .story-action-btn i {\r\n            font-size: 0.8125rem;\r\n        }\r\n\r\n        \/* Snap List *\/\r\n        .sc-anonymous-viewer .snap-list {\r\n            border-top: 1px solid #e2e8f0;\r\n            padding: 12px;\r\n            max-height: 400px;\r\n            overflow-y: auto;\r\n            overflow-x: hidden;\r\n            display: block;\r\n            background: #fafafa;\r\n        }\r\n\r\n        .sc-anonymous-viewer .snap-list.collapsed {\r\n            display: none;\r\n        }\r\n\r\n        .sc-anonymous-viewer .snap-list::-webkit-scrollbar {\r\n            width: 8px;\r\n        }\r\n\r\n        .sc-anonymous-viewer .snap-list::-webkit-scrollbar-track {\r\n            background: #e2e8f0;\r\n            border-radius: 4px;\r\n        }\r\n\r\n        .sc-anonymous-viewer .snap-list::-webkit-scrollbar-thumb {\r\n            background: #94a3b8;\r\n            border-radius: 4px;\r\n        }\r\n\r\n        .sc-anonymous-viewer .snap-list::-webkit-scrollbar-thumb:hover {\r\n            background: #64748b;\r\n        }\r\n\r\n        .sc-anonymous-viewer .snap-item {\r\n            display: flex;\r\n            gap: 12px;\r\n            margin-bottom: 12px;\r\n            padding-bottom: 12px;\r\n            border-bottom: 1px solid #e2e8f0;\r\n        }\r\n\r\n        .sc-anonymous-viewer .snap-item:last-child {\r\n            border-bottom: none;\r\n            margin-bottom: 0;\r\n            padding-bottom: 0;\r\n        }\r\n\r\n        .sc-anonymous-viewer .snap-thumb {\r\n            width: 96px;\r\n            height: 54px;\r\n            aspect-ratio: 16 \/ 9;\r\n            border-radius: 8px;\r\n            overflow: hidden;\r\n            flex-shrink: 0;\r\n            background: #e2e8f0;\r\n            border: 1px solid #cbd5e1;\r\n        }\r\n\r\n        .sc-anonymous-viewer .snap-thumb img {\r\n            width: 100%;\r\n            height: 100%;\r\n            object-fit: cover;\r\n        }\r\n\r\n        .sc-anonymous-viewer .snap-meta {\r\n            flex: 1;\r\n            font-size: 0.8125rem;\r\n            color: #475569;\r\n        }\r\n\r\n        .sc-anonymous-viewer .snap-badge {\r\n            display: inline-block;\r\n            padding: 2px 8px;\r\n            border-radius: 999px;\r\n            background: #e0f2fe;\r\n            color: #0369a1;\r\n            font-size: 0.6875rem;\r\n            margin-bottom: 6px;\r\n            font-weight: 600;\r\n        }\r\n\r\n        \/* Modal \u2014 legacy #sc-modal (scoped to tool wrapper) *\/\r\n        .sc-anonymous-viewer #sc-modal {\r\n            position: fixed;\r\n            top: 0;\r\n            left: 0;\r\n            width: 100%;\r\n            height: 100%;\r\n            background: rgba(0, 0, 0, 0.8);\r\n            z-index: 9998;\r\n            justify-content: center;\r\n            align-items: center;\r\n        }\r\n\r\n        .sc-anonymous-viewer #sc-modal.show {\r\n            display: flex !important;\r\n        }\r\n\r\n        .sc-anonymous-viewer #sc-modal .sc-modal-content {\r\n            background: white;\r\n            border-radius: 20px;\r\n            padding: 30px;\r\n            max-width: 90vw;\r\n            max-height: 90vh;\r\n            overflow: auto;\r\n            position: relative;\r\n            z-index: 9999;\r\n        }\r\n\r\n        .sc-anonymous-viewer #sc-modal .sc-modal-media {\r\n            max-width: 100%;\r\n            max-height: 70vh;\r\n            border-radius: 10px;\r\n        }\r\n\r\n        .sc-anonymous-viewer #sc-modal .sc-close-modal,\r\n        .sc-anonymous-viewer .sc-media-modal .sc-close-modal {\r\n            position: absolute;\r\n            top: 15px;\r\n            right: 15px;\r\n            background: linear-gradient(135deg, #f97316, #ec4899);\r\n            color: white;\r\n            border: none;\r\n            width: 42px;\r\n            height: 42px;\r\n            border-radius: 50%;\r\n            cursor: pointer;\r\n            font-size: 20px;\r\n            display: flex;\r\n            align-items: center;\r\n            justify-content: center;\r\n            z-index: 10002;\r\n            transition: transform 0.2s, box-shadow 0.2s;\r\n            box-shadow: 0 4px 16px rgba(236, 72, 153, 0.4);\r\n        }\r\n\r\n        .sc-anonymous-viewer #sc-modal .sc-close-modal:hover,\r\n        .sc-anonymous-viewer .sc-media-modal .sc-close-modal:hover {\r\n            transform: scale(1.06);\r\n            box-shadow: 0 6px 22px rgba(249, 115, 22, 0.45);\r\n        }\r\n\r\n        .sc-anonymous-viewer #sc-modal .sc-modal-download-btn {\r\n            margin-top: 20px;\r\n            padding: 12px 24px;\r\n            background: linear-gradient(135deg, #06b6d4, #8b5cf6, #f97316);\r\n            color: white;\r\n            border: none;\r\n            border-radius: 10px;\r\n            cursor: pointer;\r\n            font-weight: 600;\r\n            display: flex;\r\n            align-items: center;\r\n            gap: 8px;\r\n            margin: 20px auto 0;\r\n        }\r\n\r\n        \/* Dynamic media modal (append inside .sc-anonymous-viewer for WP-safe scoping) *\/\r\n        .sc-anonymous-viewer .sc-media-modal {\r\n            position: fixed;\r\n            top: 0;\r\n            left: 0;\r\n            width: 100%;\r\n            height: 100%;\r\n            z-index: 10000;\r\n            display: flex;\r\n            align-items: center;\r\n            justify-content: center;\r\n            opacity: 0;\r\n            transition: opacity 0.3s ease;\r\n            pointer-events: none;\r\n        }\r\n\r\n        .sc-anonymous-viewer .sc-media-modal.active {\r\n            opacity: 1;\r\n            pointer-events: all;\r\n        }\r\n\r\n        .sc-anonymous-viewer .sc-media-modal-backdrop {\r\n            position: absolute;\r\n            top: 0;\r\n            left: 0;\r\n            width: 100%;\r\n            height: 100%;\r\n            background: rgba(0, 0, 0, 0.9);\r\n            cursor: pointer;\r\n        }\r\n\r\n        .sc-anonymous-viewer .sc-media-modal .sc-modal-content {\r\n            position: relative;\r\n            background: white;\r\n            border-radius: 20px;\r\n            padding: 30px;\r\n            max-width: 90vw;\r\n            max-height: 90vh;\r\n            overflow: auto;\r\n            z-index: 10001;\r\n            display: flex;\r\n            flex-direction: column;\r\n            align-items: center;\r\n        }\r\n\r\n        .sc-anonymous-viewer .sc-media-modal .sc-modal-actions {\r\n            margin-top: 20px;\r\n            display: flex;\r\n            gap: 10px;\r\n            justify-content: center;\r\n            width: 100%;\r\n        }\r\n\r\n        .sc-anonymous-viewer .sc-media-modal .sc-modal-download-btn,\r\n        .sc-anonymous-viewer .profile-img-modal .sc-modal-download-btn {\r\n            padding: 14px 32px;\r\n            background: linear-gradient(135deg, #06b6d4 0%, #8b5cf6 50%, #f97316 100%);\r\n            color: #fff;\r\n            border: none;\r\n            border-radius: 14px;\r\n            font-weight: 700;\r\n            font-size: 0.9375rem;\r\n            cursor: pointer;\r\n            display: inline-flex;\r\n            align-items: center;\r\n            justify-content: center;\r\n            gap: 10px;\r\n            box-shadow: 0 8px 26px rgba(139, 92, 246, 0.4);\r\n            transition: transform 0.2s, box-shadow 0.2s;\r\n        }\r\n\r\n        .sc-anonymous-viewer .sc-media-modal .sc-modal-download-btn:hover,\r\n        .sc-anonymous-viewer .profile-img-modal .sc-modal-download-btn:hover {\r\n            transform: translateY(-2px);\r\n            box-shadow: 0 12px 32px rgba(6, 182, 212, 0.35);\r\n        }\r\n\r\n        .sc-anonymous-viewer .sc-media-modal .sc-modal-media {\r\n            max-width: 90vw;\r\n            max-height: 70vh;\r\n            object-fit: contain;\r\n            border-radius: 10px;\r\n        }\r\n\r\n        html.sc-snap-modal-lock {\r\n            overflow: hidden;\r\n        }\r\n\r\n        .sc-anonymous-viewer .story-fullscreen-btn {\r\n            position: absolute;\r\n            top: 10px;\r\n            right: 50px;\r\n            background: rgba(0, 0, 0, 0.6);\r\n            color: white;\r\n            border: none;\r\n            width: 40px;\r\n            height: 40px;\r\n            border-radius: 50%;\r\n            cursor: pointer;\r\n            font-size: 16px;\r\n            display: flex;\r\n            align-items: center;\r\n            justify-content: center;\r\n            transition: background 0.3s;\r\n        }\r\n\r\n        .sc-anonymous-viewer .story-fullscreen-btn:hover {\r\n            background: rgba(0, 0, 0, 0.8);\r\n        }\r\n\r\n        \/* ========== Responsive: 992 \/ 768 \/ 600 \/ 480 \/ 400 \/ 375 ========== *\/\r\n\r\n        \/* Tab pills: wrap on small\/medium + horizontal scroll if a row still overflows *\/\r\n        @media (max-width: 1100px) {\r\n            .sc-anonymous-viewer #actual-content {\r\n                min-width: 0;\r\n                max-width: 100%;\r\n            }\r\n\r\n            .sc-anonymous-viewer .sc-tabs {\r\n                justify-content: flex-start;\r\n                flex-wrap: wrap;\r\n                overflow-x: auto;\r\n                overflow-y: hidden;\r\n                -webkit-overflow-scrolling: touch;\r\n                gap: 6px;\r\n                padding: 2px 2px 12px;\r\n                scrollbar-width: thin;\r\n                touch-action: pan-x;\r\n                overscroll-behavior-x: contain;\r\n            }\r\n\r\n            .sc-anonymous-viewer .sc-tabs::-webkit-scrollbar {\r\n                height: 6px;\r\n            }\r\n\r\n            .sc-anonymous-viewer .sc-tabs::-webkit-scrollbar-track {\r\n                background: #f1f5f9;\r\n                border-radius: 999px;\r\n            }\r\n\r\n            .sc-anonymous-viewer .sc-tabs::-webkit-scrollbar-thumb {\r\n                background: #cbd5e1;\r\n                border-radius: 999px;\r\n            }\r\n\r\n            .sc-anonymous-viewer .skeleton-tabs {\r\n                justify-content: flex-start;\r\n                flex-wrap: wrap;\r\n                overflow-x: auto;\r\n                overflow-y: hidden;\r\n                -webkit-overflow-scrolling: touch;\r\n                gap: 10px;\r\n                margin-bottom: 20px;\r\n                padding: 0 0 10px;\r\n                width: 100%;\r\n                max-width: 100%;\r\n                min-width: 0;\r\n                scrollbar-width: thin;\r\n                touch-action: pan-x;\r\n                overscroll-behavior-x: contain;\r\n            }\r\n\r\n            .sc-anonymous-viewer .skeleton-tab {\r\n                flex-shrink: 0;\r\n            }\r\n        }\r\n\r\n        \/* Narrow embed \/ sidebar: tabs scroll even when browser window is wide *\/\r\n        @container snap-sc-result (max-width: 720px) {\r\n            .sc-anonymous-viewer .sc-tabs {\r\n                justify-content: flex-start;\r\n                flex-wrap: wrap;\r\n                overflow-x: auto;\r\n                overflow-y: hidden;\r\n                -webkit-overflow-scrolling: touch;\r\n                gap: 6px;\r\n                padding: 2px 2px 12px;\r\n                scrollbar-width: thin;\r\n                touch-action: pan-x;\r\n                overscroll-behavior-x: contain;\r\n            }\r\n\r\n            .sc-anonymous-viewer .sc-tabs .sc-tab-trigger {\r\n                flex-shrink: 0;\r\n                white-space: nowrap;\r\n                font-size: 0.8125rem;\r\n                padding: 0.45rem 0.8rem;\r\n            }\r\n\r\n            .sc-anonymous-viewer .skeleton-tabs {\r\n                justify-content: flex-start;\r\n                flex-wrap: wrap;\r\n                overflow-x: auto;\r\n                overflow-y: hidden;\r\n                -webkit-overflow-scrolling: touch;\r\n                gap: 10px;\r\n                padding: 0 0 10px;\r\n                width: 100%;\r\n                max-width: 100%;\r\n                min-width: 0;\r\n                scrollbar-width: thin;\r\n                touch-action: pan-x;\r\n                overscroll-behavior-x: contain;\r\n            }\r\n\r\n            .sc-anonymous-viewer .skeleton-tab {\r\n                flex-shrink: 0;\r\n            }\r\n        }\r\n\r\n        @media (max-width: 992px) {\r\n            .sc-anonymous-viewer {\r\n                padding: 18px 22px;\r\n            }\r\n\r\n            .sc-anonymous-viewer .sc-main-wrap {\r\n                padding: 16px;\r\n            }\r\n\r\n            .sc-anonymous-viewer .sc-tool-wrapper,\r\n            .sc-anonymous-viewer .tools-result {\r\n                width: 100%;\r\n                max-width: 100%;\r\n            }\r\n\r\n            .sc-anonymous-viewer .tools-result {\r\n                margin: 40px auto;\r\n            }\r\n\r\n            .sc-anonymous-viewer .sc-section-divider {\r\n                margin: 36px 0 24px;\r\n            }\r\n\r\n            .sc-anonymous-viewer .sc-section-divider .sc-section-heading {\r\n                font-size: clamp(1.25rem, 3vw, 1.75rem);\r\n                padding: 12px 28px;\r\n            }\r\n\r\n            .sc-anonymous-viewer .stories-grid {\r\n                grid-template-columns: repeat(auto-fill, minmax(min(100%, 220px), 1fr));\r\n                gap: 1rem;\r\n            }\r\n\r\n            .sc-anonymous-viewer .sc-other-grid {\r\n                grid-template-columns: 1fr;\r\n            }\r\n\r\n            .sc-anonymous-viewer .skeleton-content-grid {\r\n                grid-template-columns: repeat(auto-fill, minmax(min(100%, 160px), 1fr));\r\n                gap: 14px;\r\n            }\r\n\r\n            .sc-anonymous-viewer .profile-header-content {\r\n                gap: 20px;\r\n            }\r\n\r\n            .sc-anonymous-viewer .sc-comment-modal-content,\r\n            .sc-anonymous-viewer #sc-modal .sc-modal-content,\r\n            .sc-anonymous-viewer .sc-media-modal .sc-modal-content {\r\n                width: min(92vw, 560px);\r\n                padding: 22px;\r\n            }\r\n        }\r\n\r\n        @media (max-width: 768px) {\r\n            .sc-anonymous-viewer {\r\n                padding: 14px 16px;\r\n            }\r\n\r\n            .sc-anonymous-viewer .sc-main-wrap {\r\n                padding: 12px 8px;\r\n            }\r\n\r\n            .sc-anonymous-viewer .sc-header {\r\n                margin-bottom: 20px;\r\n                padding: 4px 8px 0;\r\n            }\r\n\r\n            .sc-anonymous-viewer .sc-tool-wrapper,\r\n            .sc-anonymous-viewer .sc-result {\r\n                padding: 1.125rem 1rem 1.25rem;\r\n                border-radius: 14px;\r\n            }\r\n\r\n            .sc-anonymous-viewer .sc-input-area {\r\n                flex-direction: column;\r\n                align-items: stretch;\r\n                padding: 0.875rem 1rem;\r\n                gap: 10px;\r\n            }\r\n\r\n            .sc-anonymous-viewer .sc-username-input,\r\n            .sc-anonymous-viewer .sc-view-profile {\r\n                width: 100%;\r\n                min-width: 0;\r\n                padding: 14px 16px;\r\n            }\r\n\r\n            .sc-anonymous-viewer .sc-view-profile {\r\n                justify-content: center;\r\n            }\r\n\r\n            .sc-anonymous-viewer .profile-header-content {\r\n                flex-direction: column;\r\n                align-items: center;\r\n                text-align: center;\r\n            }\r\n\r\n            .sc-anonymous-viewer .profile-info {\r\n                min-width: 0;\r\n                width: 100%;\r\n                text-align: center;\r\n            }\r\n\r\n            .sc-anonymous-viewer .stats {\r\n                justify-content: center;\r\n                flex-wrap: wrap;\r\n                gap: 16px 20px;\r\n            }\r\n\r\n            .sc-anonymous-viewer .profile-bio {\r\n                text-align: center;\r\n            }\r\n\r\n            .sc-anonymous-viewer .profile-image {\r\n                width: 104px;\r\n                height: 104px;\r\n                min-width: 104px;\r\n                min-height: 104px;\r\n                font-size: 2.25rem;\r\n            }\r\n\r\n            .sc-anonymous-viewer .view-profile-img {\r\n                width: 34px;\r\n                height: 34px;\r\n            }\r\n\r\n            .sc-anonymous-viewer .sc-tabs .sc-tab-trigger {\r\n                font-size: 0.8125rem;\r\n                padding: 0.45rem 0.85rem;\r\n            }\r\n\r\n            .sc-anonymous-viewer .skeleton-profile-header {\r\n                flex-direction: column;\r\n                align-items: center;\r\n                text-align: center;\r\n                gap: 16px;\r\n                padding: 1.25rem;\r\n            }\r\n\r\n            .sc-anonymous-viewer .skeleton-profile-info {\r\n                align-items: center;\r\n                width: 100%;\r\n            }\r\n\r\n            .sc-anonymous-viewer .skeleton-stats {\r\n                justify-content: center;\r\n                flex-wrap: wrap;\r\n                gap: 12px;\r\n            }\r\n\r\n            .sc-anonymous-viewer .skeleton-avatar {\r\n                width: 120px;\r\n                height: 120px;\r\n            }\r\n\r\n            .sc-anonymous-viewer .story-img-container {\r\n                height: min(48vw, 200px);\r\n                max-height: 200px;\r\n            }\r\n\r\n            .sc-anonymous-viewer .story-img-container .story-title {\r\n                max-width: 85%;\r\n                font-size: 0.875rem;\r\n            }\r\n\r\n            .sc-anonymous-viewer .story-snaps-grid-inner {\r\n                grid-template-columns: repeat(auto-fill, minmax(min(100%, 88px), 1fr));\r\n                max-height: min(50vh, 340px);\r\n            }\r\n\r\n            .sc-anonymous-viewer .story-meta-row {\r\n                flex-direction: column;\r\n                align-items: flex-start;\r\n                gap: 4px;\r\n            }\r\n\r\n            .sc-anonymous-viewer .story-meta-value {\r\n                text-align: left;\r\n            }\r\n\r\n            .sc-anonymous-viewer .story-actions {\r\n                flex-wrap: wrap;\r\n            }\r\n\r\n            .sc-anonymous-viewer .story-action-btn {\r\n                flex: 1 1 calc(50% - 6px);\r\n                min-width: min(100%, 140px);\r\n            }\r\n\r\n            .sc-anonymous-viewer .snap-item {\r\n                flex-direction: column;\r\n                align-items: flex-start;\r\n            }\r\n\r\n            .sc-anonymous-viewer .snap-thumb {\r\n                width: 100%;\r\n                max-width: 200px;\r\n                height: auto;\r\n                aspect-ratio: 16 \/ 9;\r\n            }\r\n\r\n            .sc-anonymous-viewer .sc-cover-image-frame {\r\n                height: 200px;\r\n            }\r\n\r\n            .sc-anonymous-viewer .sc-comment-modal-content {\r\n                width: 94vw;\r\n                max-height: 85vh;\r\n                border-radius: 16px;\r\n            }\r\n\r\n            .sc-anonymous-viewer .sc-comment-modal-header,\r\n            .sc-anonymous-viewer .sc-comment-modal-body {\r\n                padding: 14px 16px;\r\n            }\r\n\r\n            .sc-anonymous-viewer #sc-modal .sc-modal-content,\r\n            .sc-anonymous-viewer .sc-media-modal .sc-modal-content {\r\n                padding: 20px 16px;\r\n                border-radius: 16px;\r\n            }\r\n\r\n            .sc-anonymous-viewer .sc-media-modal .sc-modal-actions {\r\n                flex-wrap: wrap;\r\n            }\r\n\r\n            .sc-anonymous-viewer .sc-media-modal .sc-modal-download-btn,\r\n            .sc-anonymous-viewer .profile-img-modal .sc-modal-download-btn {\r\n                width: 100%;\r\n                padding: 12px 20px;\r\n            }\r\n\r\n            .sc-anonymous-viewer #sc-modal .sc-close-modal,\r\n            .sc-anonymous-viewer .sc-media-modal .sc-close-modal {\r\n                top: 10px;\r\n                right: 10px;\r\n                width: 38px;\r\n                height: 38px;\r\n                font-size: 18px;\r\n            }\r\n\r\n            .sc-anonymous-viewer .story-fullscreen-btn {\r\n                right: 46px;\r\n                width: 36px;\r\n                height: 36px;\r\n                font-size: 14px;\r\n            }\r\n        }\r\n\r\n        @media (max-width: 600px) {\r\n            .sc-anonymous-viewer {\r\n                padding: 12px 12px;\r\n            }\r\n\r\n            .sc-anonymous-viewer .sc-heading-primary {\r\n                font-size: clamp(1.35rem, 6vw, 1.75rem);\r\n            }\r\n\r\n            .sc-anonymous-viewer .sc-profile-username {\r\n                font-size: 1.125rem;\r\n            }\r\n\r\n            .sc-anonymous-viewer .stat-value {\r\n                font-size: 1rem;\r\n            }\r\n\r\n            .sc-anonymous-viewer .stories-grid {\r\n                grid-template-columns: 1fr;\r\n            }\r\n\r\n            .sc-anonymous-viewer .skeleton-content-grid {\r\n                grid-template-columns: repeat(2, 1fr);\r\n            }\r\n\r\n            .sc-anonymous-viewer .skeleton-content-item {\r\n                height: min(42vw, 160px);\r\n            }\r\n\r\n            .sc-anonymous-viewer .sc-card-section {\r\n                padding: 0.875rem 0.75rem 1rem;\r\n            }\r\n\r\n            .sc-anonymous-viewer .story-stat-bar {\r\n                gap: 0.75rem 1rem;\r\n                padding: 0.5rem 0.65rem;\r\n            }\r\n\r\n            .sc-anonymous-viewer .story-view-btn,\r\n            .sc-anonymous-viewer .story-download-btn,\r\n            .sc-anonymous-viewer .story-comment-btn {\r\n                width: 44px;\r\n                height: 44px;\r\n                margin: 0 4px;\r\n                font-size: 0.9375rem;\r\n            }\r\n\r\n            .sc-anonymous-viewer .story-always-download,\r\n            .sc-anonymous-viewer .story-always-play {\r\n                width: 34px;\r\n                height: 34px;\r\n                font-size: 0.8125rem;\r\n            }\r\n\r\n            .sc-anonymous-viewer .no-result {\r\n                padding: 1.25rem 1rem;\r\n            }\r\n\r\n            .sc-anonymous-viewer .no-result i {\r\n                font-size: clamp(1.5rem, 8vw, 2rem);\r\n            }\r\n\r\n            .sc-anonymous-viewer .sc-section-divider .sc-section-heading {\r\n                padding: 10px 20px;\r\n                border-radius: 24px;\r\n            }\r\n\r\n            .sc-anonymous-viewer .sc-related-grid {\r\n                grid-template-columns: repeat(auto-fill, minmax(min(100%, 120px), 1fr));\r\n            }\r\n        }\r\n\r\n        @media (max-width: 480px) {\r\n            .sc-anonymous-viewer {\r\n                padding: 10px 10px;\r\n            }\r\n\r\n            .sc-anonymous-viewer .tools-result {\r\n                margin: 24px auto;\r\n            }\r\n\r\n            .sc-anonymous-viewer .sc-main-wrap {\r\n                padding: 8px 4px;\r\n            }\r\n\r\n            .sc-anonymous-viewer .sc-tool-wrapper,\r\n            .sc-anonymous-viewer .sc-result {\r\n                padding: 1rem 0.75rem 1.125rem;\r\n                border-radius: 12px;\r\n            }\r\n\r\n            .sc-anonymous-viewer .sc-profile-header {\r\n                padding: 1rem 0.875rem;\r\n            }\r\n\r\n            .sc-anonymous-viewer .profile-image {\r\n                width: 96px;\r\n                height: 96px;\r\n                min-width: 96px;\r\n                min-height: 96px;\r\n                font-size: 2rem;\r\n            }\r\n\r\n            .sc-anonymous-viewer .stats {\r\n                gap: 12px 16px;\r\n            }\r\n\r\n            .sc-anonymous-viewer .stat-label {\r\n                font-size: 0.75rem;\r\n            }\r\n\r\n            .sc-anonymous-viewer .sc-tabs .sc-tab-trigger {\r\n                font-size: 0.75rem;\r\n                padding: 0.4rem 0.7rem;\r\n                gap: 6px;\r\n            }\r\n\r\n            .sc-anonymous-viewer .sc-tabs .sc-tab-trigger i {\r\n                font-size: 0.75rem;\r\n            }\r\n\r\n            .sc-anonymous-viewer .tab-content {\r\n                padding: 10px 2px 16px;\r\n                font-size: 0.875rem;\r\n            }\r\n\r\n            .sc-anonymous-viewer .sc-cover-image-frame {\r\n                height: 180px;\r\n                border-radius: 10px;\r\n            }\r\n\r\n            .sc-anonymous-viewer .story-img-container {\r\n                height: min(52vw, 180px);\r\n                max-height: 180px;\r\n            }\r\n\r\n            .sc-anonymous-viewer .story-duration-pill {\r\n                bottom: 8px;\r\n                right: 8px;\r\n                padding: 5px 9px;\r\n                font-size: 0.75rem;\r\n            }\r\n\r\n            .sc-anonymous-viewer .spotlight-desc {\r\n                font-size: 0.8125rem;\r\n                padding: 0.5rem 0.65rem;\r\n            }\r\n\r\n            .sc-anonymous-viewer .sc-gradient-action {\r\n                font-size: 0.8125rem;\r\n                padding: 0.5rem 1rem;\r\n            }\r\n\r\n            .sc-anonymous-viewer .sc-comment-modal-title {\r\n                font-size: 1rem;\r\n                padding-right: 8px;\r\n            }\r\n\r\n            .sc-anonymous-viewer .sc-comment-item {\r\n                padding: 12px;\r\n            }\r\n\r\n            .sc-anonymous-viewer .sc-modal-media,\r\n            .sc-anonymous-viewer #sc-modal .sc-modal-media {\r\n                max-height: 60vh;\r\n            }\r\n\r\n            .sc-anonymous-viewer .skeleton-content-grid {\r\n                grid-template-columns: 1fr;\r\n            }\r\n\r\n            .sc-anonymous-viewer .skeleton-tab {\r\n                width: 72px;\r\n                height: 32px;\r\n            }\r\n\r\n            .sc-anonymous-viewer .skeleton-tabs {\r\n                gap: 8px;\r\n                flex-wrap: wrap;\r\n                justify-content: center;\r\n            }\r\n        }\r\n\r\n        @media (max-width: 400px) {\r\n            .sc-anonymous-viewer {\r\n                padding: 8px 8px;\r\n            }\r\n\r\n            .sc-anonymous-viewer .sc-username-input,\r\n            .sc-anonymous-viewer .sc-view-profile {\r\n                padding: 12px 14px;\r\n                font-size: 0.875rem;\r\n            }\r\n\r\n            .sc-anonymous-viewer .sc-input-label-row span {\r\n                font-size: 0.875rem;\r\n            }\r\n\r\n            .sc-anonymous-viewer .stats {\r\n                gap: 10px 12px;\r\n            }\r\n\r\n            .sc-anonymous-viewer .stat-item {\r\n                min-width: 72px;\r\n            }\r\n\r\n            .sc-anonymous-viewer .story-action-btn {\r\n                flex: 1 1 100%;\r\n                font-size: 0.75rem;\r\n                padding: 0.45rem 8px;\r\n            }\r\n\r\n            .sc-anonymous-viewer .hashtag-chip {\r\n                font-size: 0.6875rem;\r\n                padding: 3px 8px;\r\n            }\r\n\r\n            .sc-anonymous-viewer .sc-related-grid {\r\n                grid-template-columns: 1fr 1fr;\r\n            }\r\n        }\r\n\r\n        @media (max-width: 375px) {\r\n            .sc-anonymous-viewer .sc-heading-primary {\r\n                font-size: 1.25rem;\r\n            }\r\n\r\n            .sc-anonymous-viewer .sc-lead-text {\r\n                font-size: 0.8125rem;\r\n            }\r\n\r\n            .sc-anonymous-viewer .sc-tabs .sc-tab-trigger {\r\n                font-size: 0.6875rem;\r\n                padding: 0.35rem 0.55rem;\r\n            }\r\n\r\n            .sc-anonymous-viewer .profile-image {\r\n                width: 88px;\r\n                height: 88px;\r\n                min-width: 88px;\r\n                min-height: 88px;\r\n                font-size: 1.75rem;\r\n            }\r\n\r\n            .sc-anonymous-viewer .sc-profile-username {\r\n                font-size: 1rem;\r\n            }\r\n\r\n            .sc-anonymous-viewer .sc-profile-fullname {\r\n                font-size: 0.9375rem;\r\n            }\r\n\r\n            .sc-anonymous-viewer .sc-section-divider .sc-section-heading {\r\n                padding: 8px 14px;\r\n                font-size: 1.05rem;\r\n            }\r\n\r\n            .sc-anonymous-viewer .sc-other-card {\r\n                padding: 12px;\r\n            }\r\n\r\n            .sc-anonymous-viewer #error-message {\r\n                font-size: 0.8125rem;\r\n                padding: 0.5rem 0.625rem;\r\n            }\r\n        }\r\n\r\n        \/* Touch: keep story actions usable without hover *\/\r\n        @media (hover: none), (pointer: coarse) {\r\n            .sc-anonymous-viewer .story-img-container .story-overlay {\r\n                opacity: 1;\r\n                background: linear-gradient(to bottom, rgba(0, 0, 0, 0) 40%, rgba(0, 0, 0, 0.55) 100%);\r\n                pointer-events: auto;\r\n            }\r\n        }\r\n    <\/style>\r\n\r\n    <div class=\"sc-anonymous-viewer\">\r\n        <div class=\"sc-main-wrap\">\r\n            <div class=\"sc-header\">\r\n                <div class=\"sc-heading-primary\" role=\"heading\" aria-level=\"1\">Snapchat <span>Viewer<\/span> \u2013 Watch Public Stories Anonymously Free<\/div>\r\n                <div class=\"sc-lead-text\">View Snapchat profiles anonymously. Enter a username to get started.<\/div>\r\n            <\/div>\r\n\r\n            <div class=\"sc-tool-wrapper\">\r\n                <div class=\"sc-input-area\">\r\n                    <div class=\"sc-input-label-row\">\r\n                        <i class=\"fa-brands fa-snapchat sc-input-brand-icon\" aria-hidden=\"true\"><\/i>\r\n                        <span>Enter Snapchat Username<\/span>\r\n                    <\/div>\r\n                    <input type=\"text\" class=\"sc-username-input\" id=\"input-username\" placeholder=\"e.g., rakibhossain02\" \/>\r\n                    <button type=\"button\" class=\"sc-view-profile\" id=\"view-btn\">\r\n                        <i class=\"fa-solid fa-search\"><\/i> View Profile\r\n                    <\/button>\r\n                <\/div>\r\n\r\n                <div id=\"error-message\"><\/div>\r\n            <\/div>\r\n\r\n            <div class=\"tools-result\">\r\n                <div class=\"sc-result\" id=\"sc-result\">\r\n                <!-- Skeleton Loading (shown during fetch) -->\r\n                <div id=\"skeleton-loading\" style=\"display: none;\">\r\n                    <div class=\"skeleton-profile\">\r\n                        <div class=\"skeleton-profile-header\">\r\n                            <div class=\"skeleton-avatar\"><\/div>\r\n                            <div class=\"skeleton-profile-info\">\r\n                                <div class=\"skeleton-username\"><\/div>\r\n                                <div class=\"skeleton-fullname\"><\/div>\r\n                                <div class=\"skeleton-stats\">\r\n                                    <div class=\"skeleton-stat\"><\/div>\r\n                                    <div class=\"skeleton-stat\"><\/div>\r\n                                    <div class=\"skeleton-stat\"><\/div>\r\n                                    <div class=\"skeleton-stat\"><\/div>\r\n                                <\/div>\r\n                                <div class=\"skeleton-bio\"><\/div>\r\n                            <\/div>\r\n                        <\/div>\r\n                        <div class=\"skeleton-tabs\">\r\n                            <div class=\"skeleton-tab\"><\/div>\r\n                            <div class=\"skeleton-tab\"><\/div>\r\n                            <div class=\"skeleton-tab\"><\/div>\r\n                            <div class=\"skeleton-tab\"><\/div>\r\n                        <\/div>\r\n                        <div class=\"skeleton-content-grid\">\r\n                            <div class=\"skeleton-content-item\">\r\n                                <div class=\"skeleton-content-img\"><\/div>\r\n                            <\/div>\r\n                            <div class=\"skeleton-content-item\">\r\n                                <div class=\"skeleton-content-img\"><\/div>\r\n                            <\/div>\r\n                            <div class=\"skeleton-content-item\">\r\n                                <div class=\"skeleton-content-img\"><\/div>\r\n                            <\/div>\r\n                            <div class=\"skeleton-content-item\">\r\n                                <div class=\"skeleton-content-img\"><\/div>\r\n                            <\/div>\r\n                        <\/div>\r\n                    <\/div>\r\n                <\/div>\r\n\r\n                <!-- Actual Content (shown by default as placeholder, then with real data) -->\r\n                <div id=\"actual-content\">\r\n                    <!-- Profile Header -->\r\n                    <div class=\"sc-profile-header\">\r\n                        <div class=\"profile-header-content\">\r\n                            <div class=\"profile-image-container\">\r\n                                <div class=\"profile-image\" style=\"background: #1a1a2e; display: flex; align-items: center; justify-content: center; color: #94a3b8;\">\r\n                                    <i class=\"fa-brands fa-snapchat sc-profile-placeholder-icon\"><\/i>\r\n                                <\/div>\r\n                                <button type=\"button\" class=\"view-profile-img\"><i class=\"fa-solid fa-expand\"><\/i><\/button>\r\n                            <\/div>\r\n                            <div class=\"profile-info\">\r\n                                <div class=\"sc-profile-username\" id=\"profile-username\">@username<\/div>\r\n                                <div class=\"sc-profile-fullname\" id=\"profile-fullname\">Full Name<\/div>\r\n                                <div class=\"stats\">\r\n                                    <div class=\"stat-item\">\r\n                                        <div class=\"stat-value\" id=\"subscribers-count\">0<\/div>\r\n                                        <div class=\"stat-label\">subscribers<\/div>\r\n                                    <\/div>\r\n                                    <div class=\"stat-item\">\r\n                                        <div class=\"stat-value\" id=\"stories-count\">0<\/div>\r\n                                        <div class=\"stat-label\">stories<\/div>\r\n                                    <\/div>\r\n                                    <div class=\"stat-item\">\r\n                                        <div class=\"stat-value\" id=\"highlights-count\">0<\/div>\r\n                                        <div class=\"stat-label\">highlights<\/div>\r\n                                    <\/div>\r\n                                    <div class=\"stat-item\">\r\n                                        <div class=\"stat-value\" id=\"spotlights-count\">0<\/div>\r\n                                        <div class=\"stat-label\">spotlights<\/div>\r\n                                    <\/div>\r\n                                <\/div>\r\n                                <div id=\"profile-bio-section\" class=\"profile-bio\" style=\"display: none;\"><\/div>\r\n                            <\/div>\r\n                        <\/div>\r\n                    <\/div>\r\n\r\n                    <!-- Tabs -->\r\n                    <div class=\"sc-tabs\">\r\n                        <button type=\"button\" class=\"sc-tab-trigger active\" onclick=\"switchTab('highlights', this)\">\r\n                            <i class=\"fa-solid fa-bookmark\"><\/i> Highlights\r\n                        <\/button>\r\n                        <button type=\"button\" class=\"sc-tab-trigger\" onclick=\"switchTab('spotlights', this)\">\r\n                            <i class=\"fa-solid fa-fire\"><\/i> Spotlights\r\n                        <\/button>\r\n                        <button type=\"button\" class=\"sc-tab-trigger\" onclick=\"switchTab('story', this)\">\r\n                            <i class=\"fa-solid fa-circle-play\"><\/i> Story\r\n                        <\/button>\r\n                        <button type=\"button\" class=\"sc-tab-trigger\" onclick=\"switchTab('related', this)\">\r\n                            <i class=\"fa-solid fa-users\"><\/i> Related\r\n                        <\/button>\r\n                        <button type=\"button\" class=\"sc-tab-trigger\" onclick=\"switchTab('other', this)\">\r\n                            <i class=\"fa-solid fa-info-circle\"><\/i> Other\r\n                        <\/button>\r\n                    <\/div>\r\n\r\n                    <!-- Tab Content -->\r\n                    <div id=\"tab-content\">\r\n                        <!-- Highlights Tab -->\r\n                        <div id=\"highlights-content\" class=\"tab-content active\">\r\n                            <div class=\"no-result\">\r\n                                <i class=\"fa-solid fa-bookmark\"><\/i>\r\n                                <div class=\"sc-no-result-msg\">Enter a Snapchat username above to view highlights anonymously.<\/div>\r\n                            <\/div>\r\n                        <\/div>\r\n\r\n                        <!-- Spotlights Tab -->\r\n                        <div id=\"spotlights-content\" class=\"tab-content\" style=\"display: none;\">\r\n                            <div class=\"no-result\">\r\n                                <i class=\"fa-solid fa-fire\"><\/i>\r\n                                <div class=\"sc-no-result-msg\">Watch Snapchat spotlights anonymously. Browse and download short videos without detection.<\/div>\r\n                            <\/div>\r\n                        <\/div>\r\n\r\n                        <!-- Story Tab -->\r\n                        <div id=\"story-content\" class=\"tab-content\" style=\"display: none;\">\r\n                            <div class=\"no-result\">\r\n                                <i class=\"fa-solid fa-circle-play\"><\/i>\r\n                                <div class=\"sc-no-result-msg\">Click here to load stories. Enter a Snapchat username above and click Story to view stories anonymously.<\/div>\r\n                            <\/div>\r\n                        <\/div>\r\n\r\n                        <!-- Related Tab -->\r\n                        <div id=\"related-content\" class=\"tab-content\" style=\"display: none;\">\r\n                            <div class=\"no-result\">\r\n                                <i class=\"fa-solid fa-users\"><\/i>\r\n                                <div class=\"sc-no-result-msg\">Enter a Snapchat username above to view related accounts.<\/div>\r\n                            <\/div>\r\n                        <\/div>\r\n\r\n                        <!-- Other Tab -->\r\n                        <div id=\"other-content\" class=\"tab-content\" style=\"display: none;\">\r\n                            <div class=\"no-result\">\r\n                                <i class=\"fa-solid fa-info-circle\"><\/i>\r\n                                <div class=\"sc-no-result-msg\">Enter a Snapchat username above to view additional information.<\/div>\r\n                            <\/div>\r\n                        <\/div>\r\n                    <\/div>\r\n                <\/div>\r\n            <\/div>\r\n            <\/div>\r\n        <\/div>\r\n\r\n        <!-- Modal (Legacy - hidden by default) -->\r\n        <div class=\"sc-modal-backdrop\" id=\"sc-modal\" style=\"display: none;\">\r\n            <div class=\"sc-modal-content\">\r\n                <button type=\"button\" class=\"sc-close-modal\" onclick=\"closeModal()\">\r\n                    <i class=\"fa-solid fa-times\"><\/i>\r\n                <\/button>\r\n                <div id=\"modal-media\"><\/div>\r\n                <button type=\"button\" class=\"sc-modal-download-btn\" id=\"modal-download-btn\">\r\n                    <i class=\"fa-solid fa-download\"><\/i> Download\r\n                <\/button>\r\n            <\/div>\r\n        <\/div>\r\n\r\n        <!-- Comment Modal -->\r\n        <div class=\"sc-comment-modal\" id=\"sc-comment-modal\">\r\n            <div class=\"sc-comment-modal-content\">\r\n                <div class=\"sc-comment-modal-header\">\r\n                    <div class=\"sc-comment-modal-title\" id=\"comment-modal-title\" role=\"heading\" aria-level=\"3\">Comments<\/div>\r\n                    <button type=\"button\" class=\"sc-comment-modal-close\" onclick=\"closeCommentsModal()\">\r\n                        <i class=\"fa-solid fa-times\"><\/i>\r\n                    <\/button>\r\n                <\/div>\r\n                <div class=\"sc-comment-modal-body\" id=\"comment-modal-body\">\r\n                    <!-- Comments will be inserted here -->\r\n                <\/div>\r\n            <\/div>\r\n        <\/div>\r\n    <\/div>\r\n\r\n    <script>\r\n        \/* WordPress \/ inline embed: use jQuery(document).ready(function($){ ... }); expose handlers on window.* *\/\r\n        \/\/ Load scripts with error handling to prevent blocking page load\r\n        function loadScript(src, onError) {\r\n            const script = document.createElement('script');\r\n            script.src = src;\r\n            script.onerror = function() {\r\n                if (onError) onError();\r\n            };\r\n            document.head.appendChild(script);\r\n        }\r\n\r\n        \/\/ API base URL\r\n        var apiBaseUrl = \"https:\/\/tools.xrespond.com\";\r\n\r\n        \/\/ Load scripts with fallback\r\n        loadScript(apiBaseUrl + \"\/api\/rate-limit-handler.js\");\r\n        loadScript(apiBaseUrl + \"\/api\/js\/client-ip-detector.js\");\r\n\r\n        jQuery(document).ready(function($) {\r\n            let currentMediaUrl = '';\r\n            let currentFilename = '';\r\n            \/\/ Store comments data globally for modal access\r\n            window.spotlightCommentsData = {};\r\n            window.highlightCommentsData = {};\r\n\r\n            \/** API fields like storyTitle may be objects; avoid \"[object Object]\" in the UI *\/\r\n            function coerceDisplayText(val, fallback) {\r\n                if (val == null || val === \"\") return fallback;\r\n                if (typeof val === \"string\") return val;\r\n                if (typeof val === \"number\" || typeof val === \"boolean\") return String(val);\r\n                if (typeof val === \"object\") {\r\n                    if (typeof val.text === \"string\") return val.text;\r\n                    if (typeof val.value === \"string\") return val.value;\r\n                    if (typeof val.title === \"string\") return val.title;\r\n                    if (typeof val.sn === \"string\") return val.sn;\r\n                    if (typeof val.rawText === \"string\") return val.rawText;\r\n                }\r\n                return fallback;\r\n            }\r\n\r\n            function esc(str) {\r\n                if (str == null || str === \"\") return \"\";\r\n                return String(str)\r\n                    .replace(\/&\/g, \"\\u0026amp;\")\r\n\t\t\t\t\t\t\t\t\t\t.replace(\/<\/g, \"\\u0026lt;\")\r\n\t\t\t\t\t\t\t\t\t\t.replace(\/>\/g, \"\\u0026gt;\")\r\n\t\t\t\t\t\t\t\t\t\t.replace(\/\"\/g, \"\\u0026quot;\")\r\n\t\t\t\t\t\t\t\t\t\t.replace(\/'\/g, \"\\u0026#39;\");\r\n            }\r\n\r\n            \/**\r\n             * Escape for single-quoted strings in inline onclick (WordPress-safe).\r\n             * No RegExp literals. Neutralizes closing-script tags and HTML comments so inline script text is not truncated.\r\n             * Runtime value is unchanged (\\\\u003c is still \"<\" when JS parses the handler).\r\n             *\/\r\n            function escJsSingleQuoted(s) {\r\n                if (s == null) return \"\";\r\n                var t = String(s)\r\n                    .split(\"\\\\\").join(\"\\\\\\\\\")\r\n                    .split(\"'\").join(\"\\\\'\")\r\n                    .split(\"\\r\").join(\"\\\\r\")\r\n                    .split(\"\\n\").join(\"\\\\n\")\r\n                    .split(\"\\u2028\").join(\"\\\\u2028\")\r\n                    .split(\"\\u2029\").join(\"\\\\u2029\");\r\n                var lower = t.toLowerCase();\r\n                var out = \"\";\r\n                for (var i = 0; i < t.length; ) {\r\n                    if (i + 8 < t.length && lower.slice(i, i + 9) === (\"<\" + \"\/script>\")) {\r\n                        out += \"\\\\u003c\/script>\";\r\n                        i += 9;\r\n                    } else if (i + 3 < t.length && lower.slice(i, i + 4) === \"<!--\") {\r\n                        out += \"\\\\u003c!--\";\r\n                        i += 4;\r\n                    } else {\r\n                        out += t.charAt(i);\r\n                        i += 1;\r\n                    }\r\n                }\r\n                return out;\r\n            }\r\n\r\n            \/\/ Suppress non-critical console messages from external scripts on page load\r\n            \/\/ These scripts auto-initialize and log messages - we'll keep only important ones\r\n            const originalConsoleLog = console.log;\r\n            const originalConsoleError = console.error;\r\n            const originalConsoleWarn = console.warn;\r\n\r\n            \/\/ Only suppress messages during initial page load (first 3 seconds)\r\n            const pageLoadTime = Date.now();\r\n            const suppressDuration = 3000; \/\/ 3 seconds\r\n\r\n            console.log = function(...args) {\r\n                const message = args.join(' ');\r\n                const elapsed = Date.now() - pageLoadTime;\r\n\r\n                \/\/ Allow important messages through\r\n                if (message.includes('Error') || message.includes('Failed') || message.includes('Uncaught')) {\r\n                    originalConsoleLog.apply(console, args);\r\n                }\r\n                \/\/ Suppress verbose initialization messages during page load\r\n                else if (elapsed < suppressDuration && (\r\n                    message.includes('Global Rate Limit Handler loaded') ||\r\n                    message.includes('IP Detection System initialized') ||\r\n                    message.includes('Client IP Detector loaded') ||\r\n                    message.includes('All API requests will automatically include') ||\r\n                    message.includes('Detecting IPv4 from free APIs') ||\r\n                    message.includes('Checking 24 free IP APIs') ||\r\n                    message.includes('Trying ipify-json') ||\r\n                    message.includes('IP found from') ||\r\n                    message.includes('IPv4 detected from free APIs') ||\r\n                    message.includes('Sending IP to service') ||\r\n                    message.includes('IP detected and ready') ||\r\n                    message.includes('IP Detection in progress')\r\n                )) {\r\n                    \/\/ Suppress these messages\r\n                    return;\r\n                }\r\n                \/\/ Allow all other messages\r\n                else {\r\n                    originalConsoleLog.apply(console, args);\r\n                }\r\n            };\r\n\r\n            console.error = function(...args) {\r\n                const message = args.join(' ');\r\n                \/\/ Suppress 405\/404 errors and JSON parse errors from IP detection scripts trying to reach non-existent endpoints\r\n                \/\/ These errors occur when running on Live Server (port 5501) instead of Laravel server (port 8002)\r\n                if (message.includes('405') || message.includes('404') ||\r\n                    message.includes('Failed to send IP to service') ||\r\n                    message.includes('Failed to load API list from backend') ||\r\n                    message.includes('JSON.parse: unexpected character') ||\r\n                    (message.includes('SyntaxError') && (message.includes('rate-limit-handler') || message.includes('api\/client-ip') || message.includes('api\/ip-finder'))) ||\r\n                    (message.includes('api\/client-ip') || message.includes('api\/ip-finder'))) {\r\n                    \/\/ These are expected when running on Live Server - IP detection still works via free APIs (ipify, etc.)\r\n                    \/\/ The backend endpoints only exist on the Laravel server (port 8002)\r\n                    return;\r\n                }\r\n                originalConsoleError.apply(console, args);\r\n            };\r\n\r\n            console.warn = function(...args) {\r\n                const message = args.join(' ');\r\n                \/\/ Suppress warnings from IP detection during page load\r\n                const elapsed = Date.now() - pageLoadTime;\r\n                if ((elapsed < suppressDuration && message.includes('IP Detection')) ||\r\n                    message.includes('api\/client-ip') ||\r\n                    message.includes('api\/ip-finder') ||\r\n                    message.includes('405') ||\r\n                    message.includes('404')) {\r\n                    return;\r\n                }\r\n                originalConsoleWarn.apply(console, args);\r\n            };\r\n\r\n            \/\/ Restore original console after suppression period\r\n            setTimeout(() => {\r\n                console.log = originalConsoleLog;\r\n                console.error = originalConsoleError;\r\n                console.warn = originalConsoleWarn;\r\n            }, suppressDuration);\r\n\r\n            \/\/ View button click handler\r\n            $(\"#view-btn\").on(\"click\", async function(e) {\r\n                e.preventDefault();\r\n\r\n                const username = $(\"#input-username\").val().trim();\r\n\r\n                if (username === \"\") {\r\n                    $(\"#error-message\").text(\"Please enter a Snapchat username\").show();\r\n                    return;\r\n                }\r\n\r\n                \/\/ Reset\r\n                $(\"#error-message\").hide();\r\n                $(\"#view-btn\").prop(\"disabled\", true).html(\"<span style='font-weight: 600;'>Loading...<\/span>\");\r\n\r\n                \/\/ Show skeleton loading (hide placeholder, show skeleton)\r\n                $(\"#skeleton-loading\").show();\r\n                $(\"#actual-content\").hide();\r\n\r\n                \/\/ Use the global apiBaseUrl defined at the top\r\n                const apiUrl = apiBaseUrl + \"\/api\/snapchat\/user-details\";\r\n\r\n                \/\/ Get client IP from client-ip-detector.js (if available)\r\n                const clientIp = window.clientIpDetector?.getIp() || window.clientDetectedIpv4 || window.detectedClientIpv4 || null;\r\n\r\n                \/\/ Make request (use fetch to avoid XHR interception causing status:0)\r\n                try {\r\n                    const headers = {\r\n                        \"Content-Type\": \"application\/json\",\r\n                    };\r\n                    if (clientIp) {\r\n                        headers[\"X-Client-IPv4\"] = clientIp;\r\n                    }\r\n\r\n                    const resp = await fetch(apiUrl, {\r\n                        method: \"POST\",\r\n                        headers,\r\n                        body: JSON.stringify({ username: username }),\r\n                    });\r\n\r\n                    let res = null;\r\n                    try {\r\n                        res = await resp.json();\r\n                    } catch (_) {\r\n                        res = null;\r\n                    }\r\n\r\n                    $(\"#view-btn\").prop(\"disabled\", false).html(\"<i class='fa-solid fa-search'><\/i> View Profile\");\r\n\r\n                    \/\/ Keep skeleton visible until DOM is fully built (hide\/show done at end of success path)\r\n\r\n                    \/\/ Handle non-2xx\r\n                    if (!resp.ok) {\r\n                        $(\"#skeleton-loading\").hide();\r\n                        $(\"#actual-content\").show();\r\n                        const msg =\r\n                            (res && (res.message || res.error)) ||\r\n                            (resp.status === 429 ? \"Rate limit exceeded. Please try again later.\" : \"Request failed. Please try again.\");\r\n                        $(\"#error-message\").text(msg).show();\r\n                        return;\r\n                    }\r\n\r\n                    if (res && res.status === \"error\") {\r\n                        $(\"#skeleton-loading\").hide();\r\n                        $(\"#actual-content\").show();\r\n                        $(\"#error-message\").text(res.message || \"An error occurred\").show();\r\n                        return;\r\n                    }\r\n\r\n                            \/\/ New simplified response structure from backend service\r\n                            const data = (res && res.data) || {};\r\n\r\n                            \/\/ Extract all data from flat structure\r\n                            const userProfile = data.profile || {};\r\n                            const pageMetadata = data.pageMetadata || {};\r\n                            const pageLinks = data.pageLinks || {};\r\n                            const linkPreview = data.linkPreview || {};\r\n                            const relatedAccounts = data.relatedAccounts || [];\r\n                            const spotlightMetadata = data.spotlightMetadata || [];\r\n                            const story = data.story;\r\n                            const storyMetadata = data.storyMetadata;\r\n                            const curatedHighlights = data.curatedHighlights || [];\r\n                            const spotlightHighlights = data.spotlightHighlights || [];\r\n                            const spotlightComments = data.spotlightComments || [];\r\n                            const lenses = data.lenses || [];\r\n\r\n                            \/\/ Parse spotlight comments - already parsed by backend, but ensure it's an array\r\n                            let spotlightCommentsByIndex = Array.isArray(spotlightComments) ? spotlightComments : [];\r\n\r\n                            \/\/ Helper function to format timestamp\r\n                            function formatTimestamp(timestampMs) {\r\n                                if (!timestampMs) return '';\r\n                                \/\/ Backend service already extracts value, so timestampMs is now a direct string\/number\r\n                                const timestamp = timestampMs;\r\n                                if (!timestamp) return '';\r\n                                const date = new Date(parseInt(timestamp));\r\n                                return date.toLocaleDateString('en-US', { year: 'numeric', month: 'short', day: 'numeric' });\r\n                            }\r\n\r\n                            \/\/ Helper function to get social icon\r\n                            function getSocialIcon(url) {\r\n                                if (!url) return 'fa-link';\r\n                                const lowerUrl = url.toLowerCase();\r\n                                if (lowerUrl.includes('facebook')) return 'fa-brands fa-facebook';\r\n                                if (lowerUrl.includes('twitter') || lowerUrl.includes('x.com')) return 'fa-brands fa-twitter';\r\n                                if (lowerUrl.includes('instagram')) return 'fa-brands fa-instagram';\r\n                                if (lowerUrl.includes('youtube')) return 'fa-brands fa-youtube';\r\n                                if (lowerUrl.includes('tiktok')) return 'fa-brands fa-tiktok';\r\n                                if (lowerUrl.includes('linkedin')) return 'fa-brands fa-linkedin';\r\n                                return 'fa-link';\r\n                            }\r\n\r\n                            \/\/ Ensure result container is visible (already shown during loading)\r\n                            $(\".tools-result\").show();\r\n                            $(\".sc-result\").show();\r\n\r\n                            \/\/ Update ProfileInfo section\r\n                            const profilePicUrl = userProfile.profilePictureUrl || '';\r\n                            const profileImageContainer = $('.profile-image-container .profile-image');\r\n\r\n                            if (profileImageContainer.length > 0) {\r\n                                if (profilePicUrl) {\r\n                                    const profilePic = '<img decoding=\"async\" src=\"' + profilePicUrl + '\" alt=\"Profile Picture\" style=\"width: 100%; height: 100%; object-fit: cover; border-radius: 50%;\" \/>';\r\n                                    profileImageContainer.html(profilePic);\r\n                                    profileImageContainer.css({\r\n                                        'background': 'transparent',\r\n                                        'padding': '0'\r\n                                    }).attr('onclick', 'showMediaModal(\\'' + profilePicUrl + '\\', \\'image\\', \\'profile_picture.jpg\\')').css('cursor', 'pointer');\r\n                                } else {\r\n                                    profileImageContainer.html('<i class=\"fa-brands fa-snapchat sc-profile-placeholder-icon\"><\/i>');\r\n                                }\r\n                            }\r\n\r\n                            \/\/ Update username\r\n                            if ($('#profile-username').length > 0) {\r\n                                let usernameText = '@' + (userProfile.username || username);\r\n                                if (userProfile.badge && userProfile.badge > 0) {\r\n                                    usernameText += ' <i class=\"fa-solid fa-badge-check\" style=\"color: #FF9800;\"><\/i>';\r\n                                }\r\n                                $('#profile-username').html(usernameText);\r\n                            }\r\n\r\n                            \/\/ Update full name\r\n                            if ($('#profile-fullname').length > 0) {\r\n                                const fullName = userProfile.title || (pageMetadata.pageTitle ? pageMetadata.pageTitle.split('(')[0].trim() : '');\r\n                                $('#profile-fullname').text(fullName);\r\n                            }\r\n\r\n                            \/\/ Update stats\r\n                            if ($('#subscribers-count').length > 0) {\r\n                                $('#subscribers-count').text(formatNumber(userProfile.subscriberCount || 0));\r\n                            }\r\n                            if ($('#stories-count').length > 0) {\r\n                                $('#stories-count').text((story || storyMetadata) ? '1' : '0');\r\n                            }\r\n                            if ($('#highlights-count').length > 0) {\r\n                                $('#highlights-count').text(curatedHighlights.length);\r\n                            }\r\n                            if ($('#spotlights-count').length > 0) {\r\n                                $('#spotlights-count').text(spotlightHighlights.length);\r\n                            }\r\n\r\n                            \/\/ Update bio section in ProfileInfo\r\n                            const bio = userProfile.bio || pageMetadata.pageDescription || '';\r\n                            if (bio && $('#profile-bio-section').length > 0) {\r\n                                $('#profile-bio-section').html('<div class=\"sc-profile-bio-text\">' + bio.replace(\/\\n\/g, '<br>') + '<\/div>').show();\r\n                            }\r\n\r\n                            \/\/ Build Related tab content (Related Accounts)\r\n                            let relatedTabHTML = '';\r\n\r\n                            \/\/ Build Other tab content (all other additional info)\r\n                            let otherTabHTML = '';\r\n\r\n                            \/\/ Category and Subcategory badges (Other tab)\r\n                            if (userProfile.categoryStringId || userProfile.subcategoryStringId) {\r\n                                otherTabHTML += '<div class=\"sc-other-card\">' +\r\n                                    '<div style=\"font-weight: 600; margin-bottom: 12px; color: #334155; font-size: 0.875rem;\">Category:<\/div>' +\r\n                                    '<div style=\"display: flex; flex-wrap: wrap; gap: 8px;\">';\r\n                                if (userProfile.categoryStringId) {\r\n                                    const category = userProfile.categoryStringId.replace(\/public-profile-category-v3-\/g, '').replace(\/-\/g, ' ');\r\n                                    otherTabHTML += '<span style=\"background: rgba(0, 188, 212, 0.2); color: #00BCD4; padding: 6px 14px; border-radius: 20px; font-size: 12px; font-weight: 600;\">' + category.charAt(0).toUpperCase() + category.slice(1) + '<\/span>';\r\n                                }\r\n                                if (userProfile.subcategoryStringId) {\r\n                                    const subcategory = userProfile.subcategoryStringId.replace(\/public-profile-subcategory-v3-\/g, '').replace(\/-\/g, ' ');\r\n                                    otherTabHTML += '<span style=\"background: rgba(255, 152, 0, 0.2); color: #FF9800; padding: 6px 14px; border-radius: 20px; font-size: 12px; font-weight: 600;\">' + subcategory.charAt(0).toUpperCase() + subcategory.slice(1) + '<\/span>';\r\n                                }\r\n                                otherTabHTML += '<\/div><\/div>';\r\n                            }\r\n\r\n                            \/\/ Address (Other tab)\r\n                            if (userProfile.address) {\r\n                                otherTabHTML += '<div class=\"sc-other-card\">' +\r\n                                    '<div style=\"font-weight: 600; margin-bottom: 8px; color: #334155; font-size: 0.875rem;\">Location:<\/div>' +\r\n                                    '<div style=\"font-size: 14px; color: #d0d0d0; display: flex; align-items: center; gap: 8px;\">' +\r\n                                    '<i class=\"fa-solid fa-location-dot\" style=\"color: #00BCD4;\"><\/i>' +\r\n                                    '<span>' + userProfile.address + '<\/span>' +\r\n                                    '<\/div><\/div>';\r\n                            }\r\n\r\n                            \/\/ Website URL (Other tab)\r\n                            if (userProfile.websiteUrl) {\r\n                                otherTabHTML += '<div class=\"sc-other-card\">' +\r\n                                    '<div style=\"font-weight: 600; margin-bottom: 8px; color: #334155; font-size: 0.875rem;\">Website:<\/div>' +\r\n                                    '<a href=\"' + userProfile.websiteUrl + '\" target=\"_blank\" style=\"color: #00BCD4; text-decoration: none; font-size: 14px; display: flex; align-items: center; gap: 8px;\">' +\r\n                                    '<i class=\"fa-solid fa-globe\"><\/i>' +\r\n                                    '<span>' + userProfile.websiteUrl + '<\/span>' +\r\n                                    '<\/a><\/div>';\r\n                            }\r\n\r\n                            \/\/ Social Links (sameAsLinks) - Other tab\r\n                            if (userProfile.sameAsLinks && userProfile.sameAsLinks.length > 0) {\r\n                                otherTabHTML += '<div class=\"sc-other-card\">' +\r\n                                    '<div style=\"font-weight: 600; margin-bottom: 12px; color: #334155; font-size: 0.875rem;\">Social Links:<\/div>' +\r\n                                    '<div style=\"display: flex; flex-wrap: wrap; gap: 10px;\">';\r\n                                userProfile.sameAsLinks.forEach(link => {\r\n                                    if (link && link.url) {\r\n                                        otherTabHTML += '<a href=\"' + link.url + '\" target=\"_blank\" style=\"display: inline-flex; align-items: center; padding: 8px 14px; background: #eef2ff; border-radius: 999px; text-decoration: none; color: #4338ca; font-size: 0.8125rem; font-weight: 600; transition: background 0.2s; border: 1px solid #c7d2fe;\">' +\r\n                                            '<i class=\"' + getSocialIcon(link.url) + '\" style=\"margin-right: 8px; color: #00BCD4;\"><\/i>' +\r\n                                            '<span>' + (link.name || 'Link') + '<\/span>' +\r\n                                            '<\/a>';\r\n                                    }\r\n                                });\r\n                                otherTabHTML += '<\/div><\/div>';\r\n                            }\r\n\r\n                            \/\/ Link Preview Section (Facebook\/Twitter Images, Canonical URL, etc.) - Other tab\r\n                            if (linkPreview.title || linkPreview.description || linkPreview.facebookImage || linkPreview.twitterImage || linkPreview.canonicalUrl || linkPreview.snapchatTitle) {\r\n                                otherTabHTML += '<div class=\"sc-other-card sc-other-card-wide\">';\r\n\r\n                                if (linkPreview.title) {\r\n                                    otherTabHTML += '<div style=\"font-weight: 700; margin-bottom: 8px; color: #0f172a; font-size: 1rem;\">' + linkPreview.title + '<\/div>';\r\n                                }\r\n\r\n                                if (linkPreview.snapchatTitle) {\r\n                                    otherTabHTML += '<div style=\"font-weight: 600; margin-bottom: 8px; color: #FF9800; font-size: 14px;\"><i class=\"fa-brands fa-snapchat\" style=\"margin-right: 6px;\"><\/i>' + linkPreview.snapchatTitle + '<\/div>';\r\n                                }\r\n\r\n                                if (linkPreview.description) {\r\n                                    otherTabHTML += '<div style=\"font-size: 0.875rem; color: #64748b; margin-bottom: 15px; line-height: 1.5;\">' + linkPreview.description + '<\/div>';\r\n                                }\r\n\r\n                                if (linkPreview.canonicalUrl) {\r\n                                    otherTabHTML += '<div style=\"margin-bottom: 15px;\">' +\r\n                                        '<a href=\"' + linkPreview.canonicalUrl + '\" target=\"_blank\" style=\"color: #00BCD4; text-decoration: none; font-size: 13px; display: flex; align-items: center; gap: 8px; word-break: break-all;\">' +\r\n                                        '<i class=\"fa-solid fa-link\"><\/i>' +\r\n                                        '<span>' + linkPreview.canonicalUrl + '<\/span>' +\r\n                                        '<\/a>' +\r\n                                        '<\/div>';\r\n                                }\r\n\r\n                                if (linkPreview.facebookImage || linkPreview.twitterImage) {\r\n                                    otherTabHTML += '<div style=\"font-weight: 600; margin-bottom: 10px; color: #334155; font-size: 0.875rem;\">Preview Images:<\/div>' +\r\n                                        '<div style=\"display: flex; gap: 15px; flex-wrap: wrap;\">';\r\n                                    if (linkPreview.facebookImage && linkPreview.facebookImage.url) {\r\n                                        otherTabHTML += '<div style=\"cursor: pointer; text-align: center;\" onclick=\"showMediaModal(\\'' + linkPreview.facebookImage.url + '\\', \\'image\\', \\'facebook_preview.jpg\\')\">' +\r\n                                            '<img decoding=\"async\" src=\"' + linkPreview.facebookImage.url + '\" alt=\"Facebook Preview\" style=\"width: 120px; height: 120px; object-fit: cover; border-radius: 10px; border: 2px solid #1877F2; box-shadow: 0 4px 10px rgba(0,0,0,0.2); transition: transform 0.2s;\" onmouseover=\"this.style.transform=\\'scale(1.05)\\'\" onmouseout=\"this.style.transform=\\'scale(1)\\'\" \/>' +\r\n                                            '<div style=\"text-align: center; font-size: 11px; color: #64748b; margin-top: 8px; font-weight: 600;\">Facebook<\/div>' +\r\n                                            '<\/div>';\r\n                                    }\r\n                                    if (linkPreview.twitterImage && linkPreview.twitterImage.url) {\r\n                                        otherTabHTML += '<div style=\"cursor: pointer; text-align: center;\" onclick=\"showMediaModal(\\'' + linkPreview.twitterImage.url + '\\', \\'image\\', \\'twitter_preview.jpg\\')\">' +\r\n                                            '<img decoding=\"async\" src=\"' + linkPreview.twitterImage.url + '\" alt=\"Twitter Preview\" style=\"width: 120px; height: 120px; object-fit: cover; border-radius: 10px; border: 2px solid #1DA1F2; box-shadow: 0 4px 10px rgba(0,0,0,0.2); transition: transform 0.2s;\" onmouseover=\"this.style.transform=\\'scale(1.05)\\'\" onmouseout=\"this.style.transform=\\'scale(1)\\'\" \/>' +\r\n                                            '<div style=\"text-align: center; font-size: 11px; color: #64748b; margin-top: 8px; font-weight: 600;\">Twitter<\/div>' +\r\n                                            '<\/div>';\r\n                                    }\r\n                                    otherTabHTML += '<\/div>';\r\n                                }\r\n\r\n                                otherTabHTML += '<\/div>';\r\n                            }\r\n\r\n                            \/\/ Square Hero Image (Cover Image) - Other tab\r\n                            if (userProfile.squareHeroImageUrl) {\r\n                                otherTabHTML += '<div class=\"sc-other-card\">' +\r\n                                    '<div style=\"font-weight: 600; margin-bottom: 10px; color: #334155; font-size: 0.875rem;\">Cover Image:<\/div>' +\r\n                                    '<div class=\"sc-cover-image-frame\" onclick=\"showMediaModal(\\'' + userProfile.squareHeroImageUrl + '\\', \\'image\\', \\'cover_image.jpg\\')\">' +\r\n                                    '<img decoding=\"async\" class=\"sc-cover-image-img\" src=\"' + userProfile.squareHeroImageUrl + '\" alt=\"Cover Image\" \/>' +\r\n                                    '<\/div><\/div>';\r\n                            }\r\n\r\n                            \/\/ Snapcode Image - Other tab\r\n                            if (userProfile.snapcodeImageUrl || pageLinks.snapcodeImageUrl) {\r\n                                const snapcodeUrl = userProfile.snapcodeImageUrl || pageLinks.snapcodeImageUrl;\r\n                                otherTabHTML += '<div class=\"sc-other-card sc-other-card-center\">' +\r\n                                    '<div style=\"font-weight: 600; margin-bottom: 10px; color: #334155; font-size: 0.875rem;\">Snapcode:<\/div>' +\r\n                                    '<div style=\"cursor: pointer; display: inline-block; padding: 15px; background: #fff; border-radius: 12px; border: 1px solid #e2e8f0;\" onclick=\"showMediaModal(\\'' + snapcodeUrl + '\\', \\'image\\', \\'snapcode.svg\\')\">' +\r\n                                    '<img decoding=\"async\" src=\"' + snapcodeUrl + '\" alt=\"Snapcode\" style=\"width: 180px; height: 180px; border-radius: 10px;\" \/>' +\r\n                                    '<\/div><\/div>';\r\n                            }\r\n\r\n\r\n                            \/\/ Creation and Update Timestamps - Other tab\r\n                            if (userProfile.creationTimestampMs || userProfile.lastUpdateTimestampMs) {\r\n                                otherTabHTML += '<div class=\"sc-other-card\">' +\r\n                                    '<div style=\"font-weight: 600; margin-bottom: 10px; color: #334155; font-size: 0.875rem;\">Timestamps:<\/div>' +\r\n                                    '<div style=\"padding: 12px; background: #f8fafc; border-radius: 8px; font-size: 0.8125rem; color: #64748b; border: 1px solid #e2e8f0;\">';\r\n                                if (userProfile.creationTimestampMs) {\r\n                                    otherTabHTML += '<div style=\"display: flex; align-items: center; gap: 8px; margin-bottom: 5px;\"><i class=\"fa-solid fa-calendar-plus\" style=\"color: #00BCD4;\"><\/i><span>Created: ' + formatTimestamp(userProfile.creationTimestampMs) + '<\/span><\/div>';\r\n                                }\r\n                                if (userProfile.lastUpdateTimestampMs) {\r\n                                    otherTabHTML += '<div style=\"display: flex; align-items: center; gap: 8px;\"><i class=\"fa-solid fa-clock\" style=\"color: #FF9800;\"><\/i><span>Updated: ' + formatTimestamp(userProfile.lastUpdateTimestampMs) + '<\/span><\/div>';\r\n                                }\r\n                                otherTabHTML += '<\/div><\/div>';\r\n                            }\r\n\r\n                            \/\/ Page Metadata - Other tab\r\n                            if (pageMetadata.pageType || pageMetadata.pageTitle || pageMetadata.shareId) {\r\n                                otherTabHTML += '<div class=\"sc-other-card\">' +\r\n                                    '<div style=\"font-weight: 600; margin-bottom: 12px; color: #334155; font-size: 0.875rem;\">Page Metadata:<\/div>' +\r\n                                    '<div style=\"padding: 12px; background: #f8fafc; border-radius: 8px; font-size: 0.8125rem; color: #64748b; border: 1px solid #e2e8f0;\">';\r\n                                if (pageMetadata.pageType) {\r\n                                    otherTabHTML += '<div style=\"display: flex; align-items: center; gap: 8px; margin-bottom: 5px;\"><i class=\"fa-solid fa-file\" style=\"color: #00BCD4;\"><\/i><span>Page Type: ' + pageMetadata.pageType + '<\/span><\/div>';\r\n                                }\r\n                                if (pageMetadata.pageTitle) {\r\n                                    otherTabHTML += '<div style=\"display: flex; align-items: flex-start; gap: 8px; margin-bottom: 5px;\"><i class=\"fa-solid fa-heading\" style=\"color: #FF9800; margin-top: 3px;\"><\/i><span style=\"word-break: break-word;\">Page Title: ' + pageMetadata.pageTitle + '<\/span><\/div>';\r\n                                }\r\n                                if (pageMetadata.shareId) {\r\n                                    otherTabHTML += '<div style=\"display: flex; align-items: center; gap: 8px;\"><i class=\"fa-solid fa-share\" style=\"color: #00BCD4;\"><\/i><span>Share ID: ' + pageMetadata.shareId + '<\/span><\/div>';\r\n                                }\r\n                                otherTabHTML += '<\/div><\/div>';\r\n                            }\r\n\r\n                            \/\/ Profile Additional Fields - Other tab\r\n                            let profileFieldsHTML = '';\r\n                            if (userProfile.badge !== undefined && userProfile.badge !== null) {\r\n                                profileFieldsHTML += '<div style=\"display: flex; align-items: center; gap: 8px; margin-bottom: 5px;\"><i class=\"fa-solid fa-badge-check\" style=\"color: #FF9800;\"><\/i><span>Badge Level: ' + userProfile.badge + '<\/span><\/div>';\r\n                            }\r\n                            if (userProfile.businessProfileId) {\r\n                                profileFieldsHTML += '<div style=\"display: flex; align-items: center; gap: 8px; margin-bottom: 5px;\"><i class=\"fa-solid fa-briefcase\" style=\"color: #00BCD4;\"><\/i><span>Business Profile ID: <code style=\"background: rgba(255,255,255,0.1); padding: 2px 6px; border-radius: 4px; font-size: 11px;\">' + userProfile.businessProfileId + '<\/code><\/span><\/div>';\r\n                            }\r\n                            if (userProfile.mutableName) {\r\n                                profileFieldsHTML += '<div style=\"display: flex; align-items: center; gap: 8px; margin-bottom: 5px;\"><i class=\"fa-solid fa-signature\" style=\"color: #00BCD4;\"><\/i><span>Mutable Name: ' + userProfile.mutableName + '<\/span><\/div>';\r\n                            }\r\n                            if (userProfile.publisherType) {\r\n                                profileFieldsHTML += '<div style=\"display: flex; align-items: center; gap: 8px; margin-bottom: 5px;\"><i class=\"fa-solid fa-user-tie\" style=\"color: #FF9800;\"><\/i><span>Publisher Type: ' + userProfile.publisherType + '<\/span><\/div>';\r\n                            }\r\n                            if (userProfile.primaryColor) {\r\n                                profileFieldsHTML += '<div style=\"display: flex; align-items: center; gap: 8px; margin-bottom: 5px;\"><i class=\"fa-solid fa-palette\" style=\"color: ' + userProfile.primaryColor + ';\"><\/i><span>Primary Color: <span style=\"display: inline-block; width: 20px; height: 20px; background: ' + userProfile.primaryColor + '; border-radius: 4px; border: 1px solid rgba(255,255,255,0.2); margin-left: 5px;\"><\/span> ' + userProfile.primaryColor + '<\/span><\/div>';\r\n                            }\r\n                            if (userProfile.shouldHideUsername !== undefined) {\r\n                                profileFieldsHTML += '<div style=\"display: flex; align-items: center; gap: 8px; margin-bottom: 5px;\"><i class=\"fa-solid fa-eye-slash\" style=\"color: ' + (userProfile.shouldHideUsername ? '#FF9800' : '#00BCD4') + ';\"><\/i><span>Hide Username: ' + (userProfile.shouldHideUsername ? 'Yes' : 'No') + '<\/span><\/div>';\r\n                            }\r\n                            if (userProfile.bitmoji3d) {\r\n                                profileFieldsHTML += '<div style=\"display: flex; align-items: center; gap: 8px; margin-bottom: 5px;\"><i class=\"fa-solid fa-user-astronaut\" style=\"color: #00BCD4;\"><\/i><span>3D Bitmoji: Available<\/span><\/div>';\r\n                            }\r\n\r\n                            if (profileFieldsHTML) {\r\n                                otherTabHTML += '<div class=\"sc-other-card\">' +\r\n                                    '<div style=\"font-weight: 600; margin-bottom: 12px; color: #334155; font-size: 0.875rem;\">Profile Additional Fields:<\/div>' +\r\n                                    '<div style=\"padding: 12px; background: #f8fafc; border-radius: 8px; font-size: 0.8125rem; color: #64748b; border: 1px solid #e2e8f0;\">' +\r\n                                    profileFieldsHTML +\r\n                                    '<\/div><\/div>';\r\n                            }\r\n\r\n                            \/\/ Lenses - Other tab (already extracted above)\r\n                            if (lenses.length > 0) {\r\n                                otherTabHTML += '<div class=\"sc-other-card sc-other-card-wide\">' +\r\n                                    '<div style=\"font-weight: 600; margin-bottom: 12px; color: #334155; font-size: 0.875rem;\">Lenses (' + lenses.length + '):<\/div>' +\r\n                                    '<div style=\"display: grid; grid-template-columns: repeat(auto-fill, minmax(120px, 1fr)); gap: 10px;\">';\r\n                                lenses.forEach((lens, index) => {\r\n                                    otherTabHTML += '<div style=\"padding: 10px; background: #f1f5f9; border-radius: 8px; text-align: center; border: 1px solid #e2e8f0;\">' +\r\n                                        '<i class=\"fa-solid fa-camera\" style=\"font-size: 24px; color: #00BCD4; margin-bottom: 5px;\"><\/i>' +\r\n                                        '<div style=\"font-size: 11px; color: #64748b;\">Lens ' + (index + 1) + '<\/div>' +\r\n                                        '<\/div>';\r\n                                });\r\n                                otherTabHTML += '<\/div><\/div>';\r\n                            }\r\n\r\n\r\n                            \/\/ Related Accounts Section - Related tab\r\n                            if (relatedAccounts.length > 0) {\r\n                                relatedTabHTML += '<div class=\"sc-related-wrap\">' +\r\n                                    '<div class=\"sc-related-header\">' +\r\n                                    '<div class=\"sc-related-title\">Related Accounts<\/div>' +\r\n                                    '<div class=\"sc-related-desc\">Accounts related to this profile<\/div>' +\r\n                                    '<\/div>' +\r\n                                    '<div class=\"sc-related-grid\">';\r\n\r\n                                relatedAccounts.forEach(account => {\r\n                                    const accountPic = account.profilePictureUrl || '';\r\n                                    const accountUsername = account.username || '';\r\n                                    const accountTitle = coerceDisplayText(account.title, accountUsername);\r\n\r\n                                    if (accountUsername) {\r\n                                        relatedTabHTML += '<div class=\"sc-related-card\">' +\r\n                                            (accountPic ? '<img decoding=\"async\" class=\"sc-related-avatar\" src=\"' + esc(accountPic) + '\" alt=\"' + esc(accountTitle) + '\" \/>' : '<div class=\"sc-related-avatar-placeholder\"><i class=\"fa-brands fa-snapchat\"><\/i><\/div>') +\r\n                                            '<div class=\"sc-related-name\">' + esc(accountTitle) + '<\/div>' +\r\n                                            '<div class=\"sc-related-handle\">@' + esc(accountUsername) + '<\/div>' +\r\n                                            '<\/div>';\r\n                                    }\r\n                                });\r\n\r\n                                relatedTabHTML += '<\/div><\/div>';\r\n                            } else {\r\n                                relatedTabHTML = '<div class=\"no-result\"><i class=\"fa-solid fa-users\"><\/i><div class=\"sc-no-result-msg\">No related accounts available<\/div><\/div>';\r\n                            }\r\n\r\n                            \/\/ Insert tab content\r\n                            if (relatedTabHTML) {\r\n                                $('#related-content').html(relatedTabHTML);\r\n                            }\r\n\r\n                            if (otherTabHTML) {\r\n                                $('#other-content').html('<div class=\"sc-other-grid\">' + otherTabHTML + '<\/div>');\r\n                            } else {\r\n                                $('#other-content').html('<div class=\"no-result\"><i class=\"fa-solid fa-info-circle\"><\/i><div class=\"sc-no-result-msg\">No additional information available<\/div><\/div>');\r\n                            }\r\n\r\n                            \/\/ Build content for each tab separately\r\n                            let storyHTML = '';\r\n                            let highlightsTabHTML = '';\r\n                            let spotlightsTabHTML = '';\r\n\r\n                            \/\/ Story Tab Content\r\n                            if (story && story.snapList && story.snapList.length > 0) {\r\n                                storyHTML = '<div class=\"stories-grid\">';\r\n                                story.snapList.forEach((snap, index) => {\r\n                                    const mediaUrl = snap.mediaUrl || '';\r\n                                    const previewUrl = snap.mediaPreviewUrl || snap.mediaUrl || '';\r\n                                    const isVideo = snap.snapMediaType === 1;\r\n\r\n                                    storyHTML += '<div class=\"story-card\">' +\r\n                                        '<div class=\"story-img-container\" data-type=\"' + (isVideo ? 'video' : 'image') + '\" data-media=\"' + esc(mediaUrl) + '\">' +\r\n                                        '<img decoding=\"async\" class=\"story-thumb\" src=\"' + esc(previewUrl) + '\" alt=\"Story ' + (index + 1) + '\" \/>' +\r\n                                        (isVideo ? '<button type=\"button\" class=\"story-always-play\" onclick=\"playMedia(this.closest(\\'.story-img-container\\').querySelector(\\'.story-view-btn\\'))\" title=\"Play Video\"><i class=\"fa-solid fa-play\"><\/i><\/button>' : '') +\r\n                                        '<button type=\"button\" class=\"story-always-download\" onclick=\"window.downloadMedia(\\'' + escJsSingleQuoted(mediaUrl) + '\\', \\'snapchat_story_' + index + '_' + Date.now() + '.' + (isVideo ? 'mp4' : 'jpg') + '\\')\" title=\"Download\"><i class=\"fa-solid fa-download\"><\/i><\/button>' +\r\n                                        '<div class=\"story-overlay\">' +\r\n                                        '<button type=\"button\" class=\"story-view-btn\" onclick=\"playMedia(this)\"><i class=\"fa-solid fa-' + (isVideo ? 'play' : 'expand') + '\"><\/i><\/button>' +\r\n                                        (isVideo ? '<button type=\"button\" class=\"story-fullscreen-btn\" style=\"display:none;\"><i class=\"fa-solid fa-expand\"><\/i><\/button>' : '') +\r\n                                        '<button type=\"button\" class=\"story-download-btn\" data-url=\"' + esc(mediaUrl) + '\" data-filename=\"snapchat_story_' + index + '_' + Date.now() + '.' + (isVideo ? 'mp4' : 'jpg') + '\" data-type=\"' + (isVideo ? 'video' : 'image') + '\" onclick=\"downloadMedia(this)\"><i class=\"fa-solid fa-download\"><\/i><\/button>' +\r\n                                        '<\/div>' +\r\n                                        '<\/div>' +\r\n                                        '<\/div>';\r\n                                });\r\n                                storyHTML += '<\/div>';\r\n                            } else {\r\n                                storyHTML = '<div class=\"no-result\"><i class=\"fa-solid fa-circle-play\"><\/i><div class=\"sc-no-result-msg\">No active story at this time<\/div><\/div>';\r\n                            }\r\n\r\n                            \/\/ Highlights Tab Content\r\n                            if (curatedHighlights.length > 0) {\r\n                                highlightsTabHTML += '<div class=\"stories-grid\">';\r\n\r\n                                curatedHighlights.forEach((highlight, index) => {\r\n                                    const thumbnailUrl = highlight.thumbnailUrl || '';\r\n                                    const storyTitlePlain = coerceDisplayText(highlight.storyTitle, 'Highlight ' + (index + 1));\r\n                                    const storySubtitlePlain = coerceDisplayText(highlight.storySubtitle, '');\r\n                                    const storyTitle = esc(storyTitlePlain);\r\n                                    const storySubtitle = esc(storySubtitlePlain);\r\n                                    const snapList = highlight.snapList || [];\r\n\r\n                                    if (thumbnailUrl && snapList.length > 0) {\r\n                                        const firstSnap = snapList[0];\r\n                                        const mediaUrl = firstSnap.mediaUrl || '';\r\n                                        const previewUrl = firstSnap.mediaPreviewUrl || thumbnailUrl;\r\n                                        const isVideo = firstSnap.snapMediaType === 1; \/\/ 1 = video, 0 = image\r\n                                        const timestamp = firstSnap.timestampInSec || '';\r\n\r\n                                        \/\/ Format timestamp\r\n                                        let timestampText = '';\r\n                                        if (timestamp) {\r\n                                            const date = new Date(parseInt(timestamp) * 1000);\r\n                                            timestampText = date.toLocaleDateString('en-US', { month: 'short', day: 'numeric', year: 'numeric' });\r\n                                        }\r\n\r\n                                        highlightsTabHTML += '<div class=\"story-card\">' +\r\n                                            '<div class=\"story-img-container\" data-type=\"' + (isVideo ? 'video' : 'image') + '\" data-media=\"' + esc(mediaUrl) + '\">' +\r\n                                            '<img decoding=\"async\" class=\"story-thumb\" src=\"' + esc(previewUrl) + '\" alt=\"' + storyTitle + '\" \/>' +\r\n                                            (isVideo ? '<button type=\"button\" class=\"story-always-play\" onclick=\"playMedia(this.closest(\\'.story-img-container\\').querySelector(\\'.story-view-btn\\'))\" title=\"Play Video\"><i class=\"fa-solid fa-play\"><\/i><\/button>' : '') +\r\n                                            '<button type=\"button\" class=\"story-always-download\" onclick=\"window.downloadMedia(\\'' + escJsSingleQuoted(mediaUrl) + '\\', \\'snapchat_highlight_' + index + '_' + Date.now() + '.' + (isVideo ? 'mp4' : 'jpg') + '\\')\" title=\"Download\"><i class=\"fa-solid fa-download\"><\/i><\/button>' +\r\n                                            '<div class=\"story-overlay\">' +\r\n                                            '<button type=\"button\" class=\"story-view-btn\" onclick=\"playMedia(this)\"><i class=\"fa-solid fa-' + (isVideo ? 'play' : 'expand') + '\"><\/i><\/button>' +\r\n                                            (isVideo ? '<button type=\"button\" class=\"story-fullscreen-btn\" style=\"display:none;\"><i class=\"fa-solid fa-expand\"><\/i><\/button>' : '') +\r\n                                            '<button type=\"button\" class=\"story-download-btn\" data-url=\"' + esc(mediaUrl) + '\" data-filename=\"snapchat_highlight_' + index + '_' + Date.now() + '.' + (isVideo ? 'mp4' : 'jpg') + '\" data-type=\"' + (isVideo ? 'video' : 'image') + '\" onclick=\"downloadMedia(this)\"><i class=\"fa-solid fa-download\"><\/i><\/button>' +\r\n                                            '<\/div>' +\r\n                                            '<\/div>' +\r\n                                            '<div class=\"sc-card-section\">' +\r\n                                            '<div class=\"story-card-heading\">' + storyTitle + '<\/div>';\r\n\r\n                                        if (storySubtitle) {\r\n                                            highlightsTabHTML += '<div class=\"story-card-sub\">' + storySubtitle + '<\/div>';\r\n                                        }\r\n\r\n                                        highlightsTabHTML += '<div class=\"story-stat-bar\">' +\r\n                                            '<div style=\"text-align: center;\"><div class=\"stat-num\">' + snapList.length + '<\/div><div class=\"stat-lbl\">Snaps<\/div><\/div>' +\r\n                                            '<div style=\"text-align: center;\"><div class=\"stat-num accent\">' + (isVideo ? 'Video' : 'Image') + '<\/div><div class=\"stat-lbl\">Type<\/div><\/div>' +\r\n                                            '<\/div>';\r\n\r\n                                        if (snapList.length > 1) {\r\n                                            highlightsTabHTML += '<div class=\"story-snaps-grid\">' +\r\n                                                '<div class=\"story-snaps-grid-title\">All snaps (' + snapList.length + ')<\/div>' +\r\n                                                '<div class=\"story-snaps-grid-inner\">';\r\n                                            snapList.forEach((snap, snapIndex) => {\r\n                                                const snapMediaUrl = snap.mediaUrl || '';\r\n                                                const snapPreviewUrl = snap.mediaPreviewUrl || '';\r\n                                                const snapIsVideo = snap.snapMediaType === 1;\r\n                                                if (snapPreviewUrl) {\r\n                                                    const sm = escJsSingleQuoted(snapMediaUrl);\r\n                                                    highlightsTabHTML += '<div class=\"story-snap-cell\">' +\r\n                                                        '<img decoding=\"async\" src=\"' + esc(snapPreviewUrl) + '\" alt=\"\" onclick=\"showMediaModal(\\'' + sm + '\\', \\'' + (snapIsVideo ? 'video' : 'image') + '\\', \\'snap_' + index + '_' + snapIndex + '.' + (snapIsVideo ? 'mp4' : 'jpg') + '\\')\" \/>' +\r\n                                                        (snapIsVideo ? '<button type=\"button\" class=\"story-always-play\" style=\"top: 5px; left: 5px; width: 30px; height: 30px; font-size: 11px;\" onclick=\"showMediaModal(\\'' + sm + '\\', \\'video\\', \\'snap_' + index + '_' + snapIndex + '.mp4\\')\" title=\"Play Video\"><i class=\"fa-solid fa-play\"><\/i><\/button>' : '') +\r\n                                                        '<button type=\"button\" class=\"story-always-download\" style=\"top: 5px; right: 5px; width: 30px; height: 30px; font-size: 11px;\" onclick=\"window.downloadMedia(\\'' + sm + '\\', \\'snap_' + index + '_' + snapIndex + '.' + (snapIsVideo ? 'mp4' : 'jpg') + '\\')\" title=\"Download\"><i class=\"fa-solid fa-download\"><\/i><\/button>' +\r\n                                                        '<\/div>';\r\n                                                }\r\n                                            });\r\n                                            highlightsTabHTML += '<\/div><\/div>';\r\n                                        }\r\n\r\n                                        if (timestampText) {\r\n                                            highlightsTabHTML += '<div class=\"story-card-footer-time\">' +\r\n                                                '<i class=\"fa-solid fa-clock\" style=\"margin-right: 6px;\"><\/i>' +\r\n                                                esc(timestampText) +\r\n                                                '<\/div>';\r\n                                        }\r\n\r\n                                        highlightsTabHTML += '<\/div><\/div>';\r\n                                    }\r\n                                });\r\n\r\n                                highlightsTabHTML += '<\/div>';\r\n                            } else {\r\n                                highlightsTabHTML = '<div class=\"no-result\"><i class=\"fa-solid fa-star\"><\/i><div class=\"sc-no-result-msg\">No highlights available at this time<\/div><\/div>';\r\n                            }\r\n\r\n                            \/\/ Spotlights Tab Content\r\n                            if (spotlightHighlights.length > 0) {\r\n                                \/\/ Calculate total engagement stats\r\n                                let totalViews = 0, totalComments = 0, totalShares = 0, totalBoosts = 0, totalRecommends = 0;\r\n                                spotlightMetadata.forEach(meta => {\r\n                                    const stats = meta.engagementStats || {};\r\n                                    if (stats.viewCount) totalViews += parseInt(stats.viewCount);\r\n                                    if (stats.commentCount) totalComments += parseInt(stats.commentCount);\r\n                                    if (stats.shareCount) totalShares += parseInt(stats.shareCount);\r\n                                    if (stats.boostCount) totalBoosts += parseInt(stats.boostCount);\r\n                                    if (stats.recommendCount) totalRecommends += parseInt(stats.recommendCount);\r\n                                });\r\n\r\n                                spotlightsTabHTML += '<div class=\"stories-grid\">';\r\n\r\n                                spotlightHighlights.forEach((spotlight, index) => {\r\n                                    const thumbnailUrl = spotlight.thumbnailUrl || '';\r\n                                    const snapList = spotlight.snapList || [];\r\n                                    const spotlightMeta = spotlightMetadata[index] || {};\r\n                                    const engagementStats = spotlightMeta.engagementStats || {};\r\n                                    const videoMeta = spotlightMeta.videoMetadata || {};\r\n                                    const hashtags = spotlightMeta.hashtags || [];\r\n                                    const description = videoMeta.description || spotlightMeta.description || '';\r\n                                    const embeddedTextCaption = videoMeta.embeddedTextCaption || '';\r\n                                    const contextCards = spotlightMeta.contextCards || [];\r\n\r\n                                    if (thumbnailUrl && snapList.length > 0) {\r\n                                        const firstSnap = snapList[0];\r\n                                        const mediaUrl = firstSnap.mediaUrl || '';\r\n                                        const previewUrl = firstSnap.mediaPreviewUrl || thumbnailUrl;\r\n                                        const isVideo = firstSnap.snapMediaType === 1;\r\n\r\n                                        \/\/ Get snapId\/storyId to match with comments\r\n                                        const storyId = spotlight.storyId || '';\r\n                                        const snapId = firstSnap.snapId || storyId || '';\r\n\r\n                                        \/\/ Match comments - backend already parsed, use index-based access\r\n                                        let comments = [];\r\n                                        if (Array.isArray(spotlightComments) && spotlightComments[index]) {\r\n                                            comments = spotlightComments[index];\r\n                                        } else if (spotlightCommentsByIndex && spotlightCommentsByIndex[index]) {\r\n                                            comments = spotlightCommentsByIndex[index];\r\n                                        }\r\n\r\n                                        \/\/ Format duration\r\n                                        let durationText = '';\r\n                                        if (videoMeta.durationMs) {\r\n                                            const seconds = Math.floor(parseInt(videoMeta.durationMs) \/ 1000);\r\n                                            const minutes = Math.floor(seconds \/ 60);\r\n                                            const secs = seconds % 60;\r\n                                            durationText = minutes > 0 ? minutes + ':' + (secs < 10 ? '0' : '') + secs : secs + 's';\r\n                                        }\r\n\r\n                                        const spotTitleEsc = esc('Spotlight ' + (index + 1));\r\n                                        spotlightsTabHTML += '<div class=\"story-card\">' +\r\n                                            '<div class=\"story-img-container\" data-type=\"' + (isVideo ? 'video' : 'image') + '\" data-media=\"' + esc(mediaUrl) + '\">' +\r\n                                            '<img decoding=\"async\" class=\"story-thumb\" src=\"' + esc(previewUrl) + '\" alt=\"' + spotTitleEsc + '\" \/>' +\r\n                                            (isVideo ? '<button type=\"button\" class=\"story-always-play\" onclick=\"playMedia(this.closest(\\'.story-img-container\\').querySelector(\\'.story-view-btn\\'))\" title=\"Play Video\"><i class=\"fa-solid fa-play\"><\/i><\/button>' : '') +\r\n                                            '<button type=\"button\" class=\"story-always-download\" onclick=\"window.downloadMedia(\\'' + escJsSingleQuoted(mediaUrl) + '\\', \\'snapchat_spotlight_' + index + '_' + Date.now() + '.' + (isVideo ? 'mp4' : 'jpg') + '\\')\" title=\"Download\"><i class=\"fa-solid fa-download\"><\/i><\/button>' +\r\n                                            (durationText ? '<div class=\"story-duration-pill\">' + esc(durationText) + '<\/div>' : '') +\r\n                                            '<div class=\"story-overlay\">' +\r\n                                            '<button type=\"button\" class=\"story-view-btn\" onclick=\"playMedia(this)\"><i class=\"fa-solid fa-' + (isVideo ? 'play' : 'expand') + '\"><\/i><\/button>' +\r\n                                            (isVideo ? '<button type=\"button\" class=\"story-fullscreen-btn\" style=\"display:none;\"><i class=\"fa-solid fa-expand\"><\/i><\/button>' : '') +\r\n                                            '<button type=\"button\" class=\"story-download-btn\" data-url=\"' + esc(mediaUrl) + '\" data-filename=\"snapchat_spotlight_' + index + '_' + Date.now() + '.' + (isVideo ? 'mp4' : 'jpg') + '\" data-type=\"' + (isVideo ? 'video' : 'image') + '\" onclick=\"downloadMedia(this)\"><i class=\"fa-solid fa-download\"><\/i><\/button>' +\r\n                                            ((comments.length > 0 || engagementStats.commentCount) ? '<button type=\"button\" class=\"story-comment-btn\" onclick=\"showCommentsModal(' + index + ', \\'spotlight\\')\"><i class=\"fa-solid fa-comments\"><\/i><\/button>' : '') +\r\n                                            '<\/div>' +\r\n                                            '<\/div>' +\r\n                                            '<div class=\"sc-card-section\">' +\r\n                                            '<div class=\"story-card-heading\">' + spotTitleEsc + '<\/div>';\r\n\r\n                                        if (engagementStats.viewCount || engagementStats.commentCount || engagementStats.shareCount || engagementStats.boostCount) {\r\n                                            spotlightsTabHTML += '<div class=\"story-stat-bar\">';\r\n                                            if (engagementStats.viewCount) {\r\n                                                spotlightsTabHTML += '<div style=\"text-align: center;\"><div class=\"stat-num\">' + formatNumber(engagementStats.viewCount) + '<\/div><div class=\"stat-lbl\">Views<\/div><\/div>';\r\n                                            }\r\n                                            if (engagementStats.commentCount) {\r\n                                                spotlightsTabHTML += '<div style=\"text-align: center;\"><div class=\"stat-num accent\">' + formatNumber(engagementStats.commentCount) + '<\/div><div class=\"stat-lbl\">Comments<\/div><\/div>';\r\n                                            }\r\n                                            if (engagementStats.shareCount) {\r\n                                                spotlightsTabHTML += '<div style=\"text-align: center;\"><div class=\"stat-num\">' + formatNumber(engagementStats.shareCount) + '<\/div><div class=\"stat-lbl\">Shares<\/div><\/div>';\r\n                                            }\r\n                                            if (engagementStats.boostCount) {\r\n                                                spotlightsTabHTML += '<div style=\"text-align: center;\"><div class=\"stat-num accent\">' + formatNumber(engagementStats.boostCount) + '<\/div><div class=\"stat-lbl\">Boosts<\/div><\/div>';\r\n                                            }\r\n                                            spotlightsTabHTML += '<\/div>';\r\n                                        }\r\n\r\n                                        if (description) {\r\n                                            spotlightsTabHTML += '<div class=\"spotlight-desc\">' + esc(String(description)) + '<\/div>';\r\n                                        }\r\n\r\n                                        if (hashtags.length > 0) {\r\n                                            spotlightsTabHTML += '<div style=\"margin: 10px 0; text-align: center;\">';\r\n                                            hashtags.forEach(tag => {\r\n                                                spotlightsTabHTML += '<span class=\"hashtag-chip\">#' + esc(String(tag)) + '<\/span>';\r\n                                            });\r\n                                            spotlightsTabHTML += '<\/div>';\r\n                                        }\r\n\r\n                                        if (comments.length > 0 || engagementStats.commentCount) {\r\n                                            const commentCount = comments.length || engagementStats.commentCount || 0;\r\n                                            spotlightsTabHTML += '<div style=\"text-align: center; margin-top: 14px;\">' +\r\n                                                '<button type=\"button\" class=\"sc-gradient-action\" onclick=\"showCommentsModal(' + index + ', \\'spotlight\\')\">' +\r\n                                                '<i class=\"fa-solid fa-comments\" style=\"margin-right: 8px;\"><\/i>' +\r\n                                                'View comments (' + formatNumber(commentCount) + ')' +\r\n                                                '<\/button>' +\r\n                                                '<\/div>';\r\n                                        }\r\n\r\n                                        if (videoMeta.uploadDateMs) {\r\n                                            const uploadDate = new Date(parseInt(videoMeta.uploadDateMs));\r\n                                            spotlightsTabHTML += '<div class=\"story-card-footer-time\">' +\r\n                                                '<i class=\"fa-solid fa-clock\" style=\"margin-right: 6px;\"><\/i>' +\r\n                                                esc(uploadDate.toLocaleDateString('en-US', { month: 'short', day: 'numeric', year: 'numeric' })) +\r\n                                                '<\/div>';\r\n                                        }\r\n\r\n                                        spotlightsTabHTML += '<\/div><\/div>';\r\n                                    }\r\n                                });\r\n\r\n                                spotlightsTabHTML += '<\/div>';\r\n                            } else {\r\n                                spotlightsTabHTML = '<div class=\"no-result\"><i class=\"fa-solid fa-fire\"><\/i><div class=\"sc-no-result-msg\">No spotlights available at this time<\/div><\/div>';\r\n                            }\r\n\r\n                            \/\/ Populate tab contents\r\n                            \/\/ Highlights tab - show curatedHighlights\r\n                            if ($('#highlights-content').length > 0) {\r\n                                $('#highlights-content').html(highlightsTabHTML || '<div class=\"no-result\"><i class=\"fa-solid fa-bookmark\"><\/i><div class=\"sc-no-result-msg\">No highlights available<\/div><\/div>');\r\n                            }\r\n                            \/\/ Story tab - show story only (not highlights)\r\n                            if ($('#story-content').length > 0) {\r\n                                $('#story-content').html(storyHTML || '<div class=\"no-result\"><i class=\"fa-solid fa-circle-play\"><\/i><div class=\"sc-no-result-msg\">No active story at this time<\/div><\/div>');\r\n                            }\r\n                            \/\/ Spotlights tab\r\n                            if ($('#spotlights-content').length > 0) {\r\n                                $('#spotlights-content').html(spotlightsTabHTML || '<div class=\"no-result\"><i class=\"fa-solid fa-fire\"><\/i><div class=\"sc-no-result-msg\">No spotlights available<\/div><\/div>');\r\n                            }\r\n\r\n                            \/\/ Always set Highlights as the default active tab\r\n                            \/\/ Tabs order: Highlights(0), Spotlights(1), Story(2), Related(3), Other(4)\r\n                            $('.sc-tabs .sc-tab-trigger').removeClass('active');\r\n                            $('.tab-content').removeClass('active').hide();\r\n\r\n                            \/\/ Always show Highlights tab by default\r\n                            $('#highlights-content').addClass('active').show();\r\n                            $('.sc-tabs .sc-tab-trigger').eq(0).addClass('active');\r\n\r\n                            \/\/ Ensure all containers are visible (already visible by default now)\r\n                            $(\".sc-profile-header\").show();\r\n                            $(\".sc-tabs\").show();\r\n\r\n            \/\/ Story action button handlers (play\/download) - delegated, so register once\r\n            $(document).on(\"click\", \".story-action-btn\", function (e) {\r\n                e.preventDefault();\r\n                e.stopPropagation();\r\n\r\n                var index = parseInt($(this).attr(\"data-index\"), 10);\r\n                var action = $(this).attr(\"data-action\");\r\n\r\n                if (isNaN(index)) {\r\n                    return;\r\n                }\r\n\r\n                var data = window._snapchatStoriesData || {};\r\n                var stories = data.stories || [];\r\n\r\n                if (!stories || stories.length === 0) {\r\n                    return;\r\n                }\r\n\r\n                var story = stories[index];\r\n                if (!story) {\r\n                    return;\r\n                }\r\n\r\n                if (action === \"play\") {\r\n                    var firstSnap = story.snaps && story.snaps[0];\r\n                    if (firstSnap) {\r\n                        var mediaUrl = firstSnap.mediaUrl;\r\n                        if (!mediaUrl) {\r\n                            var storyCard = $('.story-card[data-index=\"' + index + '\"]');\r\n                            var imgContainer = storyCard.find('.story-img-container');\r\n                            mediaUrl = imgContainer.attr('data-media');\r\n                        }\r\n\r\n                        var isVideo = false;\r\n                        var snapMediaType = firstSnap.snapMediaType;\r\n\r\n                        if (snapMediaType === 1 || snapMediaType === '1' || parseInt(snapMediaType) === 1) {\r\n                            isVideo = true;\r\n                        } else if (snapMediaType === 2 || snapMediaType === '2' || parseInt(snapMediaType) === 2) {\r\n                            isVideo = true;\r\n                        }\r\n\r\n                        if (!isVideo && story.snaps && story.snaps.length > 0) {\r\n                            story.snaps.forEach(function(snap) {\r\n                                var st = snap.snapMediaType;\r\n                                if (st === 1 || st === '1' || parseInt(st) === 1 || st === 2 || st === '2' || parseInt(st) === 2) {\r\n                                    isVideo = true;\r\n                                }\r\n                            });\r\n                        }\r\n\r\n                        if (!isVideo && mediaUrl) {\r\n                            if (mediaUrl.includes('.1322')) {\r\n                                isVideo = true;\r\n                            } else {\r\n                                var videoExtensions = ['.mp4', '.mov', '.webm', '.avi', '.mkv', 'video', 'mp4'];\r\n                                var urlLower = mediaUrl.toLowerCase();\r\n                                isVideo = videoExtensions.some(function(ext) {\r\n                                    return urlLower.includes(ext);\r\n                                });\r\n                            }\r\n                        }\r\n\r\n                        if (mediaUrl) {\r\n                            if (isVideo) {\r\n                                try {\r\n                                    if (typeof window.showMediaModal === 'function') {\r\n                                        var fullUrl = window.resolveFullVideoUrl(mediaUrl, 'video');\r\n                                        window.showMediaModal(fullUrl || mediaUrl, 'video', 'story_' + index + '_' + Date.now() + '.mp4');\r\n                                    } else {\r\n                                        window.open(mediaUrl, '_blank');\r\n                                    }\r\n                                } catch (err) {\r\n                                    window.open(mediaUrl, '_blank');\r\n                                }\r\n                            } else {\r\n                                try {\r\n                                    if (typeof window.showMediaModal === 'function') {\r\n                                        window.showMediaModal(mediaUrl, 'image', 'story_' + index + '_' + Date.now() + '.jpg');\r\n                                    } else {\r\n                                        window.open(mediaUrl, '_blank');\r\n                                    }\r\n                                } catch (err) {\r\n                                    window.open(mediaUrl, '_blank');\r\n                                }\r\n                            }\r\n                        }\r\n                    }\r\n                } else if (action === \"download\") {\r\n                    var firstSnap = story.snaps && story.snaps[0];\r\n                    if (firstSnap) {\r\n                        var mediaUrl = firstSnap.mediaUrl;\r\n                        if (!mediaUrl) {\r\n                            var storyCard = $('.story-card[data-index=\"' + index + '\"]');\r\n                            var imgContainer = storyCard.find('.story-img-container');\r\n                            mediaUrl = imgContainer.attr('data-media');\r\n                        }\r\n                        if (!mediaUrl && window.getFullMediaUrl) {\r\n                            mediaUrl = window.getFullMediaUrl(index);\r\n                        }\r\n                        var isVideo = false;\r\n                        if (firstSnap.snapMediaType === 1 || firstSnap.snapMediaType === 2 || firstSnap.snapMediaType === '1' || firstSnap.snapMediaType === '2') {\r\n                            isVideo = true;\r\n                        } else if (mediaUrl && (mediaUrl.includes('.1322') || mediaUrl.match(\/\\.mp4|\\.mov|\\.webm\/i))) {\r\n                            isVideo = true;\r\n                        }\r\n                        if (mediaUrl) {\r\n                            if (isVideo && window.resolveFullVideoUrl) {\r\n                                mediaUrl = window.resolveFullVideoUrl(mediaUrl, 'video');\r\n                            }\r\n                            if (typeof window.downloadMedia === 'function') {\r\n                                window.downloadMedia(mediaUrl, 'story_' + index + '_' + Date.now() + '.' + (isVideo ? 'mp4' : 'jpg'));\r\n                            } else {\r\n                                window.open(mediaUrl, '_blank');\r\n                            }\r\n                        }\r\n                    }\r\n                }\r\n            });\r\n                            $(\"#tab-content\").show();\r\n\r\n                            \/\/ Scroll to result\r\n                            setTimeout(() => {\r\n                                $(\".sc-result\")[0].scrollIntoView({ behavior: 'smooth', block: 'start' });\r\n                            }, 500);\r\n\r\n                            \/\/ Store spotlight comments data for modal access\r\n                            spotlightHighlights.forEach((spotlight, index) => {\r\n                                const spotlightMeta = spotlightMetadata[index] || {};\r\n                                const engagementStats = spotlightMeta.engagementStats || {};\r\n\r\n                                \/\/ Get comments from transformed data (already parsed by backend)\r\n                                let comments = [];\r\n                                if (Array.isArray(spotlightComments) && spotlightComments[index]) {\r\n                                    comments = spotlightComments[index];\r\n                                } else if (spotlightCommentsByIndex && spotlightCommentsByIndex[index]) {\r\n                                    comments = spotlightCommentsByIndex[index];\r\n                                }\r\n\r\n                                window.spotlightCommentsData[index] = {\r\n                                    title: 'Spotlight ' + (index + 1),\r\n                                    comments: comments,\r\n                                    commentCount: engagementStats.commentCount || comments.length || 0\r\n                                };\r\n                            });\r\n\r\n                            \/\/ Data is ready: hide loading, show content (next frame so DOM has painted)\r\n                            requestAnimationFrame(function() {\r\n                                requestAnimationFrame(function() {\r\n                                    $(\"#skeleton-loading\").hide();\r\n                                    $(\"#actual-content\").show();\r\n                                });\r\n                            });\r\n                } catch (err) {\r\n                    $(\"#view-btn\").prop(\"disabled\", false).html(\"<i class='fa-solid fa-search'><\/i> View Profile\");\r\n                    $(\"#skeleton-loading\").hide();\r\n                    $(\"#actual-content\").show();\r\n\r\n                    let errorMsg = \"Something went wrong. Please try again.\";\r\n\r\n                    \/\/ Check for network\/CORS errors\r\n                    if (err && err.message) {\r\n                        if (err.message.includes(\"Failed to fetch\") || err.message.includes(\"NetworkError\")) {\r\n                            errorMsg = \"Unable to connect to \" + apiBaseUrl + \". Please check if the server is running.\";\r\n                        } else {\r\n                            \/\/ Remove technical terms from error message\r\n                            errorMsg = String(err.message).replace(\/API|api|endpoint|server|CORS|cors|Laravel|laravel|port \\d+\/gi, '').trim();\r\n                            if (!errorMsg || errorMsg.length < 3) {\r\n                                errorMsg = \"Something went wrong. Please try again.\";\r\n                            }\r\n                        }\r\n                    }\r\n\r\n                    $(\"#error-message\").text(errorMsg).show();\r\n                }\r\n            });\r\n\r\n            \/\/ Enter key support\r\n            $(\"#input-username\").on(\"keypress\", function(e) {\r\n                if (e.key === \"Enter\") {\r\n                    $(\"#view-btn\").click();\r\n                }\r\n            });\r\n\r\n            \/\/ Switch tab function\r\n            window.switchTab = function(tabName, buttonElement) {\r\n                \/\/ Update active button\r\n                document.querySelectorAll('.sc-tabs .sc-tab-trigger').forEach(btn => {\r\n                    btn.classList.remove('active');\r\n                });\r\n                if (buttonElement) {\r\n                    buttonElement.classList.add('active');\r\n                }\r\n\r\n                \/\/ Hide all tab contents and remove active class\r\n                document.querySelectorAll('.tab-content').forEach(content => {\r\n                    content.classList.remove('active');\r\n                    content.style.display = 'none';\r\n                });\r\n\r\n                \/\/ Show selected tab content\r\n                const targetContent = document.getElementById(tabName + '-content');\r\n                if (targetContent) {\r\n                    targetContent.classList.add('active');\r\n                    targetContent.style.display = 'block';\r\n                }\r\n\r\n                \/\/ If Story tab is clicked, fetch stories API\r\n                if (tabName === 'story') {\r\n                    const username = $(\"#input-username\").val().trim();\r\n                    if (username) {\r\n                        fetchStoriesForProfile(username);\r\n                    } else {\r\n                        \/\/ Show placeholder if no username\r\n                        $('#story-content').html('<div class=\"no-result\"><i class=\"fa-solid fa-circle-play\"><\/i><div class=\"sc-no-result-msg\">Enter a Snapchat username above and click Story to view stories anonymously.<\/div><\/div>');\r\n                    }\r\n                }\r\n            };\r\n\r\n            \/\/ Function to fetch stories API (similar to snapchatstoryviewer.html)\r\n            async function fetchStoriesForProfile(username) {\r\n                if (!username) return;\r\n\r\n                \/\/ Show loading state\r\n                $('#story-content').html('<div class=\"no-result\"><i class=\"fa-solid fa-spinner fa-spin\"><\/i><div class=\"sc-no-result-msg\">Loading stories...<\/div><\/div>');\r\n\r\n                try {\r\n                    const apiUrl = apiBaseUrl + \"\/api\/snapchat\/stories\";\r\n                    const clientIp = window.clientIpDetector?.getIp() || window.clientDetectedIpv4 || window.detectedClientIpv4 || null;\r\n\r\n                    const headers = { \"Content-Type\": \"application\/json\" };\r\n                    if (clientIp) {\r\n                        headers[\"X-Client-IPv4\"] = clientIp;\r\n                    }\r\n\r\n                    const resp = await fetch(apiUrl, {\r\n                        method: \"POST\",\r\n                        headers: headers,\r\n                        body: JSON.stringify({ username: username }),\r\n                    });\r\n\r\n                    const responseText = await resp.text();\r\n                    if (!responseText || responseText.trim().length === 0) {\r\n                        throw new Error(\"No data received. Please try again.\");\r\n                    }\r\n\r\n                    if (responseText.trim().startsWith(\"<\")) {\r\n                        throw new Error(\"Something went wrong. Please try again later.\");\r\n                    }\r\n\r\n                    let res = null;\r\n                    try {\r\n                        res = JSON.parse(responseText);\r\n                    } catch (parseErr) {\r\n                        throw new Error(\"Unable to process the response. Please try again.\");\r\n                    }\r\n\r\n                    if (!resp.ok) {\r\n                        let msg = (res && (res.message || res.error)) || \"Something went wrong. Please try again.\";\r\n                        msg = msg.replace(\/API|api|endpoint|server|CORS|cors\/gi, '').trim();\r\n                        if (!msg || msg.length < 3) {\r\n                            msg = \"Something went wrong. Please try again.\";\r\n                        }\r\n                        $('#story-content').html('<div class=\"no-result\"><i class=\"fa-solid fa-circle-play\"><\/i><div class=\"sc-no-result-msg\">' + esc(msg) + '<\/div><\/div>');\r\n                        return;\r\n                    }\r\n\r\n                    if (res && res.status === \"error\") {\r\n                        let msg = res.message || \"Something went wrong. Please try again.\";\r\n                        msg = msg.replace(\/API|api|endpoint|server|CORS|cors\/gi, '').trim();\r\n                        if (!msg || msg.length < 3) {\r\n                            msg = \"Something went wrong. Please try again.\";\r\n                        }\r\n                        $('#story-content').html('<div class=\"no-result\"><i class=\"fa-solid fa-circle-play\"><\/i><div class=\"sc-no-result-msg\">' + esc(msg) + '<\/div><\/div>');\r\n                        return;\r\n                    }\r\n\r\n                    const data = (res && res.data) || {};\r\n                    window._snapchatStoriesData = data;\r\n                    renderStoriesInProfile(data);\r\n\r\n                } catch (err) {\r\n                    let errorMsg = \"Something went wrong. Please try again.\";\r\n                    if (err && err.message) {\r\n                        if (err.message.includes(\"Failed to fetch\") || err.message.includes(\"NetworkError\")) {\r\n                            errorMsg = \"Unable to connect to \" + apiBaseUrl + \". Please check if the server is running.\";\r\n                        } else {\r\n                            errorMsg = String(err.message).replace(\/API|api|endpoint|server|CORS|cors|Laravel|laravel|port \\d+\/gi, '').trim();\r\n                            if (!errorMsg || errorMsg.length < 3) {\r\n                                errorMsg = \"Something went wrong. Please try again.\";\r\n                            }\r\n                        }\r\n                    }\r\n                    $('#story-content').html('<div class=\"no-result\"><i class=\"fa-solid fa-circle-play\"><\/i><div class=\"sc-no-result-msg\">' + esc(errorMsg) + '<\/div><\/div>');\r\n                }\r\n            }\r\n\r\n            \/\/ Helper function for date formatting\r\n            function formatDateOnly(sec) {\r\n                if (!sec) return \"Unknown\";\r\n                var n = parseInt(sec, 10);\r\n                if (isNaN(n)) return \"Unknown\";\r\n                var d = new Date(n * 1000);\r\n                return d.toLocaleDateString(undefined, { year: \"numeric\", month: \"short\", day: \"numeric\" });\r\n            }\r\n\r\n            function formatTimestamp(sec) {\r\n                if (!sec) return \"Unknown time\";\r\n                var n = parseInt(sec, 10);\r\n                if (isNaN(n)) return \"Unknown time\";\r\n                var d = new Date(n * 1000);\r\n                return d.toLocaleString();\r\n            }\r\n\r\n            \/\/ Helper function to get full mediaUrl\r\n            window.getFullMediaUrl = function(storyIndex, snapIndex) {\r\n                if (window._snapchatStoriesData && window._snapchatStoriesData.stories && window._snapchatStoriesData.stories[storyIndex]) {\r\n                    const story = window._snapchatStoriesData.stories[storyIndex];\r\n                    if (snapIndex !== undefined && story.snaps && story.snaps[snapIndex]) {\r\n                        const snap = story.snaps[snapIndex];\r\n                        if (snap.mediaUrl) {\r\n                            return snap.mediaUrl;\r\n                        }\r\n                    } else if (story.snaps && story.snaps.length > 0) {\r\n                        for (let i = 0; i < story.snaps.length; i++) {\r\n                            const snap = story.snaps[i];\r\n                            if (snap.mediaUrl) {\r\n                                return snap.mediaUrl;\r\n                            }\r\n                        }\r\n                    }\r\n                }\r\n                return null;\r\n            };\r\n\r\n            \/\/ Helper function to resolve preview URLs to full video URLs\r\n            window.resolveFullVideoUrl = function(url, mediaType) {\r\n                if (!url) return url;\r\n                const isVideoUrl = mediaType === 'video' || url.includes('.1322') || url.match(\/\\.mp4|\\.mov|\\.webm\/i);\r\n                if (!isVideoUrl) return url;\r\n\r\n                if (window._snapchatStoriesData && window._snapchatStoriesData.stories) {\r\n                    for (let sIdx = 0; sIdx < window._snapchatStoriesData.stories.length; sIdx++) {\r\n                        const story = window._snapchatStoriesData.stories[sIdx];\r\n                        if (story && story.snaps) {\r\n                            for (let snapIdx = 0; snapIdx < story.snaps.length; snapIdx++) {\r\n                                const snap = story.snaps[snapIdx];\r\n                                if (snap.mediaPreviewUrl === url && snap.mediaUrl) {\r\n                                    return snap.mediaUrl;\r\n                                }\r\n                                if (snap.mediaUrl === url) {\r\n                                    return url;\r\n                                }\r\n                            }\r\n                        }\r\n                    }\r\n                }\r\n                return url;\r\n            };\r\n\r\n            \/\/ Function to toggle snap list visibility\r\n            window.toggleSnapList = function(index) {\r\n                var snapList = $(\"#snap-list-\" + index);\r\n                if (snapList.length) {\r\n                    snapList.toggleClass(\"collapsed\");\r\n                }\r\n            };\r\n\r\n            \/\/ Function to render stories in profile viewer (same as snapchatstoryviewer.html)\r\n            function renderStoriesInProfile(data) {\r\n                const stories = data.stories || [];\r\n\r\n                if (!stories.length) {\r\n                    $('#story-content').html('<div class=\"no-result\"><i class=\"fa-solid fa-clapperboard\"><\/i><div class=\"sc-no-result-msg\">No public stories were found for this user.<\/div><\/div>');\r\n                    return;\r\n                }\r\n\r\n                var html = \"\";\r\n                stories.forEach(function (story, index) {\r\n                    var snaps = story.snaps || [];\r\n                    var thumb = story.thumbnailUrl || (snaps[0] && (snaps[0].mediaPreviewUrl || snaps[0].mediaUrl)) || \"\";\r\n                    var title = coerceDisplayText(story.storyTitle, \"Story \" + (index + 1));\r\n                    var firstTs = snaps[0] && snaps[0].timestampInSec;\r\n                    var dateText = formatDateOnly(firstTs);\r\n                    var subtitle = coerceDisplayText(story.storySubtitle, \"\");\r\n                    var emoji = story.emoji || \"\";\r\n                    var storyId = story.storyId || \"\";\r\n                    var storyShareId = story.storyShareId || \"\";\r\n\r\n                    var firstSnap = snaps[0] || {};\r\n                    var firstMediaUrl = firstSnap.mediaUrl || firstSnap.mediaPreviewUrl || thumb || \"\";\r\n\r\n                    \/\/ Detect video\r\n                    var isVideo = false;\r\n                    var videoSnap = null;\r\n\r\n                    snaps.forEach(function(snap, snapIdx) {\r\n                        var snapMediaType = snap.snapMediaType;\r\n                        var snapUrl = snap.mediaUrl || snap.mediaPreviewUrl || '';\r\n\r\n                        var isSnapVideo = false;\r\n                        if (snapMediaType === 1 || snapMediaType === '1' || parseInt(snapMediaType) === 1) {\r\n                            isSnapVideo = true;\r\n                        } else if (snapMediaType === 2 || snapMediaType === '2' || parseInt(snapMediaType) === 2) {\r\n                            isSnapVideo = true;\r\n                        }\r\n\r\n                        if (!isSnapVideo && snapUrl) {\r\n                            if (snapUrl.includes('.1322') || snapUrl.match(\/\\.\\d{4}\/)) {\r\n                                var urlMatch = snapUrl.match(\/\\.(\\d{3,4})\/);\r\n                                if (urlMatch && urlMatch[1] !== '400' && urlMatch[1] !== '410') {\r\n                                    isSnapVideo = true;\r\n                                }\r\n                            }\r\n                        }\r\n\r\n                        if (isSnapVideo) {\r\n                            isVideo = true;\r\n                            videoSnap = snap;\r\n                        }\r\n                    });\r\n\r\n                    if (videoSnap) {\r\n                        if (videoSnap.mediaUrl) {\r\n                            firstMediaUrl = videoSnap.mediaUrl;\r\n                        } else {\r\n                            var foundUrl = null;\r\n                            snaps.forEach(function(snap) {\r\n                                if (snap.mediaUrl && !foundUrl) {\r\n                                    foundUrl = snap.mediaUrl;\r\n                                }\r\n                            });\r\n                            if (foundUrl) {\r\n                                firstMediaUrl = foundUrl;\r\n                            }\r\n                        }\r\n                    }\r\n\r\n                    if (!isVideo && firstMediaUrl) {\r\n                        if (firstMediaUrl.includes('.1322')) {\r\n                            isVideo = true;\r\n                        } else {\r\n                            var videoExtensions = ['.mp4', '.mov', '.webm', '.avi', '.mkv', 'video', 'mp4'];\r\n                            var urlLower = firstMediaUrl.toLowerCase();\r\n                            isVideo = videoExtensions.some(function(ext) {\r\n                                return urlLower.includes(ext);\r\n                            });\r\n                        }\r\n                    }\r\n\r\n                    var snapListHtml = \"\";\r\n                    if (snaps.length) {\r\n                        snaps.forEach(function (snap, sIndex) {\r\n                            var snapThumb = snap.mediaPreviewUrl || snap.mediaUrl || \"\";\r\n                            var snapMediaUrl = snap.mediaUrl || \"\";\r\n                            var snapTime = formatTimestamp(snap.timestampInSec);\r\n\r\n                            var isVideo = false;\r\n                            var snapMediaType = snap.snapMediaType;\r\n\r\n                            if (snapMediaType === 1 || snapMediaType === '1' || parseInt(snapMediaType) === 1) {\r\n                                isVideo = true;\r\n                            } else if (snapMediaType === 2 || snapMediaType === '2' || parseInt(snapMediaType) === 2) {\r\n                                isVideo = true;\r\n                            }\r\n\r\n                            if (!isVideo && snapMediaUrl) {\r\n                                if (snapMediaUrl.includes('.1322')) {\r\n                                    isVideo = true;\r\n                                } else {\r\n                                    var videoExtensions = ['.mp4', '.mov', '.webm', '.avi', '.mkv', 'video', 'mp4'];\r\n                                    var urlLower = snapMediaUrl.toLowerCase();\r\n                                    isVideo = videoExtensions.some(function(ext) {\r\n                                        return urlLower.includes(ext);\r\n                                    });\r\n                                }\r\n                            }\r\n\r\n                            var mediaType = isVideo ? \"Video\" : \"Image\";\r\n                            var hasAttach = snap.hasAttachment ? \"Yes\" : \"No\";\r\n                            var coords = (snap.lat && snap.lng) ? (snap.lat + \", \" + snap.lng) : \"-\";\r\n                            var snapTitle = coerceDisplayText(snap.snapTitle, \"\");\r\n                            var snapSubtitles = snap.snapSubtitles || \"\";\r\n                            var overlayUrl = snap.overlayUrl || \"\";\r\n                            var attachmentUrl = snap.attachmentUrl || \"\";\r\n\r\n                            snapListHtml += '<div class=\"snap-item\">' +\r\n                                '<div class=\"snap-thumb\" style=\"position:relative;cursor:pointer;\" onclick=\"showMediaModal(\\'' + esc(snapMediaUrl) + '\\', \\'' + (isVideo ? 'video' : 'image') + '\\', \\'snap_' + index + '_' + sIndex + '_' + Date.now() + '.' + (isVideo ? 'mp4' : 'jpg') + '\\')\">' +\r\n                                (snapThumb\r\n                                    ? '<img decoding=\"async\" src=\"' + esc(snapThumb) + '\" alt=\"Snap ' + (sIndex + 1) + '\">'\r\n                                    : '<div style=\"width:100%;height:100%;background:rgba(255,255,255,0.05);display:flex;align-items:center;justify-content:center;\"><i class=\"fa-solid fa-image\" style=\"color:rgba(255,255,255,0.3);\"><\/i><\/div>'\r\n                                ) +\r\n                                (isVideo ? '<button class=\"story-always-play\" style=\"top: 5px; left: 5px; width: 28px; height: 28px; font-size: 11px;\" onclick=\"event.stopPropagation(); showMediaModal(\\'' + esc(snapMediaUrl) + '\\', \\'video\\', \\'snap_' + index + '_' + sIndex + '.mp4\\')\" title=\"Play Video\"><i class=\"fa-solid fa-play\"><\/i><\/button>' : '') +\r\n                                '<button class=\"story-always-download\" style=\"top: 5px; right: 5px; width: 28px; height: 28px; font-size: 11px;\" onclick=\"event.stopPropagation(); (function(storyIdx, snapIdx, isVid) { var url = window.getFullMediaUrl(storyIdx, snapIdx); if (url) { window.downloadMedia(url, \\'snap_\\' + storyIdx + \\'_\\' + snapIdx + \\'_\\' + Date.now() + \\'.\\' + (isVid ? \\'mp4\\' : \\'jpg\\')); } })(' + index + ', ' + sIndex + ', ' + (isVideo ? 'true' : 'false') + ')\" title=\"Download\"><i class=\"fa-solid fa-download\"><\/i><\/button>' +\r\n                                '<\/div>' +\r\n                                '<div class=\"snap-meta\">' +\r\n                                '<div class=\"snap-badge\">Snap ' + (sIndex + 1) + \" \u2022 \" + esc(mediaType) + \"<\/div>\" +\r\n                                (snapTitle ? '<div class=\"story-meta-row\"><span class=\"story-meta-label\">Title:<\/span><span class=\"story-meta-value\">' + esc(snapTitle) + \"<\/span><\/div>\" : \"\") +\r\n                                (snapSubtitles ? '<div class=\"story-meta-row\"><span class=\"story-meta-label\">Subtitles:<\/span><span class=\"story-meta-value\">' + esc(snapSubtitles) + \"<\/span><\/div>\" : \"\") +\r\n                                '<div class=\"story-meta-row\"><span class=\"story-meta-label\">Time:<\/span><span class=\"story-meta-value\">' + esc(snapTime) + \"<\/span><\/div>\" +\r\n                                '<div class=\"story-meta-row\"><span class=\"story-meta-label\">Location:<\/span><span class=\"story-meta-value\">' + esc(coords) + \"<\/span><\/div>\" +\r\n                                '<div class=\"story-meta-row\"><span class=\"story-meta-label\">Attachment:<\/span><span class=\"story-meta-value\">' + esc(hasAttach) + (attachmentUrl ? ' <a href=\"' + esc(attachmentUrl).replace(\/\"\/g, '\"') + '\" target=\"_blank\" style=\"color:#00BCD4;margin-left:5px;\"><i class=\"fa-solid fa-external-link\"><\/i><\/a>' : '') + '<\/span><\/div>' +\r\n                                (overlayUrl ? '<div class=\"story-meta-row\"><span class=\"story-meta-label\">Overlay:<\/span><span class=\"story-meta-value\"><a href=\"' + esc(overlayUrl).replace(\/\"\/g, '\"') + '\" target=\"_blank\" style=\"color:#00BCD4;\"><i class=\"fa-solid fa-external-link\"><\/i> View<\/a><\/span><\/div>' : '') +\r\n                                \"<\/div>\" +\r\n                                \"<\/div>\";\r\n                        });\r\n                    } else {\r\n                        snapListHtml = '<div class=\"snap-item\"><div class=\"snap-meta\"><span class=\"story-meta-value\">No snaps listed for this story.<\/span><\/div><\/div>';\r\n                    }\r\n\r\n                    html += '<div class=\"story-card\" data-index=\"' + index + '\">' +\r\n                        '<div class=\"story-img-container\" data-type=\"' + (isVideo ? 'video' : 'image') + '\" data-media=\"' + esc(firstMediaUrl) + '\">' +\r\n                        (thumb ? '<img decoding=\"async\" src=\"' + esc(thumb) + '\" alt=\"' + esc(title) + '\" class=\"story-thumb\">' : '<div style=\"width:100%;height:100%;background:rgba(255,255,255,0.05);display:flex;align-items:center;justify-content:center;\"><i class=\"fa-solid fa-image\" style=\"color:rgba(255,255,255,0.3);font-size:48px;\"><\/i><\/div>') +\r\n                        (isVideo ? '<button class=\"story-always-play\" onclick=\"event.stopPropagation(); playMedia(this.closest(\\'.story-img-container\\').querySelector(\\'.story-view-btn\\'))\" title=\"Play Video\"><i class=\"fa-solid fa-play\"><\/i><\/button>' : '') +\r\n                        '<button class=\"story-always-download\" onclick=\"event.stopPropagation(); (function(idx, isVid) { var url = window.getFullMediaUrl(idx) || $(this).closest(\\'.story-img-container\\').attr(\\'data-media\\'); if (url) { window.downloadMedia(url, \\'story_\\' + idx + \\'_\\' + Date.now() + \\'.\\' + (isVid ? \\'mp4\\' : \\'jpg\\')); } }).call(this, ' + index + ', ' + (isVideo ? 'true' : 'false') + ')\" title=\"Download\"><i class=\"fa-solid fa-download\"><\/i><\/button>' +\r\n                        '<div class=\"story-overlay\">' +\r\n                        '<button class=\"story-view-btn\" onclick=\"event.stopPropagation(); playMedia(this); return false;\"><i class=\"fa-solid fa-' + (isVideo ? 'play' : 'expand') + '\"><\/i><\/button>' +\r\n                        (isVideo ? '<button class=\"story-fullscreen-btn\" style=\"display:none;\"><i class=\"fa-solid fa-expand\"><\/i><\/button>' : '') +\r\n                        '<button class=\"story-download-btn\" data-url=\"' + esc(firstMediaUrl) + '\" data-filename=\"story_' + index + '_' + Date.now() + '.' + (isVideo ? 'mp4' : 'jpg') + '\" data-type=\"' + (isVideo ? 'video' : 'image') + '\" onclick=\"event.stopPropagation(); downloadMedia(this); return false;\"><i class=\"fa-solid fa-download\"><\/i><\/button>' +\r\n                        '<\/div>' +\r\n                        '<div style=\"position:absolute;bottom:15px;left:15px;right:15px;display:flex;justify-content:space-between;align-items:flex-end;z-index:5;\">' +\r\n                        '<div class=\"story-title\">' + (emoji ? esc(emoji) + \" \" : \"\") + esc(title) + \"<\/div>\" +\r\n                        '<div class=\"story-badge\" onclick=\"event.stopPropagation(); toggleSnapList(' + index + ')\" title=\"Click to show\/hide snaps\"><i class=\"fa-solid fa-clapperboard\"><\/i><span>' + snaps.length + \" snaps<\/span><\/div>\" +\r\n                        \"<\/div>\" +\r\n                        \"<\/div>\" +\r\n                        '<div class=\"story-meta\">' +\r\n                        '<div class=\"story-meta-row\"><span class=\"story-meta-label\">Title:<\/span><span class=\"story-meta-value\">' + esc(title) + \"<\/span><\/div>\" +\r\n                        (subtitle ? '<div class=\"story-meta-row\"><span class=\"story-meta-label\">Subtitle:<\/span><span class=\"story-meta-value\">' + esc(subtitle) + \"<\/span><\/div>\" : \"\") +\r\n                        '<div class=\"story-meta-row\"><span class=\"story-meta-label\">Date:<\/span><span class=\"story-meta-value\">' + (dateText ? esc(dateText) : \"Unknown\") + \"<\/span><\/div>\" +\r\n                        \"<\/div>\" +\r\n                        '<div class=\"story-actions\">' +\r\n                        '<button class=\"story-action-btn\" data-action=\"play\" data-index=\"' + index + '\"><i class=\"fa-solid fa-' + (isVideo ? 'play' : 'expand') + '\"><\/i> ' + (isVideo ? 'Play' : 'View') + '<\/button>' +\r\n                        '<button class=\"story-action-btn\" data-action=\"download\" data-index=\"' + index + '\"><i class=\"fa-solid fa-download\"><\/i> Download<\/button>' +\r\n                        \"<\/div>\" +\r\n                        '<div class=\"snap-list collapsed\" id=\"snap-list-' + index + '\">' + snapListHtml + \"<\/div>\" +\r\n                        \"<\/div>\";\r\n                });\r\n\r\n                $('#story-content').html('<div class=\"stories-grid\">' + html + '<\/div>');\r\n            }\r\n\r\n            \/\/ Profile image expand handler\r\n            $(document).on('click', '.view-profile-img', function() {\r\n                const profileImage = $(this).siblings('.profile-image');\r\n                const imgSrc = profileImage.find('img').attr('src');\r\n                if (imgSrc) {\r\n                    showMediaModal(imgSrc, 'image', 'profile_picture.jpg');\r\n                }\r\n            });\r\n\r\n            \/\/ Format number function\r\n            function formatNumber(num) {\r\n                if (!num) return '0';\r\n                const n = parseInt(num);\r\n                if (n >= 1000000) return (n \/ 1000000).toFixed(1) + 'M';\r\n                if (n >= 1000) return (n \/ 1000).toFixed(1) + 'K';\r\n                return n.toString();\r\n            }\r\n\r\n            \/\/ Function to pause all videos except the current one\r\n            function pauseAllVideosExcept(currentVideo) {\r\n                $(\"video.story-video\").each(function () {\r\n                    if (this !== currentVideo) {\r\n                        try {\r\n                            if (!this.paused) {\r\n                                this.pause();\r\n                            }\r\n                            \/\/ Reset UI for paused videos\r\n                            const container = $(this).closest('.story-img-container');\r\n                            const overlay = container.find('.story-overlay');\r\n                            const viewBtn = overlay.find('.story-view-btn');\r\n                            const fullscreenBtn = overlay.find('.story-fullscreen-btn');\r\n                            const thumbnail = container.find('.story-thumb');\r\n\r\n                            $(this).hide();\r\n                            thumbnail.show();\r\n                            viewBtn.html('<i class=\"fa-solid fa-play\"><\/i>');\r\n                            fullscreenBtn.hide();\r\n                        } catch (e) {\r\n                            console.warn(\"Error pausing video:\", e);\r\n                        }\r\n                    }\r\n                });\r\n            }\r\n\r\n            \/\/ Play media function (similar to Instagram)\r\n            window.playMedia = function(btn) {\r\n                const container = $(btn).closest('.story-img-container');\r\n                const mediaType = container.data('type');\r\n                const mediaUrl = container.data('media');\r\n                const overlay = container.find('.story-overlay');\r\n                const thumbnail = container.find('.story-thumb');\r\n                const viewBtn = $(btn);\r\n                const fullscreenBtn = overlay.find('.story-fullscreen-btn');\r\n\r\n                if (mediaType === 'video') {\r\n                    \/\/ Check if video already exists\r\n                    let video = container.find('video.story-video');\r\n                    let videoElement = video.length > 0 ? video.get(0) : null;\r\n\r\n                    if (!videoElement) {\r\n                        \/\/ Create video element\r\n                        video = $('<video class=\"story-video\" controls playsinline style=\"width:100%;height:100%;object-fit:cover;\"><\/video>');\r\n                        video.attr('src', mediaUrl);\r\n                        container.append(video);\r\n                        videoElement = video.get(0);\r\n                    }\r\n\r\n                    if (videoElement.paused) {\r\n                        \/\/ Pause all other videos first\r\n                        pauseAllVideosExcept(videoElement);\r\n\r\n                        thumbnail.hide();\r\n                        video.show();\r\n\r\n                        \/\/ Set video to start from beginning and play with a small delay\r\n                        videoElement.currentTime = 0;\r\n                        setTimeout(() => {\r\n                            videoElement.play()\r\n                                .then(() => {\r\n                                    viewBtn.html('<i class=\"fa-solid fa-pause\"><\/i>');\r\n                                    fullscreenBtn.show();\r\n                                })\r\n                                .catch((e) => {\r\n                                    console.warn(\"Video play error:\", e);\r\n                                    \/\/ Reset to play button if video fails\r\n                                    viewBtn.html('<i class=\"fa-solid fa-play\"><\/i>');\r\n                                    fullscreenBtn.hide();\r\n                                    video.hide();\r\n                                    thumbnail.show();\r\n                                });\r\n                        }, 100);\r\n                    } else {\r\n                        try {\r\n                            videoElement.pause();\r\n                            viewBtn.html('<i class=\"fa-solid fa-play\"><\/i>');\r\n                            fullscreenBtn.hide();\r\n                            video.hide();\r\n                            thumbnail.show();\r\n                        } catch (e) {\r\n                            console.warn(\"Error pausing video:\", e);\r\n                        }\r\n                    }\r\n                } else {\r\n                    \/\/ For images, show in modal with download option\r\n                    const filename = 'snapchat_image_' + Date.now() + '.jpg';\r\n                    showMediaModal(mediaUrl, 'image', filename);\r\n                }\r\n            };\r\n\r\n            \/\/ Fullscreen button handler - Show media in modal with download option\r\n            $(document).on('click', '.story-fullscreen-btn', function() {\r\n                const container = $(this).closest('.story-img-container');\r\n                const mediaUrl = container.data('media');\r\n                const mediaType = container.data('type');\r\n                const video = container.find('video.story-video').get(0);\r\n                const thumbnail = container.find('.story-thumb');\r\n                const overlay = container.find('.story-overlay');\r\n                const viewBtn = overlay.find('.story-view-btn');\r\n                const fullscreenBtn = $(this);\r\n\r\n                \/\/ Pause the current video and reset the UI\r\n                if (video && !video.paused) {\r\n                    video.pause();\r\n                }\r\n\r\n                \/\/ Hide video and show thumbnail\r\n                container.find('video.story-video').hide();\r\n                thumbnail.show();\r\n\r\n                \/\/ Reset buttons to initial state\r\n                viewBtn.html('<i class=\"fa-solid fa-play\"><\/i>');\r\n                fullscreenBtn.hide();\r\n\r\n                \/\/ Show video in modal with download option\r\n                const filename = 'snapchat_' + (container.closest('.story-card').find('.story-title').text() || 'media') + '_' + Date.now() + '.' + (mediaType === 'video' ? 'mp4' : 'jpg');\r\n                showMediaModal(mediaUrl, mediaType, filename);\r\n            });\r\n\r\n            \/\/ Download media function (supports both button click and direct call)\r\n            window.downloadMedia = function(btnOrUrl, urlOrFilename, filename) {\r\n                let url, downloadFilename, mediaType;\r\n\r\n                \/\/ If first argument is a button element\r\n                if (btnOrUrl && typeof btnOrUrl === 'object' && $(btnOrUrl).length > 0) {\r\n                    url = $(btnOrUrl).data('url');\r\n                    downloadFilename = $(btnOrUrl).data('filename');\r\n                    mediaType = $(btnOrUrl).data('type') || 'image';\r\n                } else {\r\n                    \/\/ Direct call with url and filename\r\n                    url = btnOrUrl || urlOrFilename;\r\n                    downloadFilename = urlOrFilename || filename || 'snapchat_media_' + Date.now() + '.jpg';\r\n                    \/\/ Try to detect media type from filename extension\r\n                    if (downloadFilename.toLowerCase().endsWith('.mp4') || downloadFilename.toLowerCase().endsWith('.mov') || downloadFilename.toLowerCase().endsWith('.webm')) {\r\n                        mediaType = 'video';\r\n                    } else {\r\n                        mediaType = 'image';\r\n                    }\r\n                }\r\n\r\n                \/\/ Ensure images always use .jpg extension\r\n                if (mediaType === 'image' && downloadFilename) {\r\n                    \/\/ Remove any existing extension and add .jpg\r\n                    downloadFilename = downloadFilename.replace(\/\\.(jpg|jpeg|png|gif|webp|bmp|svg)$\/i, '') + '.jpg';\r\n                }\r\n\r\n                if (url) {\r\n                    \/\/ Use fetch to download with proper CORS handling\r\n                    fetch(url)\r\n                        .then(response => response.blob())\r\n                        .then(blob => {\r\n                            const blobUrl = window.URL.createObjectURL(blob);\r\n                            const link = document.createElement('a');\r\n                            link.href = blobUrl;\r\n                            \/\/ Ensure final filename has correct extension\r\n                            if (mediaType === 'image') {\r\n                                link.download = downloadFilename || 'snapchat_media_' + Date.now() + '.jpg';\r\n                            } else {\r\n                                link.download = downloadFilename || 'snapchat_media_' + Date.now() + '.mp4';\r\n                            }\r\n                            document.body.appendChild(link);\r\n                            link.click();\r\n                            document.body.removeChild(link);\r\n                            window.URL.revokeObjectURL(blobUrl);\r\n\r\n                            \/\/ Show success message\r\n                            $(\"#error-message\").text(\"Download started!\").css(\"color\", \"green\").show();\r\n                            setTimeout(() => $(\"#error-message\").hide(), 2000);\r\n                        })\r\n                        .catch(err => {\r\n                            console.error('Download failed:', err);\r\n                            \/\/ Fallback: open in new tab\r\n                            window.open(url, '_blank');\r\n                        });\r\n                }\r\n            };\r\n\r\n            \/\/ Download function (legacy)\r\n            \/\/ Helper function to download media from URL directly\r\n            function downloadMediaFromUrl(url, filename, type) {\r\n                if (!url) return;\r\n\r\n                \/\/ Ensure images always use .jpg extension\r\n                let finalFilename = filename;\r\n                if (type === 'image' || (!type && !filename.toLowerCase().endsWith('.mp4') && !filename.toLowerCase().endsWith('.mov') && !filename.toLowerCase().endsWith('.webm'))) {\r\n                    finalFilename = filename.replace(\/\\.(jpg|jpeg|png|gif|webp|bmp|svg)$\/i, '') + '.jpg';\r\n                }\r\n\r\n                const link = document.createElement('a');\r\n                link.href = url;\r\n                link.download = finalFilename;\r\n                link.target = '_blank';\r\n\r\n                \/\/ For CORS issues, open in new tab\r\n                if (url.startsWith('http')) {\r\n                    window.open(url, '_blank');\r\n                } else {\r\n                    document.body.appendChild(link);\r\n                    link.click();\r\n                    document.body.removeChild(link);\r\n                }\r\n            }\r\n\r\n            function downloadMedia(url, filename) {\r\n                \/\/ Ensure images always use .jpg extension\r\n                let finalFilename = filename;\r\n                if (!filename.toLowerCase().endsWith('.mp4') && !filename.toLowerCase().endsWith('.mov') && !filename.toLowerCase().endsWith('.webm')) {\r\n                    finalFilename = filename.replace(\/\\.(jpg|jpeg|png|gif|webp|bmp|svg)$\/i, '') + '.jpg';\r\n                }\r\n\r\n                fetch(url)\r\n                    .then(response => response.blob())\r\n                    .then(blob => {\r\n                        const blobUrl = window.URL.createObjectURL(blob);\r\n                        const link = document.createElement('a');\r\n                        link.href = blobUrl;\r\n                        link.download = finalFilename;\r\n                        document.body.appendChild(link);\r\n                        link.click();\r\n                        document.body.removeChild(link);\r\n                        window.URL.revokeObjectURL(blobUrl);\r\n                    })\r\n                    .catch(err => {\r\n                        console.error('Download failed:', err);\r\n                        window.open(url, '_blank');\r\n                    });\r\n            }\r\n\r\n            \/\/ Modal functions - Legacy (for backward compatibility)\r\n            \/\/ Note: This now uses the new dynamic modal system\r\n            window.showModal = function(mediaUrl, mediaType, filename) {\r\n                showMediaModal(mediaUrl, mediaType, filename);\r\n            };\r\n\r\n            \/\/ Ensure old modal is hidden on page load\r\n            $(document).ready(function() {\r\n                $(\"#sc-modal\").hide();\r\n            });\r\n\r\n            \/\/ Show media in modal with download option (similar to Instagram)\r\n            window.showMediaModal = function(mediaUrl, mediaType, filename) {\r\n                \/\/ Close existing modal if any\r\n                $('.sc-media-modal').remove();\r\n\r\n                const modal = $('<div class=\"sc-media-modal profile-img-modal\">');\r\n                const backdrop = $('<div class=\"sc-media-modal-backdrop\">');\r\n                const content = $('<div class=\"sc-modal-content\">');\r\n                const actions = $('<div class=\"sc-modal-actions\">');\r\n                const downloadBtn = $('<button class=\"sc-modal-download-btn\">');\r\n                const closeBtn = $('<button class=\"sc-close-modal\">');\r\n\r\n                \/\/ Create media element based on type\r\n                let mediaElement;\r\n                if (mediaType === 'video') {\r\n                    mediaElement = $('<video class=\"sc-modal-media\" controls autoplay playsinline style=\"max-width: 90vw; max-height: 70vh; object-fit: contain;\" \/>');\r\n                    mediaElement.attr('src', mediaUrl);\r\n                } else {\r\n                    mediaElement = $('<img class=\"sc-modal-media modal-img\" referrerpolicy=\"no-referrer\" alt=\"Media\" style=\"max-width: 90vw; max-height: 70vh; object-fit: contain;\" \/>');\r\n                    mediaElement.attr('src', mediaUrl);\r\n                }\r\n\r\n                \/\/ Download button\r\n                downloadBtn.html('<i class=\"fa-solid fa-download\"><\/i> Download');\r\n                downloadBtn.on('click', function() {\r\n                    let downloadFilename = filename || 'snapchat_media_' + Date.now();\r\n                    \/\/ Ensure images always use .jpg extension, videos use .mp4\r\n                    if (mediaType === 'video') {\r\n                        downloadFilename = downloadFilename.replace(\/\\.(mp4|mov|webm|avi)$\/i, '') + '.mp4';\r\n                    } else {\r\n                        \/\/ It's an image, ensure .jpg extension\r\n                        downloadFilename = downloadFilename.replace(\/\\.(jpg|jpeg|png|gif|webp|bmp|svg)$\/i, '') + '.jpg';\r\n                    }\r\n                    window.downloadMedia(mediaUrl, downloadFilename);\r\n                });\r\n\r\n                \/\/ Close button\r\n                closeBtn.html('<i class=\"fa-solid fa-xmark\"><\/i>');\r\n\r\n                \/\/ Assemble modal\r\n                actions.append(downloadBtn);\r\n                content.append(mediaElement, actions, closeBtn);\r\n                modal.append(backdrop, content);\r\n\r\n                $('.sc-anonymous-viewer').first().append(modal);\r\n\r\n                \/\/ Show modal with animation\r\n                setTimeout(function() {\r\n                    modal.addClass('active');\r\n                    $('html').addClass('sc-snap-modal-lock');\r\n                }, 10);\r\n\r\n                \/\/ Close modal when clicking close button or backdrop\r\n                closeBtn.on('click', function() {\r\n                    modal.removeClass('active');\r\n                    setTimeout(function() {\r\n                        modal.remove();\r\n                        $('html').removeClass('sc-snap-modal-lock');\r\n                    }, 300);\r\n                });\r\n\r\n                backdrop.on('click', function() {\r\n                    modal.removeClass('active');\r\n                    setTimeout(function() {\r\n                        modal.remove();\r\n                        $('html').removeClass('sc-snap-modal-lock');\r\n                    }, 300);\r\n                });\r\n\r\n                \/\/ Close on Escape key\r\n                $(document).on('keydown.scmodal', function(e) {\r\n                    if (e.key === 'Escape' && modal.hasClass('active')) {\r\n                        modal.removeClass('active');\r\n                        setTimeout(function() {\r\n                            modal.remove();\r\n                            $('html').removeClass('sc-snap-modal-lock');\r\n                            $(document).off('keydown.scmodal');\r\n                        }, 300);\r\n                    }\r\n                });\r\n            };\r\n\r\n            window.closeModal = function() {\r\n                \/\/ Close legacy modal\r\n                $(\"#sc-modal\").css('display', 'none');\r\n                $(\"#modal-media\").empty();\r\n                currentMediaUrl = '';\r\n                currentFilename = '';\r\n\r\n                \/\/ Also close any dynamically created modals\r\n                $('.sc-media-modal').removeClass('active');\r\n                setTimeout(function() {\r\n                    $('.sc-media-modal').remove();\r\n                    $('html').removeClass('sc-snap-modal-lock');\r\n                }, 300);\r\n            };\r\n\r\n            \/\/ Download button in modal\r\n            $(\"#modal-download-btn\").on(\"click\", function() {\r\n                if (currentMediaUrl) {\r\n                    let filename = currentFilename || 'snapchat_media_' + Date.now() + '.jpg';\r\n                    \/\/ Ensure images always use .jpg extension\r\n                    if (!filename.toLowerCase().endsWith('.mp4') && !filename.toLowerCase().endsWith('.mov') && !filename.toLowerCase().endsWith('.webm')) {\r\n                        \/\/ It's an image, ensure .jpg extension\r\n                        filename = filename.replace(\/\\.(jpg|jpeg|png|gif|webp|bmp|svg)$\/i, '') + '.jpg';\r\n                    }\r\n                    window.downloadMedia(currentMediaUrl, filename);\r\n                }\r\n            });\r\n\r\n            \/\/ Close modal on backdrop click\r\n            $(\"#sc-modal\").on(\"click\", function(e) {\r\n                if (e.target === this) {\r\n                    closeModal();\r\n                }\r\n            });\r\n\r\n            \/\/ Show Comments Modal Function\r\n            window.showCommentsModal = function(index, type) {\r\n                let commentData = null;\r\n                if (type === 'spotlight') {\r\n                    commentData = window.spotlightCommentsData[index];\r\n                } else if (type === 'highlight') {\r\n                    commentData = window.highlightCommentsData[index];\r\n                }\r\n\r\n                if (!commentData || !commentData.comments || commentData.comments.length === 0) {\r\n                    alert('No comments available for this ' + type);\r\n                    return;\r\n                }\r\n\r\n                const modal = $('#sc-comment-modal');\r\n                const title = $('#comment-modal-title');\r\n                const body = $('#comment-modal-body');\r\n\r\n                title.text(commentData.title + ' - Comments (' + commentData.comments.length + ')');\r\n                body.empty();\r\n\r\n                \/\/ Display comments\r\n                commentData.comments.forEach((comment, idx) => {\r\n                    const commentText = comment.replyText || '';\r\n                    const commenterName = comment.replyPosterDisplayName || 'Anonymous';\r\n                    const commentTime = comment.replyTimestampMs ? new Date(parseInt(comment.replyTimestampMs)).toLocaleDateString('en-US', { month: 'short', day: 'numeric', year: 'numeric', hour: '2-digit', minute: '2-digit' }) : '';\r\n                    const reactCount = comment.reactCounts && comment.reactCounts.length > 0 ? comment.reactCounts[0].reactCount : '0';\r\n                    const threadCount = comment.threadedReplyCount || '0';\r\n\r\n                    if (commentText) {\r\n                        const commentHTML = '<div class=\"sc-comment-item\">' +\r\n                            '<div class=\"sc-comment-header\">' +\r\n                            '<span class=\"sc-comment-author\">' + commenterName + '<\/span>' +\r\n                            (commentTime ? '<span class=\"sc-comment-time\">' + commentTime + '<\/span>' : '') +\r\n                            '<\/div>' +\r\n                            '<div class=\"sc-comment-text\">' + commentText + '<\/div>' +\r\n                            '<div class=\"sc-comment-stats\">' +\r\n                            (parseInt(reactCount) > 0 ? '<span><i class=\"fa-solid fa-heart\" style=\"color: #FF6B00;\"><\/i> ' + reactCount + '<\/span>' : '') +\r\n                            (parseInt(threadCount) > 0 ? '<span><i class=\"fa-solid fa-reply\"><\/i> ' + threadCount + ' replies<\/span>' : '') +\r\n                            '<\/div>' +\r\n                            '<\/div>';\r\n                        body.append(commentHTML);\r\n                    }\r\n                });\r\n\r\n                \/\/ Show modal\r\n                modal.addClass('active');\r\n                $('html').addClass('sc-snap-modal-lock');\r\n            };\r\n\r\n            \/\/ Close Comments Modal Function\r\n            window.closeCommentsModal = function() {\r\n                $('#sc-comment-modal').removeClass('active');\r\n                $('html').removeClass('sc-snap-modal-lock');\r\n            };\r\n\r\n            \/\/ Close comment modal on backdrop click\r\n            $('#sc-comment-modal').on('click', function(e) {\r\n                if ($(e.target).hasClass('sc-comment-modal')) {\r\n                    closeCommentsModal();\r\n                }\r\n            });\r\n\r\n            \/\/ Close comment modal on Escape key\r\n            $(document).on('keydown', function(e) {\r\n                if (e.key === 'Escape' && $('#sc-comment-modal').hasClass('active')) {\r\n                    closeCommentsModal();\r\n                }\r\n            });\r\n\r\n        });\r\n    <\/script>\r\n\r\n\r\n\r\n\r\n\r\n<!-- Content Section Start From Here -->\r\n\r\n\r\n\r\n\r\n<div class=\"scv-snapchatviewer-content-wrapper\">\r\n\r\n<style>\r\n.scv-snapchatviewer-content-wrapper,\r\n.scv-snapchatviewer-content-wrapper * {\r\n  box-sizing: border-box;\r\n}\r\n.scv-snapchatviewer-content-wrapper {\r\n  --scv-snapchatviewer-primary: #00c853;\r\n  --scv-snapchatviewer-secondary: #10b981;\r\n  --scv-snapchatviewer-accent: #0284c7;\r\n  --scv-snapchatviewer-text: #102033;\r\n  --scv-snapchatviewer-muted: #58687c;\r\n  --scv-snapchatviewer-line: rgba(15, 23, 42, 0.10);\r\n  --scv-snapchatviewer-soft: #f0f7ff;\r\n  --scv-snapchatviewer-white: #ffffff;\r\n  --scv-snapchatviewer-shadow: 0 18px 45px rgba(15, 35, 60, 0.12);\r\n  font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Arial, sans-serif !important;\r\n  color: var(--scv-snapchatviewer-text) !important;\r\n  width: 100% !important;\r\n  overflow: hidden !important;\r\n}\r\n.scv-snapchatviewer-content-wrapper .scv-snapchatviewer-content-section {\r\n  padding: 70px 20px !important;\r\n  margin: 0 !important;\r\n}\r\n.scv-snapchatviewer-content-wrapper .scv-snapchatviewer-section-white { background: #fff !important; }\r\n.scv-snapchatviewer-content-wrapper .scv-snapchatviewer-section-blue { background: #f0f7ff !important; }\r\n.scv-snapchatviewer-content-wrapper .scv-snapchatviewer-inner-container {\r\n  max-width: 1200px !important;\r\n  margin-left: auto !important;\r\n  margin-right: auto !important;\r\n  padding: 0 !important;\r\n}\r\n.scv-snapchatviewer-content-wrapper .scv-snapchatviewer-section-title {\r\n  font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Arial, sans-serif !important;\r\n  font-size: clamp(25px, 2.7vw, 32px) !important;\r\n  line-height: 1.25 !important;\r\n  font-weight: 700 !important;\r\n  letter-spacing: -0.018em !important;\r\n  text-align: center !important;\r\n  color: var(--scv-snapchatviewer-text) !important;\r\n  margin: 0 0 12px 0 !important;\r\n  padding: 0 !important;\r\n  text-transform: none !important;\r\n}\r\n.scv-snapchatviewer-content-wrapper .scv-snapchatviewer-section-subtitle {\r\n  font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Arial, sans-serif !important;\r\n  font-size: 16px !important;\r\n  line-height: 1.6 !important;\r\n  font-weight: 500 !important;\r\n  text-align: center !important;\r\n  color: var(--scv-snapchatviewer-muted) !important;\r\n  max-width: 760px !important;\r\n  margin: 0 auto 36px auto !important;\r\n  padding: 0 !important;\r\n}\r\n.scv-snapchatviewer-content-wrapper .scv-snapchatviewer-card-grid {\r\n  display: grid !important;\r\n  grid-template-columns: repeat(3, minmax(0, 1fr)) !important;\r\n  gap: 22px !important;\r\n  align-items: stretch !important;\r\n  grid-auto-rows: 1fr !important;\r\n  margin: 0 !important;\r\n  padding: 0 !important;\r\n}\r\n.scv-snapchatviewer-content-wrapper .scv-snapchatviewer-feature-card {\r\n  position: relative !important;\r\n  width: 100% !important;\r\n  height: 100% !important;\r\n  min-height: 278px !important;\r\n  display: flex !important;\r\n  flex-direction: column !important;\r\n  align-items: flex-start !important;\r\n  justify-content: flex-start !important;\r\n  border: 1px solid var(--scv-snapchatviewer-line) !important;\r\n  border-radius: 22px !important;\r\n  padding: 25px 23px !important;\r\n  margin: 0 !important;\r\n  overflow: hidden !important;\r\n  box-shadow: 0 10px 26px rgba(15, 35, 60, 0.06) !important;\r\n  transform: translateY(16px) !important;\r\n  opacity: 0 !important;\r\n  isolation: isolate !important;\r\n  transition: transform 260ms ease, opacity 260ms ease, border-color 260ms ease, box-shadow 260ms ease, background-color 260ms ease !important;\r\n}\r\n.scv-snapchatviewer-content-wrapper .scv-snapchatviewer-card-soft { background: #f0f7ff !important; }\r\n.scv-snapchatviewer-content-wrapper .scv-snapchatviewer-card-white { background: #fff !important; }\r\n.scv-snapchatviewer-content-wrapper .scv-snapchatviewer-feature-card.scv-snapchatviewer-is-visible {\r\n  transform: translateY(0) !important;\r\n  opacity: 1 !important;\r\n}\r\n.scv-snapchatviewer-content-wrapper .scv-snapchatviewer-feature-card::before,\r\n.scv-snapchatviewer-content-wrapper .scv-snapchatviewer-feature-card::after {\r\n  content: \"\" !important;\r\n  position: absolute !important;\r\n  pointer-events: none !important;\r\n  z-index: -1 !important;\r\n}\r\n.scv-snapchatviewer-content-wrapper .scv-snapchatviewer-icon-wrap {\r\n  position: relative !important;\r\n  width: 58px !important;\r\n  height: 58px !important;\r\n  min-width: 58px !important;\r\n  min-height: 58px !important;\r\n  max-width: 58px !important;\r\n  max-height: 58px !important;\r\n  border-radius: 18px !important;\r\n  display: inline-flex !important;\r\n  align-items: center !important;\r\n  justify-content: center !important;\r\n  flex: 0 0 auto !important;\r\n  color: #ffffff !important;\r\n  background: linear-gradient(135deg, var(--scv-snapchatviewer-primary), var(--scv-snapchatviewer-secondary), var(--scv-snapchatviewer-accent)) !important;\r\n  margin: 0 0 19px 0 !important;\r\n  padding: 0 !important;\r\n  box-shadow: 0 14px 24px rgba(37, 99, 235, 0.18) !important;\r\n  transition: transform 260ms ease, box-shadow 260ms ease !important;\r\n}\r\n.scv-snapchatviewer-content-wrapper .scv-snapchatviewer-icon-wrap svg {\r\n  width: 28px !important;\r\n  height: 28px !important;\r\n  min-width: 28px !important;\r\n  min-height: 28px !important;\r\n  display: block !important;\r\n  color: currentColor !important;\r\n  stroke: currentColor !important;\r\n  fill: none !important;\r\n  margin: 0 !important;\r\n  padding: 0 !important;\r\n}\r\n.scv-snapchatviewer-content-wrapper .scv-snapchatviewer-card-title {\r\n  position: relative !important;\r\n  font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Arial, sans-serif !important;\r\n  font-size: 18px !important;\r\n  line-height: 1.34 !important;\r\n  font-weight: 500 !important;\r\n  min-height: 48px !important;\r\n  color: var(--scv-snapchatviewer-text) !important;\r\n  margin: 0 0 10px 0 !important;\r\n  padding: 0 !important;\r\n  letter-spacing: -0.008em !important;\r\n}\r\n.scv-snapchatviewer-content-wrapper .scv-snapchatviewer-card-title::after {\r\n  content: \"\" !important;\r\n  display: block !important;\r\n  width: 0 !important;\r\n  height: 2px !important;\r\n  margin-top: 8px !important;\r\n  border-radius: 99px !important;\r\n  background: linear-gradient(90deg, var(--scv-snapchatviewer-primary), var(--scv-snapchatviewer-accent)) !important;\r\n  transition: width 260ms ease !important;\r\n}\r\n.scv-snapchatviewer-content-wrapper .scv-snapchatviewer-card-text {\r\n  position: relative !important;\r\n  font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Arial, sans-serif !important;\r\n  font-size: 15.5px !important;\r\n  line-height: 1.7 !important;\r\n  font-weight: 400 !important;\r\n  color: var(--scv-snapchatviewer-muted) !important;\r\n  margin: 0 !important;\r\n  padding: 0 !important;\r\n  flex: 1 1 auto !important;\r\n}\r\n\/* Section 1: premium card lift, icon stroke draw, title underline *\/\r\n.scv-snapchatviewer-content-wrapper .scv-snapchatviewer-micro-premium .scv-snapchatviewer-feature-card::after {\r\n  left: 22px !important;\r\n  right: 22px !important;\r\n  bottom: 0 !important;\r\n  height: 3px !important;\r\n  border-radius: 99px 99px 0 0 !important;\r\n  background: linear-gradient(90deg, var(--scv-snapchatviewer-primary), var(--scv-snapchatviewer-secondary), var(--scv-snapchatviewer-accent)) !important;\r\n  transform: scaleX(0) !important;\r\n  transform-origin: left center !important;\r\n  transition: transform 300ms ease !important;\r\n}\r\n.scv-snapchatviewer-content-wrapper .scv-snapchatviewer-micro-premium .scv-snapchatviewer-feature-card:hover {\r\n  transform: translateY(-7px) !important;\r\n  border-color: var(--scv-snapchatviewer-primary) !important;\r\n  box-shadow: var(--scv-snapchatviewer-shadow) !important;\r\n}\r\n.scv-snapchatviewer-content-wrapper .scv-snapchatviewer-micro-premium .scv-snapchatviewer-feature-card:hover::after { transform: scaleX(1) !important; }\r\n.scv-snapchatviewer-content-wrapper .scv-snapchatviewer-micro-premium .scv-snapchatviewer-feature-card:hover .scv-snapchatviewer-card-title::after { width: 48px !important; }\r\n.scv-snapchatviewer-content-wrapper .scv-snapchatviewer-micro-premium .scv-snapchatviewer-feature-card:hover .scv-snapchatviewer-icon-wrap { transform: translateY(-2px) scale(1.05) !important; }\r\n.scv-snapchatviewer-content-wrapper .scv-snapchatviewer-micro-premium .scv-snapchatviewer-feature-card:hover svg path,\r\n.scv-snapchatviewer-content-wrapper .scv-snapchatviewer-micro-premium .scv-snapchatviewer-feature-card:hover svg rect,\r\n.scv-snapchatviewer-content-wrapper .scv-snapchatviewer-micro-premium .scv-snapchatviewer-feature-card:hover svg circle {\r\n  stroke-dasharray: 70 !important;\r\n  stroke-dashoffset: 0 !important;\r\n  animation: scv-snapchatviewer-stroke-draw 620ms ease both !important;\r\n}\r\n@keyframes scv-snapchatviewer-stroke-draw {\r\n  0% { stroke-dashoffset: 70; }\r\n  100% { stroke-dashoffset: 0; }\r\n}\r\n\/* Section 2: cursor spotlight and gradient border glow *\/\r\n.scv-snapchatviewer-content-wrapper .scv-snapchatviewer-micro-spotlight .scv-snapchatviewer-feature-card::before {\r\n  inset: 0 !important;\r\n  background: radial-gradient(circle at var(--mx, 50%) var(--my, 0%), rgba(255,255,255,0.95), rgba(255,255,255,0.18) 30%, transparent 58%) !important;\r\n  opacity: 0 !important;\r\n  transition: opacity 260ms ease !important;\r\n}\r\n.scv-snapchatviewer-content-wrapper .scv-snapchatviewer-micro-spotlight .scv-snapchatviewer-feature-card::after {\r\n  inset: 0 !important;\r\n  border-radius: inherit !important;\r\n  padding: 1px !important;\r\n  background: linear-gradient(135deg, var(--scv-snapchatviewer-primary), var(--scv-snapchatviewer-secondary), var(--scv-snapchatviewer-accent)) !important;\r\n  -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0) !important;\r\n  -webkit-mask-composite: xor !important;\r\n  mask-composite: exclude !important;\r\n  opacity: 0 !important;\r\n  transition: opacity 260ms ease !important;\r\n}\r\n.scv-snapchatviewer-content-wrapper .scv-snapchatviewer-micro-spotlight .scv-snapchatviewer-feature-card:hover {\r\n  transform: translateY(-5px) !important;\r\n  border-color: rgba(255,255,255,0) !important;\r\n  box-shadow: 0 20px 52px rgba(37, 99, 235, 0.15) !important;\r\n}\r\n.scv-snapchatviewer-content-wrapper .scv-snapchatviewer-micro-spotlight .scv-snapchatviewer-feature-card:hover::before,\r\n.scv-snapchatviewer-content-wrapper .scv-snapchatviewer-micro-spotlight .scv-snapchatviewer-feature-card:hover::after { opacity: 1 !important; }\r\n.scv-snapchatviewer-content-wrapper .scv-snapchatviewer-micro-spotlight .scv-snapchatviewer-feature-card:hover .scv-snapchatviewer-icon-wrap { transform: rotate(-4deg) scale(1.06) !important; }\r\n.scv-snapchatviewer-content-wrapper .scv-snapchatviewer-micro-spotlight .scv-snapchatviewer-feature-card:hover .scv-snapchatviewer-card-title::after { width: 38px !important; }\r\n\/* Section 3: process-style border trace, icon pop, soft tilt *\/\r\n.scv-snapchatviewer-content-wrapper .scv-snapchatviewer-micro-process .scv-snapchatviewer-feature-card {\r\n  transform: perspective(900px) rotateX(var(--rx, 0deg)) rotateY(var(--ry, 0deg)) translateY(16px) !important;\r\n}\r\n.scv-snapchatviewer-content-wrapper .scv-snapchatviewer-micro-process .scv-snapchatviewer-feature-card.scv-snapchatviewer-is-visible {\r\n  transform: perspective(900px) rotateX(var(--rx, 0deg)) rotateY(var(--ry, 0deg)) translateY(0) !important;\r\n}\r\n.scv-snapchatviewer-content-wrapper .scv-snapchatviewer-micro-process .scv-snapchatviewer-feature-card::after {\r\n  inset: 12px !important;\r\n  border: 1px solid var(--scv-snapchatviewer-accent) !important;\r\n  border-radius: 17px !important;\r\n  opacity: 0 !important;\r\n  transform: scale(0.97) !important;\r\n  transition: opacity 260ms ease, transform 260ms ease, border-color 260ms ease !important;\r\n}\r\n.scv-snapchatviewer-content-wrapper .scv-snapchatviewer-micro-process .scv-snapchatviewer-feature-card:hover {\r\n  border-color: var(--scv-snapchatviewer-accent) !important;\r\n  box-shadow: 0 20px 46px rgba(15, 35, 60, 0.13) !important;\r\n}\r\n.scv-snapchatviewer-content-wrapper .scv-snapchatviewer-micro-process .scv-snapchatviewer-feature-card:hover::after {\r\n  opacity: 0.55 !important;\r\n  transform: scale(1) !important;\r\n  border-color: var(--scv-snapchatviewer-secondary) !important;\r\n}\r\n.scv-snapchatviewer-content-wrapper .scv-snapchatviewer-micro-process .scv-snapchatviewer-feature-card:hover .scv-snapchatviewer-icon-wrap {\r\n  transform: translateY(-3px) scale(1.08) !important;\r\n  box-shadow: 0 18px 30px rgba(37, 99, 235, 0.22) !important;\r\n}\r\n.scv-snapchatviewer-content-wrapper .scv-snapchatviewer-micro-process .scv-snapchatviewer-feature-card:hover .scv-snapchatviewer-card-title::after { width: 42px !important; }\r\n\r\n\/* Extra randomized micro-interactions: section-specific and Elementor-safe *\/\r\n.scv-snapchatviewer-content-wrapper .scv-snapchatviewer-micro-glowline .scv-snapchatviewer-feature-card::after {\r\n  left: 0 !important;\r\n  top: 0 !important;\r\n  width: 100% !important;\r\n  height: 100% !important;\r\n  border-radius: inherit !important;\r\n  border: 1px solid transparent !important;\r\n  background: linear-gradient(135deg, var(--scv-snapchatviewer-primary), var(--scv-snapchatviewer-secondary), var(--scv-snapchatviewer-accent)) border-box !important;\r\n  -webkit-mask: linear-gradient(#fff 0 0) padding-box, linear-gradient(#fff 0 0) !important;\r\n  -webkit-mask-composite: xor !important;\r\n  mask-composite: exclude !important;\r\n  opacity: 0 !important;\r\n  transition: opacity 280ms ease !important;\r\n}\r\n.scv-snapchatviewer-content-wrapper .scv-snapchatviewer-micro-glowline .scv-snapchatviewer-feature-card:hover {\r\n  transform: translateY(-6px) scale(1.01) !important;\r\n  border-color: rgba(0, 200, 83, 0.35) !important;\r\n  box-shadow: 0 22px 54px rgba(16, 185, 129, 0.16) !important;\r\n}\r\n.scv-snapchatviewer-content-wrapper .scv-snapchatviewer-micro-glowline .scv-snapchatviewer-feature-card:hover::after { opacity: 1 !important; }\r\n.scv-snapchatviewer-content-wrapper .scv-snapchatviewer-micro-glowline .scv-snapchatviewer-feature-card:hover .scv-snapchatviewer-icon-wrap { transform: translateY(-2px) rotate(3deg) scale(1.06) !important; }\r\n.scv-snapchatviewer-content-wrapper .scv-snapchatviewer-micro-glowline .scv-snapchatviewer-feature-card:hover .scv-snapchatviewer-card-title::after { width: 44px !important; }\r\n\r\n.scv-snapchatviewer-content-wrapper .scv-snapchatviewer-micro-trace .scv-snapchatviewer-feature-card::after {\r\n  inset: 10px !important;\r\n  border-radius: 16px !important;\r\n  border-top: 2px solid var(--scv-snapchatviewer-primary) !important;\r\n  border-right: 2px solid var(--scv-snapchatviewer-accent) !important;\r\n  border-bottom: 2px solid var(--scv-snapchatviewer-secondary) !important;\r\n  border-left: 2px solid transparent !important;\r\n  opacity: 0 !important;\r\n  transform: scale(0.92) rotate(-1deg) !important;\r\n  transition: opacity 280ms ease, transform 280ms ease !important;\r\n}\r\n.scv-snapchatviewer-content-wrapper .scv-snapchatviewer-micro-trace .scv-snapchatviewer-feature-card:hover {\r\n  transform: translateY(-6px) !important;\r\n  border-color: var(--scv-snapchatviewer-accent) !important;\r\n  box-shadow: 0 20px 48px rgba(2, 132, 199, 0.15) !important;\r\n}\r\n.scv-snapchatviewer-content-wrapper .scv-snapchatviewer-micro-trace .scv-snapchatviewer-feature-card:hover::after { opacity: .72 !important; transform: scale(1) rotate(0deg) !important; }\r\n.scv-snapchatviewer-content-wrapper .scv-snapchatviewer-micro-trace .scv-snapchatviewer-feature-card:hover .scv-snapchatviewer-icon-wrap { transform: scale(1.08) !important; }\r\n.scv-snapchatviewer-content-wrapper .scv-snapchatviewer-micro-trace .scv-snapchatviewer-feature-card:hover .scv-snapchatviewer-card-title::after { width: 52px !important; }\r\n\r\n.scv-snapchatviewer-content-wrapper .scv-snapchatviewer-micro-orbit .scv-snapchatviewer-icon-wrap::after {\r\n  content: \"\" !important;\r\n  position: absolute !important;\r\n  width: 8px !important;\r\n  height: 8px !important;\r\n  border-radius: 999px !important;\r\n  right: 5px !important;\r\n  top: 6px !important;\r\n  background: #ffffff !important;\r\n  box-shadow: 0 0 0 4px rgba(255,255,255,0.20) !important;\r\n  opacity: .85 !important;\r\n}\r\n.scv-snapchatviewer-content-wrapper .scv-snapchatviewer-micro-orbit .scv-snapchatviewer-feature-card:hover {\r\n  transform: translateY(-7px) !important;\r\n  border-color: var(--scv-snapchatviewer-secondary) !important;\r\n  box-shadow: 0 21px 50px rgba(16, 185, 129, 0.17) !important;\r\n}\r\n.scv-snapchatviewer-content-wrapper .scv-snapchatviewer-micro-orbit .scv-snapchatviewer-feature-card:hover .scv-snapchatviewer-icon-wrap { transform: rotate(-5deg) scale(1.07) !important; }\r\n.scv-snapchatviewer-content-wrapper .scv-snapchatviewer-micro-orbit .scv-snapchatviewer-feature-card:hover .scv-snapchatviewer-icon-wrap::after { animation: scv-snapchatviewer-orbit-dot 700ms ease both !important; }\r\n.scv-snapchatviewer-content-wrapper .scv-snapchatviewer-micro-orbit .scv-snapchatviewer-feature-card:hover .scv-snapchatviewer-card-title::after { width: 46px !important; }\r\n@keyframes scv-snapchatviewer-orbit-dot {\r\n  0% { transform: translate(0,0) scale(1); }\r\n  45% { transform: translate(-28px, 34px) scale(.75); }\r\n  100% { transform: translate(0,0) scale(1); }\r\n}\r\n\r\n.scv-snapchatviewer-content-wrapper .scv-snapchatviewer-micro-softshift .scv-snapchatviewer-feature-card::before {\r\n  inset: auto 18px 18px 18px !important;\r\n  height: 5px !important;\r\n  border-radius: 999px !important;\r\n  background: linear-gradient(90deg, var(--scv-snapchatviewer-primary), var(--scv-snapchatviewer-accent)) !important;\r\n  transform: scaleX(0) !important;\r\n  transform-origin: center !important;\r\n  transition: transform 280ms ease !important;\r\n}\r\n.scv-snapchatviewer-content-wrapper .scv-snapchatviewer-micro-softshift .scv-snapchatviewer-feature-card:hover {\r\n  transform: translateY(-5px) !important;\r\n  border-color: rgba(2, 132, 199, .42) !important;\r\n  box-shadow: 0 18px 42px rgba(15, 35, 60, 0.13) !important;\r\n}\r\n.scv-snapchatviewer-content-wrapper .scv-snapchatviewer-micro-softshift .scv-snapchatviewer-feature-card:hover::before { transform: scaleX(1) !important; }\r\n.scv-snapchatviewer-content-wrapper .scv-snapchatviewer-micro-softshift .scv-snapchatviewer-feature-card:hover .scv-snapchatviewer-icon-wrap { transform: translateX(4px) scale(1.05) !important; }\r\n.scv-snapchatviewer-content-wrapper .scv-snapchatviewer-micro-softshift .scv-snapchatviewer-feature-card:hover .scv-snapchatviewer-card-title { color: var(--scv-snapchatviewer-accent) !important; }\r\n.scv-snapchatviewer-content-wrapper .scv-snapchatviewer-micro-softshift .scv-snapchatviewer-feature-card:hover .scv-snapchatviewer-card-title::after { width: 36px !important; }\r\n\r\n.scv-snapchatviewer-content-wrapper .scv-snapchatviewer-micro-gridhover .scv-snapchatviewer-card-grid:hover .scv-snapchatviewer-feature-card { transform: scale(.985) !important; }\r\n.scv-snapchatviewer-content-wrapper .scv-snapchatviewer-micro-gridhover .scv-snapchatviewer-card-grid:hover .scv-snapchatviewer-feature-card:hover {\r\n  transform: translateY(-7px) scale(1.015) !important;\r\n  border-color: var(--scv-snapchatviewer-primary) !important;\r\n  box-shadow: 0 22px 52px rgba(0, 200, 83, 0.16) !important;\r\n}\r\n.scv-snapchatviewer-content-wrapper .scv-snapchatviewer-micro-gridhover .scv-snapchatviewer-feature-card::after {\r\n  left: 22px !important;\r\n  right: 22px !important;\r\n  bottom: 18px !important;\r\n  height: 2px !important;\r\n  border-radius: 999px !important;\r\n  background: linear-gradient(90deg, var(--scv-snapchatviewer-primary), var(--scv-snapchatviewer-accent)) !important;\r\n  opacity: 0 !important;\r\n  transform: translateY(8px) !important;\r\n  transition: opacity 280ms ease, transform 280ms ease !important;\r\n}\r\n.scv-snapchatviewer-content-wrapper .scv-snapchatviewer-micro-gridhover .scv-snapchatviewer-feature-card:hover::after { opacity: 1 !important; transform: translateY(0) !important; }\r\n.scv-snapchatviewer-content-wrapper .scv-snapchatviewer-micro-gridhover .scv-snapchatviewer-feature-card:hover .scv-snapchatviewer-icon-wrap { transform: translateY(-3px) scale(1.06) !important; }\r\n.scv-snapchatviewer-content-wrapper .scv-snapchatviewer-micro-gridhover .scv-snapchatviewer-feature-card:hover .scv-snapchatviewer-card-title::after { width: 40px !important; }\r\n\r\n.scv-snapchatviewer-content-wrapper .scv-snapchatviewer-micro-agency .scv-snapchatviewer-feature-card {\r\n  transform: perspective(900px) rotateX(var(--rx, 0deg)) rotateY(var(--ry, 0deg)) translateY(16px) !important;\r\n}\r\n.scv-snapchatviewer-content-wrapper .scv-snapchatviewer-micro-agency .scv-snapchatviewer-feature-card.scv-snapchatviewer-is-visible {\r\n  transform: perspective(900px) rotateX(var(--rx, 0deg)) rotateY(var(--ry, 0deg)) translateY(0) !important;\r\n}\r\n.scv-snapchatviewer-content-wrapper .scv-snapchatviewer-micro-agency .scv-snapchatviewer-feature-card::before {\r\n  inset: 0 !important;\r\n  border-radius: inherit !important;\r\n  background: linear-gradient(120deg, transparent 0%, rgba(255,255,255,.62) 45%, transparent 72%) !important;\r\n  transform: translateX(-120%) !important;\r\n  transition: transform 550ms ease !important;\r\n}\r\n.scv-snapchatviewer-content-wrapper .scv-snapchatviewer-micro-agency .scv-snapchatviewer-feature-card:hover {\r\n  border-color: var(--scv-snapchatviewer-accent) !important;\r\n  box-shadow: 0 24px 55px rgba(15, 35, 60, 0.16) !important;\r\n}\r\n.scv-snapchatviewer-content-wrapper .scv-snapchatviewer-micro-agency .scv-snapchatviewer-feature-card:hover::before { transform: translateX(120%) !important; }\r\n.scv-snapchatviewer-content-wrapper .scv-snapchatviewer-micro-agency .scv-snapchatviewer-feature-card:hover .scv-snapchatviewer-icon-wrap { transform: translateY(-2px) rotate(5deg) scale(1.06) !important; }\r\n.scv-snapchatviewer-content-wrapper .scv-snapchatviewer-micro-agency .scv-snapchatviewer-feature-card:hover .scv-snapchatviewer-card-title::after { width: 50px !important; }\r\n\r\n@media (max-width: 980px) {\r\n  .scv-snapchatviewer-content-wrapper .scv-snapchatviewer-content-section { padding: 62px 18px !important; }\r\n  .scv-snapchatviewer-content-wrapper .scv-snapchatviewer-card-grid { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; }\r\n}\r\n@media (max-width: 640px) {\r\n  .scv-snapchatviewer-content-wrapper .scv-snapchatviewer-content-section { padding: 52px 16px !important; }\r\n  .scv-snapchatviewer-content-wrapper .scv-snapchatviewer-card-grid { grid-template-columns: 1fr !important; gap: 18px !important; }\r\n  .scv-snapchatviewer-content-wrapper .scv-snapchatviewer-feature-card { min-height: 260px !important; border-radius: 20px !important; padding: 24px 20px !important; }\r\n  .scv-snapchatviewer-content-wrapper .scv-snapchatviewer-section-title { font-size: 25px !important; line-height: 1.28 !important; }\r\n  .scv-snapchatviewer-content-wrapper .scv-snapchatviewer-section-subtitle { font-size: 15.5px !important; margin-bottom: 30px !important; }\r\n}\r\n\r\n\/* Section 2 fixed: Elementor-safe fitline hover, no oversized overlays *\/\r\n.scv-snapchatviewer-content-wrapper .scv-snapchatviewer-micro-fitline .scv-snapchatviewer-feature-card {\r\n  overflow: hidden !important;\r\n  transform: translateY(16px) !important;\r\n}\r\n.scv-snapchatviewer-content-wrapper .scv-snapchatviewer-micro-fitline .scv-snapchatviewer-feature-card.scv-snapchatviewer-is-visible {\r\n  transform: translateY(0) !important;\r\n  opacity: 1 !important;\r\n}\r\n.scv-snapchatviewer-content-wrapper .scv-snapchatviewer-micro-fitline .scv-snapchatviewer-feature-card::before {\r\n  content: \"\" !important;\r\n  position: absolute !important;\r\n  left: 0 !important;\r\n  top: 0 !important;\r\n  width: 4px !important;\r\n  height: 100% !important;\r\n  border-radius: 22px 0 0 22px !important;\r\n  background: linear-gradient(180deg, var(--scv-snapchatviewer-primary), var(--scv-snapchatviewer-secondary), var(--scv-snapchatviewer-accent)) !important;\r\n  transform: scaleY(0) !important;\r\n  transform-origin: top center !important;\r\n  opacity: .95 !important;\r\n  transition: transform 300ms ease !important;\r\n  pointer-events: none !important;\r\n  z-index: 0 !important;\r\n}\r\n.scv-snapchatviewer-content-wrapper .scv-snapchatviewer-micro-fitline .scv-snapchatviewer-feature-card::after {\r\n  content: \"\" !important;\r\n  position: absolute !important;\r\n  left: 18px !important;\r\n  right: 18px !important;\r\n  bottom: 14px !important;\r\n  height: 2px !important;\r\n  border-radius: 999px !important;\r\n  background: linear-gradient(90deg, var(--scv-snapchatviewer-primary), var(--scv-snapchatviewer-accent)) !important;\r\n  transform: scaleX(0) !important;\r\n  transform-origin: left center !important;\r\n  opacity: .85 !important;\r\n  transition: transform 300ms ease !important;\r\n  pointer-events: none !important;\r\n  z-index: 0 !important;\r\n}\r\n.scv-snapchatviewer-content-wrapper .scv-snapchatviewer-micro-fitline .scv-snapchatviewer-feature-card:hover {\r\n  transform: translateY(-6px) !important;\r\n  border-color: var(--scv-snapchatviewer-accent) !important;\r\n  box-shadow: 0 18px 44px rgba(2, 132, 199, 0.15) !important;\r\n}\r\n.scv-snapchatviewer-content-wrapper .scv-snapchatviewer-micro-fitline .scv-snapchatviewer-feature-card:hover::before {\r\n  transform: scaleY(1) !important;\r\n}\r\n.scv-snapchatviewer-content-wrapper .scv-snapchatviewer-micro-fitline .scv-snapchatviewer-feature-card:hover::after {\r\n  transform: scaleX(1) !important;\r\n}\r\n.scv-snapchatviewer-content-wrapper .scv-snapchatviewer-micro-fitline .scv-snapchatviewer-feature-card:hover .scv-snapchatviewer-icon-wrap {\r\n  transform: translateY(-2px) rotate(2deg) scale(1.06) !important;\r\n  box-shadow: 0 16px 28px rgba(2, 132, 199, 0.20) !important;\r\n}\r\n.scv-snapchatviewer-content-wrapper .scv-snapchatviewer-micro-fitline .scv-snapchatviewer-feature-card:hover .scv-snapchatviewer-card-title::after {\r\n  width: 42px !important;\r\n}\r\n\r\n<\/style>\r\n\r\n\r\n\r\n\r\n\r\n<section class=\"scv-snapchatviewer-content-section scv-snapchatviewer-section-white scv-snapchatviewer-micro-premium\">\r\n    <div class=\"scv-snapchatviewer-inner-container\">\r\n\r\n<\/div>\r\n\t<\/section>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n  <section class=\"scv-snapchatviewer-content-section scv-snapchatviewer-section-white scv-snapchatviewer-micro-premium\">\r\n    <div class=\"scv-snapchatviewer-inner-container\">\r\n      <h2 class=\"scv-snapchatviewer-section-title\">What Is Snapchat Viewer?<\/h2>\r\n      <h3 class=\"scv-snapchatviewer-section-subtitle\">A clean overview of how this tool helps users handle public Snapchat content.<\/h3>\r\n      <div class=\"scv-snapchatviewer-card-grid\">\r\n        <div class=\"scv-snapchatviewer-feature-card scv-snapchatviewer-card-soft\">\r\n          <div class=\"scv-snapchatviewer-icon-wrap\">\r\n            <svg width=\"28\" height=\"28\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"3\" y=\"4\" width=\"18\" height=\"16\" rx=\"3\"><\/rect><path d=\"M8 10h8\"><\/path><path d=\"M8 14h5\"><\/path><\/svg>\r\n          <\/div>\r\n          <h4 class=\"scv-snapchatviewer-card-title\">Public Content Focus<\/h4>\r\n          <p class=\"scv-snapchatviewer-card-text\">Snapchat Viewer is designed around safe, public-facing Snapchat content so users can review information without confusing layouts or unnecessary steps.<\/p>\r\n        <\/div>\r\n        <div class=\"scv-snapchatviewer-feature-card scv-snapchatviewer-card-soft\">\r\n          <div class=\"scv-snapchatviewer-icon-wrap\">\r\n            <svg width=\"28\" height=\"28\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"12\" cy=\"12\" r=\"9\"><\/circle><path d=\"M10 8l6 4-6 4V8z\"><\/path><\/svg>\r\n          <\/div>\r\n          <h4 class=\"scv-snapchatviewer-card-title\">Simple Viewer Layout<\/h4>\r\n          <p class=\"scv-snapchatviewer-card-text\">The interface keeps previews, labels, and actions easy to understand, giving visitors a smoother way to explore supported Snapchat content.<\/p>\r\n        <\/div>\r\n        <div class=\"scv-snapchatviewer-feature-card scv-snapchatviewer-card-soft\">\r\n          <div class=\"scv-snapchatviewer-icon-wrap\">\r\n            <svg width=\"28\" height=\"28\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"4\" y=\"5\" width=\"16\" height=\"14\" rx=\"2\"><\/rect><path d=\"M8 13l2.5-2.5L14 14l2-2 3 3\"><\/path><circle cx=\"9\" cy=\"9\" r=\"1\"><\/circle><\/svg>\r\n          <\/div>\r\n          <h4 class=\"scv-snapchatviewer-card-title\">Fast Media Access<\/h4>\r\n          <p class=\"scv-snapchatviewer-card-text\">Users can move from search intent to visible content quickly, which helps reduce friction on mobile, tablet, and desktop screens.<\/p>\r\n        <\/div>\r\n        <div class=\"scv-snapchatviewer-feature-card scv-snapchatviewer-card-soft\">\r\n          <div class=\"scv-snapchatviewer-icon-wrap\">\r\n            <svg width=\"28\" height=\"28\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M4 7h16\"><\/path><path d=\"M7 7v12\"><\/path><path d=\"M17 7v12\"><\/path><path d=\"M5 19h14\"><\/path><path d=\"M10 11h4\"><\/path><\/svg>\r\n          <\/div>\r\n          <h4 class=\"scv-snapchatviewer-card-title\">Profile-Friendly Details<\/h4>\r\n          <p class=\"scv-snapchatviewer-card-text\">The tool can present useful profile-related information in a neat structure, making it easier to understand what is available publicly.<\/p>\r\n        <\/div>\r\n        <div class=\"scv-snapchatviewer-feature-card scv-snapchatviewer-card-soft\">\r\n          <div class=\"scv-snapchatviewer-icon-wrap\">\r\n            <svg width=\"28\" height=\"28\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M12 3l2.8 5.7L21 9.6l-4.5 4.4 1.1 6.2L12 17.3l-5.6 2.9 1.1-6.2L3 9.6l6.2-.9L12 3z\"><\/path><\/svg>\r\n          <\/div>\r\n          <h4 class=\"scv-snapchatviewer-card-title\">Clean Visual Preview<\/h4>\r\n          <p class=\"scv-snapchatviewer-card-text\">A modern preview area helps users inspect images, videos, or profile elements without feeling lost inside a crowded page.<\/p>\r\n        <\/div>\r\n        <div class=\"scv-snapchatviewer-feature-card scv-snapchatviewer-card-soft\">\r\n          <div class=\"scv-snapchatviewer-icon-wrap\">\r\n            <svg width=\"28\" height=\"28\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M12 15V3\"><\/path><path d=\"M7 10l5 5 5-5\"><\/path><rect x=\"4\" y=\"17\" width=\"16\" height=\"4\" rx=\"1\"><\/rect><\/svg>\r\n          <\/div>\r\n          <h4 class=\"scv-snapchatviewer-card-title\">No Heavy Setup<\/h4>\r\n          <p class=\"scv-snapchatviewer-card-text\">The section is written for a straightforward web experience, so visitors can understand the tool purpose before taking any action.<\/p>\r\n        <\/div>\r\n      <\/div>\r\n    <\/div>\r\n  <\/section>\r\n  <section class=\"scv-snapchatviewer-content-section scv-snapchatviewer-section-blue scv-snapchatviewer-micro-fitline\">\r\n    <div class=\"scv-snapchatviewer-inner-container\">\r\n      <h2 class=\"scv-snapchatviewer-section-title\">Why Do Users Need Snapchat Viewer?<\/h2>\r\n      <h3 class=\"scv-snapchatviewer-section-subtitle\">Key benefits for users who want a smoother and safer Snapchat viewing experience.<\/h3>\r\n      <div class=\"scv-snapchatviewer-card-grid\">\r\n        <div class=\"scv-snapchatviewer-feature-card scv-snapchatviewer-card-white\">\r\n          <div class=\"scv-snapchatviewer-icon-wrap\">\r\n            <svg width=\"28\" height=\"28\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M12 21s7-4.5 7-11a7 7 0 0 0-14 0c0 6.5 7 11 7 11z\"><\/path><circle cx=\"12\" cy=\"10\" r=\"2.5\"><\/circle><\/svg>\r\n          <\/div>\r\n          <h4 class=\"scv-snapchatviewer-card-title\">Better Convenience<\/h4>\r\n          <p class=\"scv-snapchatviewer-card-text\">Snapchat Viewer helps users view supported public Snapchat profile and content details in a clean online layout without switching between too many screens or dealing with complicated page flows.<\/p>\r\n        <\/div>\r\n        <div class=\"scv-snapchatviewer-feature-card scv-snapchatviewer-card-white\">\r\n          <div class=\"scv-snapchatviewer-icon-wrap\">\r\n            <svg width=\"28\" height=\"28\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M4 5h16v10H4z\"><\/path><path d=\"M8 19h8\"><\/path><path d=\"M12 15v4\"><\/path><\/svg>\r\n          <\/div>\r\n          <h4 class=\"scv-snapchatviewer-card-title\">Desktop Comfort<\/h4>\r\n          <p class=\"scv-snapchatviewer-card-text\">A larger viewing space can make public Snapchat content easier to read, compare, and organize, especially for research or content planning.<\/p>\r\n        <\/div>\r\n        <div class=\"scv-snapchatviewer-feature-card scv-snapchatviewer-card-white\">\r\n          <div class=\"scv-snapchatviewer-icon-wrap\">\r\n            <svg width=\"28\" height=\"28\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"12\" cy=\"12\" r=\"3\"><\/circle><path d=\"M19.4 15a1.8 1.8 0 0 0 .36 2l.05.05a2 2 0 1 1-2.83 2.83l-.05-.05a1.8 1.8 0 0 0-2-.36 1.8 1.8 0 0 0-1.1 1.65V21a2 2 0 1 1-4 0v-.08A1.8 1.8 0 0 0 8.7 19.3a1.8 1.8 0 0 0-2 .36l-.05.05a2 2 0 1 1-2.83-2.83l.05-.05a1.8 1.8 0 0 0 .36-2A1.8 1.8 0 0 0 2.6 13H2a2 2 0 1 1 0-4h.08A1.8 1.8 0 0 0 3.7 7.9a1.8 1.8 0 0 0-.36-2l-.05-.05A2 2 0 1 1 6.12 3l.05.05a1.8 1.8 0 0 0 2 .36A1.8 1.8 0 0 0 9.3 1.8V2a2 2 0 1 1 4 0v.08A1.8 1.8 0 0 0 14.4 3.7a1.8 1.8 0 0 0 2-.36l.05-.05A2 2 0 1 1 19.3 6.1l-.05.05a1.8 1.8 0 0 0-.36 2A1.8 1.8 0 0 0 20.5 9H22a2 2 0 1 1 0 4h-.08A1.8 1.8 0 0 0 19.4 15z\"><\/path><\/svg>\r\n          <\/div>\r\n          <h4 class=\"scv-snapchatviewer-card-title\">Organized Results<\/h4>\r\n          <p class=\"scv-snapchatviewer-card-text\">Clear cards, labels, and sections help users understand each result faster instead of scanning through messy information blocks.<\/p>\r\n        <\/div>\r\n        <div class=\"scv-snapchatviewer-feature-card scv-snapchatviewer-card-white\">\r\n          <div class=\"scv-snapchatviewer-icon-wrap\">\r\n            <svg width=\"28\" height=\"28\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M5 12l4 4L19 6\"><\/path><path d=\"M21 12a9 9 0 1 1-6.2-8.6\"><\/path><\/svg>\r\n          <\/div>\r\n          <h4 class=\"scv-snapchatviewer-card-title\">Helpful for Creators<\/h4>\r\n          <p class=\"scv-snapchatviewer-card-text\">Creators and marketers can review public-facing content ideas, visual formats, and profile presentation in a more structured way.<\/p>\r\n        <\/div>\r\n        <div class=\"scv-snapchatviewer-feature-card scv-snapchatviewer-card-white\">\r\n          <div class=\"scv-snapchatviewer-icon-wrap\">\r\n            <svg width=\"28\" height=\"28\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M4 7a3 3 0 0 1 3-3h10a3 3 0 0 1 3 3v10a3 3 0 0 1-3 3H7a3 3 0 0 1-3-3z\"><\/path><path d=\"M9 9h6v6H9z\"><\/path><\/svg>\r\n          <\/div>\r\n          <h4 class=\"scv-snapchatviewer-card-title\">Time-Saving Workflow<\/h4>\r\n          <p class=\"scv-snapchatviewer-card-text\">A focused tool can reduce repeated manual checks by presenting supported content in one cleaner, easier-to-read area.<\/p>\r\n        <\/div>\r\n        <div class=\"scv-snapchatviewer-feature-card scv-snapchatviewer-card-white\">\r\n          <div class=\"scv-snapchatviewer-icon-wrap\">\r\n            <svg width=\"28\" height=\"28\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M12 2v20\"><\/path><path d=\"M17 5H9.5a3.5 3.5 0 0 0 0 7H14a3.5 3.5 0 0 1 0 7H6\"><\/path><\/svg>\r\n          <\/div>\r\n          <h4 class=\"scv-snapchatviewer-card-title\">Privacy-Aware Use<\/h4>\r\n          <p class=\"scv-snapchatviewer-card-text\">The experience should respect privacy and focus on accessible content only, helping users avoid unsafe or unauthorized expectations.<\/p>\r\n        <\/div>\r\n      <\/div>\r\n    <\/div>\r\n  <\/section>\r\n  <section class=\"scv-snapchatviewer-content-section scv-snapchatviewer-section-white scv-snapchatviewer-micro-gridhover\">\r\n    <div class=\"scv-snapchatviewer-inner-container\">\r\n      <h2 class=\"scv-snapchatviewer-section-title\">How Can You Use Snapchat Viewer Safely?<\/h2>\r\n      <h3 class=\"scv-snapchatviewer-section-subtitle\">Follow simple steps and use the tool only for content you are allowed to access.<\/h3>\r\n      <div class=\"scv-snapchatviewer-card-grid\">\r\n        <div class=\"scv-snapchatviewer-feature-card scv-snapchatviewer-card-soft\">\r\n          <div class=\"scv-snapchatviewer-icon-wrap\">\r\n            <svg width=\"28\" height=\"28\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M4 11a8 8 0 0 1 16 0\"><\/path><path d=\"M6 11v3a2 2 0 0 0 2 2h1v-5H6z\"><\/path><path d=\"M18 11v3a2 2 0 0 1-2 2h-1v-5h3z\"><\/path><path d=\"M12 19v2\"><\/path><\/svg>\r\n          <\/div>\r\n          <h4 class=\"scv-snapchatviewer-card-title\">Enter the Right Detail<\/h4>\r\n          <p class=\"scv-snapchatviewer-card-text\">Start with the correct public username, profile link, or available media reference so the tool can guide users toward relevant results.<\/p>\r\n        <\/div>\r\n        <div class=\"scv-snapchatviewer-feature-card scv-snapchatviewer-card-soft\">\r\n          <div class=\"scv-snapchatviewer-icon-wrap\">\r\n            <svg width=\"28\" height=\"28\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M4 4h16v16H4z\"><\/path><path d=\"M8 8h8\"><\/path><path d=\"M8 12h8\"><\/path><path d=\"M8 16h5\"><\/path><\/svg>\r\n          <\/div>\r\n          <h4 class=\"scv-snapchatviewer-card-title\">Review Visible Results<\/h4>\r\n          <p class=\"scv-snapchatviewer-card-text\">Check the preview, title, media type, and available details before using any viewing or download-related option on the page.<\/p>\r\n        <\/div>\r\n        <div class=\"scv-snapchatviewer-feature-card scv-snapchatviewer-card-soft\">\r\n          <div class=\"scv-snapchatviewer-icon-wrap\">\r\n            <svg width=\"28\" height=\"28\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M12 2l7 4v6c0 5-3.5 8.5-7 10-3.5-1.5-7-5-7-10V6l7-4z\"><\/path><path d=\"M9 12l2 2 4-4\"><\/path><\/svg>\r\n          <\/div>\r\n          <h4 class=\"scv-snapchatviewer-card-title\">Use Public Media Only<\/h4>\r\n          <p class=\"scv-snapchatviewer-card-text\">Keep usage limited to public content or media you own, manage, or have permission to save for personal or business reference.<\/p>\r\n        <\/div>\r\n        <div class=\"scv-snapchatviewer-feature-card scv-snapchatviewer-card-soft\">\r\n          <div class=\"scv-snapchatviewer-icon-wrap\">\r\n            <svg width=\"28\" height=\"28\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M4 6h16\"><\/path><path d=\"M4 12h16\"><\/path><path d=\"M4 18h10\"><\/path><path d=\"M18 18l2 2 3-4\"><\/path><\/svg>\r\n          <\/div>\r\n          <h4 class=\"scv-snapchatviewer-card-title\">Check File Quality<\/h4>\r\n          <p class=\"scv-snapchatviewer-card-text\">For downloader-style pages, review the visible media quality and format before saving anything to your device.<\/p>\r\n        <\/div>\r\n        <div class=\"scv-snapchatviewer-feature-card scv-snapchatviewer-card-soft\">\r\n          <div class=\"scv-snapchatviewer-icon-wrap\">\r\n            <svg width=\"28\" height=\"28\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M3 6h18\"><\/path><path d=\"M8 6V4h8v2\"><\/path><path d=\"M19 6l-1 14H6L5 6\"><\/path><path d=\"M10 11v5\"><\/path><path d=\"M14 11v5\"><\/path><\/svg>\r\n          <\/div>\r\n          <h4 class=\"scv-snapchatviewer-card-title\">Avoid Sensitive Content<\/h4>\r\n          <p class=\"scv-snapchatviewer-card-text\">Do not use the tool for restricted, hidden, private, or unauthorized content. A safe page should set clear expectations for users.<\/p>\r\n        <\/div>\r\n        <div class=\"scv-snapchatviewer-feature-card scv-snapchatviewer-card-soft\">\r\n          <div class=\"scv-snapchatviewer-icon-wrap\">\r\n            <svg width=\"28\" height=\"28\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M12 20h9\"><\/path><path d=\"M16.5 3.5a2.1 2.1 0 0 1 3 3L7 19l-4 1 1-4 12.5-12.5z\"><\/path><\/svg>\r\n          <\/div>\r\n          <h4 class=\"scv-snapchatviewer-card-title\">Keep the Flow Simple<\/h4>\r\n          <p class=\"scv-snapchatviewer-card-text\">A clean process with visible feedback, short instructions, and responsive design helps users complete the task with confidence.<\/p>\r\n        <\/div>\r\n      <\/div>\r\n    <\/div>\r\n  <\/section>\r\n\r\n<script>\r\n(function () {\r\n  var root = document.querySelector('.scv-snapchatviewer-content-wrapper');\r\n  if (!root) return;\r\n  var cards = root.querySelectorAll('.scv-snapchatviewer-feature-card');\r\n  var reveal = function () {\r\n    cards.forEach(function (card, index) {\r\n      var box = card.getBoundingClientRect();\r\n      if (box.top < window.innerHeight - 60) {\r\n        setTimeout(function () { card.classList.add('scv-snapchatviewer-is-visible'); }, Math.min(index * 30, 320));\r\n      }\r\n    });\r\n  };\r\n  cards.forEach(function (card) {\r\n    card.addEventListener('mousemove', function (event) {\r\n      var rect = card.getBoundingClientRect();\r\n      var x = ((event.clientX - rect.left) \/ rect.width) * 100;\r\n      var y = ((event.clientY - rect.top) \/ rect.height) * 100;\r\n      card.style.setProperty('--mx', x + '%');\r\n      card.style.setProperty('--my', y + '%');\r\n      if (card.closest('.scv-snapchatviewer-micro-process') || card.closest('.scv-snapchatviewer-micro-agency')) {\r\n        var ry = ((event.clientX - rect.left) \/ rect.width - 0.5) * 4;\r\n        var rx = (((event.clientY - rect.top) \/ rect.height - 0.5) * -4);\r\n        card.style.setProperty('--rx', rx.toFixed(2) + 'deg');\r\n        card.style.setProperty('--ry', ry.toFixed(2) + 'deg');\r\n      }\r\n    });\r\n    card.addEventListener('mouseleave', function () {\r\n      card.style.setProperty('--rx', '0deg');\r\n      card.style.setProperty('--ry', '0deg');\r\n    });\r\n  });\r\n  reveal();\r\n  window.addEventListener('scroll', reveal, { passive: true });\r\n})();\r\n<\/script>\r\n<\/div>\r\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"","protected":false},"author":5,"featured_media":0,"parent":6663,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"om_disable_all_campaigns":false,"footnotes":""},"class_list":["post-6480","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/raistheme.com\/wp-json\/wp\/v2\/pages\/6480","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/raistheme.com\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/raistheme.com\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/raistheme.com\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/raistheme.com\/wp-json\/wp\/v2\/comments?post=6480"}],"version-history":[{"count":5,"href":"https:\/\/raistheme.com\/wp-json\/wp\/v2\/pages\/6480\/revisions"}],"predecessor-version":[{"id":6649,"href":"https:\/\/raistheme.com\/wp-json\/wp\/v2\/pages\/6480\/revisions\/6649"}],"up":[{"embeddable":true,"href":"https:\/\/raistheme.com\/wp-json\/wp\/v2\/pages\/6663"}],"wp:attachment":[{"href":"https:\/\/raistheme.com\/wp-json\/wp\/v2\/media?parent=6480"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}