{"id":5614,"date":"2026-06-02T09:47:22","date_gmt":"2026-06-02T09:47:22","guid":{"rendered":"https:\/\/viiewerr.com\/tiktok\/acount\/"},"modified":"2026-06-27T10:50:26","modified_gmt":"2026-06-27T10:50:26","slug":"acount","status":"publish","type":"page","link":"https:\/\/viiewerr.com\/tiktok\/acount\/","title":{"rendered":"Tiktok Acount Viewer: Public Data"},"content":{"rendered":"<style type=\"text\/css\">\n.tc-wp-island {\n  width: 100%;\n  max-width: 100%;\n  min-width: 0;\n  box-sizing: border-box;\n  display: flow-root;\n  isolation: isolate;\n  position: relative;\n}\n.tc-wp-island > * {\n  min-width: 0;\n}\n.tc-wp-island *,\n.tc-wp-island *::before,\n.tc-wp-island *::after {\n  box-sizing: border-box;\n}\n.tc-wp-island img,\n.tc-wp-island video,\n.tc-wp-island svg,\n.tc-wp-island iframe {\n  max-width: 100%;\n  height: auto;\n}\n.tc-wp-island .tc-wp-tool {\n  max-width: 100%;\n  min-width: 0;\n}\n.tc-wp-island .tc-wp-tool-html,\n.tc-wp-island .tc-wp-tool-content,\n.tc-wp-island .tc-wp-other {\n  max-width: 100%;\n  min-width: 0;\n  overflow-wrap: anywhere;\n  word-break: break-word;\n}\n\/* Keep tool in post content flow \u2014 not overlapping theme header \/ hero band *\/\n.tc-wp-island {\n  clear: both;\n  z-index: 1;\n}\n.tc-wp-island .tc-wp-tool {\n  position: relative;\n  z-index: 0;\n  clear: both;\n  margin-top: 0;\n  margin-bottom: 1.25rem;\n}\n.tc-wp-island .tc-wp-tool-html {\n  position: relative;\n  z-index: 0;\n  clear: both;\n  contain: layout;\n}\n.tc-wp-island .tc-wp-tool-html > *:first-child {\n  position: relative !important;\n  top: auto !important;\n  left: auto !important;\n  right: auto !important;\n  margin-top: 0 !important;\n  width: 100%;\n  max-width: 100%;\n  box-sizing: border-box;\n}\nbody:has(.tc-wp-island) #main-header,\nbody:has(.tc-wp-island) header.site-header,\nbody:has(.tc-wp-island) .site-header,\nbody:has(.tc-wp-island) #header,\nbody:has(.tc-wp-island) .et-fixed-header,\nbody:has(.tc-wp-island) .elementor-location-header {\n  z-index: 200;\n}\n\/* Space between WP Coder tool + content shortcodes on publish\/draft pages *\/\n.tc-wp-island .tc-wp-tool-html + .tc-wp-tool-content {\n  margin-top: 20px;\n}\n.tc-wp-island .tc-wp-bcd-codes {\n  display: flex;\n  flex-direction: column;\n  gap: 20px;\n}\n\/* Full-width: hide theme sidebar when a ToolsChecker island is present *\/\nbody:has(.tc-wp-island) #sidebar,\nbody:has(.tc-wp-island) .sidebar,\nbody:has(.tc-wp-island) #secondary,\nbody:has(.tc-wp-island) .widget-area,\nbody:has(.tc-wp-island) aside.sidebar,\nbody:has(.tc-wp-island) #right-sidebar,\nbody:has(.tc-wp-island) #left-sidebar,\nbody:has(.tc-wp-island) .sidebar-primary,\nbody:has(.tc-wp-island) .sidebar-secondary,\nbody:has(.tc-wp-island) .ast-sidebar,\nbody:has(.tc-wp-island) .site-sidebar {\n  display: none !important;\n}\n\/* Copygen: hide default page title\/breadcrumb band \u2014 tool pages use template-homepage like category *\/\nbody:has(.tc-wp-island) section.page_header_default,\nbody:has(.tc-wp-island) .page_header_default {\n  display: none !important;\n}\n@media (min-width: 981px) {\n  body:has(.tc-wp-island) #left-area,\n  body:has(.tc-wp-island) #primary,\n  body:has(.tc-wp-island) #content-area,\n  body:has(.tc-wp-island) #content-area .container,\n  body:has(.tc-wp-island) .content-area,\n  body:has(.tc-wp-island) main.site-main,\n  body:has(.tc-wp-island) .site-content .content-area {\n    width: 100% !important;\n    max-width: 100% !important;\n    float: none !important;\n    padding-right: 0 !important;\n    padding-left: 0 !important;\n  }\n  body:has(.tc-wp-island) #main-content .container:before {\n    display: none !important;\n  }\n}\n\/* Tool pages: keep theme H1 readable \u2014 smaller type, full content width, 1\u20132 lines *\/\nbody:has(.tc-wp-island) .fontib-v2-hero-inner {\n  width: min(100%, calc(100vw - 40px)) !important;\n  max-width: 1320px !important;\n}\nbody:has(.tc-wp-island) .fontib-v2-title,\nbody:has(.tc-wp-island) #left-area > .entry-title,\nbody:has(.tc-wp-island) .entry-title h1,\nbody:has(.tc-wp-island) h1.entry-title,\nbody:has(.tc-wp-island) .page-title,\nbody:has(.tc-wp-island) .et_pb_title_container h1 {\n  max-width: 100% !important;\n  width: 100%;\n  font-size: clamp(24px, 2.6vw, 38px) !important;\n  line-height: 1.2 !important;\n  letter-spacing: -0.01em;\n}\n<\/style>\n<div class=\"tc-wp-island\">\n<section class=\"tc-wp-tool\" data-tool-index=\"1\">\n<div class=\"tc-wp-tool-html\"><link href=\"https:\/\/fonts.googleapis.com\/css2?family=Inter:wght@300;400;500;600;700;800;900&display=swap\"\r\n        rel=\"stylesheet\">\r\n    <link href=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/font-awesome\/6.0.0\/css\/all.min.css\" rel=\"stylesheet\">\r\n    <style>\r\n        :root {\r\n            --primary-gradient: linear-gradient(135deg, #00C9FF 0%, #92FE9D 100%);\r\n            --secondary-gradient: linear-gradient(135deg, #FC466B 0%, #3F5EFB 100%);\r\n            --accent-gradient: linear-gradient(135deg, #4FACFE 0%, #00F2FE 100%);\r\n            --card-gradient: linear-gradient(135deg, #43CBFF 0%, #9708CC 100%);\r\n            --stats-gradient-1: linear-gradient(135deg, #00C9FF 0%, #92FE9D 100%);\r\n            --stats-gradient-2: linear-gradient(135deg, #FC466B 0%, #3F5EFB 100%);\r\n            --stats-gradient-3: linear-gradient(135deg, #4FACFE 0%, #00F2FE 100%);\r\n            --stats-gradient-4: linear-gradient(135deg, #43CBFF 0%, #9708CC 100%);\r\n            --glass-bg: rgba(255, 255, 255, 0.15);\r\n            --glass-border: rgba(255, 255, 255, 0.2);\r\n            --text-primary: #1a202c;\r\n            --text-secondary: #2d3748;\r\n            --text-muted: #4a5568;\r\n            --shadow-sm: 0 2px 8px rgba(0, 0, 0, 0.1);\r\n            --shadow-md: 0 4px 16px rgba(0, 0, 0, 0.15);\r\n            --shadow-lg: 0 8px 32px rgba(0, 0, 0, 0.2);\r\n            --shadow-xl: 0 25px 50px rgba(0, 0, 0, 0.3);\r\n            --shadow-neon: 0 0 20px rgba(0, 201, 255, 0.3);\r\n        }\r\n\r\n        * {\r\n            margin: 0;\r\n            padding: 0;\r\n            box-sizing: border-box;\r\n            font-family: 'Inter', sans-serif;\r\n        }\r\n\r\n        .tiktok_body {\r\n            background: linear-gradient(135deg, #e0f7fa 0%, #bbdefb 50%, #e1bee7 100%);\r\n            min-height: 60vh;\r\n            color: var(--text-primary);\r\n            line-height: 1.6;\r\n            position: relative;\r\n            overflow-x: hidden;\r\n        }\r\n\r\n        .tiktok_body::before {\r\n            content: '';\r\n            position: fixed;\r\n            top: 0;\r\n            left: 0;\r\n            width: 100%;\r\n            height: 100%;\r\n            background:\r\n                radial-gradient(circle at 20% 30%, rgba(67, 203, 255, 0.15) 0%, transparent 50%),\r\n                radial-gradient(circle at 80% 70%, rgba(151, 8, 204, 0.15) 0%, transparent 50%);\r\n            pointer-events: none;\r\n            z-index: -1;\r\n        }\r\n\r\n        .container_tiktok {\r\n            max-width: 1400px;\r\n            margin: 0 auto;\r\n            padding: 32px 16px;\r\n            position: relative;\r\n            z-index: 1;\r\n        }\r\n\r\n        \/* Header Styles *\/\r\n        .header {\r\n            text-align: center;\r\n            margin-bottom: 48px;\r\n            animation: fadeInDown 1s ease-out;\r\n        }\r\n\r\n        .logo-container {\r\n            display: flex;\r\n            align-items: center;\r\n            justify-content: center;\r\n            gap: 24px;\r\n            margin-bottom: 24px;\r\n        }\r\n\r\n        .logo-icon {\r\n            width: 80px;\r\n            height: 80px;\r\n            background: var(--primary-gradient);\r\n            border-radius: 20px;\r\n            display: flex;\r\n            align-items: center;\r\n            justify-content: center;\r\n            font-size: 36px;\r\n            font-weight: 900;\r\n            box-shadow: var(--shadow-xl), var(--shadow-neon);\r\n            position: relative;\r\n            overflow: hidden;\r\n            animation: pulse 2s ease-in-out infinite;\r\n        }\r\n\r\n        .logo-text {\r\n            font-size: clamp(32px, 6vw, 60px);\r\n            font-weight: 900;\r\n            background: var(--secondary-gradient);\r\n            -webkit-background-clip: text;\r\n            -webkit-text-fill-color: transparent;\r\n            text-shadow: 0 4px 20px rgba(0, 0, 0, 0.1);\r\n            letter-spacing: -2px;\r\n        }\r\n\r\n        \/* Search Section *\/\r\n        .search-section {\r\n            background: var(--glass-bg);\r\n            backdrop-filter: blur(30px);\r\n            border: 1px solid var(--glass-border);\r\n            padding: clamp(24px, 5vw, 48px);\r\n            border-radius: 24px;\r\n            box-shadow: var(--shadow-xl);\r\n            margin-bottom: 32px;\r\n            animation: fadeInUp 1s ease-out 0.2s both;\r\n        }\r\n\r\n        .input-container {\r\n            position: relative;\r\n            margin-bottom: 20px;\r\n        }\r\n\r\n        .search-input {\r\n            width: 100% !important;\r\n            padding: clamp(16px, 3vw, 20px) clamp(20px, 4vw, 24px)  !important;\r\n            border: 2px solid rgba(0, 201, 255, 0.3)  !important;\r\n            border-radius: 16px  !important;\r\n            font-size: clamp(14px, 2.5vw, 16px)  !important;\r\n            font-weight: 500  !important;\r\n            background: rgba(255, 255, 255, 0.7)  !important;\r\n            color: var(--text-primary)  !important;\r\n            transition: all 0.3s ease  !important;\r\n        }\r\n\r\n        .search-input:focus {\r\n            outline: none  !important;\r\n            border-color: #00C9FF  !important;\r\n            box-shadow: 0 0 0 4px rgba(0, 201, 255, 0.2)  !important;\r\n        }\r\n\r\n        .search-input::placeholder {\r\n            color: rgba(45, 55, 72, 0.6);\r\n        }\r\n\r\n        .paste-hint {\r\n            display: flex;\r\n            align-items: center;\r\n            justify-content: flex-end;\r\n            gap: 8px;\r\n            margin-top: 8px;\r\n            font-size: 13px;\r\n            color: var(--text-muted);\r\n        }\r\n\r\n        .paste-icon {\r\n            cursor: pointer;\r\n            padding: 6px;\r\n            border-radius: 6px;\r\n            transition: all 0.3s ease;\r\n            font-size: 16px;\r\n            color: var(--text-secondary);\r\n        }\r\n\r\n        .paste-icon:hover {\r\n            background: rgba(0, 201, 255, 0.1);\r\n            color: var(--text-primary);\r\n            transform: scale(1.1);\r\n        }\r\n\r\n        .search-box {\r\n            display: flex;\r\n            gap: 16px;\r\n            margin-bottom: 20px;\r\n            flex-wrap: wrap;\r\n        }\r\n\r\n        .search-button {\r\n            flex: 1;\r\n            min-width: 200px;\r\n            padding: clamp(16px, 3vw, 20px) clamp(24px, 5vw, 32px);\r\n            background: var(--primary-gradient);\r\n            color: white;\r\n            border: none;\r\n            border-radius: 16px;\r\n            font-size: clamp(14px, 2.5vw, 16px);\r\n            font-weight: 700;\r\n            cursor: pointer;\r\n            transition: all 0.3s ease;\r\n            position: relative;\r\n            overflow: hidden;\r\n            box-shadow: var(--shadow-lg), var(--shadow-neon);\r\n        }\r\n\r\n        .search-button::before {\r\n            content: '';\r\n            position: absolute;\r\n            top: 0;\r\n            left: -100%;\r\n            width: 100%;\r\n            height: 100%;\r\n            background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.2), transparent);\r\n            transition: left 0.5s;\r\n        }\r\n\r\n        .search-button:hover:not(:disabled)::before {\r\n            left: 100%;\r\n        }\r\n\r\n        .search-button:hover:not(:disabled) {\r\n            transform: translateY(-3px);\r\n            box-shadow: var(--shadow-xl), 0 0 30px rgba(0, 201, 255, 0.5);\r\n        }\r\n\r\n        .search-button:disabled {\r\n            opacity: 0.6;\r\n            cursor: not-allowed;\r\n            transform: none;\r\n        }\r\n\r\n        .search-again-btn {\r\n            background: var(--secondary-gradient);\r\n            color: white;\r\n            margin-top: 16px;\r\n            width: 100%;\r\n            padding: 16px;\r\n            border: none;\r\n            border-radius: 16px;\r\n            font-weight: 700;\r\n            cursor: pointer;\r\n            transition: all 0.3s ease;\r\n            box-shadow: var(--shadow-lg);\r\n        }\r\n\r\n        .search-again-btn:hover {\r\n            transform: translateY(-2px);\r\n            box-shadow: var(--shadow-xl);\r\n        }\r\n\r\n        \/* Profile Section *\/\r\n        .profile-section {\r\n            background: var(--glass-bg);\r\n            backdrop-filter: blur(30px);\r\n            border: 1px solid var(--glass-border);\r\n            border-radius: 24px;\r\n            padding: 32px;\r\n            margin-bottom: 32px;\r\n            animation: fadeInUp 0.8s ease-out;\r\n            box-shadow: var(--shadow-xl);\r\n        }\r\n\r\n        .profile-header {\r\n            display: flex;\r\n            gap: 24px;\r\n            margin-bottom: 32px;\r\n        }\r\n\r\n        .profile-avatar-container {\r\n            position: relative;\r\n        }\r\n\r\n        .profile-avatar {\r\n            width: 120px;\r\n            height: 120px;\r\n            border-radius: 50%;\r\n            object-fit: cover;\r\n            border: 4px solid transparent;\r\n            background: var(--primary-gradient);\r\n            padding: 2px;\r\n            box-shadow: var(--shadow-lg);\r\n            cursor: pointer;\r\n            transition: all 0.3s ease;\r\n        }\r\n\r\n        .profile-avatar:hover {\r\n            transform: scale(1.05);\r\n            box-shadow: var(--shadow-xl), var(--shadow-neon);\r\n        }\r\n\r\n        .fullscreen-icon {\r\n            position: absolute;\r\n            bottom: 5px;\r\n            right: 5px;\r\n            width: 24px;\r\n            height: 24px;\r\n            background: var(--primary-gradient);\r\n            border-radius: 50%;\r\n            display: flex;\r\n            align-items: center;\r\n            justify-content: center;\r\n            color: white;\r\n            font-size: 10px;\r\n            cursor: pointer;\r\n            transition: all 0.3s ease;\r\n            box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);\r\n        }\r\n\r\n        .fullscreen-icon:hover {\r\n            transform: scale(1.1);\r\n        }\r\n\r\n        .profile-info {\r\n            flex: 1;\r\n        }\r\n\r\n        .profile-name {\r\n            font-size: 32px;\r\n            font-weight: 800;\r\n            margin-bottom: 8px;\r\n            background: var(--secondary-gradient);\r\n            -webkit-background-clip: text;\r\n            -webkit-text-fill-color: transparent;\r\n        }\r\n\r\n        .profile-username {\r\n            font-size: 18px;\r\n            color: var(--text-secondary);\r\n            margin-bottom: 16px;\r\n        }\r\n\r\n        \/* Enhanced Stats Section *\/\r\n        .profile-stats {\r\n            display: grid;\r\n            grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));\r\n            gap: 20px;\r\n            padding: 0;\r\n            background: transparent;\r\n            border-radius: 0;\r\n            backdrop-filter: none;\r\n        }\r\n\r\n        .stat-item {\r\n            text-align: center;\r\n            padding: 24px 20px;\r\n            border-radius: 16px;\r\n            transition: all 0.3s ease;\r\n            position: relative;\r\n            overflow: hidden;\r\n            border: 1px solid rgba(255, 255, 255, 0.3);\r\n            backdrop-filter: blur(20px);\r\n        }\r\n\r\n        .stat-item:nth-child(1) {\r\n            background: var(--stats-gradient-1);\r\n            box-shadow: 0 8px 32px rgba(0, 201, 255, 0.4);\r\n        }\r\n\r\n        .stat-item:nth-child(2) {\r\n            background: var(--stats-gradient-2);\r\n            box-shadow: 0 8px 32px rgba(252, 70, 107, 0.4);\r\n        }\r\n\r\n        .stat-item:nth-child(3) {\r\n            background: var(--stats-gradient-3);\r\n            box-shadow: 0 8px 32px rgba(79, 172, 254, 0.4);\r\n        }\r\n\r\n        .stat-item:nth-child(4) {\r\n            background: var(--stats-gradient-4);\r\n            box-shadow: 0 8px 32px rgba(67, 203, 255, 0.4);\r\n        }\r\n\r\n        .stat-item::before {\r\n            content: '';\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(135deg, rgba(255, 255, 255, 0.2) 0%, transparent 50%, rgba(255, 255, 255, 0.1) 100%);\r\n            opacity: 0;\r\n            transition: opacity 0.3s ease;\r\n        }\r\n\r\n        .stat-item:hover::before {\r\n            opacity: 1;\r\n        }\r\n\r\n        .stat-item:hover {\r\n            transform: translateY(-8px) scale(1.02);\r\n            box-shadow: 0 16px 48px rgba(0, 0, 0, 0.4);\r\n        }\r\n\r\n        .stat-value {\r\n            font-size: 28px;\r\n            font-weight: 800;\r\n            margin-bottom: 8px;\r\n            color: #ffffff;\r\n            text-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);\r\n        }\r\n\r\n        .stat-label {\r\n            font-size: 14px;\r\n            color: rgba(255, 255, 255, 0.9);\r\n            font-weight: 600;\r\n            text-transform: capitalize;\r\n            letter-spacing: 0.5px;\r\n        }\r\n\r\n        \/* Videos Section Header *\/\r\n        .videos-section-header {\r\n            display: flex;\r\n            align-items: center;\r\n            justify-content: space-between;\r\n            margin-bottom: 24px;\r\n            padding: 20px 0;\r\n        }\r\n\r\n        .videos-button {\r\n            padding: 16px 32px;\r\n            background: var(--primary-gradient);\r\n            color: white;\r\n            border: none;\r\n            border-radius: 16px;\r\n            font-weight: 700;\r\n            font-size: 16px;\r\n            cursor: pointer;\r\n            transition: all 0.3s ease;\r\n            box-shadow: var(--shadow-md);\r\n            display: flex;\r\n            align-items: center;\r\n            gap: 8px;\r\n        }\r\n\r\n        .videos-button:hover {\r\n            transform: translateY(-2px);\r\n            box-shadow: var(--shadow-lg);\r\n        }\r\n\r\n        .videos-count {\r\n            font-size: 16px;\r\n            font-weight: 600;\r\n            color: var(--text-secondary);\r\n        }\r\n\r\n        .download-all-btn {\r\n            padding: 12px 24px;\r\n            background: var(--secondary-gradient);\r\n            color: white;\r\n            border: none;\r\n            border-radius: 12px;\r\n            font-weight: 600;\r\n            cursor: pointer;\r\n            transition: all 0.3s ease;\r\n            box-shadow: var(--shadow-md);\r\n            display: flex;\r\n            align-items: center;\r\n            gap: 8px;\r\n            margin-left: 16px;\r\n        }\r\n\r\n        .download-all-btn:hover {\r\n            transform: translateY(-2px);\r\n            box-shadow: var(--shadow-lg);\r\n        }\r\n\r\n        .download-all-btn:disabled {\r\n            opacity: 0.6;\r\n            cursor: not-allowed;\r\n            transform: none;\r\n        }\r\n\r\n        \/* Video Grid *\/\r\n        .video-grid {\r\n            display: grid;\r\n            grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));\r\n            gap: 24px;\r\n        }\r\n\r\n        .video-card {\r\n            background: linear-gradient(135deg,\r\n                    rgba(0, 201, 255, 0.1) 0%,\r\n                    rgba(146, 254, 157, 0.1) 50%,\r\n                    rgba(79, 172, 254, 0.1) 100%);\r\n            border-radius: 20px;\r\n            overflow: hidden;\r\n            transition: all 0.3s ease;\r\n            position: relative;\r\n            backdrop-filter: blur(20px);\r\n            border: 1px solid rgba(255, 255, 255, 0.3);\r\n            box-shadow:\r\n                var(--shadow-lg),\r\n                0 0 20px rgba(0, 201, 255, 0.1),\r\n                inset 0 1px 0 rgba(255, 255, 255, 0.2);\r\n            cursor: pointer;\r\n            height: 480px;\r\n        }\r\n\r\n        .video-card:hover {\r\n            transform: translateY(-15px) scale(1.02);\r\n            box-shadow:\r\n                var(--shadow-xl),\r\n                0 0 40px rgba(0, 201, 255, 0.3),\r\n                0 0 60px rgba(146, 254, 157, 0.2),\r\n                inset 0 1px 0 rgba(255, 255, 255, 0.3);\r\n            border-color: rgba(0, 201, 255, 0.5);\r\n        }\r\n\r\n        .video-card::before {\r\n            content: '';\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(135deg,\r\n                    rgba(0, 201, 255, 0.05) 0%,\r\n                    transparent 50%,\r\n                    rgba(146, 254, 157, 0.05) 100%);\r\n            opacity: 0;\r\n            transition: opacity 0.3s ease;\r\n            pointer-events: none;\r\n            z-index: 1;\r\n        }\r\n\r\n        .video-card:hover::before {\r\n            opacity: 1;\r\n        }\r\n\r\n        .video-thumbnail-container {\r\n            position: relative;\r\n            width: 100%;\r\n            height: 320px;\r\n            overflow: hidden;\r\n        }\r\n\r\n        .video-thumbnail {\r\n            width: 100%;\r\n            height: 100%;\r\n            object-fit: cover;\r\n            transition: transform 0.3s ease;\r\n        }\r\n\r\n        .video-card:hover .video-thumbnail {\r\n            transform: scale(1.1);\r\n        }\r\n\r\n        .play-overlay {\r\n            position: absolute;\r\n            top: 50%;\r\n            left: 50%;\r\n            transform: translate(-50%, -50%);\r\n            width: 64px;\r\n            height: 64px;\r\n            background: rgba(0, 201, 255, 0.9);\r\n            border-radius: 50%;\r\n            display: flex;\r\n            align-items: center;\r\n            justify-content: center;\r\n            transition: all 0.3s ease;\r\n            z-index: 2;\r\n            box-shadow: 0 8px 25px rgba(0, 201, 255, 0.4);\r\n            border: 2px solid rgba(255, 255, 255, 0.3);\r\n        }\r\n\r\n        .play-overlay::after {\r\n            content: '';\r\n            width: 0;\r\n            height: 0;\r\n            border-left: 16px solid white;\r\n            border-top: 12px solid transparent;\r\n            border-bottom: 12px solid transparent;\r\n            margin-left: 4px;\r\n        }\r\n\r\n        .video-card:hover .play-overlay {\r\n            transform: translate(-50%, -50%) scale(1.2);\r\n            background: rgba(0, 201, 255, 1);\r\n            box-shadow: 0 12px 35px rgba(0, 201, 255, 0.6);\r\n        }\r\n\r\n        .video-download-btn {\r\n            position: absolute;\r\n            top: 12px;\r\n            right: 12px;\r\n            width: 40px;\r\n            height: 40px;\r\n            background: rgba(255, 255, 255, 0.8);\r\n            backdrop-filter: blur(10px);\r\n            border-radius: 50%;\r\n            display: flex;\r\n            align-items: center;\r\n            justify-content: center;\r\n            color: var(--text-primary);\r\n            font-size: 16px;\r\n            transition: all 0.3s ease;\r\n            opacity: 1;\r\n            cursor: pointer;\r\n            z-index: 10;\r\n            border: 2px solid rgba(0, 201, 255, 0.3);\r\n        }\r\n\r\n        .video-download-btn:hover {\r\n            background: var(--primary-gradient);\r\n            transform: scale(1.1);\r\n            border-color: rgba(0, 201, 255, 0.5);\r\n            color: white;\r\n        }\r\n\r\n        .video-info {\r\n            padding: 20px;\r\n            background: rgba(255, 255, 255, 0.5);\r\n            backdrop-filter: blur(10px);\r\n            height: 160px;\r\n            display: flex;\r\n            flex-direction: column;\r\n            justify-content: space-between;\r\n        }\r\n\r\n        .video-title {\r\n            font-size: 14px;\r\n            font-weight: 600;\r\n            margin-bottom: 12px;\r\n            display: -webkit-box;\r\n            -webkit-line-clamp: 3;\r\n            -webkit-box-orient: vertical;\r\n            overflow: hidden;\r\n            color: var(--text-primary);\r\n            line-height: 1.4;\r\n        }\r\n\r\n        .video-stats {\r\n            display: grid;\r\n            grid-template-columns: repeat(3, 1fr);\r\n            gap: 8px;\r\n            font-size: 12px;\r\n            color: var(--text-secondary);\r\n        }\r\n\r\n        .stat {\r\n            display: flex;\r\n            align-items: center;\r\n            justify-content: center;\r\n            gap: 4px;\r\n            padding: 8px;\r\n            background: rgba(255, 255, 255, 0.3);\r\n            border-radius: 8px;\r\n            transition: all 0.3s ease;\r\n        }\r\n\r\n        .stat:hover {\r\n            background: rgba(0, 201, 255, 0.2);\r\n            color: var(--text-primary);\r\n        }\r\n\r\n        \/* Video Modal *\/\r\n        .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(255, 255, 255, 0.95);\r\n            backdrop-filter: blur(20px);\r\n            z-index: 1000;\r\n            display: none;\r\n            animation: fadeIn 0.3s ease-out;\r\n            padding: 20px;\r\n        }\r\n\r\n        .modal-content {\r\n            position: relative;\r\n            width: 100%;\r\n            height: 100%;\r\n            display: flex;\r\n            flex-direction: column;\r\n            justify-content: center;\r\n            align-items: center;\r\n            max-width: 500px;\r\n            margin: 0 auto;\r\n        }\r\n\r\n        .modal-title {\r\n            color: var(--text-primary);\r\n            font-size: 18px;\r\n            font-weight: 600;\r\n            margin-bottom: 16px;\r\n            text-align: center;\r\n            padding: 0 20px;\r\n            display: -webkit-box;\r\n            -webkit-line-clamp: 2;\r\n            -webkit-box-orient: vertical;\r\n            overflow: hidden;\r\n            line-height: 1.4;\r\n        }\r\n\r\n        .video-player-container {\r\n            position: relative;\r\n            width: 100%;\r\n            aspect-ratio: 9\/16;\r\n            background: #000;\r\n            border-radius: 20px;\r\n            overflow: hidden;\r\n            box-shadow: var(--shadow-xl);\r\n        }\r\n\r\n        .video-player {\r\n            width: 100%;\r\n            height: 100%;\r\n            object-fit: contain;\r\n        }\r\n\r\n        .close-modal {\r\n            position: absolute;\r\n            top: 10px;\r\n            right: -30px;\r\n            width: 48px;\r\n            height: 48px;\r\n            background: rgba(252, 70, 107, 0.2);\r\n            border: 2px solid rgba(252, 70, 107, 0.5);\r\n            border-radius: 50%;\r\n            color: var(--text-primary);\r\n            font-size: 24px;\r\n            cursor: pointer;\r\n            display: flex;\r\n            align-items: center;\r\n            justify-content: center;\r\n            backdrop-filter: blur(10px);\r\n            transition: all 0.3s ease;\r\n            z-index: 20;\r\n            box-shadow: 0 4px 15px rgba(252, 70, 107, 0.3);\r\n        }\r\n\r\n        .close-modal:hover {\r\n            background: rgba(252, 70, 107, 0.4);\r\n            transform: rotate(90deg) scale(1.1);\r\n            border-color: rgba(252, 70, 107, 0.8);\r\n            box-shadow: 0 6px 20px rgba(252, 70, 107, 0.5);\r\n        }\r\n\r\n        \/* Video Controls *\/\r\n        .video-controls {\r\n            position: absolute;\r\n            bottom: 0;\r\n            left: 0;\r\n            right: 0;\r\n            padding: 20px;\r\n            background: linear-gradient(transparent, rgba(0, 0, 0, 0.9));\r\n            display: flex;\r\n            flex-direction: column;\r\n            gap: 16px;\r\n        }\r\n\r\n        .progress-container {\r\n            width: 100%;\r\n            height: 4px;\r\n            background: rgba(255, 255, 255, 0.2);\r\n            border-radius: 2px;\r\n            cursor: pointer;\r\n            position: relative;\r\n        }\r\n\r\n        .progress-bar {\r\n            height: 100%;\r\n            background: var(--primary-gradient);\r\n            border-radius: 2px;\r\n            position: relative;\r\n            transition: width 0.1s linear;\r\n        }\r\n\r\n        .control-buttons {\r\n            display: flex;\r\n            align-items: center;\r\n            justify-content: space-between;\r\n        }\r\n\r\n        .control-group {\r\n            display: flex;\r\n            align-items: center;\r\n            gap: 12px;\r\n        }\r\n\r\n        .control-button {\r\n            width: 44px;\r\n            height: 44px;\r\n            border: none;\r\n            border-radius: 50%;\r\n            background: var(--glass-bg);\r\n            color: var(--text-primary);\r\n            font-size: 18px;\r\n            cursor: pointer;\r\n            display: flex;\r\n            align-items: center;\r\n            justify-content: center;\r\n            backdrop-filter: blur(10px);\r\n            transition: all 0.3s ease;\r\n            border: 1px solid var(--glass-border);\r\n        }\r\n\r\n        .control-button:hover {\r\n            background: rgba(255, 255, 255, 0.3);\r\n            transform: scale(1.1);\r\n        }\r\n\r\n        .play-pause {\r\n            width: 56px;\r\n            height: 56px;\r\n            background: var(--primary-gradient);\r\n            font-size: 24px;\r\n            border: none;\r\n            color: white;\r\n        }\r\n\r\n        .play-pause:hover {\r\n            background: var(--secondary-gradient);\r\n        }\r\n\r\n        \/* Volume Controls *\/\r\n        .volume-controls {\r\n            display: flex;\r\n            align-items: center;\r\n            gap: 8px;\r\n        }\r\n\r\n        .volume-slider {\r\n            width: 80px;\r\n            height: 4px;\r\n            background: rgba(255, 255, 255, 0.2);\r\n            border-radius: 2px;\r\n            position: relative;\r\n            cursor: pointer;\r\n        }\r\n\r\n        .volume-fill {\r\n            height: 100%;\r\n            background: var(--primary-gradient);\r\n            border-radius: 2px;\r\n            transition: width 0.1s ease;\r\n        }\r\n\r\n        \/* Advanced Loading Animation *\/\r\n        .loading {\r\n            display: none;\r\n            justify-content: center;\r\n            align-items: center;\r\n            padding: 60px 40px;\r\n            background: var(--glass-bg);\r\n            backdrop-filter: blur(30px);\r\n            border-radius: 24px;\r\n            margin: 32px 0;\r\n            border: 1px solid var(--glass-border);\r\n            box-shadow: var(--shadow-xl);\r\n        }\r\n\r\n        .loading-content {\r\n            text-align: center;\r\n        }\r\n\r\n        .loading-animation {\r\n            position: relative;\r\n            width: 120px;\r\n            height: 120px;\r\n            margin: 0 auto 24px;\r\n        }\r\n\r\n        .loading-ring {\r\n            position: absolute;\r\n            border: 4px solid transparent;\r\n            border-radius: 50%;\r\n            animation: spin 2s linear infinite;\r\n        }\r\n\r\n        .loading-ring:nth-child(1) {\r\n            width: 120px;\r\n            height: 120px;\r\n            border-top-color: #00C9FF;\r\n            animation-duration: 2s;\r\n        }\r\n\r\n        .loading-ring:nth-child(2) {\r\n            width: 90px;\r\n            height: 90px;\r\n            top: 15px;\r\n            left: 15px;\r\n            border-right-color: #92FE9D;\r\n            animation-duration: 1.5s;\r\n            animation-direction: reverse;\r\n        }\r\n\r\n        .loading-ring:nth-child(3) {\r\n            width: 60px;\r\n            height: 60px;\r\n            top: 30px;\r\n            left: 30px;\r\n            border-bottom-color: #FC466B;\r\n            animation-duration: 1s;\r\n        }\r\n\r\n        .loading-dots {\r\n            display: flex;\r\n            justify-content: center;\r\n            gap: 8px;\r\n            margin-bottom: 16px;\r\n        }\r\n\r\n        .loading-dot {\r\n            width: 12px;\r\n            height: 12px;\r\n            background: var(--primary-gradient);\r\n            border-radius: 50%;\r\n            animation: bounce 1.4s ease-in-out infinite both;\r\n        }\r\n\r\n        .loading-dot:nth-child(1) {\r\n            animation-delay: -0.32s;\r\n        }\r\n\r\n        .loading-dot:nth-child(2) {\r\n            animation-delay: -0.16s;\r\n        }\r\n\r\n        .loading-dot:nth-child(3) {\r\n            animation-delay: 0s;\r\n        }\r\n\r\n        @keyframes bounce {\r\n\r\n            0%,\r\n            80%,\r\n            100% {\r\n                transform: scale(0);\r\n            }\r\n\r\n            40% {\r\n                transform: scale(1);\r\n            }\r\n        }\r\n\r\n        @keyframes spin {\r\n            to {\r\n                transform: rotate(360deg);\r\n            }\r\n        }\r\n\r\n        .loading-text {\r\n            font-size: 18px;\r\n            font-weight: 600;\r\n            color: var(--text-primary);\r\n            margin-bottom: 8px;\r\n        }\r\n\r\n        .loading-subtext {\r\n            font-size: 14px;\r\n            color: var(--text-secondary);\r\n        }\r\n\r\n        \/* Profile Picture Modal *\/\r\n        .profile-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(255, 255, 255, 0.95);\r\n            backdrop-filter: blur(20px);\r\n            z-index: 1000;\r\n            display: none;\r\n            animation: fadeIn 0.3s ease-out;\r\n            padding: 20px;\r\n        }\r\n\r\n        .profile-modal-content {\r\n            position: relative;\r\n            width: 100%;\r\n            height: 100%;\r\n            display: flex;\r\n            justify-content: center;\r\n            align-items: center;\r\n        }\r\n\r\n        .profile-modal-image {\r\n            max-width: 80%;\r\n            max-height: 80%;\r\n            border-radius: 20px;\r\n            box-shadow: var(--shadow-xl);\r\n        }\r\n\r\n        .profile-modal-close {\r\n            position: absolute;\r\n            top: 20px;\r\n            right: 20px;\r\n            width: 48px;\r\n            height: 48px;\r\n            background: rgba(252, 70, 107, 0.2);\r\n            border: 2px solid rgba(252, 70, 107, 0.5);\r\n            border-radius: 50%;\r\n            color: var(--text-primary);\r\n            font-size: 24px;\r\n            cursor: pointer;\r\n            display: flex;\r\n            align-items: center;\r\n            justify-content: center;\r\n            backdrop-filter: blur(10px);\r\n            transition: all 0.3s ease;\r\n        }\r\n\r\n        .profile-modal-download {\r\n            position: absolute;\r\n            bottom: 20px;\r\n            right: 20px;\r\n            padding: 12px 24px;\r\n            background: var(--primary-gradient);\r\n            color: white;\r\n            border: none;\r\n            border-radius: 12px;\r\n            font-weight: 600;\r\n            cursor: pointer;\r\n            transition: all 0.3s ease;\r\n            display: flex;\r\n            align-items: center;\r\n            gap: 8px;\r\n        }\r\n\r\n        .profile-modal-download:hover {\r\n            transform: translateY(-2px);\r\n            box-shadow: var(--shadow-lg);\r\n        }\r\n\r\n        \/* Download Progress Indicator *\/\r\n        .download-progress {\r\n            position: fixed;\r\n            bottom: 20px;\r\n            right: 20px;\r\n            background: var(--glass-bg);\r\n            backdrop-filter: blur(20px);\r\n            border: 1px solid var(--glass-border);\r\n            border-radius: 12px;\r\n            padding: 16px 20px;\r\n            color: var(--text-primary);\r\n            font-weight: 600;\r\n            z-index: 1001;\r\n            display: none;\r\n            align-items: center;\r\n            gap: 12px;\r\n            box-shadow: var(--shadow-lg);\r\n            min-width: 300px;\r\n        }\r\n\r\n        .download-progress.show {\r\n            display: flex;\r\n        }\r\n\r\n        .download-spinner {\r\n            width: 20px;\r\n            height: 20px;\r\n            border: 2px solid rgba(0, 201, 255, 0.3);\r\n            border-top-color: #00C9FF;\r\n            border-radius: 50%;\r\n            animation: spin 1s linear infinite;\r\n            flex-shrink: 0;\r\n        }\r\n\r\n        .download-info {\r\n            flex-grow: 1;\r\n            display: flex;\r\n            flex-direction: column;\r\n            gap: 4px;\r\n        }\r\n\r\n        .download-text {\r\n            font-size: 14px;\r\n            white-space: nowrap;\r\n            overflow: hidden;\r\n            text-overflow: ellipsis;\r\n        }\r\n\r\n        .download-progress-bar {\r\n            width: 100%;\r\n            height: 4px;\r\n            background: rgba(255, 255, 255, 0.2);\r\n            border-radius: 2px;\r\n            overflow: hidden;\r\n        }\r\n\r\n        .download-progress-fill {\r\n            height: 100%;\r\n            background: var(--primary-gradient);\r\n            border-radius: 2px;\r\n            width: 0%;\r\n            transition: width 0.3s ease;\r\n        }\r\n\r\n        .cancel-download-btn {\r\n            background: rgba(252, 70, 107, 0.2);\r\n            border: 1px solid rgba(252, 70, 107, 0.4);\r\n            color: var(--text-primary);\r\n            border-radius: 8px;\r\n            padding: 6px 12px;\r\n            font-size: 12px;\r\n            font-weight: 600;\r\n            cursor: pointer;\r\n            transition: all 0.3s ease;\r\n            flex-shrink: 0;\r\n            display: flex;\r\n            align-items: center;\r\n            gap: 4px;\r\n        }\r\n\r\n        .cancel-download-btn:hover {\r\n            background: rgba(252, 70, 107, 0.4);\r\n        }\r\n\r\n        \/* Animations *\/\r\n        @keyframes fadeIn {\r\n            from {\r\n                opacity: 0;\r\n            }\r\n\r\n            to {\r\n                opacity: 1;\r\n            }\r\n        }\r\n\r\n        @keyframes fadeInDown {\r\n            from {\r\n                opacity: 0;\r\n                transform: translateY(-30px);\r\n            }\r\n\r\n            to {\r\n                opacity: 1;\r\n                transform: translateY(0);\r\n            }\r\n        }\r\n\r\n        @keyframes fadeInUp {\r\n            from {\r\n                opacity: 0;\r\n                transform: translateY(30px);\r\n            }\r\n\r\n            to {\r\n                opacity: 1;\r\n                transform: translateY(0);\r\n            }\r\n        }\r\n\r\n        @keyframes pulse {\r\n\r\n            0%,\r\n            100% {\r\n                transform: scale(1);\r\n            }\r\n\r\n            50% {\r\n                transform: scale(1.05);\r\n            }\r\n        }\r\n\r\n        \/* Error Message *\/\r\n        .error-message {\r\n            background: rgba(252, 70, 107, 0.1);\r\n            border: 1px solid rgba(252, 70, 107, 0.2);\r\n            color: #FC466B;\r\n            padding: 16px 24px;\r\n            border-radius: 12px;\r\n            margin-top: 16px;\r\n            display: none;\r\n            align-items: center;\r\n            gap: 12px;\r\n            font-weight: 500;\r\n        }\r\n\r\n        \/* Responsive Design *\/\r\n        @media (max-width: 768px) {\r\n            .profile-header {\r\n                flex-direction: column;\r\n                align-items: center;\r\n                text-align: center;\r\n            }\r\n\r\n            .profile-stats {\r\n                grid-template-columns: repeat(2, 1fr);\r\n            }\r\n\r\n            .video-grid {\r\n                grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));\r\n                gap: 16px;\r\n            }\r\n\r\n            .video-card {\r\n                height: 440px;\r\n            }\r\n\r\n            .video-thumbnail-container {\r\n                height: 280px;\r\n            }\r\n\r\n            .search-box {\r\n                flex-direction: column;\r\n            }\r\n\r\n            .search-button {\r\n                width: 100%;\r\n            }\r\n\r\n            .control-buttons {\r\n                flex-wrap: wrap;\r\n                gap: 12px;\r\n            }\r\n\r\n            .volume-controls {\r\n                order: 3;\r\n                width: 100%;\r\n                justify-content: center;\r\n            }\r\n\r\n            .close-modal {\r\n                top: -50px;\r\n                right: 10px;\r\n            }\r\n\r\n            .videos-section-header {\r\n                flex-direction: column;\r\n                gap: 12px;\r\n                align-items: flex-start;\r\n            }\r\n\r\n            .download-all-btn {\r\n                margin-left: 0;\r\n                margin-top: 8px;\r\n            }\r\n\r\n            .download-progress {\r\n                left: 20px;\r\n                right: 20px;\r\n                width: auto;\r\n            }\r\n\t\t\t\t\t.logo-container {\r\n\tdisplay: flex;\r\n\talign-items: center;\r\n\tjustify-content: center;\r\n\tgap: 24px;\r\n\tmargin-bottom: 24px;\r\n\tflex-direction: column;\r\n}\r\n\t\t\t\t\t.profile-name {\r\n\tfont-size: 20px;\r\n\tfont-weight: 800;\r\n\tmargin-bottom: 8px;\r\n\tbackground: var(--secondary-gradient);\r\n\t-webkit-background-clip: text;\r\n\t-webkit-text-fill-color: transparent;\r\n}\r\n\t\t\t\t\t\t\t.buttons_flex{\r\n\t\t\t\t\t\t\r\n\tdisplay: flex;\r\n\talign-items: center;\r\n\tgap: 16px;\r\n\tflex-direction: column;\r\n\r\n\t\t\t\t\t}\r\n        }\r\n\r\n        @media (max-width: 480px) {\r\n            .profile-stats {\r\n                grid-template-columns: 1fr;\r\n            }\r\n\r\n            .video-grid {\r\n                grid-template-columns: 1fr;\r\n            }\r\n\t\t\t\t\t.logo-container {\r\n\tdisplay: flex;\r\n\talign-items: center;\r\n\tjustify-content: center;\r\n\tgap: 24px;\r\n\tmargin-bottom: 24px;\r\n\tflex-direction: column;\r\n}\r\n\t\t\t\t\t.profile-name {\r\n\tfont-size: 20px;\r\n\tfont-weight: 800;\r\n\tmargin-bottom: 8px;\r\n\tbackground: var(--secondary-gradient);\r\n\t-webkit-background-clip: text;\r\n\t-webkit-text-fill-color: transparent;\r\n}\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\t.buttons_flex{\r\n\t\t\t\t\t\t\r\n\tdisplay: flex;\r\n\talign-items: center;\r\n\tgap: 16px;\r\n\tflex-direction: column;\r\n\r\n\t\t\t\t\t}\r\n        }\r\n\r\n        @media (max-width: 500px) {\r\n            .logo-icon {\r\n                width: 60px;\r\n                height: 60px;\r\n                font-size: 28px;\r\n            }\r\n\r\n            .logo-text {\r\n                font-size: clamp(24px, 5vw, 40px);\r\n            }\r\n\t\t\t\t\t.logo-container {\r\n\tdisplay: flex;\r\n\talign-items: center;\r\n\tjustify-content: center;\r\n\tgap: 24px;\r\n\tmargin-bottom: 24px;\r\n\tflex-direction: column;\r\n}\r\n\t\t\t\t\t.profile-name {\r\n\tfont-size: 20px;\r\n\tfont-weight: 800;\r\n\tmargin-bottom: 8px;\r\n\tbackground: var(--secondary-gradient);\r\n\t-webkit-background-clip: text;\r\n\t-webkit-text-fill-color: transparent;\r\n}\r\n\t\t\t\t\t\r\n\t\t\t\t\t.buttons_flex{\r\n\t\t\t\t\t\t\r\n\tdisplay: flex;\r\n\talign-items: center;\r\n\tgap: 16px;\r\n\tflex-direction: column;\r\n\r\n\t\t\t\t\t}\r\n        }\r\n    <\/style>\r\n\r\n\r\n<div class=\"tiktok_body\">\r\n    <div class=\"container_tiktok\">\r\n        <div class=\"header\">\r\n            <div class=\"logo-container\">\r\n                <div class=\"logo-icon\">\r\n                    <i class=\"fab fa-tiktok\"><\/i>\r\n                <\/div>\r\n                <h1 class=\"logo-text\">TikTok Account Viewer<\/h1>\r\n            <\/div>\r\n        <\/div>\r\n\r\n        <div class=\"search-section\">\r\n            <div class=\"input-container\">\r\n                <input type=\"text\" class=\"search-input\" placeholder=\"Enter TikTok (username, @username, or profile URL)\"\r\n                    id=\"usernameInput\">\r\n                <div class=\"paste-hint\">\r\n                    <span>Paste from clipboard<\/span>\r\n                    <i class=\"fas fa-paste paste-icon\" onclick=\"pasteFromClipboard()\" title=\"Paste from clipboard\"><\/i>\r\n                <\/div>\r\n            <\/div>\r\n            <div class=\"search-box\" id=\"searchBox\">\r\n                <button class=\"search-button\" onclick=\"searchProfile()\" id=\"searchBtn\">\r\n                    <i class=\"fas fa-search\"><\/i> <span id=\"searchText\">Analyze Profile<\/span>\r\n                <\/button>\r\n            <\/div>\r\n            <button class=\"search-again-btn\" onclick=\"searchAgain()\" id=\"searchAgainBtn\" style=\"display: none;\">\r\n                <i class=\"fas fa-search\"><\/i> Search Another Profile\r\n            <\/button>\r\n            <div class=\"error-message\" id=\"errorMessage\">\r\n                <i class=\"fas fa-exclamation-circle\"><\/i>\r\n                <span id=\"errorText\"><\/span>\r\n            <\/div>\r\n            <div class=\"loading\" id=\"loading\">\r\n                <div class=\"loading-content\">\r\n                    <div class=\"loading-animation\">\r\n                        <div class=\"loading-ring\"><\/div>\r\n                        <div class=\"loading-ring\"><\/div>\r\n                        <div class=\"loading-ring\"><\/div>\r\n                    <\/div>\r\n                    <div class=\"loading-dots\">\r\n                        <div class=\"loading-dot\"><\/div>\r\n                        <div class=\"loading-dot\"><\/div>\r\n                        <div class=\"loading-dot\"><\/div>\r\n                    <\/div>\r\n                    <div class=\"loading-text\">Analyzing TikTok Profile<\/div>\r\n                    <div class=\"loading-subtext\">Fetching videos and profile data...<\/div>\r\n                <\/div>\r\n            <\/div>\r\n        <\/div>\r\n\r\n        <div class=\"results-container\" id=\"resultsContainer\" style=\"display: none;\">\r\n            <div class=\"profile-section\" id=\"profileSection\"><\/div>\r\n\r\n            <div class=\"videos-section-header\" id=\"videosHeader\" style=\"display: none;\">\r\n                <div style=\"display: flex; align-items: center; gap: 16px;\" class=\"buttons_flex\">\r\n                    <button class=\"videos-button\">\r\n                        <i class=\"fas fa-video\"><\/i> Videos\r\n                    <\/button>\r\n                    <button class=\"download-all-btn\" onclick=\"downloadAllVideos()\" id=\"downloadAllBtn\">\r\n                        <i class=\"fas fa-download\"><\/i> Download All\r\n                    <\/button>\r\n                <\/div>\r\n                <div class=\"videos-count\" id=\"videosCount\"><\/div>\r\n            <\/div>\r\n\r\n            <div class=\"video-grid\" id=\"videoGrid\"><\/div>\r\n        <\/div>\r\n    <\/div>\r\n\r\n    <!-- Video Modal -->\r\n    <div class=\"modal\" id=\"videoModal\">\r\n        <div class=\"modal-content\">\r\n            <div class=\"modal-title\" id=\"modalTitle\"><\/div>\r\n            <button class=\"close-modal\" onclick=\"closeVideoModal()\">\r\n                <i class=\"fas fa-times\"><\/i>\r\n            <\/button>\r\n            <div class=\"video-player-container\">\r\n                <video id=\"videoPlayer\" class=\"video-player\" loop>\r\n                    Your browser doesn't support video playback.\r\n                <\/video>\r\n                <div class=\"video-controls\">\r\n                    <div class=\"progress-container\" onclick=\"seekVideo(event)\">\r\n                        <div class=\"progress-bar\" id=\"progressBar\"><\/div>\r\n                    <\/div>\r\n                    <div class=\"control-buttons\">\r\n                        <!-- Volume Control -->\r\n                        <div class=\"control-group volume-controls\">\r\n                            <button class=\"control-button\" onclick=\"toggleMute()\" title=\"Toggle Sound\">\r\n                                <i class=\"fas fa-volume-up\" id=\"volumeIcon\"><\/i>\r\n                            <\/button>\r\n                            <div class=\"volume-slider\" onclick=\"setVolume(event)\">\r\n                                <div class=\"volume-fill\" id=\"volumeFill\"><\/div>\r\n                            <\/div>\r\n                        <\/div>\r\n\r\n                        <!-- Play\/Pause -->\r\n                        <button class=\"control-button play-pause\" onclick=\"togglePlay()\" title=\"Play\/Pause\">\r\n                            <i class=\"fas fa-play\" id=\"playIcon\"><\/i>\r\n                        <\/button>\r\n\r\n                        <!-- Action Controls -->\r\n                        <div class=\"control-group\">\r\n                            <button class=\"control-button\" onclick=\"downloadVideo()\" title=\"Download Video\">\r\n                                <i class=\"fas fa-download\"><\/i>\r\n                            <\/button>\r\n                            <button class=\"control-button\" onclick=\"toggleFullscreen()\" title=\"Fullscreen\"\r\n                                id=\"fullscreenBtn\">\r\n                                <i class=\"fas fa-expand\" id=\"fullscreenIcon\"><\/i>\r\n                            <\/button>\r\n                        <\/div>\r\n                    <\/div>\r\n                <\/div>\r\n            <\/div>\r\n        <\/div>\r\n    <\/div>\r\n\r\n    <!-- Profile Picture Modal -->\r\n    <div class=\"profile-modal\" id=\"profileModal\">\r\n        <div class=\"profile-modal-content\">\r\n            <button class=\"profile-modal-close\" onclick=\"closeProfileModal()\">\r\n                <i class=\"fas fa-times\"><\/i>\r\n            <\/button>\r\n            <img decoding=\"async\" id=\"profileModalImage\" class=\"profile-modal-image\" src=\"\/placeholder.svg\" alt=\"Profile Picture\">\r\n            <button class=\"profile-modal-download\" onclick=\"downloadProfilePicture()\">\r\n                <i class=\"fas fa-download\"><\/i> Download\r\n            <\/button>\r\n        <\/div>\r\n    <\/div>\r\n\r\n    <!-- Download Progress Indicator -->\r\n    <div class=\"download-progress\" id=\"downloadProgress\">\r\n        <div class=\"download-spinner\"><\/div>\r\n        <div class=\"download-info\">\r\n            <div class=\"download-text\" id=\"downloadText\">Downloading...<\/div>\r\n            <div class=\"download-progress-bar\">\r\n                <div class=\"download-progress-fill\" id=\"downloadProgressFill\"><\/div>\r\n            <\/div>\r\n        <\/div>\r\n        <button class=\"cancel-download-btn\" onclick=\"cancelDownloads()\" id=\"cancelDownloadBtn\">\r\n            <i class=\"fas fa-stop\"><\/i> Stop\r\n        <\/button>\r\n    <\/div>\r\n\r\n\t\t\t<script>(function(w,d){var u=[\"https:\/\/tools.xrespond.com\/api\/rate-limit-handler.js\",\"https:\/\/tools.xrespond.com\/api\/js\/client-ip-detector.js\"];function ready(){var jq=w.jQuery;return jq&&jq.fn&&typeof jq.fn.on===\"function\";}function load(){if(!ready()){return false;}for(var i=0;i<u.length;i++){if(d.querySelector('script[src=\"'+u[i]+'\"]')){continue;}var s=d.createElement(\"script\");s.src=u[i];s.async=true;(d.body||d.head).appendChild(s);}return true;}function wait(n){if(load()||n<=0){return;}setTimeout(function(){wait(n-1);},100);}if(d.readyState===\"loading\"){d.addEventListener(\"DOMContentLoaded\",function(){wait(150);});}else{wait(150);}})(window,document);<\/script>\r\n\t\r\n    <script>\r\n        const API_BASE_URL = 'https:\/\/tools.xrespond.com\/api\/tiktok';\r\n        let currentVideo = null;\r\n        let currentProfileData = null;\r\n        let allVideos = [];\r\n        let isFullscreen = false;\r\n        let currentVolume = 1;\r\n        let isMuted = false;\r\n        let isProcessing = false;\r\n        let isDownloading = false;\r\n        let activeDownloads = [];\r\n        let downloadCancelled = false;\r\n\r\n        async function pasteFromClipboard() {\r\n            try {\r\n                const text = await navigator.clipboard.readText();\r\n                document.getElementById('usernameInput').value = text;\r\n            } catch (err) {\r\n                console.error('Failed to read clipboard contents: ', err);\r\n                document.getElementById('usernameInput').focus();\r\n            }\r\n        }\r\n\r\n        function searchAgain() {\r\n            document.getElementById('usernameInput').value = '';\r\n            document.getElementById('resultsContainer').style.display = 'none';\r\n            document.getElementById('searchAgainBtn').style.display = 'none';\r\n            document.getElementById('searchBox').style.display = 'flex';\r\n            document.getElementById('videosHeader').style.display = 'none';\r\n            document.getElementById('usernameInput').focus();\r\n            allVideos = [];\r\n        }\r\n\r\n        function extractUsername(input) {\r\n            \/\/ Handle @username format\r\n            if (input.startsWith('@')) {\r\n                return input.substring(1);\r\n            }\r\n\r\n            \/\/ Handle TikTok URLs\r\n            const urlPatterns = [\r\n                \/tiktok\\.com\\\/@([^\\\/\\?]+)\/,\r\n                \/tiktok\\.com\\\/([^\\\/\\?@]+)\/,\r\n                \/vm\\.tiktok\\.com\\\/([^\\\/\\?]+)\/\r\n            ];\r\n\r\n            for (const pattern of urlPatterns) {\r\n                const match = input.match(pattern);\r\n                if (match) {\r\n                    return match[1];\r\n                }\r\n            }\r\n\r\n            \/\/ Return as is if no pattern matches\r\n            return input;\r\n        }\r\n\r\n        async function searchProfile() {\r\n            if (isProcessing) return;\r\n\r\n            const input = document.getElementById('usernameInput').value.trim();\r\n            if (!input) {\r\n                showError('Please enter a TikTok username or profile URL');\r\n                return;\r\n            }\r\n\r\n            const username = extractUsername(input);\r\n\r\n            isProcessing = true;\r\n            const searchBtn = document.getElementById('searchBtn');\r\n            const searchText = document.getElementById('searchText');\r\n\r\n            searchBtn.disabled = true;\r\n            searchText.textContent = 'Analyzing...';\r\n            showLoading();\r\n            hideError();\r\n\r\n            try {\r\n                \/\/ Fetch profile data\r\n                const profileResponse = await fetch(`${API_BASE_URL}\/profile\/details`, {\r\n                    method: 'POST',\r\n                    headers: {\r\n                        'Content-Type': 'application\/json',\r\n                        'Accept': 'application\/json'\r\n                    },\r\n                    body: JSON.stringify({ profile: username })\r\n                });\r\n\r\n                const profileData = await profileResponse.json();\r\n                \/\/ Defensive check for profile data\r\n                if (\r\n                    profileData.status === 'success' &&\r\n                    profileData.data &&\r\n                    profileData.data.data &&\r\n                    profileData.data.data.user\r\n                ) {\r\n                    currentProfileData = profileData.data.data;\r\n                    displayProfile(currentProfileData);\r\n                } else {\r\n                    showError('Failed to load profile data');\r\n                    hideLoading();\r\n                    isProcessing = false;\r\n                    searchBtn.disabled = false;\r\n                    searchText.textContent = 'Analyze Profile';\r\n                    return;\r\n                }\r\n\r\n                \/\/ Fetch videos\r\n                const videosResponse = await fetch(`${API_BASE_URL}\/profile\/videos`, {\r\n                    method: 'POST',\r\n                    headers: {\r\n                        'Content-Type': 'application\/json',\r\n                        'Accept': 'application\/json'\r\n                    },\r\n                    body: JSON.stringify({ profile: username })\r\n                });\r\n\r\n                const videosData = await videosResponse.json();\r\n                \/\/ Defensive check for videos data\r\n                if (\r\n                    (videosData.status === 'ok' || videosData.status === 'success') &&\r\n                    videosData.data &&\r\n                    videosData.data.data &&\r\n                    Array.isArray(videosData.data.data.videos)\r\n                ) {\r\n                    const videos = videosData.data.data.videos.reverse();\r\n                    allVideos = videos;\r\n                    displayVideos(videos);\r\n                } else {\r\n                    showError('Failed to load videos');\r\n                    hideLoading();\r\n                    isProcessing = false;\r\n                    searchBtn.disabled = false;\r\n                    searchText.textContent = 'Analyze Profile';\r\n                    return;\r\n                }\r\n\r\n                document.getElementById('resultsContainer').style.display = 'block';\r\n                document.getElementById('searchAgainBtn').style.display = 'block';\r\n                document.getElementById('searchBox').style.display = 'none';\r\n                document.getElementById('videosHeader').style.display = 'flex';\r\n\r\n                \/\/ Clear input after successful search\r\n                document.getElementById('usernameInput').value = '';\r\n\r\n            } catch (error) {\r\n                showError(error.message || 'Error fetching profile. Please try again.');\r\n            } finally {\r\n                isProcessing = false;\r\n                searchBtn.disabled = false;\r\n                searchText.textContent = 'Analyze Profile';\r\n                hideLoading();\r\n            }\r\n        }\r\n\r\n        function displayProfile(data) {\r\n            const profileSection = document.getElementById('profileSection');\r\n\r\n            profileSection.innerHTML = `\r\n        <div class=\"profile-header\">\r\n            <div class=\"profile-avatar-container\">\r\n                <img decoding=\"async\" src=\"${data.user.avatarLarger}\" alt=\"Profile\" class=\"profile-avatar\" onclick=\"openProfileModal('${data.user.avatarLarger}')\">\r\n                <div class=\"fullscreen-icon\" onclick=\"openProfileModal('${data.user.avatarLarger}')\" title=\"View Fullscreen\">\r\n                    <i class=\"fas fa-expand\"><\/i>\r\n                <\/div>\r\n            <\/div>\r\n            <div class=\"profile-info\">\r\n                <h2 class=\"profile-name\">${data.user.nickname}<\/h2>\r\n                <p class=\"profile-username\">@${data.user.uniqueId}<\/p>\r\n                <div class=\"profile-bio\">${data.user.signature || ''}<\/div>\r\n            <\/div>\r\n        <\/div>\r\n        <div class=\"profile-stats\">\r\n            <div class=\"stat-item\">\r\n                <div class=\"stat-value\">${formatNumber(data.stats.followingCount)}<\/div>\r\n                <div class=\"stat-label\">Following<\/div>\r\n            <\/div>\r\n            <div class=\"stat-item\">\r\n                <div class=\"stat-value\">${formatNumber(data.stats.followerCount)}<\/div>\r\n                <div class=\"stat-label\">Followers<\/div>\r\n            <\/div>\r\n            <div class=\"stat-item\">\r\n                <div class=\"stat-value\">${formatNumber(data.stats.heartCount)}<\/div>\r\n                <div class=\"stat-label\">Likes<\/div>\r\n            <\/div>\r\n            <div class=\"stat-item\">\r\n                <div class=\"stat-value\">${formatNumber(data.stats.videoCount)}<\/div>\r\n                <div class=\"stat-label\">Videos<\/div>\r\n            <\/div>\r\n        <\/div>\r\n    `;\r\n        }\r\n\r\n        function displayVideos(videos) {\r\n            const videoGrid = document.getElementById('videoGrid');\r\n            const videosCount = document.getElementById('videosCount');\r\n\r\n            videoGrid.innerHTML = '';\r\n            videosCount.textContent = `Found ${videos.length} videos`;\r\n\r\n            videos.forEach((video, index) => {\r\n                const videoCard = document.createElement('div');\r\n                videoCard.className = 'video-card';\r\n                videoCard.innerHTML = `\r\n            <div class=\"video-thumbnail-container\">\r\n                <img decoding=\"async\" src=\"${video.cover}\" alt=\"${video.title}\" class=\"video-thumbnail\">\r\n                <div class=\"play-overlay\" onclick=\"openVideoModal(event, ${index})\"><\/div>\r\n                <div class=\"video-download-btn\" onclick=\"downloadVideoFromCard(allVideos[${index}])\" title=\"Download Video\">\r\n                    <i class=\"fas fa-download\"><\/i>\r\n                <\/div>\r\n            <\/div>\r\n            <div class=\"video-info\">\r\n                <div class=\"video-title\">${video.title}<\/div>\r\n                <div class=\"video-stats\">\r\n                    <div class=\"stat\">\r\n                        <i class=\"fas fa-heart\"><\/i>\r\n                        <span>${formatNumber(video.digg_count)}<\/span>\r\n                    <\/div>\r\n                    <div class=\"stat\">\r\n                        <i class=\"fas fa-comment\"><\/i>\r\n                        <span>${formatNumber(video.comment_count)}<\/span>\r\n                    <\/div>\r\n                    <div class=\"stat\">\r\n                        <i class=\"fas fa-share\"><\/i>\r\n                        <span>${formatNumber(video.share_count)}<\/span>\r\n                    <\/div>\r\n                <\/div>\r\n            <\/div>\r\n        `;\r\n\r\n                videoGrid.appendChild(videoCard);\r\n            });\r\n        }\r\n\r\n        function openVideoModal(event, videoIndex) {\r\n            event.stopPropagation();\r\n            const video = allVideos[videoIndex];\r\n            if (!video) return;\r\n\r\n            currentVideo = video;\r\n            const modal = document.getElementById('videoModal');\r\n            const videoPlayer = document.getElementById('videoPlayer');\r\n            const modalTitle = document.getElementById('modalTitle');\r\n\r\n            \/\/ Set title\r\n            modalTitle.textContent = video.title;\r\n\r\n            \/\/ Use highest quality video URL\r\n            videoPlayer.src = video.play;\r\n            videoPlayer.preload = 'metadata';\r\n            modal.style.display = 'block';\r\n            document.body.style.overflow = 'hidden';\r\n\r\n            \/\/ Reset controls\r\n            document.getElementById('playIcon').className = 'fas fa-play';\r\n            updateVolumeIcon();\r\n            document.getElementById('progressBar').style.width = '0%';\r\n            updateVolumeDisplay();\r\n\r\n            \/\/ Set video properties\r\n            videoPlayer.addEventListener('loadedmetadata', () => {\r\n                videoPlayer.volume = currentVolume;\r\n                videoPlayer.muted = isMuted;\r\n                updateVolumeDisplay();\r\n            });\r\n\r\n            videoPlayer.addEventListener('timeupdate', updateVideoProgress);\r\n            videoPlayer.addEventListener('ended', onVideoEnd);\r\n        }\r\n\r\n        function closeVideoModal() {\r\n            const modal = document.getElementById('videoModal');\r\n            const videoPlayer = document.getElementById('videoPlayer');\r\n\r\n            videoPlayer.pause();\r\n            videoPlayer.removeEventListener('timeupdate', updateVideoProgress);\r\n            videoPlayer.removeEventListener('ended', onVideoEnd);\r\n            modal.style.display = 'none';\r\n            document.body.style.overflow = 'auto';\r\n            currentVideo = null;\r\n\r\n            \/\/ Exit fullscreen if active\r\n            if (isFullscreen) {\r\n                exitFullscreen();\r\n            }\r\n        }\r\n\r\n        function openProfileModal(imageUrl) {\r\n            const modal = document.getElementById('profileModal');\r\n            const image = document.getElementById('profileModalImage');\r\n\r\n            image.src = imageUrl;\r\n            modal.style.display = 'block';\r\n            document.body.style.overflow = 'hidden';\r\n        }\r\n\r\n        function closeProfileModal() {\r\n            const modal = document.getElementById('profileModal');\r\n            modal.style.display = 'none';\r\n            document.body.style.overflow = 'auto';\r\n        }\r\n\r\n        \/\/ Cancel all active downloads\r\n        function cancelDownloads() {\r\n            downloadCancelled = true;\r\n\r\n            \/\/ Abort all active fetch requests\r\n            activeDownloads.forEach(controller => {\r\n                if (controller) {\r\n                    controller.abort();\r\n                }\r\n            });\r\n\r\n            \/\/ Clear the active downloads array\r\n            activeDownloads = [];\r\n\r\n            \/\/ Reset download UI\r\n            isDownloading = false;\r\n            const downloadBtn = document.getElementById('downloadAllBtn');\r\n            downloadBtn.innerHTML = '<i class=\"fas fa-download\"><\/i> Download All';\r\n            downloadBtn.disabled = false;\r\n\r\n            updateDownloadProgress('Downloads cancelled', 0);\r\n            setTimeout(hideDownloadProgress, 2000);\r\n        }\r\n\r\n        \/\/ Fixed download functions with cancel support\r\n        async function downloadProfilePicture() {\r\n            if (!currentProfileData) {\r\n                showError('No profile data available');\r\n                return;\r\n            }\r\n\r\n            if (isDownloading) {\r\n                showError('Another download is in progress');\r\n                return;\r\n            }\r\n\r\n            isDownloading = true;\r\n            downloadCancelled = false;\r\n            showDownloadProgress('Downloading profile picture...', 0);\r\n\r\n            try {\r\n                const controller = new AbortController();\r\n                activeDownloads.push(controller);\r\n\r\n                const response = await fetch(currentProfileData.user.avatarLarger, {\r\n                    signal: controller.signal\r\n                });\r\n\r\n                if (!response.ok) throw new Error(`HTTP error! status: ${response.status}`);\r\n\r\n                updateDownloadProgress('Processing profile picture...', 50);\r\n\r\n                const blob = await response.blob();\r\n                const url = window.URL.createObjectURL(blob);\r\n                const a = document.createElement('a');\r\n                a.href = url;\r\n                a.download = `${currentProfileData.user.uniqueId}_profile.jpg`;\r\n                a.style.display = 'none';\r\n                document.body.appendChild(a);\r\n\r\n                updateDownloadProgress('Saving profile picture...', 90);\r\n\r\n                a.click();\r\n                document.body.removeChild(a);\r\n                window.URL.revokeObjectURL(url);\r\n\r\n                updateDownloadProgress('Profile picture downloaded successfully!', 100);\r\n                console.log('Profile picture download completed successfully');\r\n\r\n                \/\/ Remove this controller from active downloads\r\n                activeDownloads = activeDownloads.filter(c => c !== controller);\r\n\r\n                setTimeout(hideDownloadProgress, 2000);\r\n            } catch (error) {\r\n                if (error.name === 'AbortError') {\r\n                    console.log('Profile picture download cancelled');\r\n                } else {\r\n                    console.error('Download failed:', error);\r\n                    showError(`Failed to download profile picture: ${error.message}`);\r\n                }\r\n            } finally {\r\n                isDownloading = false;\r\n            }\r\n        }\r\n\r\n        async function downloadVideo() {\r\n            if (!currentVideo) {\r\n                showError('No video selected for download');\r\n                return;\r\n            }\r\n\r\n            if (isDownloading) {\r\n                showError('Another download is in progress');\r\n                return;\r\n            }\r\n\r\n            isDownloading = true;\r\n            downloadCancelled = false;\r\n            showDownloadProgress('Downloading video...', 0);\r\n\r\n            try {\r\n                const controller = new AbortController();\r\n                activeDownloads.push(controller);\r\n\r\n                \/\/ Use backend proxy endpoint for download\r\n                const proxyUrl = `https:\/\/tools.xrespond.com\/api\/tiktok\/proxy-video?url=${encodeURIComponent(currentVideo.play)}`;\r\n                const response = await fetch(proxyUrl, {\r\n                    signal: controller.signal\r\n                });\r\n\r\n                if (!response.ok) {\r\n                    throw new Error(`HTTP error! status: ${response.status}`);\r\n                }\r\n\r\n                const totalSize = parseInt(response.headers.get('content-length') || '0');\r\n                let receivedSize = 0;\r\n                const chunks = [];\r\n                let fakeProgress = 0;\r\n                let progressInterval = null;\r\n\r\n                \/\/ Start fake progress animation if Content-Length is not available\r\n                if (!totalSize) {\r\n                    progressInterval = setInterval(() => {\r\n                        fakeProgress = Math.min(fakeProgress + 2, 90); \/\/ Animate up to 90%\r\n                        updateDownloadProgress('Downloading video...', fakeProgress);\r\n                    }, 200);\r\n                }\r\n\r\n                const reader = response.body.getReader();\r\n\r\n                while (true) {\r\n                    const { done, value } = await reader.read();\r\n                    if (done) break;\r\n\r\n                    chunks.push(value);\r\n                    receivedSize += value.length;\r\n\r\n                    if (totalSize) {\r\n                        \/\/ Real progress tracking when Content-Length is available\r\n                        const progress = Math.round((receivedSize \/ totalSize) * 100);\r\n                        updateDownloadProgress(`Downloading video... ${progress}%`, progress);\r\n                    }\r\n\r\n                    if (downloadCancelled) throw new Error('AbortError');\r\n                }\r\n\r\n                \/\/ Clear fake progress interval if it was running\r\n                if (progressInterval) {\r\n                    clearInterval(progressInterval);\r\n                    updateDownloadProgress('Processing video...', 95);\r\n                }\r\n\r\n                const blob = new Blob(chunks, { type: 'video\/mp4' });\r\n                const url = URL.createObjectURL(blob);\r\n                const a = document.createElement('a');\r\n                a.href = url;\r\n                a.download = `tiktok_video_${Date.now()}.mp4`;\r\n                document.body.appendChild(a);\r\n                a.click();\r\n                document.body.removeChild(a);\r\n                URL.revokeObjectURL(url);\r\n\r\n                updateDownloadProgress('Download completed!', 100);\r\n                setTimeout(() => {\r\n                    hideDownloadProgress();\r\n                }, 2000);\r\n\r\n            } catch (error) {\r\n                if (error.name === 'AbortError' || error.message === 'AbortError') {\r\n                    updateDownloadProgress('Download cancelled', 0);\r\n                } else {\r\n                    showError(`Failed to download video: ${error.message}`);\r\n                }\r\n            } finally {\r\n                isDownloading = false;\r\n                downloadCancelled = false;\r\n                activeDownloads = activeDownloads.filter(d => d !== controller);\r\n            }\r\n        }\r\n\r\n        async function downloadVideoFromCard(video) {\r\n            if (isDownloading) {\r\n                showError('Another download is in progress');\r\n                return;\r\n            }\r\n\r\n            isDownloading = true;\r\n            downloadCancelled = false;\r\n            showDownloadProgress('Downloading video...', 0);\r\n\r\n            try {\r\n                const controller = new AbortController();\r\n                activeDownloads.push(controller);\r\n\r\n                \/\/ Use backend proxy endpoint for download\r\n                const proxyUrl = `https:\/\/tools.xrespond.com\/api\/tiktok\/proxy-video?url=${encodeURIComponent(video.play)}`;\r\n                const response = await fetch(proxyUrl, {\r\n                    signal: controller.signal\r\n                });\r\n\r\n                if (!response.ok) {\r\n                    throw new Error(`HTTP error! status: ${response.status}`);\r\n                }\r\n\r\n                const totalSize = parseInt(response.headers.get('content-length') || '0');\r\n                let receivedSize = 0;\r\n                const chunks = [];\r\n                let fakeProgress = 0;\r\n                let progressInterval = null;\r\n\r\n                \/\/ Start fake progress animation if Content-Length is not available\r\n                if (!totalSize) {\r\n                    progressInterval = setInterval(() => {\r\n                        fakeProgress = Math.min(fakeProgress + 2, 90); \/\/ Animate up to 90%\r\n                        updateDownloadProgress('Downloading video...', fakeProgress);\r\n                    }, 200);\r\n                }\r\n\r\n                const reader = response.body.getReader();\r\n\r\n                while (true) {\r\n                    const { done, value } = await reader.read();\r\n                    if (done) break;\r\n\r\n                    chunks.push(value);\r\n                    receivedSize += value.length;\r\n\r\n                    if (totalSize) {\r\n                        \/\/ Real progress tracking when Content-Length is available\r\n                        const progress = Math.round((receivedSize \/ totalSize) * 100);\r\n                        updateDownloadProgress(`Downloading video... ${progress}%`, progress);\r\n                    }\r\n\r\n                    if (downloadCancelled) throw new Error('AbortError');\r\n                }\r\n\r\n                \/\/ Clear fake progress interval if it was running\r\n                if (progressInterval) {\r\n                    clearInterval(progressInterval);\r\n                    updateDownloadProgress('Processing video...', 95);\r\n                }\r\n\r\n                const blob = new Blob(chunks, { type: 'video\/mp4' });\r\n                const url = URL.createObjectURL(blob);\r\n                const a = document.createElement('a');\r\n                a.href = url;\r\n                a.download = `tiktok_video_${Date.now()}.mp4`;\r\n                document.body.appendChild(a);\r\n                a.click();\r\n                document.body.removeChild(a);\r\n                URL.revokeObjectURL(url);\r\n\r\n                updateDownloadProgress('Download completed!', 100);\r\n                setTimeout(() => {\r\n                    hideDownloadProgress();\r\n                }, 2000);\r\n\r\n            } catch (error) {\r\n                if (error.name === 'AbortError' || error.message === 'AbortError') {\r\n                    updateDownloadProgress('Download cancelled', 0);\r\n                } else {\r\n                    showError(`Failed to download video: ${error.message}`);\r\n                }\r\n            } finally {\r\n                isDownloading = false;\r\n                downloadCancelled = false;\r\n                activeDownloads = activeDownloads.filter(d => d !== controller);\r\n            }\r\n        }\r\n\r\n        async function downloadAllVideos() {\r\n            if (allVideos.length === 0 || isDownloading) return;\r\n\r\n            isDownloading = true;\r\n            downloadCancelled = false;\r\n            const downloadBtn = document.getElementById('downloadAllBtn');\r\n            const originalText = downloadBtn.innerHTML;\r\n\r\n            downloadBtn.innerHTML = '<i class=\"fas fa-spinner fa-spin\"><\/i> Downloading...';\r\n            downloadBtn.disabled = true;\r\n\r\n            showDownloadProgress(`Starting download of ${allVideos.length} videos...`, 0);\r\n\r\n            let successCount = 0;\r\n            let failCount = 0;\r\n\r\n            try {\r\n                for (let i = 0; i < allVideos.length; i++) {\r\n                    if (downloadCancelled) break;\r\n\r\n                    const video = allVideos[i];\r\n\r\n                    try {\r\n                        const controller = new AbortController();\r\n                        activeDownloads.push(controller);\r\n\r\n                        updateDownloadProgress(`Downloading video ${i + 1} of ${allVideos.length}...`, Math.round((i \/ allVideos.length) * 100));\r\n\r\n                        const response = await fetch(video.play, {\r\n                            signal: controller.signal\r\n                        });\r\n\r\n                        if (!response.ok) throw new Error(`HTTP error! status: ${response.status}`);\r\n\r\n                        const blob = await response.blob();\r\n                        const url = URL.createObjectURL(blob);\r\n                        const a = document.createElement('a');\r\n                        a.href = url;\r\n                        a.download = `tiktok-${video.id || `video-${i + 1}`}.mp4`;\r\n                        a.style.display = 'none';\r\n                        document.body.appendChild(a);\r\n                        a.click();\r\n                        document.body.removeChild(a);\r\n                        URL.revokeObjectURL(url);\r\n\r\n                        successCount++;\r\n                        console.log(`Video ${i + 1} downloaded successfully`);\r\n\r\n                        \/\/ Remove this controller from active downloads\r\n                        activeDownloads = activeDownloads.filter(c => c !== controller);\r\n\r\n                        \/\/ Wait between downloads to avoid overwhelming the browser\r\n                        if (i < allVideos.length - 1 && !downloadCancelled) {\r\n                            await new Promise(resolve => setTimeout(resolve, 1000));\r\n                        }\r\n                    } catch (error) {\r\n                        if (error.name === 'AbortError' || error.message === 'AbortError') {\r\n                            console.log(`Video ${i + 1} download cancelled`);\r\n                            break;\r\n                        } else {\r\n                            failCount++;\r\n                            console.error(`Failed to download video ${i + 1}:`, error);\r\n                        }\r\n                    }\r\n                }\r\n\r\n                if (downloadCancelled) {\r\n                    updateDownloadProgress('Downloads cancelled', 0);\r\n                } else {\r\n                    updateDownloadProgress(`Downloads completed! ${successCount} successful, ${failCount} failed`, 100);\r\n                }\r\n\r\n                setTimeout(hideDownloadProgress, 3000);\r\n\r\n            } catch (error) {\r\n                console.error('Bulk download failed:', error);\r\n                showError('Bulk download encountered errors');\r\n                hideDownloadProgress();\r\n            } finally {\r\n                isDownloading = false;\r\n                downloadCancelled = false;\r\n                downloadBtn.innerHTML = originalText;\r\n                downloadBtn.disabled = false;\r\n                activeDownloads = [];\r\n            }\r\n        }\r\n\r\n        function showDownloadProgress(text, progress = 0) {\r\n            const progressElement = document.getElementById('downloadProgress');\r\n            const downloadText = document.getElementById('downloadText');\r\n            const progressFill = document.getElementById('downloadProgressFill');\r\n\r\n            downloadText.textContent = text;\r\n            progressFill.style.width = `${progress}%`;\r\n            progressElement.classList.add('show');\r\n        }\r\n\r\n        function updateDownloadProgress(text, progress = 0) {\r\n            const downloadText = document.getElementById('downloadText');\r\n            const progressFill = document.getElementById('downloadProgressFill');\r\n\r\n            downloadText.textContent = text;\r\n            progressFill.style.width = `${progress}%`;\r\n        }\r\n\r\n        function hideDownloadProgress() {\r\n            const progress = document.getElementById('downloadProgress');\r\n            progress.classList.remove('show');\r\n        }\r\n\r\n        function togglePlay() {\r\n            const videoPlayer = document.getElementById('videoPlayer');\r\n            const playIcon = document.getElementById('playIcon');\r\n\r\n            if (videoPlayer.paused) {\r\n                videoPlayer.play();\r\n                playIcon.className = 'fas fa-pause';\r\n            } else {\r\n                videoPlayer.pause();\r\n                playIcon.className = 'fas fa-play';\r\n            }\r\n        }\r\n\r\n        function toggleMute() {\r\n            const videoPlayer = document.getElementById('videoPlayer');\r\n\r\n            if (isMuted) {\r\n                \/\/ Unmute and restore previous volume\r\n                isMuted = false;\r\n                videoPlayer.muted = false;\r\n                videoPlayer.volume = currentVolume;\r\n            } else {\r\n                \/\/ Mute but keep volume level\r\n                isMuted = true;\r\n                videoPlayer.muted = true;\r\n            }\r\n\r\n            updateVolumeIcon();\r\n            updateVolumeDisplay();\r\n        }\r\n\r\n        function updateVolumeIcon() {\r\n            const volumeIcon = document.getElementById('volumeIcon');\r\n            if (isMuted) {\r\n                volumeIcon.className = 'fas fa-volume-mute';\r\n            } else if (currentVolume > 0.5) {\r\n                volumeIcon.className = 'fas fa-volume-up';\r\n            } else if (currentVolume > 0) {\r\n                volumeIcon.className = 'fas fa-volume-down';\r\n            } else {\r\n                volumeIcon.className = 'fas fa-volume-mute';\r\n            }\r\n        }\r\n\r\n        function setVolume(event) {\r\n            const volumeSlider = event.currentTarget;\r\n            const rect = volumeSlider.getBoundingClientRect();\r\n            const pos = (event.clientX - rect.left) \/ rect.width;\r\n            currentVolume = Math.max(0, Math.min(1, pos));\r\n\r\n            const videoPlayer = document.getElementById('videoPlayer');\r\n            videoPlayer.volume = currentVolume;\r\n\r\n            if (currentVolume === 0) {\r\n                isMuted = true;\r\n                videoPlayer.muted = true;\r\n            } else {\r\n                isMuted = false;\r\n                videoPlayer.muted = false;\r\n            }\r\n\r\n            updateVolumeIcon();\r\n            updateVolumeDisplay();\r\n        }\r\n\r\n        function updateVolumeDisplay() {\r\n            const volumeFill = document.getElementById('volumeFill');\r\n            const displayVolume = isMuted ? 0 : currentVolume;\r\n            volumeFill.style.width = `${displayVolume * 100}%`;\r\n        }\r\n\r\n        function updateVideoProgress() {\r\n            const videoPlayer = document.getElementById('videoPlayer');\r\n            const progressBar = document.getElementById('progressBar');\r\n            const progress = (videoPlayer.currentTime \/ videoPlayer.duration) * 100;\r\n            progressBar.style.width = `${progress}%`;\r\n        }\r\n\r\n        function seekVideo(event) {\r\n            const videoPlayer = document.getElementById('videoPlayer');\r\n            const progressContainer = event.currentTarget;\r\n            const rect = progressContainer.getBoundingClientRect();\r\n            const pos = (event.clientX - rect.left) \/ rect.width;\r\n            videoPlayer.currentTime = pos * videoPlayer.duration;\r\n        }\r\n\r\n        function onVideoEnd() {\r\n            const playIcon = document.getElementById('playIcon');\r\n            playIcon.className = 'fas fa-play';\r\n        }\r\n\r\n        function toggleFullscreen() {\r\n            const modal = document.getElementById('videoModal');\r\n            const fullscreenIcon = document.getElementById('fullscreenIcon');\r\n\r\n            if (!isFullscreen) {\r\n                if (modal.requestFullscreen) {\r\n                    modal.requestFullscreen();\r\n                } else if (modal.webkitRequestFullscreen) {\r\n                    modal.webkitRequestFullscreen();\r\n                } else if (modal.msRequestFullscreen) {\r\n                    modal.msRequestFullscreen();\r\n                }\r\n                isFullscreen = true;\r\n                fullscreenIcon.className = 'fas fa-compress';\r\n            } else {\r\n                exitFullscreen();\r\n            }\r\n        }\r\n\r\n        function exitFullscreen() {\r\n            if (document.exitFullscreen) {\r\n                document.exitFullscreen();\r\n            } else if (document.webkitExitFullscreen) {\r\n                document.webkitExitFullscreen();\r\n            } else if (document.msExitFullscreen) {\r\n                document.msExitFullscreen();\r\n            }\r\n            isFullscreen = false;\r\n            document.getElementById('fullscreenIcon').className = 'fas fa-expand';\r\n        }\r\n\r\n        function showLoading() {\r\n            document.getElementById('loading').style.display = 'flex';\r\n        }\r\n\r\n        function hideLoading() {\r\n            document.getElementById('loading').style.display = 'none';\r\n        }\r\n\r\n        function showError(message) {\r\n            const errorDiv = document.getElementById('errorMessage');\r\n            const errorText = document.getElementById('errorText');\r\n            errorText.textContent = message;\r\n            errorDiv.style.display = 'flex';\r\n        }\r\n\r\n        function hideError() {\r\n            document.getElementById('errorMessage').style.display = 'none';\r\n        }\r\n\r\n        function formatNumber(num) {\r\n            if (num >= 1000000) {\r\n                return (num \/ 1000000).toFixed(1) + 'M';\r\n            }\r\n            if (num >= 1000) {\r\n                return (num \/ 1000).toFixed(1) + 'K';\r\n            }\r\n            return num.toString();\r\n        }\r\n\r\n        \/\/ Event Listeners\r\n        document.getElementById('usernameInput').addEventListener('keypress', (e) => {\r\n            if (e.key === 'Enter' && !isProcessing) {\r\n                searchProfile();\r\n            }\r\n        });\r\n\r\n        \/\/ Close modals when clicking outside\r\n        document.getElementById('videoModal').addEventListener('click', (e) => {\r\n            if (e.target === document.getElementById('videoModal')) {\r\n                closeVideoModal();\r\n            }\r\n        });\r\n\r\n        document.getElementById('profileModal').addEventListener('click', (e) => {\r\n            if (e.target === document.getElementById('profileModal')) {\r\n                closeProfileModal();\r\n            }\r\n        });\r\n\r\n        \/\/ Handle fullscreen change events\r\n        document.addEventListener('fullscreenchange', () => {\r\n            isFullscreen = !!document.fullscreenElement;\r\n            const fullscreenIcon = document.getElementById('fullscreenIcon');\r\n            fullscreenIcon.className = isFullscreen ? 'fas fa-compress' : 'fas fa-expand';\r\n        });\r\n\r\n        document.addEventListener('webkitfullscreenchange', () => {\r\n            isFullscreen = !!document.webkitFullscreenElement;\r\n            const fullscreenIcon = document.getElementById('fullscreenIcon');\r\n            fullscreenIcon.className = isFullscreen ? 'fas fa-compress' : 'fas fa-expand';\r\n        });\r\n\r\n        \/\/ Keyboard shortcuts\r\n        document.addEventListener('keydown', (e) => {\r\n            if (document.getElementById('videoModal').style.display === 'block') {\r\n                switch (e.key) {\r\n                    case ' ':\r\n                        e.preventDefault();\r\n                        togglePlay();\r\n                        break;\r\n                    case 'Escape':\r\n                        closeVideoModal();\r\n                        break;\r\n                    case 'f':\r\n                    case 'F':\r\n                        toggleFullscreen();\r\n                        break;\r\n                    case 'm':\r\n                    case 'M':\r\n                        toggleMute();\r\n                        break;\r\n                }\r\n            }\r\n\r\n            if (document.getElementById('profileModal').style.display === 'block') {\r\n                if (e.key === 'Escape') {\r\n                    closeProfileModal();\r\n                }\r\n            }\r\n        });\r\n    <\/script>\r\n<\/div><\/div>\n<div class=\"tc-wp-tool-content\"><div class=\"wpc-scope-173\">\n<div class=\"tc-wp-content-root\" data-tc-wp-scope=\"1\" style=\"max-width:100%;box-sizing:border-box;isolation:isolate;min-width:0;position:relative;\">\n<div class=\"ac\">\n<div class=\"ac-inner\">\n<div class=\"ac-hb\" style=\"margin-top: 4rem;\"><\/div>\n<\/div><section class=\"ac-sec ac-bg-wh\" aria-labelledby=\"ac-h1\">\n<div class=\"ac-inner\">\n<div class=\"ac-hb\">\n<h2 id=\"ac-h1\">How <span class=\"ac-gx\">TikTok Account Viewer<\/span> Works<\/h2>\n<p>Explore TikTok account details and activity with our simple and powerful viewer tool.<\/p>\n<\/div>\n<div class=\"ac-g3\" data-ac-grid=\"g1\">\n<article class=\"ac-ca\" tabindex=\"0\" role=\"article\">\n<div class=\"ac-ico\">\n<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2\"\/><circle cx=\"12\" cy=\"7\" r=\"4\"\/><\/svg>\n<\/div>\n<h3>Account Info<\/h3>\n<p>View TikTok account profile details including username bio and profile picture presented in a clean organized layout for quick reference, making your overall experience on the platform smooth efficient and thoroughly enjoyable.<\/p>\n<\/article>\n<article class=\"ac-ca\" tabindex=\"0\" role=\"article\">\n<div class=\"ac-ico\">\n<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><line x1=\"18\" y1=\"20\" x2=\"18\" y2=\"10\"\/><line x1=\"12\" y1=\"20\" x2=\"12\" y2=\"4\"\/><line x1=\"6\" y1=\"20\" x2=\"6\" y2=\"14\"\/><\/svg>\n<\/div>\n<h3>Account Stats<\/h3>\n<p>See follower count total likes and video performance metrics at a glance giving you a complete overview of account reach and engagement, giving you complete control and flexibility over every aspect of your content journey.<\/p>\n<\/article>\n<article class=\"ac-ca\" tabindex=\"0\" role=\"article\">\n<div class=\"ac-ico\">\n<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><polygon points=\"23 7 16 12 23 17\"\/><rect x=\"1\" y=\"5\" width=\"15\" height=\"14\" rx=\"2\"\/><\/svg>\n<\/div>\n<h3>Account Videos<\/h3>\n<p>Browse all videos from an account sorted by date popularity or category making it easy to discover their most successful content, ensuring you get the maximum value and utility from every single visit you make.<\/p>\n<\/article>\n<article class=\"ac-ca\" tabindex=\"0\" role=\"article\">\n<div class=\"ac-ico\">\n<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\"\/><polyline points=\"14 2 14 8 20 8\"\/><line x1=\"16\" y1=\"13\" x2=\"8\" y2=\"13\"\/><line x1=\"16\" y1=\"17\" x2=\"8\" y2=\"17\"\/><\/svg>\n<\/div>\n<h3>Account Bio<\/h3>\n<p>Read account bio links and social information displayed on the TikTok profile so you can understand their brand and messaging strategy, so you can work smarter achieve more and stay productive throughout your sessions.<\/p>\n<\/article>\n<article class=\"ac-ca\" tabindex=\"0\" role=\"article\">\n<div class=\"ac-ico\">\n<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><circle cx=\"11\" cy=\"11\" r=\"8\"\/><line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\"\/><\/svg>\n<\/div>\n<h3>Account Search<\/h3>\n<p>Find accounts by name username or topic with instant search suggestions that help you discover relevant profiles quickly and efficiently, providing a seamless intuitive workflow that enhances your daily content management tasks.<\/p>\n<\/article>\n<article class=\"ac-ca\" tabindex=\"0\" role=\"article\">\n<div class=\"ac-ico\">\n<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><circle cx=\"12\" cy=\"12\" r=\"10\"\/><polyline points=\"12 6 12 12 16 14\"\/><\/svg>\n<\/div>\n<h3>Account Activity<\/h3>\n<p>Track account upload schedule and posting frequency over any time period to identify patterns and content consistency levels that drive audience growth, making your overall experience on the platform smooth efficient and thoroughly enjoyable.<\/p>\n<\/article>\n<\/div>\n<\/div>\n<\/section>\n\n<section class=\"ac-sec ac-bg-ow\" aria-labelledby=\"ac-h2\">\n<div class=\"ac-inner\">\n<div class=\"ac-hb\">\n<h2 id=\"ac-h2\">Key Benefits of <span class=\"ac-gx\">TikTok Account Viewer<\/span><\/h2>\n<p>Get comprehensive account insights without any cost or login requirements.<\/p>\n<\/div>\n<div class=\"ac-g4\" data-ac-grid=\"g2\">\n<article class=\"ac-cb\" tabindex=\"0\" role=\"article\">\n<div class=\"ac-ico\">\n<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M16 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\"\/><circle cx=\"8.5\" cy=\"7\" r=\"4\"\/><polyline points=\"17 9 19 11 22 6\"\/><\/svg>\n<\/div>\n<div class=\"ac-cb-body\">\n<h3>Full Profile<\/h3>\n<p>See complete account information including all public profile fields and metadata.<\/p>\n<\/div>\n<\/article>\n<article class=\"ac-cb\" tabindex=\"0\" role=\"article\">\n<div class=\"ac-ico\">\n<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><rect x=\"3\" y=\"11\" width=\"18\" height=\"11\" rx=\"2\"\/><path d=\"M7 11V7a5 5 0 0 1 9-2\"\/><\/svg>\n<\/div>\n<div class=\"ac-cb-body\">\n<h3>No Login<\/h3>\n<p>View without TikTok account no sign in needed to access any public profile data.<\/p>\n<\/div>\n<\/article>\n<article class=\"ac-cb\" tabindex=\"0\" role=\"article\">\n<div class=\"ac-ico\">\n<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M13.48 8.33A6 6 0 0 1 22 12a6 6 0 0 1-8.52 3.67M10.52 15.67A6 6 0 0 1 2 12a6 6 0 0 1 8.52-3.67\"\/><\/svg>\n<\/div>\n<div class=\"ac-cb-body\">\n<h3>Unlimited Access<\/h3>\n<p>No restrictions on account viewing browse as many profiles as you need.<\/p>\n<\/div>\n<\/article>\n<article class=\"ac-cb\" tabindex=\"0\" role=\"article\">\n<div class=\"ac-ico\">\n<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><line x1=\"12\" y1=\"1\" x2=\"12\" y2=\"23\"\/><path d=\"M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6\"\/><\/svg>\n<\/div>\n<div class=\"ac-cb-body\">\n<h3>Free Service<\/h3>\n<p>All account features at zero cost no premium plans or hidden charges ever.<\/p>\n<\/div>\n<\/article>\n<article class=\"ac-cb\" tabindex=\"0\" role=\"article\">\n<div class=\"ac-ico\">\n<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><polygon points=\"13 2 3 14 12 14 11 22 21 10 12 10\"\/><\/svg>\n<\/div>\n<div class=\"ac-cb-body\">\n<h3>Quick Load<\/h3>\n<p>Account data loads instantly with optimized delivery and minimal wait time.<\/p>\n<\/div>\n<\/article>\n<article class=\"ac-cb\" tabindex=\"0\" role=\"article\">\n<div class=\"ac-ico\">\n<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><circle cx=\"12\" cy=\"12\" r=\"10\"\/><line x1=\"2\" y1=\"12\" x2=\"22\" y2=\"12\"\/><path d=\"M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10\"\/><\/svg>\n<\/div>\n<div class=\"ac-cb-body\">\n<h3>Any Account<\/h3>\n<p>Works with any public TikTok account across all regions and content categories.<\/p>\n<\/div>\n<\/article>\n<article class=\"ac-cb\" tabindex=\"0\" role=\"article\">\n<div class=\"ac-ico\">\n<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\"\/><polyline points=\"7 10 12 15 17 10\"\/><line x1=\"12\" y1=\"15\" x2=\"12\" y2=\"3\"\/><\/svg>\n<\/div>\n<div class=\"ac-cb-body\">\n<h3>Data Export<\/h3>\n<p>Export account statistics and profile data for offline analysis and reporting.<\/p>\n<\/div>\n<\/article>\n\n<article class=\"ac-cb\" tabindex=\"0\" role=\"article\">\n<div class=\"ac-ico\">\n<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><rect x=\"5\" y=\"2\" width=\"14\" height=\"20\" rx=\"2\"\/><line x1=\"12\" y1=\"18\" x2=\"12.01\" y2=\"18\"\/><\/svg>\n<\/div>\n<div class=\"ac-cb-body\">\n<h3>Multi Device<\/h3>\n<p>Access the service seamlessly across desktop mobile and tablet devices without any restrictions.<\/p>\n<\/div>\n<\/article>\n<\/div>\n<\/div>\n<\/section>\n\n<section class=\"ac-sec ac-bg-wh\" aria-labelledby=\"ac-h3\">\n<div class=\"ac-inner\">\n<div class=\"ac-hb\">\n<h2 id=\"ac-h3\">Who Should Use <span class=\"ac-gx\">TikTok Account Viewer<\/span><\/h2>\n<p>Explore real-world scenarios where our tool delivers the most value and impact for users like you.<\/p>\n<\/div>\n<div class=\"ac-g3\" data-ac-grid=\"g3\">\n<article class=\"ac-ca\" tabindex=\"0\" role=\"article\">\n<div class=\"ac-ico\">\n<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z\"\/><circle cx=\"12\" cy=\"12\" r=\"3\"\/><\/svg>\n<\/div>\n<h3>Creator Research<\/h3>\n<p>Study TikTok creator accounts to understand their content approach and audience engagement patterns helping you learn proven strategies from the most successful creators.<\/p>\n<\/article>\n<article class=\"ac-ca\" tabindex=\"0\" role=\"article\">\n<div class=\"ac-ico\">\n<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2\"\/><rect x=\"8\" y=\"2\" width=\"8\" height=\"4\" rx=\"1\"\/><line x1=\"9\" y1=\"12\" x2=\"15\" y2=\"12\"\/><line x1=\"9\" y1=\"16\" x2=\"13\" y2=\"16\"\/><\/svg>\n<\/div>\n<h3>Account Audit<\/h3>\n<p>Audit account performance metrics and evaluate content effectiveness with precision giving you actionable insights and data-driven recommendations for strategic improvement.<\/p>\n<\/article>\n<article class=\"ac-ca\" tabindex=\"0\" role=\"article\">\n<div class=\"ac-ico\">\n<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><polyline points=\"23 6 13.5 15.5 8.5 10.5 1 18\"\/><polyline points=\"17 6 23 6 23 12\"\/><\/svg>\n<\/div>\n<h3>Growth Tracking<\/h3>\n<p>Track account growth over time monitor follower trends and engagement velocity to understand what drives audience expansion retention and long term content loyalty.<\/p>\n<\/article>\n<article class=\"ac-ca\" tabindex=\"0\" role=\"article\">\n<div class=\"ac-ico\">\n<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><circle cx=\"12\" cy=\"12\" r=\"10\"\/><polygon points=\"16.24 7.76 14.12 14.12 7.76 16.24 9.88 9.88\"\/><\/svg>\n<\/div>\n<h3>Niche Discovery<\/h3>\n<p>Find accounts in your niche discover emerging creators and trending content topics that align with your interests and content strategy goals.<\/p>\n<\/article>\n<article class=\"ac-ca\" tabindex=\"0\" role=\"article\">\n<div class=\"ac-ico\">\n<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><polygon points=\"12 2 2 7 12 12 22 7 12 2\"\/><polyline points=\"2 17 12 22 22 17\"\/><polyline points=\"2 12 12 17 22 12\"\/><\/svg>\n<\/div>\n<h3>Content Strategy<\/h3>\n<p>Analyze account strategies to refine your own content plan and posting approach by learning from successful creators in your space.<\/p>\n<\/article>\n<article class=\"ac-ca\" tabindex=\"0\" role=\"article\">\n<div class=\"ac-ico\">\n<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\"\/><circle cx=\"9\" cy=\"7\" r=\"4\"\/><path d=\"M23 21v-2a4 4 0 0 0-3-3.87\"\/><path d=\"M16 3.13a4 4 0 0 1 0 7.75\"\/><\/svg>\n<\/div>\n<h3>Competitor Intel<\/h3>\n<p>Monitor competitor accounts track their performance metrics and benchmark your own success against industry peers for actionable strategic advantage and market positioning.<\/p>\n<\/article>\n<\/div>\n<\/div>\n<\/section>\n\n<\/div>\n<noscript><\/noscript>\n<\/div>\n<\/div><\/div>\n<\/section>\n<\/div>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":3,"featured_media":0,"parent":5393,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"template-homepage.php","meta":{"footnotes":""},"class_list":["post-5614","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/viiewerr.com\/wp-json\/wp\/v2\/pages\/5614","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/viiewerr.com\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/viiewerr.com\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/viiewerr.com\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/viiewerr.com\/wp-json\/wp\/v2\/comments?post=5614"}],"version-history":[{"count":2,"href":"https:\/\/viiewerr.com\/wp-json\/wp\/v2\/pages\/5614\/revisions"}],"predecessor-version":[{"id":5739,"href":"https:\/\/viiewerr.com\/wp-json\/wp\/v2\/pages\/5614\/revisions\/5739"}],"up":[{"embeddable":true,"href":"https:\/\/viiewerr.com\/wp-json\/wp\/v2\/pages\/5393"}],"wp:attachment":[{"href":"https:\/\/viiewerr.com\/wp-json\/wp\/v2\/media?parent=5614"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}