{"id":429,"date":"2026-03-24T00:00:33","date_gmt":"2026-03-24T00:00:33","guid":{"rendered":"https:\/\/viewanonymous.com\/?page_id=429"},"modified":"2026-03-31T08:18:05","modified_gmt":"2026-03-31T08:18:05","slug":"link","status":"publish","type":"page","link":"https:\/\/viewanonymous.com\/tools\/tiktok\/link\/","title":{"rendered":"TikTok Link Viewer \u2013 Open &amp; Watch TikTok Videos"},"content":{"rendered":"\n[et_pb_section fb_built=&#8221;1&#8243; fullwidth=&#8221;on&#8221; theme_builder_area=&#8221;post_content&#8221; _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221;][et_pb_fullwidth_code _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; theme_builder_area=&#8221;post_content&#8221; hover_enabled=&#8221;0&#8243; sticky_enabled=&#8221;0&#8243;]    <link rel=\"canonical\" href=\"\">\r\n  \r\n      <!-- Favicon -->\r\n   \r\n      \r\n      <!-- Google Fonts - Premium Typography -->\r\n      <link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\r\n      <link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin=\"\">\r\n      <link href=\"https:\/\/fonts.googleapis.com\/css2?family=Inter:wght@300;400;500;600;700;800;900&family=Space+Grotesk:wght@300;400;500;600;700&family=Manrope:wght@300;400;500;600;700;800&family=Varela+Round:wght@400;500;600;700&display=swap\" rel=\"stylesheet\">\r\n      \r\n      <!-- Bootstrap CSS -->\r\n      <link href=\"https:\/\/cdn.jsdelivr.net\/npm\/bootstrap@5.3.0\/dist\/css\/bootstrap.min.css\" rel=\"stylesheet\">\r\n      <!-- Boxicons -->\r\n      <link href=\"https:\/\/unpkg.com\/boxicons@2.1.4\/css\/boxicons.min.css\" rel=\"stylesheet\">\r\n      <!-- AOS Animation -->\r\n      <link href=\"https:\/\/unpkg.com\/aos@2.3.1\/dist\/aos.css\" rel=\"stylesheet\">\r\n      <style>\r\n          \/* Visible if AOS never inits (missing script \/ blocked) *\/\r\n          html:not(.aos-init) [data-aos] {\r\n              opacity: 1 !important;\r\n              transform: none !important;\r\n              pointer-events: auto !important;\r\n          }\r\n      <\/style>\r\n      <!-- Font Awesome CSS -->\r\n          <link href=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/font-awesome\/5.15.3\/css\/all.min.css\" rel=\"stylesheet\">\r\n  \r\n  \r\n  <style id=\"vvvebjs-styles\">\r\n      html{\r\n          overflow-x: hidden;\r\n      }\r\n     \r\n      :root {\r\n              --ttvv-primary-color: #9170ff;\r\n              --ttvv-secondary-color: #b99cff;\r\n              --ttvv-dark-color: #111111;\r\n              --ttvv-light-color: #FFFFFF;\r\n              --ttvv-gray-color: #f3efff;\r\n              --ttvv-primary-hover: #7d5af0;\r\n              --ttvv-secondary-hover: #a884ff;\r\n              --ttvv-section-padding: 100px 0;\r\n          }\r\n          \r\n\/*           body {\r\n              font-family: 'Varela Round', 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;\r\n              scroll-behavior: smooth;\r\n              overflow-x: hidden;\r\n              background-color: var(--ttvv-light-color);\r\n              color: var(--ttvv-dark-color);\r\n          }\r\n  \r\n      h1, h2, h3, h4, h5, h6 {\r\n          font-family: 'Space Grotesk', -apple-system, BlinkMacSystemFont, sans-serif;\r\n          font-weight: bold; \r\n      } *\/\r\n    \r\n  \r\n       \/* TikTok-style Hero Section *\/\r\n       .ttvv-hero-section {\r\n              padding: var(--ttvv-section-padding);\r\n              text-align: center;\r\n              background-color: var(--ttvv-light-color);\r\n          }\r\n          \r\n          .ttvv-hero-content {\r\n              position: relative;\r\n              z-index: 1;\r\n          }\r\n          \r\n          .ttvv-hero-section h1 {\r\n              font-size: 3.5rem;\r\n              font-weight: 700;\r\n              margin-bottom: 1.5rem;\r\n              color: var(--ttvv-primary-color);\r\n          }\r\n          \r\n          .ttvv-hero-section p {\r\n              font-size: 1.25rem;\r\n              max-width: 700px;\r\n              margin: 0 auto 2rem;\r\n              opacity: 0.9;\r\n              font-weight: 300;\r\n              color: #666;\r\n          }\r\n          \r\n          \/* Work Process Section with TikTok Colors *\/\r\n          .ttvv-work-process-section {\r\n              padding: var(--ttvv-section-padding);\r\n              background: var(--ttvv-primary-color);\r\n              color: white;\r\n              position: relative;\r\n              overflow: hidden;\r\n          }\r\n          \r\n          .ttvv-work-process-section::before {\r\n              content: '';\r\n              position: absolute;\r\n              top: 0;\r\n              left: 0;\r\n              width: 100%;\r\n              height: 100%;\r\n              background: rgba(0,0,0,0.05);\r\n          }\r\n          \r\n          .ttvv-work-process-content {\r\n              position: relative;\r\n              z-index: 1;\r\n          }\r\n          \r\n          .ttvv-process-step {\r\n              text-align: center;\r\n              padding: 30px 20px;\r\n              position: relative;\r\n              z-index: 1;\r\n              background: rgba(255,255,255,0.1);\r\n              backdrop-filter: blur(10px);\r\n              border-radius: 16px;\r\n              margin: 15px;\r\n              border: 1px solid rgba(255,255,255,0.2);\r\n              transition: all 0.3s ease;\r\n          }\r\n          \r\n          .ttvv-process-step:hover {\r\n              transform: translateY(-10px);\r\n              background: rgba(255,255,255,0.15);\r\n              box-shadow: 0 15px 30px rgba(0,0,0,0.2);\r\n          }\r\n          \r\n          .ttvv-step-number {\r\n              width: 60px;\r\n              height: 60px;\r\n              background: white;\r\n              color: var(--ttvv-primary-color);\r\n              border-radius: 50%;\r\n              display: flex;\r\n              align-items: center;\r\n              justify-content: center;\r\n              font-weight: 700;\r\n              margin: 0 auto 20px;\r\n              font-size: 1.5rem;\r\n              box-shadow: 0 5px 15px rgba(0,0,0,0.1);\r\n          }\r\n          \r\n          \/* Features Section *\/\r\n          .ttvv-features-section {\r\n              padding: var(--ttvv-section-padding);\r\n              background: white;\r\n          }\r\n          \r\n          .ttvv-feature-card {\r\n              padding: 40px 30px;\r\n              border-radius: 16px;\r\n              background: white;\r\n              box-shadow: 0 10px 30px rgba(0, 0, 0, 0.05);\r\n              margin-bottom: 30px;\r\n              transition: all 0.3s ease;\r\n              border: 1px solid rgba(0,0,0,0.05);\r\n              height: 100%;\r\n              position: relative;\r\n              overflow: hidden;\r\n          }\r\n          \r\n          .ttvv-feature-card::before {\r\n              content: '';\r\n              position: absolute;\r\n              top: 0;\r\n              left: 0;\r\n              width: 4px;\r\n              height: 100%;\r\n              background: var(--ttvv-primary-color);\r\n              transition: all 0.3s ease;\r\n          }\r\n          \r\n          .ttvv-feature-card:hover {\r\n              transform: translateY(-10px);\r\n              box-shadow: 0 15px 40px rgba(0,0,0,0.1);\r\n          }\r\n          \r\n          .ttvv-feature-card:hover::before {\r\n              width: 100%;\r\n              opacity: 0.1;\r\n          }\r\n          \r\n          .ttvv-feature-icon {\r\n              width: 70px;\r\n              height: 70px;\r\n              border-radius: 20px;\r\n              display: flex;\r\n              align-items: center;\r\n              justify-content: center;\r\n              margin-bottom: 25px;\r\n              background: var(--ttvv-primary-color);\r\n              color: white;\r\n              font-size: 1.8rem;\r\n              transition: all 0.3s ease;\r\n          }\r\n          \r\n          .ttvv-feature-card:hover .ttvv-feature-icon {\r\n              transform: rotate(15deg) scale(1.1);\r\n              background: var(--ttvv-primary-hover);\r\n          }\r\n          \r\n          \/* Why Choose Section *\/\r\n          .ttvv-why-choose-section {\r\n              padding: var(--ttvv-section-padding);\r\n              background: #faf8ff;\r\n          }\r\n          \r\n          .ttvv-why-choose-image {\r\n              border-radius: 16px;\r\n              overflow: hidden;\r\n              box-shadow: 0 20px 40px rgba(0,0,0,0.1);\r\n              transform: perspective(1000px) rotateY(-5deg);\r\n              transition: all 0.5s ease;\r\n          }\r\n          \r\n          .ttvv-why-choose-image:hover {\r\n              transform: perspective(1000px) rotateY(0deg);\r\n          }\r\n          \r\n          .ttvv-benefit-item {\r\n              display: flex;\r\n              align-items: flex-start;\r\n              margin-bottom: 20px;\r\n              padding: 15px;\r\n              border-radius: 12px;\r\n              background: white;\r\n              box-shadow: 0 5px 15px rgba(0,0,0,0.03);\r\n              transition: all 0.3s ease;\r\n          }\r\n          \r\n          .ttvv-benefit-item:hover {\r\n              transform: translateX(10px);\r\n              box-shadow: 0 10px 25px rgba(0,0,0,0.1);\r\n          }\r\n          \r\n          .ttvv-benefit-icon {\r\n              width: 40px;\r\n              height: 40px;\r\n              border-radius: 12px;\r\n              display: flex;\r\n              align-items: center;\r\n              justify-content: center;\r\n              margin-right: 15px;\r\n              background: var(--ttvv-primary-color);\r\n              color: white;\r\n              font-size: 1.2rem;\r\n              flex-shrink: 0;\r\n          }\r\n          \r\n          \/* FAQ Section *\/\r\n          .ttvv-faq-section {\r\n              padding: var(--ttvv-section-padding);\r\n              background: white;\r\n          }\r\n          \r\n          .ttvv-accordion-item {\r\n              border: none;\r\n              border-radius: 12px !important;\r\n              overflow: hidden;\r\n              margin-bottom: 15px;\r\n              box-shadow: 0 5px 15px rgba(0,0,0,0.05);\r\n          }\r\n          \r\n          .ttvv-accordion-button {\r\n              font-weight: 600;\r\n              color: var(--ttvv-dark-color);\r\n              padding: 20px 25px;\r\n              background: white;\r\n              box-shadow: none;\r\n              border-radius: 12px 12px 0 0 !important;\r\n          }\r\n          \r\n          .ttvv-accordion-button:not(.collapsed) {\r\n              background: white;\r\n              color: var(--ttvv-primary-color);\r\n              box-shadow: none;\r\n          }\r\n          \r\n          .ttvv-accordion-button:focus {\r\n              box-shadow: none;\r\n              border-color: rgba(145, 112, 255, 0.35);\r\n          }\r\n          \r\n          .ttvv-accordion-button::after {\r\n              background-image: url(\"data:image\/svg+xml,%3csvg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 16 16' fill='%239170ff'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'\/%3e%3c\/svg%3e\");\r\n          }\r\n          \r\n          .ttvv-accordion-body {\r\n              padding: 25px;\r\n              color: #666;\r\n          }\r\n          \r\n          \/* Section Titles *\/\r\n          .ttvv-section-title {\r\n              font-weight: 700;\r\n              color: var(--ttvv-dark-color);\r\n              margin-bottom: 1.5rem;\r\n              position: relative;\r\n              display: inline-block;\r\n          }\r\n          \r\n          .ttvv-section-title::after {\r\n              content: '';\r\n              position: absolute;\r\n              bottom: -10px;\r\n              left: 0;\r\n              width: 60px;\r\n              height: 4px;\r\n              background: var(--ttvv-primary-color);\r\n              border-radius: 2px;\r\n          }\r\n          \r\n          .ttvv-light-title {\r\n              color: white;\r\n          }\r\n          \r\n          .ttvv-light-title::after {\r\n              background: white;\r\n          }\r\n          \r\n          .ttvv-section-subtitle {\r\n              color: #666;\r\n              max-width: 700px;\r\n              margin: 0 auto 3rem;\r\n              font-size: 1.1rem;\r\n          }\r\n          \r\n          .ttvv-light-subtitle {\r\n              color: rgba(255,255,255,0.8);\r\n          }\r\n          \r\n          \/* Responsive Design *\/\r\n          @media (max-width: 991px) {\r\n              :root {\r\n                  --ttvv-section-padding: 80px 0;\r\n              }\r\n              \r\n              .ttvv-hero-section h1 {\r\n                  font-size: 2.8rem;\r\n              }\r\n              \r\n              .ttvv-process-step::before {\r\n                  display: none;\r\n              }\r\n          }\r\n          \r\n          @media (max-width: 767px) {\r\n              :root {\r\n                  --ttvv-section-padding: 70px 0;\r\n              }\r\n              \r\n              .ttvv-hero-section {\r\n                  padding: 100px 0 60px;\r\n              }\r\n              \r\n              .ttvv-hero-section h1 {\r\n                  font-size: 2.2rem;\r\n              }\r\n              \r\n              .ttvv-hero-section p {\r\n                  font-size: 1rem;\r\n              }\r\n              \r\n              .ttvv-section-title {\r\n                  font-size: 1.8rem;\r\n              }\r\n          }\r\n          \r\n          \/* Animation *\/\r\n          @keyframes ttvv-float {\r\n              0% { transform: translateY(0px); }\r\n              50% { transform: translateY(-15px); }\r\n              100% { transform: translateY(0px); }\r\n          }\r\n          \r\n          .ttvv-floating-element {\r\n              animation: ttvv-float 6s ease-in-out infinite;\r\n          }\r\n          \r\n          \/* Custom Scrollbar *\/\r\n          ::-webkit-scrollbar {\r\n              width: 8px;\r\n          }\r\n          \r\n          ::-webkit-scrollbar-track {\r\n              background: #f1f1f1;\r\n          }\r\n          \r\n          ::-webkit-scrollbar-thumb {\r\n              background: var(--ttvv-primary-color);\r\n              border-radius: 10px;\r\n          }\r\n          \r\n          ::-webkit-scrollbar-thumb:hover {\r\n              background: var(--ttvv-primary-hover);\r\n          }\r\n      \r\n  <\/style>\r\n  <!-- tools -->\r\n  <style>\r\n      :root {\r\n          --primary: #9170ff;\r\n          --secondary: #b99cff;\r\n          --accent: #9170ff;\r\n          --purple: #9170ff;\r\n          --purple-light: #b99cff;\r\n          --purple-dark: #6b4fd6;\r\n          --pink: #a78bfa;\r\n          --pink-light: #c4b5fd;\r\n          --orange: #6b4fd6;\r\n          --green: #7d5af0;\r\n          --blue: #9170ff;\r\n          --yellow: #d4c4ff;\r\n          --tiktok-red: #9170ff;\r\n          --tiktok-blue: #6b4fd6;\r\n          --tiktok-purple: #9170ff;\r\n          \r\n          \/* ViewAnonymous-style light scheme *\/\r\n          --bg-primary: #ffffff;\r\n          --bg-secondary: #faf8ff;\r\n          --bg-tertiary: #f3efff;\r\n          --card-dark: #ffffff;\r\n          --card-purple: #f5f2ff;\r\n          --card-blue: #faf8ff;\r\n          --text-light: #111111;\r\n          --text-gray: #555555;\r\n          --text-purple: #9170ff;\r\n          \r\n          --glass-dark: rgba(255, 255, 255, 0.95);\r\n          --glass-purple: rgba(243, 239, 255, 0.98);\r\n          --glass-blue: rgba(250, 248, 255, 0.98);\r\n          --glass-border: rgba(145, 112, 255, 0.28);\r\n          \r\n          --shadow: 0 4px 24px rgba(17, 17, 17, 0.08);\r\n          --shadow-lg: 0 12px 40px rgba(145, 112, 255, 0.12);\r\n          --shadow-xl: 0 20px 50px rgba(145, 112, 255, 0.15);\r\n          --shadow-purple: 0 8px 28px rgba(145, 112, 255, 0.25);\r\n          --shadow-pink: 0 8px 28px rgba(145, 112, 255, 0.2);\r\n          --shadow-blue: 0 8px 28px rgba(107, 79, 214, 0.2);\r\n          \r\n          --glow-purple: 0 0 24px rgba(145, 112, 255, 0.35);\r\n          --glow-pink: 0 0 24px rgba(145, 112, 255, 0.3);\r\n          --glow-blue: 0 0 24px rgba(107, 79, 214, 0.3);\r\n          --glow-tiktok: 0 0 32px rgba(145, 112, 255, 0.4);\r\n      }\r\n  \r\n      * {\r\n          margin: 0;\r\n          padding: 0;\r\n          box-sizing: border-box;\r\n      }\r\n  \r\n      .ttvv-hero-tools-section {\r\n          font-family: 'Varela Round', 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;\r\n          background: var(--bg-primary);\r\n          color: var(--text-light);\r\n          overflow-x: hidden;\r\n          position: relative;\r\n          padding: 80px 0;\r\n          margin-top: 3rem;\r\n      }\r\n  \r\n      .ttvv-hero-tools-section::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 18% 22%, rgba(145, 112, 255, 0.12) 0%, transparent 45%),\r\n              radial-gradient(circle at 82% 78%, rgba(145, 112, 255, 0.08) 0%, transparent 48%);\r\n          pointer-events: none;\r\n          z-index: 0;\r\n      }\r\n  \r\n      .ttvv-custom-container {\r\n          max-width: 1200px;\r\n          margin: 0 auto;\r\n          padding: 2rem;\r\n          position: relative;\r\n          z-index: 1;\r\n          isolation: isolate;\r\n      }\r\n  \r\n      \/* Header *\/\r\n      .header {\r\n          text-align: center;\r\n          margin-bottom: 2.5rem;\r\n          animation: fadeInDown 1s ease-out;\r\n      }\r\n  \r\n      .logo {\r\n          display: flex;\r\n          align-items: center;\r\n          justify-content: center;\r\n          gap: 1.5rem;\r\n          margin-bottom: 1rem;\r\n          flex-wrap: wrap;\r\n      }\r\n  \r\n      .logo-icon {\r\n          width: 70px;\r\n          height: 70px;\r\n          background: linear-gradient(145deg, var(--purple) 0%, var(--purple-dark) 100%);\r\n          border-radius: 20px;\r\n          display: flex;\r\n          align-items: center;\r\n          justify-content: center;\r\n          font-size: 28px;\r\n          color: white;\r\n          box-shadow: var(--shadow-lg), var(--glow-purple);\r\n          animation: logoFloat 4s ease-in-out infinite;\r\n          position: relative;\r\n          overflow: hidden;\r\n          border: 2px solid rgba(145, 112, 255, 0.35);\r\n          flex-shrink: 0;\r\n      }\r\n  \r\n      .logo-icon::before {\r\n          content: '';\r\n          position: absolute;\r\n          top: -50%;\r\n          left: -50%;\r\n          width: 200%;\r\n          height: 200%;\r\n          background: linear-gradient(45deg, transparent, rgba(255, 255, 255, 0.3), transparent);\r\n          animation: logoShine 3s ease-in-out infinite;\r\n      }\r\n  \r\n      .logo-text {\r\n          font-size: clamp(1.8rem, 5vw, 3.5rem);\r\n          font-weight: 800;\r\n          color: #111111;\r\n          letter-spacing: -1px;\r\n          text-align: center;\r\n      }\r\n      \r\n      .logo-text .logo-purple {\r\n          color: #9170ff;\r\n      }\r\n  \r\n      .subtitle {\r\n          font-size: clamp(0.9rem, 2.5vw, 1.1rem);\r\n          color: #444444;\r\n          font-weight: 500;\r\n          margin-top: 0.5rem;\r\n          text-align: center;\r\n          padding: 0 1rem;\r\n      }\r\n  \r\n      \/* Enhanced Search Section *\/\r\n    .search-section {\r\n      background: #ffffff;\r\n      backdrop-filter: blur(12px);\r\n      border: 2px solid var(--glass-border);\r\n      border-radius: 24px;\r\n      padding: clamp(1.5rem, 4vw, 2.5rem);\r\n      margin-bottom: 2rem;\r\n      box-shadow: var(--shadow-lg);\r\n      animation: fadeInUp 1s ease-out 0.2s both;\r\n      position: relative;\r\n      overflow: hidden;\r\n  }\r\n  \r\n      .search-section::before {\r\n          content: '';\r\n          position: absolute;\r\n          top: 0;\r\n          left: 0;\r\n          right: 0;\r\n          height: 2px;\r\n          background: linear-gradient(90deg, \r\n              transparent, \r\n              var(--purple), \r\n              var(--pink), \r\n              var(--tiktok-blue), \r\n              transparent);\r\n          animation: borderFlow 3s ease-in-out infinite;\r\n      }\r\n  \r\n      .search-section::after {\r\n          content: '';\r\n          position: absolute;\r\n          top: 0;\r\n          left: 0;\r\n          width: 100%;\r\n          height: 100%;\r\n          background: linear-gradient(135deg, \r\n              rgba(139, 92, 246, 0.05) 0%, \r\n              rgba(145, 112, 255, 0.05) 50%, \r\n              rgba(107, 79, 214, 0.05) 100%);\r\n          pointer-events: none;\r\n          border-radius: 24px;\r\n          animation: overlayPulse 6s ease-in-out infinite;\r\n      }\r\n  \r\n      .input-group {\r\n          position: relative;\r\n          margin-bottom: 1.5rem;\r\n          z-index: 2;\r\n      }\r\n  \r\n      .input-field {\r\n          width: 100% !important;\r\n          padding: clamp(1rem, 3vw, 1.5rem) clamp(1.2rem, 4vw, 2rem) !important;\r\n          background: #ffffff !important;\r\n          border: 2px solid rgba(145, 112, 255, 0.35) !important;\r\n          border-radius: 20px !important;\r\n          color: #111111 !important;\r\n          font-size: clamp(0.9rem, 2.5vw, 1.1rem) !important;\r\n          font-weight: 500 !important;\r\n          transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1) !important;\r\n          outline: none !important;\r\n          box-shadow: var(--shadow) !important;\r\n          position: relative !important;\r\n      }\r\n  \r\n      .input-field::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(139, 92, 246, 0.1) 0%, \r\n              rgba(145, 112, 255, 0.1) 100%);\r\n          border-radius: 20px;\r\n          opacity: 0;\r\n          transition: opacity 0.4s ease;\r\n          pointer-events: none;\r\n      }\r\n  \r\n      .input-field:focus {\r\n          border-color: var(--purple) !important;\r\n          box-shadow: 0 0 0 4px rgba(145, 112, 255, 0.2), var(--shadow-lg) !important;\r\n          background: #ffffff !important;\r\n          transform: translateY(-2px) scale(1.005) !important;\r\n      }\r\n  \r\n      .input-field:focus::before {\r\n          opacity: 1;\r\n      }\r\n  \r\n      .input-field::placeholder {\r\n          color: var(--text-gray) !important;\r\n          transition: all 0.3s ease !important;\r\n          font-weight: 400 !important;\r\n      }\r\n  \r\n      .input-field:focus::placeholder {\r\n          color: var(--text-purple) !important;\r\n          transform: translateY(-2px) !important;\r\n          opacity: 0.8 !important;\r\n      }\r\n  \r\n      .input-actions {\r\n          display: flex;\r\n          justify-content: space-between;\r\n          align-items: center;\r\n          margin-top: 1rem;\r\n          font-size: clamp(0.8rem, 2vw, 0.9rem);\r\n          color: var(--text-gray);\r\n          z-index: 2;\r\n          position: relative;\r\n          flex-wrap: wrap;\r\n          gap: 0.5rem;\r\n      }\r\n  \r\n      .paste-btn {\r\n          background: linear-gradient(135deg, #9170ff, #6b4fd6);\r\n          border: none;\r\n          color: #ffffff;\r\n          cursor: pointer;\r\n          padding: clamp(0.5rem, 2vw, 0.7rem) clamp(0.8rem, 3vw, 1.4rem);\r\n          border-radius: 14px;\r\n          transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);\r\n          display: flex;\r\n          align-items: center;\r\n          gap: 0.5rem;\r\n          font-weight: 600;\r\n          box-shadow: var(--shadow), var(--shadow-purple);\r\n          font-size: clamp(0.8rem, 2vw, 0.9rem);\r\n          position: relative;\r\n          overflow: hidden;\r\n          border: 1px solid rgba(145, 112, 255, 0.35);\r\n          min-height: 44px; \/* Touch-friendly *\/\r\n      }\r\n  \r\n      .paste-btn::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.3), transparent);\r\n          transition: left 0.5s;\r\n      }\r\n  \r\n      .paste-btn:hover::before,\r\n      .paste-btn:active::before {\r\n          left: 100%;\r\n      }\r\n  \r\n      .paste-btn:hover,\r\n      .paste-btn:active {\r\n          transform: translateY(-3px) scale(1.05);\r\n          box-shadow: var(--shadow-lg), var(--glow-purple);\r\n          background: linear-gradient(135deg, #7d5af0, #5b43c9);\r\n      }\r\n  \r\n      .action-buttons {\r\n          display: grid;\r\n          grid-template-columns: 1fr;\r\n          gap: 1rem;\r\n          align-items: center;\r\n          z-index: 2;\r\n          position: relative;\r\n      }\r\n  \r\n    .search-btn {\r\n      background: linear-gradient(135deg, #9170ff 0%, #6b4fd6 100%);\r\n      background-size: 200% 200%;\r\n      color: #ffffff;\r\n      border: none;\r\n      padding: clamp(1rem, 3vw, 1.4rem) clamp(1.5rem, 4vw, 2.8rem);\r\n      border-radius: 20px;\r\n      font-size: clamp(0.9rem, 2.5vw, 1.1rem);\r\n      font-weight: 700;\r\n      cursor: pointer;\r\n      transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);\r\n      position: relative;\r\n      overflow: hidden;\r\n      box-shadow: var(--shadow-lg), var(--glow-purple);\r\n      display: flex;\r\n      align-items: center;\r\n      justify-content: center;\r\n      gap: 0.75rem;\r\n      min-height: 56px;\r\n      animation: buttonPulse 4s ease-in-out infinite;\r\n      border: 2px solid rgba(145, 112, 255, 0.45);\r\n      width: 100%;\r\n  }\r\n      .search-btn::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.3), transparent);\r\n          transition: left 0.6s;\r\n      }\r\n  \r\n      .search-btn:hover:not(:disabled)::before,\r\n      .search-btn:active:not(:disabled)::before {\r\n          left: 100%;\r\n      }\r\n  \r\n      .search-btn:hover:not(:disabled),\r\n      .search-btn:active:not(:disabled) {\r\n          transform: translateY(-4px) scale(1.02);\r\n          box-shadow: var(--shadow-xl), var(--glow-tiktok);\r\n          background-position: 100% 100%;\r\n          animation: buttonHoverGlow 1s ease-in-out infinite;\r\n      }\r\n  \r\n      .search-btn:disabled {\r\n          opacity: 0.6;\r\n          cursor: not-allowed;\r\n          transform: none;\r\n          animation: none;\r\n      }\r\n  \r\n      .search-another-btn {\r\n          background: linear-gradient(135deg, var(--purple), var(--purple-dark));\r\n          color: white;\r\n          border: none;\r\n          padding: clamp(0.8rem, 2.5vw, 1.1rem) clamp(1rem, 3vw, 1.6rem);\r\n          border-radius: 18px;\r\n          cursor: pointer;\r\n          transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);\r\n          display: flex;\r\n          align-items: center;\r\n          justify-content: center;\r\n          gap: 0.5rem;\r\n          min-height: 48px;\r\n          width: 100%;\r\n          font-weight: 600;\r\n          box-shadow: var(--shadow), var(--shadow-purple);\r\n          font-size: clamp(0.8rem, 2vw, 0.95rem);\r\n          position: relative;\r\n          overflow: hidden;\r\n          border: 2px solid rgba(139, 92, 246, 0.3);\r\n      }\r\n  \r\n      .search-another-btn::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-another-btn:hover::before,\r\n      .search-another-btn:active::before {\r\n          left: 100%;\r\n      }\r\n  \r\n      .search-another-btn:hover,\r\n      .search-another-btn:active {\r\n          transform: translateY(-3px) scale(1.05);\r\n          box-shadow: var(--shadow-lg), var(--glow-purple);\r\n      }\r\n  \r\n      \/* Loading Animation - NO FLOATING *\/\r\n      .loading {\r\n          display: none;\r\n          text-align: center;\r\n          padding: clamp(2rem, 5vw, 3.5rem) clamp(1.5rem, 4vw, 2.5rem);\r\n          background: #ffffff;\r\n          border: 2px solid var(--glass-border);\r\n          border-radius: 24px;\r\n          margin: 2rem 0;\r\n          box-shadow: var(--shadow-lg);\r\n      }\r\n  \r\n      .loading::before {\r\n          content: '';\r\n          position: absolute;\r\n          top: 0;\r\n          left: 0;\r\n          right: 0;\r\n          height: 2px;\r\n          background: linear-gradient(90deg, \r\n              transparent, \r\n              var(--purple), \r\n              var(--pink), \r\n              transparent);\r\n          border-radius: 24px 24px 0 0;\r\n      }\r\n  \r\n      .loading-spinner {\r\n          width: clamp(60px, 15vw, 100px);\r\n          height: clamp(60px, 15vw, 100px);\r\n          margin: 0 auto 2rem;\r\n          position: relative;\r\n      }\r\n  \r\n      .spinner-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      .spinner-ring:nth-child(1) {\r\n          width: 100%;\r\n          height: 100%;\r\n          border-top-color: var(--tiktok-red);\r\n          border-right-color: var(--tiktok-red);\r\n          animation-duration: 2s;\r\n          box-shadow: 0 0 20px rgba(145, 112, 255, 0.4);\r\n      }\r\n  \r\n      .spinner-ring:nth-child(2) {\r\n          width: 75%;\r\n          height: 75%;\r\n          top: 12.5%;\r\n          left: 12.5%;\r\n          border-bottom-color: var(--tiktok-blue);\r\n          border-left-color: var(--tiktok-blue);\r\n          animation-duration: 1.5s;\r\n          animation-direction: reverse;\r\n          box-shadow: 0 0 15px rgba(107, 79, 214, 0.4);\r\n      }\r\n  \r\n      .spinner-ring:nth-child(3) {\r\n          width: 50%;\r\n          height: 50%;\r\n          top: 25%;\r\n          left: 25%;\r\n          border-top-color: var(--purple);\r\n          animation-duration: 1s;\r\n          box-shadow: 0 0 10px rgba(139, 92, 246, 0.4);\r\n      }\r\n  \r\n      .loading-text {\r\n          font-size: clamp(1rem, 3vw, 1.4rem);\r\n          font-weight: 700;\r\n          margin-bottom: 0.5rem;\r\n          background: linear-gradient(135deg, var(--tiktok-red), var(--tiktok-blue), var(--purple));\r\n          background-size: 200% 200%;\r\n          -webkit-background-clip: text;\r\n          -webkit-text-fill-color: transparent;\r\n          animation: textGradient 3s ease infinite;\r\n      }\r\n  \r\n      .loading-subtext {\r\n          color: #555555;\r\n          font-size: clamp(0.8rem, 2vw, 1rem);\r\n          animation: textFade 2s ease-in-out infinite;\r\n      }\r\n  \r\n      \/* Main Video Section - NO FLOATING *\/\r\n      .video-section {\r\n          display: none;\r\n          animation: fadeInUp 0.8s ease-out;\r\n          background: #ffffff;\r\n          border: 2px solid var(--glass-border);\r\n          border-radius: 24px;\r\n          padding: clamp(1.5rem, 4vw, 2.5rem);\r\n          box-shadow: var(--shadow-lg);\r\n          position: relative;\r\n          overflow: hidden;\r\n      }\r\n  \r\n      .video-section::before {\r\n          content: '';\r\n          position: absolute;\r\n          top: 0;\r\n          left: 0;\r\n          right: 0;\r\n          height: 2px;\r\n          background: linear-gradient(90deg, \r\n              transparent, \r\n              var(--tiktok-red), \r\n              var(--tiktok-blue), \r\n              var(--purple), \r\n              var(--pink), \r\n              transparent);\r\n          animation: borderFlow 4s ease-in-out infinite;\r\n      }\r\n  \r\n      \/* Author Info - NO FLOATING *\/\r\n      .author-section {\r\n          display: flex;\r\n          align-items: center;\r\n          gap: clamp(0.8rem, 3vw, 1.2rem);\r\n          margin-bottom: 1.5rem;\r\n          padding: clamp(1rem, 3vw, 1.5rem);\r\n          background: #f7f4ff;\r\n          border-radius: 20px;\r\n          border: 1px solid rgba(145, 112, 255, 0.25);\r\n          width: 100%;\r\n          box-shadow: var(--shadow);\r\n          transition: all 0.4s ease;\r\n          flex-wrap: wrap;\r\n          justify-content: center;\r\n          text-align: center;\r\n      }\r\n  \r\n      .author-section:hover,\r\n      .author-section:active {\r\n          transform: translateY(-3px);\r\n          box-shadow: var(--shadow-lg), var(--glow-purple);\r\n      }\r\n  \r\n      .author-avatar {\r\n          width: clamp(50px, 12vw, 60px);\r\n          height: clamp(50px, 12vw, 60px);\r\n          border-radius: 50%;\r\n          object-fit: cover;\r\n          border: 3px solid transparent;\r\n          background: linear-gradient(135deg, var(--tiktok-red), var(--tiktok-blue));\r\n          padding: 2px;\r\n          box-shadow: var(--shadow), var(--shadow-pink);\r\n          animation: avatarPulse 4s ease-in-out infinite;\r\n          flex-shrink: 0;\r\n      }\r\n  \r\n      .author-details {\r\n          flex: 1;\r\n          min-width: 0;\r\n      }\r\n  \r\n      .author-details h3 {\r\n          font-size: clamp(1rem, 3vw, 1.2rem);\r\n          font-weight: 700;\r\n          margin-bottom: 0.25rem;\r\n          color: #111111;\r\n          word-break: break-word;\r\n      }\r\n  \r\n      .author-username {\r\n          color: var(--text-gray);\r\n          font-size: clamp(0.8rem, 2.5vw, 0.95rem);\r\n          font-weight: 500;\r\n          word-break: break-word;\r\n      }\r\n  \r\n      \/* Title - NO FLOATING *\/\r\n      .video-title {\r\n          font-size: clamp(1.2rem, 4vw, 1.6rem);\r\n          font-weight: 800;\r\n          margin-bottom: 1.5rem;\r\n          line-height: 1.4;\r\n          color: #111111;\r\n          width: 100%;\r\n          text-align: center;\r\n          word-break: break-word;\r\n          padding: 0 1rem;\r\n      }\r\n  \r\n      \/* Stats Grid - NO FLOATING - REMOVED SIZE *\/\r\n      .video-stats {\r\n          display: grid;\r\n          grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));\r\n          gap: clamp(0.5rem, 2vw, 1rem);\r\n          margin-bottom: 2rem;\r\n      }\r\n  \r\n      .stat-item {\r\n          background: linear-gradient(135deg, \r\n              var(--glass-dark) 0%, \r\n              var(--glass-purple) 100%);\r\n          padding: clamp(0.8rem, 3vw, 1.2rem);\r\n          border-radius: 18px;\r\n          text-align: center;\r\n          border: 1px solid var(--glass-border);\r\n          transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);\r\n          position: relative;\r\n          overflow: hidden;\r\n          box-shadow: var(--shadow);\r\n          backdrop-filter: blur(15px);\r\n          min-height: 80px;\r\n          display: flex;\r\n          flex-direction: column;\r\n          justify-content: center;\r\n      }\r\n  \r\n      .stat-item::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(139, 92, 246, 0.3), transparent);\r\n          transition: left 0.6s;\r\n      }\r\n  \r\n      .stat-item:hover::before,\r\n      .stat-item:active::before {\r\n          left: 100%;\r\n      }\r\n  \r\n      .stat-item:hover,\r\n      .stat-item:active {\r\n          transform: translateY(-5px) scale(1.02);\r\n          box-shadow: var(--shadow-lg), var(--glow-purple);\r\n      }\r\n  \r\n      .stat-item.views {\r\n          border-color: rgba(145, 112, 255, 0.4);\r\n          background: linear-gradient(135deg, \r\n              rgba(145, 112, 255, 0.1) 0%, \r\n              var(--glass-dark) 100%);\r\n      }\r\n  \r\n      .stat-item.likes {\r\n          border-color: rgba(107, 79, 214, 0.4);\r\n          background: linear-gradient(135deg, \r\n              rgba(107, 79, 214, 0.1) 0%, \r\n              var(--glass-dark) 100%);\r\n      }\r\n  \r\n      .stat-item.comments {\r\n          border-color: rgba(168, 85, 247, 0.4);\r\n          background: linear-gradient(135deg, \r\n              rgba(168, 85, 247, 0.1) 0%, \r\n              var(--glass-dark) 100%);\r\n      }\r\n  \r\n      .stat-item.shares {\r\n          border-color: rgba(255, 136, 0, 0.4);\r\n          background: linear-gradient(135deg, \r\n              rgba(255, 136, 0, 0.1) 0%, \r\n              var(--glass-dark) 100%);\r\n      }\r\n  \r\n      .stat-item.duration {\r\n          border-color: rgba(59, 130, 246, 0.4);\r\n          background: linear-gradient(135deg, \r\n              rgba(59, 130, 246, 0.1) 0%, \r\n              var(--glass-dark) 100%);\r\n      }\r\n  \r\n      .stat-value {\r\n          font-size: clamp(1.2rem, 4vw, 1.6rem);\r\n          font-weight: 900;\r\n          display: block;\r\n          margin-bottom: 0.25rem;\r\n          background: linear-gradient(135deg, var(--tiktok-red), var(--tiktok-blue));\r\n          -webkit-background-clip: text;\r\n          -webkit-text-fill-color: transparent;\r\n          animation: valueGlow 4s ease-in-out infinite;\r\n      }\r\n  \r\n      .stat-label {\r\n          font-size: clamp(0.7rem, 2vw, 0.8rem);\r\n          color: var(--text-gray);\r\n          font-weight: 600;\r\n          text-transform: uppercase;\r\n          letter-spacing: 0.5px;\r\n      }\r\n  \r\n      \/* Video Streaming Area - NO FLOATING *\/\r\n      .video-streaming-area {\r\n          background: linear-gradient(135deg, \r\n              rgba(145, 112, 255, 0.08) 0%, \r\n              rgba(107, 79, 214, 0.08) 50%, \r\n              rgba(168, 85, 247, 0.08) 100%);\r\n          border: 2px solid rgba(145, 112, 255, 0.3);\r\n          border-radius: 24px;\r\n          padding: clamp(1.5rem, 4vw, 2.5rem);\r\n          margin-bottom: 1.5rem;\r\n          position: relative;\r\n          overflow: hidden;\r\n          box-shadow: var(--shadow-lg), var(--shadow-pink);\r\n          backdrop-filter: blur(15px);\r\n      }\r\n  \r\n      .video-streaming-area::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-image: \r\n              linear-gradient(rgba(145, 112, 255, 0.05) 1px, transparent 1px),\r\n              linear-gradient(90deg, rgba(107, 79, 214, 0.05) 1px, transparent 1px);\r\n          background-size: 30px 30px;\r\n          opacity: 0.6;\r\n          pointer-events: none;\r\n          z-index: 1;\r\n          animation: gridMove 12s linear infinite;\r\n      }\r\n  \r\n      .video-streaming-area::after {\r\n          content: '';\r\n          position: absolute;\r\n          top: 0;\r\n          left: 0;\r\n          right: 0;\r\n          height: 2px;\r\n          background: linear-gradient(90deg, \r\n              transparent, \r\n              var(--tiktok-red), \r\n              var(--tiktok-blue), \r\n              var(--purple), \r\n              transparent);\r\n          z-index: 2;\r\n          animation: borderFlow 3s ease-in-out infinite;\r\n      }\r\n  \r\n      .streaming-header {\r\n          text-align: center;\r\n          margin-bottom: 2rem;\r\n          position: relative;\r\n          z-index: 3;\r\n      }\r\n  \r\n      .streaming-title {\r\n          font-size: clamp(1rem, 3vw, 1.3rem);\r\n          font-weight: 700;\r\n          margin-bottom: 0.5rem;\r\n          background: linear-gradient(135deg, var(--tiktok-red), var(--tiktok-blue));\r\n          -webkit-background-clip: text;\r\n          -webkit-text-fill-color: transparent;\r\n          animation: titlePulse 4s ease-in-out infinite;\r\n      }\r\n  \r\n      .streaming-subtitle {\r\n          color: var(--text-gray);\r\n          font-size: clamp(0.8rem, 2vw, 0.95rem);\r\n          font-weight: 500;\r\n      }\r\n  \r\n      \/* Video Player - NO FLOATING *\/\r\n      .video-player-wrapper {\r\n          position: relative;\r\n          width: 100%;\r\n          max-width: min(380px, 90vw);\r\n          margin: 0 auto;\r\n          aspect-ratio: 9\/16;\r\n          border-radius: 24px;\r\n          overflow: hidden;\r\n          box-shadow: var(--shadow-xl), var(--shadow-pink);\r\n          background: #000;\r\n          z-index: 3;\r\n          border: 2px solid rgba(145, 112, 255, 0.3);\r\n      }\r\n  \r\n      .video-thumbnail {\r\n          position: absolute;\r\n          top: 0;\r\n          left: 0;\r\n          width: 100%;\r\n          height: 100%;\r\n          object-fit: cover;\r\n          z-index: 4;\r\n          cursor: pointer;\r\n          transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);\r\n      }\r\n  \r\n      .video-thumbnail:hover,\r\n      .video-thumbnail:active {\r\n          transform: scale(1.02);\r\n      }\r\n  \r\n      .thumbnail-overlay {\r\n          position: absolute;\r\n          top: 0;\r\n          left: 0;\r\n          width: 100%;\r\n          height: 100%;\r\n          background: rgba(0, 0, 0, 0.4);\r\n          display: flex;\r\n          align-items: center;\r\n          justify-content: center;\r\n          z-index: 5;\r\n          cursor: pointer;\r\n          transition: all 0.4s ease;\r\n          backdrop-filter: blur(2px);\r\n      }\r\n  \r\n      .thumbnail-overlay:hover,\r\n      .thumbnail-overlay:active {\r\n          background: rgba(0, 0, 0, 0.6);\r\n          backdrop-filter: blur(4px);\r\n      }\r\n  \r\n      .thumbnail-play-btn {\r\n          width: clamp(60px, 15vw, 80px);\r\n          height: clamp(60px, 15vw, 80px);\r\n          background: linear-gradient(135deg, var(--tiktok-red), var(--pink));\r\n          border: none;\r\n          border-radius: 50%;\r\n          color: white;\r\n          font-size: clamp(1.5rem, 4vw, 2rem);\r\n          cursor: pointer;\r\n          display: flex;\r\n          align-items: center;\r\n          justify-content: center;\r\n          box-shadow: var(--shadow-xl), var(--glow-tiktok);\r\n          transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);\r\n          position: relative;\r\n          overflow: hidden;\r\n          animation: playButtonPulse 3s ease-in-out infinite;\r\n          border: 2px solid rgba(255, 255, 255, 0.2);\r\n          min-height: 44px; \/* Touch-friendly *\/\r\n      }\r\n  \r\n      .thumbnail-play-btn::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(45deg, transparent, rgba(255, 255, 255, 0.3), transparent);\r\n          transform: translateX(-100%);\r\n          transition: transform 0.6s;\r\n      }\r\n  \r\n      .thumbnail-play-btn::hover,\r\n      .thumbnail-play-btn::active {\r\n          transform: translateX(100%);\r\n      }\r\n  \r\n      .thumbnail-play-btn:hover,\r\n      .thumbnail-play-btn:active {\r\n          transform: scale(1.15);\r\n          box-shadow: var(--shadow-xl), var(--glow-tiktok);\r\n      }\r\n  \r\n      .video-player {\r\n          width: 100%;\r\n          height: 100%;\r\n          object-fit: contain;\r\n          background: #000;\r\n          position: relative;\r\n          z-index: 2;\r\n          display: none;\r\n      }\r\n  \r\n      .video-player.playing {\r\n          display: block;\r\n      }\r\n  \r\n      .video-controls {\r\n          position: absolute;\r\n          bottom: 0;\r\n          left: 0;\r\n          right: 0;\r\n          background: linear-gradient(transparent, rgba(0, 0, 0, 0.9));\r\n          padding: clamp(1rem, 3vw, 1.5rem);\r\n          transform: translateY(100%);\r\n          transition: transform 0.4s ease;\r\n          z-index: 10;\r\n          backdrop-filter: blur(10px);\r\n      }\r\n  \r\n      .video-player-wrapper:hover .video-controls,\r\n      .video-controls.show {\r\n          transform: translateY(0);\r\n      }\r\n  \r\n      .progress-bar {\r\n          width: 100%;\r\n          height: clamp(4px, 1.5vw, 6px);\r\n          background: rgba(255, 255, 255, 0.2);\r\n          border-radius: 3px;\r\n          margin-bottom: 0.5rem;\r\n          cursor: pointer;\r\n          position: relative;\r\n          overflow: hidden;\r\n          min-height: 20px; \/* Touch-friendly *\/\r\n          display: flex;\r\n          align-items: center;\r\n      }\r\n  \r\n      .progress-fill {\r\n          height: 100%;\r\n          background: linear-gradient(90deg, var(--tiktok-red), var(--pink));\r\n          border-radius: 3px;\r\n          width: 0%;\r\n          transition: width 0.1s linear;\r\n          box-shadow: 0 0 10px rgba(145, 112, 255, 0.5);\r\n      }\r\n  \r\n      \/* Video Time Display *\/\r\n      .video-time {\r\n          display: flex;\r\n          justify-content: space-between;\r\n          font-size: clamp(0.7rem, 2vw, 0.8rem);\r\n          color: rgba(255, 255, 255, 0.9);\r\n          margin-bottom: 1rem;\r\n      }\r\n  \r\n      .control-buttons {\r\n          display: flex;\r\n          justify-content: space-between;\r\n          align-items: center;\r\n          flex-wrap: wrap;\r\n          gap: 1rem;\r\n      }\r\n  \r\n      .control-group {\r\n          display: flex;\r\n          align-items: center;\r\n          gap: clamp(0.5rem, 2vw, 0.75rem);\r\n          flex-wrap: wrap;\r\n      }\r\n  \r\n      .control-btn {\r\n          background: rgba(255, 255, 255, 0.15);\r\n          border: none;\r\n          color: white;\r\n          width: clamp(40px, 10vw, 44px);\r\n          height: clamp(40px, 10vw, 44px);\r\n          border-radius: 50%;\r\n          cursor: pointer;\r\n          display: flex;\r\n          align-items: center;\r\n          justify-content: center;\r\n          transition: all 0.3s ease;\r\n          backdrop-filter: blur(10px);\r\n          border: 1px solid rgba(255, 255, 255, 0.2);\r\n          font-size: clamp(0.8rem, 2vw, 1rem);\r\n          min-height: 44px; \/* Touch-friendly *\/\r\n          min-width: 44px;\r\n      }\r\n  \r\n      .control-btn:hover,\r\n      .control-btn:active {\r\n          background: rgba(255, 255, 255, 0.25);\r\n          transform: scale(1.1);\r\n          box-shadow: var(--shadow);\r\n      }\r\n  \r\n      .play-btn {\r\n          width: clamp(50px, 12vw, 60px);\r\n          height: clamp(50px, 12vw, 60px);\r\n          background: linear-gradient(135deg, var(--tiktok-red), var(--pink));\r\n          font-size: clamp(1rem, 3vw, 1.4rem);\r\n          border: none;\r\n          box-shadow: var(--shadow-lg), var(--glow-tiktok);\r\n      }\r\n  \r\n      .volume-control {\r\n          display: flex;\r\n          align-items: center;\r\n          gap: clamp(0.3rem, 1.5vw, 0.5rem);\r\n          flex-wrap: wrap;\r\n      }\r\n  \r\n      .volume-slider {\r\n          width: clamp(60px, 15vw, 80px);\r\n          height: clamp(4px, 1.5vw, 6px);\r\n          background: rgba(255, 255, 255, 0.2);\r\n          border-radius: 3px;\r\n          cursor: pointer;\r\n          position: relative;\r\n          overflow: hidden;\r\n          min-height: 20px; \/* Touch-friendly *\/\r\n          display: flex;\r\n          align-items: center;\r\n      }\r\n  \r\n      .volume-fill {\r\n          height: 100%;\r\n          background: linear-gradient(90deg, var(--tiktok-blue), var(--green));\r\n          border-radius: 3px;\r\n          width: 100%;\r\n          transition: width 0.1s ease;\r\n          box-shadow: 0 0 8px rgba(107, 79, 214, 0.4);\r\n      }\r\n  \r\n      \/* Download Section - NO FLOATING *\/\r\n      .download-section {\r\n          background: linear-gradient(135deg, \r\n              rgba(107, 79, 214, 0.1) 0%, \r\n              rgba(0, 255, 136, 0.1) 50%, \r\n              var(--glass-dark) 100%);\r\n          border: 2px solid rgba(107, 79, 214, 0.3);\r\n          border-radius: 20px;\r\n          padding: clamp(1rem, 3vw, 1.5rem);\r\n          margin-bottom: 1.5rem;\r\n          box-shadow: var(--shadow), var(--shadow-blue);\r\n          position: relative;\r\n          overflow: hidden;\r\n          backdrop-filter: blur(15px);\r\n      }\r\n  \r\n      .download-section::before {\r\n          content: '';\r\n          position: absolute;\r\n          top: 0;\r\n          left: 0;\r\n          right: 0;\r\n          height: 2px;\r\n          background: linear-gradient(90deg, \r\n              transparent, \r\n              var(--tiktok-blue), \r\n              var(--green), \r\n              transparent);\r\n          animation: borderFlow 3s ease-in-out infinite;\r\n      }\r\n  \r\n      .download-header {\r\n          text-align: center;\r\n          margin-bottom: clamp(0.8rem, 2.5vw, 1.2rem);\r\n      }\r\n  \r\n      .download-title {\r\n          font-size: clamp(1rem, 3vw, 1.2rem);\r\n          font-weight: 700;\r\n          margin-bottom: 0.25rem;\r\n          background: linear-gradient(135deg, var(--tiktok-blue), var(--green));\r\n          -webkit-background-clip: text;\r\n          -webkit-text-fill-color: transparent;\r\n          display: flex;\r\n          align-items: center;\r\n          justify-content: center;\r\n          gap: 0.5rem;\r\n          animation: titlePulse 4s ease-in-out infinite;\r\n          flex-wrap: wrap;\r\n      }\r\n  \r\n      .download-subtitle {\r\n          color: var(--text-gray);\r\n          font-size: clamp(0.8rem, 2vw, 0.9rem);\r\n      }\r\n  \r\n      .download-grid {\r\n          display: grid;\r\n          grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));\r\n          gap: clamp(0.8rem, 2vw, 1rem);\r\n      }\r\n  \r\n      .download-btn {\r\n          background: linear-gradient(135deg, var(--tiktok-blue), #00d4cc);\r\n          color: white;\r\n          border: none;\r\n          padding: clamp(0.8rem, 3vw, 1rem) clamp(1rem, 3vw, 1.5rem);\r\n          border-radius: 16px;\r\n          font-weight: 700;\r\n          cursor: pointer;\r\n          transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);\r\n          display: flex;\r\n          align-items: center;\r\n          justify-content: center;\r\n          gap: 0.5rem;\r\n          box-shadow: var(--shadow), var(--shadow-blue);\r\n          position: relative;\r\n          overflow: hidden;\r\n          font-size: clamp(0.8rem, 2vw, 0.95rem);\r\n          animation: buttonGlow 5s ease-in-out infinite;\r\n          border: 1px solid rgba(107, 79, 214, 0.3);\r\n          min-height: 48px;\r\n          text-align: center;\r\n      }\r\n  \r\n      .download-btn::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.3), transparent);\r\n          transition: left 0.5s;\r\n      }\r\n  \r\n      .download-btn:hover:not(:disabled)::before,\r\n      .download-btn:active:not(:disabled)::before {\r\n          left: 100%;\r\n      }\r\n  \r\n      .download-btn:hover:not(:disabled),\r\n      .download-btn:active:not(:disabled) {\r\n          transform: translateY(-3px) scale(1.02);\r\n          box-shadow: var(--shadow-lg), var(--glow-blue);\r\n      }\r\n  \r\n      .download-btn:disabled {\r\n          opacity: 0.6;\r\n          cursor: not-allowed;\r\n          transform: none;\r\n          animation: none;\r\n      }\r\n  \r\n      .download-btn.hd {\r\n          background: linear-gradient(135deg, var(--orange), #ff6600);\r\n          border-color: rgba(255, 136, 0, 0.3);\r\n      }\r\n  \r\n      .download-btn.hd:hover:not(:disabled),\r\n      .download-btn.hd:active:not(:disabled) {\r\n          box-shadow: var(--shadow-lg), 0 0 30px rgba(255, 136, 0, 0.5);\r\n      }\r\n  \r\n      \/* Audio Streaming Section - NO FLOATING *\/\r\n      .audio-streaming {\r\n          background: linear-gradient(135deg, \r\n              rgba(168, 85, 247, 0.12) 0%, \r\n              rgba(145, 112, 255, 0.12) 50%, \r\n              var(--glass-dark) 100%);\r\n          border: 2px solid rgba(168, 85, 247, 0.3);\r\n          border-radius: 20px;\r\n          padding: clamp(1rem, 3vw, 1.5rem);\r\n          position: relative;\r\n          overflow: hidden;\r\n          box-shadow: var(--shadow), var(--shadow-purple);\r\n          backdrop-filter: blur(15px);\r\n      }\r\n  \r\n      .audio-streaming::before {\r\n          content: '';\r\n          position: absolute;\r\n          top: 0;\r\n          left: 0;\r\n          right: 0;\r\n          height: 2px;\r\n          background: linear-gradient(90deg, \r\n              transparent, \r\n              var(--purple), \r\n              var(--pink), \r\n              transparent);\r\n          animation: borderFlow 3s ease-in-out infinite;\r\n      }\r\n  \r\n      .audio-header {\r\n          text-align: center;\r\n          margin-bottom: clamp(0.8rem, 2.5vw, 1.2rem);\r\n      }\r\n  \r\n      .audio-main-title {\r\n          font-size: clamp(1rem, 3vw, 1.2rem);\r\n          font-weight: 700;\r\n          margin-bottom: 0.25rem;\r\n          background: linear-gradient(135deg, var(--purple), var(--pink));\r\n          -webkit-background-clip: text;\r\n          -webkit-text-fill-color: transparent;\r\n          width: 100%;\r\n          display: flex;\r\n          align-items: center;\r\n          justify-content: center;\r\n          gap: 0.5rem;\r\n          animation: titlePulse 4s ease-in-out infinite;\r\n          flex-wrap: wrap;\r\n      }\r\n  \r\n      .audio-subtitle {\r\n          color: var(--text-gray);\r\n          font-size: clamp(0.8rem, 2vw, 0.9rem);\r\n          margin-bottom: clamp(0.8rem, 2.5vw, 1.2rem);\r\n      }\r\n  \r\n      .audio-player-section {\r\n          display: flex;\r\n          align-items: center;\r\n          gap: clamp(0.8rem, 3vw, 1.2rem);\r\n          margin-bottom: 1.5rem;\r\n          flex-wrap: wrap;\r\n          justify-content: center;\r\n      }\r\n  \r\n      \/* Audio Icon - Left Side, Smaller *\/\r\n      .audio-icon-wrapper {\r\n          position: relative;\r\n          flex-shrink: 0;\r\n      }\r\n  \r\n      .audio-icon {\r\n          width: clamp(40px, 10vw, 50px);\r\n          height: clamp(40px, 10vw, 50px);\r\n          background: linear-gradient(135deg, var(--purple), var(--pink));\r\n          border-radius: 50%;\r\n          display: flex;\r\n          align-items: center;\r\n          justify-content: center;\r\n          font-size: clamp(1rem, 2.5vw, 1.2rem);\r\n          color: white;\r\n          box-shadow: var(--shadow), var(--shadow-purple);\r\n          animation: audioIconPulse 4s ease-in-out infinite;\r\n          position: relative;\r\n          z-index: 2;\r\n          border: 2px solid rgba(168, 85, 247, 0.3);\r\n      }\r\n  \r\n      .audio-wave {\r\n          position: absolute;\r\n          top: 50%;\r\n          left: 50%;\r\n          transform: translate(-50%, -50%);\r\n          border: 1px solid rgba(168, 85, 247, 0.2);\r\n          border-radius: 50%;\r\n          animation: audioWaveRipple 2s ease-out infinite;\r\n      }\r\n  \r\n      .audio-wave:nth-child(1) {\r\n          width: clamp(50px, 12vw, 60px);\r\n          height: clamp(50px, 12vw, 60px);\r\n          animation-delay: 0s;\r\n      }\r\n  \r\n      .audio-wave:nth-child(2) {\r\n          width: clamp(60px, 15vw, 75px);\r\n          height: clamp(60px, 15vw, 75px);\r\n          animation-delay: 0.5s;\r\n      }\r\n  \r\n      .audio-wave:nth-child(3) {\r\n          width: clamp(70px, 18vw, 90px);\r\n          height: clamp(70px, 18vw, 90px);\r\n          animation-delay: 1s;\r\n      }\r\n  \r\n      .audio-info {\r\n          flex: 1;\r\n          min-width: 0;\r\n          text-align: center;\r\n      }\r\n  \r\n      .audio-title {\r\n          font-size: clamp(0.9rem, 2.5vw, 1rem);\r\n          font-weight: 700;\r\n          color: var(--text-light);\r\n          margin-bottom: 0.25rem;\r\n          word-break: break-word;\r\n      }\r\n  \r\n      .audio-artist {\r\n          font-size: clamp(0.75rem, 2vw, 0.85rem);\r\n          color: var(--text-gray);\r\n          margin-bottom: 1rem;\r\n          word-break: break-word;\r\n      }\r\n  \r\n      \/* Audio Progress Bar *\/\r\n      .audio-progress-container {\r\n          width: 100%;\r\n          margin-bottom: 1rem;\r\n      }\r\n  \r\n      .audio-progress {\r\n          height: clamp(6px, 2vw, 8px);\r\n          background: rgba(168, 85, 247, 0.2);\r\n          border-radius: 4px;\r\n          position: relative;\r\n          cursor: pointer;\r\n          overflow: hidden;\r\n          margin-bottom: 0.5rem;\r\n          min-height: 20px; \/* Touch-friendly *\/\r\n          display: flex;\r\n          align-items: center;\r\n      }\r\n  \r\n      .audio-progress-fill {\r\n          height: 100%;\r\n          background: linear-gradient(90deg, var(--purple), var(--pink));\r\n          border-radius: 4px;\r\n          width: 0%;\r\n          transition: width 0.1s ease;\r\n          box-shadow: 0 0 10px rgba(168, 85, 247, 0.4);\r\n      }\r\n  \r\n      .audio-time {\r\n          display: flex;\r\n          justify-content: space-between;\r\n          font-size: clamp(0.7rem, 2vw, 0.8rem);\r\n          color: var(--text-gray);\r\n          margin-bottom: 1rem;\r\n      }\r\n  \r\n      \/* Audio Controls *\/\r\n      .audio-controls {\r\n          display: flex;\r\n          align-items: center;\r\n          justify-content: center;\r\n          gap: clamp(0.8rem, 3vw, 1rem);\r\n          margin-bottom: 1rem;\r\n          flex-wrap: wrap;\r\n      }\r\n  \r\n      .audio-play-btn {\r\n          width: clamp(44px, 10vw, 50px);\r\n          height: clamp(44px, 10vw, 50px);\r\n          background: linear-gradient(135deg, var(--purple), var(--pink));\r\n          border: none;\r\n          border-radius: 50%;\r\n          color: white;\r\n          cursor: pointer;\r\n          display: flex;\r\n          align-items: center;\r\n          justify-content: center;\r\n          transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);\r\n          box-shadow: var(--shadow), var(--shadow-purple);\r\n          font-size: clamp(1rem, 2.5vw, 1.2rem);\r\n          flex-shrink: 0;\r\n          animation: audioPlayPulse 4s ease-in-out infinite;\r\n          border: 2px solid rgba(168, 85, 247, 0.3);\r\n          min-height: 44px; \/* Touch-friendly *\/\r\n          min-width: 44px;\r\n      }\r\n  \r\n      .audio-play-btn:hover,\r\n      .audio-play-btn:active {\r\n          transform: scale(1.1);\r\n          box-shadow: var(--shadow-lg), var(--glow-purple);\r\n      }\r\n  \r\n      \/* Audio Volume Control *\/\r\n      .audio-volume-control {\r\n          display: flex;\r\n          align-items: center;\r\n          gap: clamp(0.5rem, 2vw, 0.75rem);\r\n          flex-wrap: wrap;\r\n      }\r\n  \r\n      .audio-volume-btn {\r\n          background: rgba(168, 85, 247, 0.15);\r\n          border: none;\r\n          color: var(--purple-light);\r\n          width: clamp(36px, 8vw, 40px);\r\n          height: clamp(36px, 8vw, 40px);\r\n          border-radius: 50%;\r\n          cursor: pointer;\r\n          display: flex;\r\n          align-items: center;\r\n          justify-content: center;\r\n          transition: all 0.3s ease;\r\n          backdrop-filter: blur(10px);\r\n          border: 1px solid rgba(168, 85, 247, 0.2);\r\n          font-size: clamp(0.8rem, 2vw, 1rem);\r\n          min-height: 44px; \/* Touch-friendly *\/\r\n          min-width: 44px;\r\n      }\r\n  \r\n      .audio-volume-btn:hover,\r\n      .audio-volume-btn:active {\r\n          background: rgba(168, 85, 247, 0.25);\r\n          transform: scale(1.1);\r\n          box-shadow: var(--shadow);\r\n      }\r\n  \r\n      .audio-volume-slider {\r\n          width: clamp(60px, 15vw, 80px);\r\n          height: clamp(4px, 1.5vw, 6px);\r\n          background: rgba(168, 85, 247, 0.2);\r\n          border-radius: 3px;\r\n          cursor: pointer;\r\n          position: relative;\r\n          overflow: hidden;\r\n          min-height: 20px; \/* Touch-friendly *\/\r\n          display: flex;\r\n          align-items: center;\r\n      }\r\n  \r\n      .audio-volume-fill {\r\n          height: 100%;\r\n          background: linear-gradient(90deg, var(--purple), var(--pink));\r\n          border-radius: 3px;\r\n          width: 100%;\r\n          transition: width 0.1s ease;\r\n          box-shadow: 0 0 8px rgba(168, 85, 247, 0.4);\r\n      }\r\n  \r\n      .download-audio-section {\r\n          text-align: center;\r\n      }\r\n  \r\n      .download-audio-btn {\r\n          background: linear-gradient(135deg, var(--purple), var(--purple-dark));\r\n          color: white;\r\n          border: none;\r\n          padding: clamp(0.8rem, 3vw, 1rem) clamp(1rem, 3vw, 1.5rem);\r\n          border-radius: 16px;\r\n          font-weight: 700;\r\n          cursor: pointer;\r\n          transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);\r\n          display: inline-flex;\r\n          align-items: center;\r\n          gap: 0.5rem;\r\n          box-shadow: var(--shadow), var(--shadow-purple);\r\n          font-size: clamp(0.8rem, 2vw, 0.95rem);\r\n          position: relative;\r\n          overflow: hidden;\r\n          animation: buttonGlow 5s ease-in-out infinite;\r\n          border: 1px solid rgba(168, 85, 247, 0.3);\r\n          min-height: 48px;\r\n          width: 100%;\r\n          max-width: 300px;\r\n          justify-content: center;\r\n      }\r\n  \r\n      .download-audio-btn::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.3), transparent);\r\n          transition: left 0.5s;\r\n      }\r\n  \r\n      .download-audio-btn:hover:not(:disabled)::before,\r\n      .download-audio-btn:active:not(:disabled)::before {\r\n          left: 100%;\r\n      }\r\n  \r\n      .download-audio-btn:hover:not(:disabled),\r\n      .download-audio-btn:active:not(:disabled) {\r\n          transform: translateY(-3px) scale(1.02);\r\n          box-shadow: var(--shadow-lg), var(--glow-purple);\r\n      }\r\n  \r\n      .download-audio-btn:disabled {\r\n          opacity: 0.6;\r\n          cursor: not-allowed;\r\n          transform: none;\r\n          animation: none;\r\n      }\r\n  \r\n      \/* Download Progress - NO FLOATING *\/\r\n      .download-progress {\r\n          position: fixed;\r\n          bottom: 1.5rem;\r\n          right: 1.5rem;\r\n          background: linear-gradient(135deg, \r\n              var(--glass-dark) 0%, \r\n              var(--glass-purple) 100%);\r\n          backdrop-filter: blur(25px);\r\n          border: 2px solid var(--glass-border);\r\n          border-radius: 18px;\r\n          padding: clamp(1rem, 3vw, 1.5rem) clamp(1.5rem, 4vw, 2rem);\r\n          min-width: min(320px, 90vw);\r\n          max-width: 90vw;\r\n          box-shadow: var(--shadow-xl), var(--shadow-purple);\r\n          z-index: 1000;\r\n          display: none;\r\n      }\r\n  \r\n      .download-progress.show {\r\n          display: block;\r\n          animation: slideInRight 0.4s ease-out;\r\n      }\r\n  \r\n      .progress-header {\r\n          display: flex;\r\n          justify-content: space-between;\r\n          align-items: center;\r\n          margin-bottom: 1rem;\r\n          gap: 1rem;\r\n          flex-wrap: wrap;\r\n      }\r\n  \r\n      .progress-text {\r\n          font-weight: 700;\r\n          font-size: clamp(0.8rem, 2vw, 0.95rem);\r\n          color: var(--text-light);\r\n          background: linear-gradient(135deg, var(--tiktok-red), var(--tiktok-blue));\r\n          -webkit-background-clip: text;\r\n          -webkit-text-fill-color: transparent;\r\n          flex: 1;\r\n          min-width: 0;\r\n      }\r\n  \r\n      .cancel-btn {\r\n          background: rgba(255, 51, 102, 0.15);\r\n          border: 1px solid rgba(255, 51, 102, 0.3);\r\n          color: #ff3366;\r\n          padding: clamp(0.4rem, 1.5vw, 0.5rem) clamp(0.8rem, 2vw, 1rem);\r\n          border-radius: 10px;\r\n          font-size: clamp(0.7rem, 2vw, 0.8rem);\r\n          cursor: pointer;\r\n          transition: all 0.3s ease;\r\n          font-weight: 600;\r\n          backdrop-filter: blur(10px);\r\n          min-height: 36px;\r\n          flex-shrink: 0;\r\n      }\r\n  \r\n      .cancel-btn:hover,\r\n      .cancel-btn:active {\r\n          background: rgba(255, 51, 102, 0.25);\r\n          transform: scale(1.05);\r\n      }\r\n  \r\n      .progress-bar-container {\r\n          width: 100%;\r\n          height: clamp(6px, 2vw, 8px);\r\n          background: rgba(168, 85, 247, 0.2);\r\n          border-radius: 4px;\r\n          overflow: hidden;\r\n      }\r\n  \r\n      .progress-bar-fill {\r\n          height: 100%;\r\n          background: linear-gradient(90deg, var(--green), #00cc77);\r\n          border-radius: 4px;\r\n          width: 0%;\r\n          transition: width 0.3s ease;\r\n          box-shadow: 0 0 12px rgba(0, 255, 136, 0.4);\r\n          animation: progressGlow 3s ease-in-out infinite;\r\n      }\r\n  \r\n      \/* Error Message - NO FLOATING *\/\r\n      .error-message {\r\n          background: linear-gradient(135deg, \r\n              rgba(255, 51, 102, 0.1) 0%, \r\n              var(--glass-dark) 100%);\r\n          border: 2px solid rgba(255, 51, 102, 0.3);\r\n          color: #ff6b6b;\r\n          padding: clamp(1rem, 3vw, 1.2rem) clamp(1.2rem, 4vw, 1.8rem);\r\n          border-radius: 16px;\r\n          margin: 1rem 0;\r\n          display: none;\r\n          align-items: center;\r\n          gap: clamp(0.5rem, 2vw, 1rem);\r\n          font-weight: 600;\r\n          backdrop-filter: blur(15px);\r\n          box-shadow: var(--shadow);\r\n          animation: errorShake 0.5s ease-in-out;\r\n          font-size: clamp(0.8rem, 2vw, 1rem);\r\n          flex-wrap: wrap;\r\n      }\r\n  \r\n      .error-message.show {\r\n          display: flex;\r\n          animation: fadeInUp 0.3s ease-out, errorShake 0.5s ease-in-out;\r\n      }\r\n  \r\n      \/* Animations - KEPT ONLY DECORATIVE ONES *\/\r\n      @keyframes gradientShift {\r\n          0%, 100% { background-position: 0% 50%; }\r\n          50% { background-position: 100% 50%; }\r\n      }\r\n  \r\n      @keyframes backgroundFloat {\r\n          0%, 100% { opacity: 1; transform: translateY(0px); }\r\n          50% { opacity: 0.8; transform: translateY(-10px); }\r\n      }\r\n  \r\n      @keyframes fadeInDown {\r\n          from { opacity: 0; transform: translateY(-40px); }\r\n          to { opacity: 1; transform: translateY(0); }\r\n      }\r\n  \r\n      @keyframes fadeInUp {\r\n          from { opacity: 0; transform: translateY(40px); }\r\n          to { opacity: 1; transform: translateY(0); }\r\n      }\r\n  \r\n      @keyframes slideInRight {\r\n          from { opacity: 0; transform: translateX(100%); }\r\n          to { opacity: 1; transform: translateX(0); }\r\n      }\r\n  \r\n      @keyframes spin {\r\n          to { transform: rotate(360deg); }\r\n      }\r\n  \r\n      @keyframes logoFloat {\r\n          0%, 100% { transform: translateY(0px) rotate(0deg); }\r\n          50% { transform: translateY(-10px) rotate(5deg); }\r\n      }\r\n  \r\n      @keyframes logoShine {\r\n          0% { transform: translateX(-100%) translateY(-100%) rotate(45deg); }\r\n          100% { transform: translateX(100%) translateY(100%) rotate(45deg); }\r\n      }\r\n  \r\n      @keyframes textGradient {\r\n          0%, 100% { background-position: 0% 50%; }\r\n          50% { background-position: 100% 50%; }\r\n      }\r\n  \r\n      @keyframes subtitleGlow {\r\n          0%, 100% { text-shadow: 0 0 5px rgba(160, 160, 160, 0.3); }\r\n          50% { text-shadow: 0 0 15px rgba(160, 160, 160, 0.6); }\r\n      }\r\n  \r\n      @keyframes borderFlow {\r\n          0%, 100% { opacity: 0.5; }\r\n          50% { opacity: 1; }\r\n      }\r\n  \r\n      @keyframes overlayPulse {\r\n          0%, 100% { opacity: 1; }\r\n          50% { opacity: 0.7; }\r\n      }\r\n  \r\n      @keyframes inputFocusGlow {\r\n          0%, 100% { box-shadow: 0 0 0 4px rgba(139, 92, 246, 0.2), var(--glow-purple), inset 0 2px 10px rgba(0, 0, 0, 0.3); }\r\n          50% { box-shadow: 0 0 0 6px rgba(139, 92, 246, 0.4), var(--glow-purple), inset 0 2px 10px rgba(0, 0, 0, 0.3); }\r\n      }\r\n  \r\n      @keyframes buttonPulse {\r\n          0%, 100% { box-shadow: var(--shadow-lg), var(--shadow-pink); }\r\n          50% { box-shadow: var(--shadow-xl), var(--glow-tiktok); }\r\n      }\r\n  \r\n      @keyframes buttonHoverGlow {\r\n          0%, 100% { filter: brightness(1); }\r\n          50% { filter: brightness(1.2); }\r\n      }\r\n  \r\n      @keyframes textFade {\r\n          0%, 100% { opacity: 0.7; }\r\n          50% { opacity: 1; }\r\n      }\r\n  \r\n      @keyframes avatarPulse {\r\n          0%, 100% { box-shadow: var(--shadow), var(--shadow-pink); }\r\n          50% { box-shadow: var(--shadow), 0 0 30px rgba(145, 112, 255, 0.6); }\r\n      }\r\n  \r\n      @keyframes valueGlow {\r\n          0%, 100% { filter: brightness(1); }\r\n          50% { filter: brightness(1.2); }\r\n      }\r\n  \r\n      @keyframes gridMove {\r\n          0% { transform: translate(0, 0); }\r\n          100% { transform: translate(30px, 30px); }\r\n      }\r\n  \r\n      @keyframes titlePulse {\r\n          0%, 100% { filter: brightness(1); }\r\n          50% { filter: brightness(1.3); }\r\n      }\r\n  \r\n      @keyframes playButtonPulse {\r\n          0%, 100% { transform: scale(1); }\r\n          50% { transform: scale(1.05); }\r\n      }\r\n  \r\n      @keyframes buttonGlow {\r\n          0%, 100% { box-shadow: var(--shadow); }\r\n          50% { box-shadow: var(--shadow-lg); }\r\n      }\r\n  \r\n      @keyframes audioIconPulse {\r\n          0%, 100% { transform: scale(1); }\r\n          50% { transform: scale(1.1); }\r\n      }\r\n  \r\n      @keyframes audioWaveRipple {\r\n          0% {\r\n              opacity: 1;\r\n              transform: translate(-50%, -50%) scale(0.8);\r\n          }\r\n          100% {\r\n              opacity: 0;\r\n              transform: translate(-50%, -50%) scale(2);\r\n          }\r\n      }\r\n  \r\n      @keyframes audioPlayPulse {\r\n          0%, 100% { box-shadow: var(--shadow), var(--shadow-purple); }\r\n          50% { box-shadow: var(--shadow-lg), var(--glow-purple); }\r\n      }\r\n  \r\n      @keyframes progressGlow {\r\n          0%, 100% { box-shadow: 0 0 12px rgba(0, 255, 136, 0.4); }\r\n          50% { box-shadow: 0 0 20px rgba(0, 255, 136, 0.8); }\r\n      }\r\n  \r\n      @keyframes errorShake {\r\n          0%, 100% { transform: translateX(0); }\r\n          25% { transform: translateX(-5px); }\r\n          75% { transform: translateX(5px); }\r\n      }\r\n  \r\n      \/* Enhanced Responsive Design *\/\r\n      \r\n      \/* Large Tablets and Small Desktops *\/\r\n      @media (max-width: 1024px) {\r\n          .ttvv-custom-container {\r\n              padding: clamp(1rem, 3vw, 1.5rem);\r\n          }\r\n  \r\n          .video-stats {\r\n              grid-template-columns: repeat(3, 1fr);\r\n          }\r\n  \r\n          .download-grid {\r\n              grid-template-columns: 1fr;\r\n          }\r\n  \r\n          .action-buttons {\r\n              grid-template-columns: 1fr;\r\n              gap: 1rem;\r\n          }\r\n  \r\n          .search-another-btn {\r\n              width: 100%;\r\n          }\r\n  \r\n          .audio-player-section {\r\n              flex-direction: column;\r\n              text-align: center;\r\n              gap: 1rem;\r\n          }\r\n  \r\n          .audio-controls {\r\n              flex-direction: row;\r\n              justify-content: center;\r\n              gap: 1rem;\r\n          }\r\n  \r\n          .audio-volume-control {\r\n              justify-content: center;\r\n          }\r\n  \r\n          .video-player-wrapper {\r\n              max-width: min(320px, 85vw);\r\n          }\r\n      }\r\n  \r\n      \/* Tablets *\/\r\n      @media (max-width: 768px) {\r\n          .ttvv-custom-container {\r\n              padding: 1rem;\r\n          }\r\n  \r\n          .logo {\r\n              flex-direction: column;\r\n              gap: 1rem;\r\n          }\r\n  \r\n          .logo-icon {\r\n              width: 60px;\r\n              height: 60px;\r\n              font-size: 24px;\r\n          }\r\n  \r\n          .video-stats {\r\n              grid-template-columns: repeat(2, 1fr);\r\n              gap: 0.8rem;\r\n          }\r\n  \r\n          .author-section {\r\n              flex-direction: column;\r\n              text-align: center;\r\n              gap: 1rem;\r\n          }\r\n  \r\n          .download-progress {\r\n              left: 1rem;\r\n              right: 1rem;\r\n              bottom: 1rem;\r\n              min-width: auto;\r\n          }\r\n  \r\n          .control-buttons {\r\n              flex-direction: column;\r\n              gap: 1rem;\r\n              align-items: center;\r\n          }\r\n  \r\n          .volume-control {\r\n              order: 3;\r\n              width: 100%;\r\n              justify-content: center;\r\n          }\r\n  \r\n          .audio-controls {\r\n              flex-direction: column;\r\n              gap: 1rem;\r\n          }\r\n  \r\n          .audio-volume-control {\r\n              width: 100%;\r\n              justify-content: center;\r\n          }\r\n  \r\n          .video-player-wrapper {\r\n              max-width: min(300px, 80vw);\r\n          }\r\n  \r\n          \/* Show video controls on mobile *\/\r\n          .video-controls {\r\n              transform: translateY(0);\r\n              position: relative;\r\n              background: rgba(0, 0, 0, 0.8);\r\n              margin-top: 1rem;\r\n              border-radius: 12px;\r\n          }\r\n  \r\n          .video-player-wrapper:hover .video-controls {\r\n              transform: translateY(0);\r\n          }\r\n      }\r\n  \r\n      \/* Mobile Phones *\/\r\n      @media (max-width: 480px) {\r\n          .ttvv-custom-container {\r\n              padding: 0.8rem;\r\n          }\r\n  \r\n          .header {\r\n              margin-bottom: 1.5rem;\r\n          }\r\n  \r\n          .logo-icon {\r\n              width: 50px;\r\n              height: 50px;\r\n              font-size: 20px;\r\n          }\r\n  \r\n          .video-stats {\r\n              grid-template-columns: 1fr;\r\n              gap: 0.6rem;\r\n          }\r\n  \r\n          .stat-item {\r\n              min-height: 70px;\r\n              padding: 0.8rem;\r\n          }\r\n  \r\n          .stat-value {\r\n              font-size: 1.3rem;\r\n          }\r\n  \r\n          .audio-player-section {\r\n              gap: 0.8rem;\r\n          }\r\n  \r\n          .audio-icon {\r\n              width: 40px;\r\n              height: 40px;\r\n              font-size: 1rem;\r\n          }\r\n  \r\n          .audio-play-btn {\r\n              width: 44px;\r\n              height: 44px;\r\n              font-size: 1rem;\r\n          }\r\n  \r\n          .video-player-wrapper {\r\n              max-width: min(280px, 75vw);\r\n          }\r\n  \r\n          .thumbnail-play-btn {\r\n              width: 60px;\r\n              height: 60px;\r\n              font-size: 1.5rem;\r\n          }\r\n  \r\n          .download-progress {\r\n              left: 0.5rem;\r\n              right: 0.5rem;\r\n              bottom: 0.5rem;\r\n              padding: 1rem;\r\n          }\r\n  \r\n          .progress-header {\r\n              flex-direction: column;\r\n              gap: 0.5rem;\r\n              align-items: stretch;\r\n          }\r\n  \r\n          .cancel-btn {\r\n              align-self: center;\r\n              min-width: 80px;\r\n          }\r\n  \r\n          \/* Touch-friendly adjustments *\/\r\n          .input-field {\r\n              font-size: 16px !important; \/* Prevents zoom on iOS *\/\r\n          }\r\n  \r\n          .control-btn,\r\n          .audio-play-btn,\r\n          .audio-volume-btn,\r\n          .paste-btn,\r\n          .search-btn,\r\n          .download-btn,\r\n          .download-audio-btn {\r\n              min-height: 44px;\r\n              min-width: 44px;\r\n          }\r\n  \r\n          .progress-bar,\r\n          .audio-progress,\r\n          .volume-slider,\r\n          .audio-volume-slider {\r\n              min-height: 44px;\r\n          }\r\n      }\r\n  \r\n      \/* Small Mobile Phones *\/\r\n      @media (max-width: 360px) {\r\n          .ttvv-custom-container {\r\n              padding: 0.5rem;\r\n          }\r\n  \r\n          .search-section,\r\n          .video-section,\r\n          .download-section,\r\n          .audio-streaming {\r\n              padding: 1rem;\r\n              border-radius: 16px;\r\n          }\r\n  \r\n          .logo-text {\r\n              font-size: 1.5rem;\r\n              letter-spacing: -1px;\r\n          }\r\n  \r\n          .subtitle {\r\n              font-size: 0.8rem;\r\n          }\r\n  \r\n          .video-player-wrapper {\r\n              max-width: min(260px, 70vw);\r\n          }\r\n  \r\n          .audio-wave:nth-child(1) {\r\n              width: 45px;\r\n              height: 45px;\r\n          }\r\n  \r\n          .audio-wave:nth-child(2) {\r\n              width: 55px;\r\n              height: 55px;\r\n          }\r\n  \r\n          .audio-wave:nth-child(3) {\r\n              width: 65px;\r\n              height: 65px;\r\n          }\r\n      }\r\n  \r\n      \/* Landscape Mobile *\/\r\n      @media (max-height: 500px) and (orientation: landscape) {\r\n          .ttvv-custom-container {\r\n              padding: 1rem;\r\n          }\r\n  \r\n          .header {\r\n              margin-bottom: 1rem;\r\n          }\r\n  \r\n          .logo {\r\n              flex-direction: row;\r\n              gap: 1rem;\r\n          }\r\n  \r\n          .logo-icon {\r\n              width: 40px;\r\n              height: 40px;\r\n              font-size: 16px;\r\n          }\r\n  \r\n          .video-player-wrapper {\r\n              max-width: min(200px, 30vw);\r\n          }\r\n  \r\n          .video-stats {\r\n              grid-template-columns: repeat(5, 1fr);\r\n              gap: 0.5rem;\r\n          }\r\n  \r\n          .stat-item {\r\n              min-height: 60px;\r\n              padding: 0.5rem;\r\n          }\r\n  \r\n          .stat-value {\r\n              font-size: 1rem;\r\n          }\r\n  \r\n          .stat-label {\r\n              font-size: 0.6rem;\r\n          }\r\n      }\r\n  \r\n      \/* High DPI Displays *\/\r\n      @media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) {\r\n          .logo-icon,\r\n          .author-avatar,\r\n          .audio-icon,\r\n          .thumbnail-play-btn,\r\n          .audio-play-btn {\r\n              image-rendering: -webkit-optimize-contrast;\r\n              image-rendering: crisp-edges;\r\n          }\r\n      }\r\n  \r\n      \/* Reduced Motion *\/\r\n      @media (prefers-reduced-motion: reduce) {\r\n          *,\r\n          *::before,\r\n          *::after {\r\n              animation-duration: 0.01ms !important;\r\n              animation-iteration-count: 1 !important;\r\n              transition-duration: 0.01ms !important;\r\n          }\r\n  \r\n          .video-player-wrapper,\r\n          .search-section,\r\n          .video-section,\r\n          .download-section,\r\n          .audio-streaming {\r\n              animation: none !important;\r\n          }\r\n      }\r\n  \r\n      \/* High Contrast Mode *\/\r\n      @media (prefers-contrast: high) {\r\n          :root {\r\n              --glass-dark: rgba(0, 0, 0, 0.9);\r\n              --glass-purple: rgba(0, 0, 0, 0.9);\r\n              --glass-blue: rgba(0, 0, 0, 0.9);\r\n              --glass-border: rgba(255, 255, 255, 0.8);\r\n              --shadow: 0 4px 20px rgba(0, 0, 0, 0.8);\r\n              --shadow-lg: 0 8px 40px rgba(0, 0, 0, 0.9);\r\n              --shadow-xl: 0 16px 60px rgba(0, 0, 0, 1);\r\n          }\r\n  \r\n          .input-field,\r\n          .search-btn,\r\n          .download-btn,\r\n          .audio-play-btn {\r\n              border: 2px solid var(--text-light);\r\n          }\r\n      }\r\n  \r\n      \/* Dark Mode Support *\/\r\n      @media (prefers-color-scheme: dark) {\r\n          \/* Already using dark theme, but can add specific adjustments *\/\r\n          .ttvv-hero-tools-section {\r\n              background: linear-gradient(135deg, \r\n                  #000000 0%, \r\n                  var(--bg-primary) 25%, \r\n                  var(--bg-secondary) 50%, \r\n                  var(--card-purple) 75%, \r\n                  var(--card-blue) 100%);\r\n          }\r\n      }\r\n  \r\n      \/* Print Styles *\/\r\n      @media print {\r\n          .ttvv-hero-tools-section {\r\n              background: white !important;\r\n              color: black !important;\r\n          }\r\n  \r\n          .ttvv-custom-container {\r\n              max-width: none;\r\n              padding: 0;\r\n          }\r\n  \r\n          .video-player-wrapper,\r\n          .download-section,\r\n          .audio-streaming,\r\n          .download-progress {\r\n              display: none !important;\r\n          }\r\n  \r\n          .search-section,\r\n          .video-section {\r\n              background: white !important;\r\n              border: 1px solid black !important;\r\n              box-shadow: none !important;\r\n          }\r\n      }\r\n  <\/style>\r\n <body data-aos-easing=\"ease-in-out\" data-aos-duration=\"800\" data-aos-delay=\"0\" data-new-gr-c-s-check-loaded=\"14.1249.0\" data-gr-ext-installed=\"\" data-new-gr-c-s-loaded=\"14.1223.0\" class=\"\" style=\"\">\r\n  \r\n      <!-- hero section -->\r\n      <section class=\"ttvv-hero-tools-section\">\r\n          <div class=\"container\">\r\n              <div class=\"ttvv-custom-container\">\r\n                  <!-- Header -->\r\n                  <div class=\"header\">\r\n                      <div class=\"logo\">\r\n                          <div class=\"logo-icon\">\r\n                              <i class=\"fab fa-tiktok\"><\/i>\r\n                          <\/div>\r\n                          <h1 class=\"logo-text\"><span class=\"logo-purple\">TikTok<\/span> Link Viewer<\/h1>\r\n                      <\/div>\r\n                      <p class=\"subtitle\">Stream & Download TikTok Videos in Ultra Premium Quality<\/p>\r\n                  <\/div>\r\n              \r\n                  <!-- Search Section -->\r\n                  <div class=\"search-section\">\r\n                      <div class=\"input-group\">\r\n                          <input type=\"text\" class=\"input-field\" id=\"videoInput\" placeholder=\"Enter TikTok video URL or video ID\">\r\n                          <div class=\"input-actions\">\r\n                              <span>Supports URLs and video IDs<\/span>\r\n                              <button class=\"paste-btn\" onclick=\"pasteFromClipboard()\">\r\n                                  <i class=\"fas fa-paste\"><\/i> Paste\r\n                              <\/button>\r\n                          <\/div>\r\n                      <\/div>\r\n                      \r\n                      <div class=\"action-buttons\">\r\n                          <button class=\"search-btn\" onclick=\"loadVideo()\" id=\"loadBtn\">\r\n                              <i class=\"fas fa-play-circle\"><\/i>\r\n                              <span id=\"loadText\">Load Video<\/span>\r\n                          <\/button>\r\n                          <button class=\"search-another-btn\" onclick=\"searchAnother()\" id=\"searchAnotherBtn\" style=\"display: none;\">\r\n                              <i class=\"fas fa-search\"><\/i> Search Another\r\n                          <\/button>\r\n                      <\/div>\r\n              \r\n                      <div class=\"error-message\" id=\"errorMessage\">\r\n                          <i class=\"fas fa-exclamation-triangle\"><\/i>\r\n                          <span id=\"errorText\"><\/span>\r\n                      <\/div>\r\n                  <\/div>\r\n              \r\n                  <!-- Loading Animation -->\r\n                  <div class=\"loading\" id=\"loading\">\r\n                      <div class=\"loading-spinner\">\r\n                          <div class=\"spinner-ring\"><\/div>\r\n                          <div class=\"spinner-ring\"><\/div>\r\n                          <div class=\"spinner-ring\"><\/div>\r\n                      <\/div>\r\n                      <div class=\"loading-text\">Loading TikTok Video<\/div>\r\n                      <div class=\"loading-subtext\">Fetching video details and preparing premium stream...<\/div>\r\n                  <\/div>\r\n              \r\n                  <!-- Main Video Section -->\r\n                  <div class=\"video-section\" id=\"videoSection\">\r\n                      <!-- Full Width Title -->\r\n                      <h2 class=\"video-title\" id=\"videoTitle\"><\/h2>\r\n              \r\n                      <!-- Author Info -->\r\n                      <div class=\"author-section\" id=\"authorSection\">\r\n                          <img decoding=\"async\" class=\"author-avatar\" id=\"authorAvatar\" src=\"\/placeholder.svg\" alt=\"Author\">\r\n                          <div class=\"author-details\">\r\n                              <h3 id=\"authorName\"><\/h3>\r\n                              <p class=\"author-username\" id=\"authorUsername\"><\/p>\r\n                          <\/div>\r\n                      <\/div>\r\n              \r\n                      <!-- Stats Grid -->\r\n                      <div class=\"video-stats\" id=\"videoStats\"><\/div>\r\n              \r\n                      <!-- Video Streaming Area -->\r\n                      <div class=\"video-streaming-area\">\r\n                          <div class=\"streaming-header\">\r\n                              <h3 class=\"streaming-title\">\ud83c\udfac Video Streaming<\/h3>\r\n                              <p class=\"streaming-subtitle\">High Quality Video Player with Premium Controls<\/p>\r\n                          <\/div>\r\n              \r\n                          <div class=\"video-player-wrapper\">\r\n                              <!-- Video Thumbnail -->\r\n                              <img decoding=\"async\" class=\"video-thumbnail\" id=\"videoThumbnail\" src=\"\/placeholder.svg\" alt=\"Video Thumbnail\">\r\n                              <div class=\"thumbnail-overlay\" onclick=\"startVideoPlayback()\">\r\n                                  <button class=\"thumbnail-play-btn\">\r\n                                      <i class=\"fas fa-play\"><\/i>\r\n                                  <\/button>\r\n                              <\/div>\r\n              \r\n                              <!-- Video Player -->\r\n                              <video class=\"video-player\" id=\"videoPlayer\" loop=\"\" preload=\"metadata\">\r\n                                  Your browser doesn't support video playback.\r\n                              <\/video>\r\n                              \r\n                              <div class=\"video-controls\" id=\"videoControls\">\r\n                                  <div class=\"progress-bar\" onclick=\"seekVideo(event)\">\r\n                                      <div class=\"progress-fill\" id=\"progressFill\"><\/div>\r\n                                  <\/div>\r\n                                  \r\n                                  <!-- Video Time Display -->\r\n                                  <div class=\"video-time\">\r\n                                      <span id=\"videoCurrentTime\">0:00<\/span>\r\n                                      <span id=\"videoDuration\">0:00<\/span>\r\n                                  <\/div>\r\n                                  \r\n                                  <div class=\"control-buttons\">\r\n                                      <div class=\"control-group volume-control\">\r\n                                          <button class=\"control-btn\" onclick=\"toggleMute()\" id=\"muteBtn\">\r\n                                              <i class=\"fas fa-volume-up\"><\/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                                      <button class=\"control-btn play-btn\" onclick=\"togglePlay()\" id=\"playBtn\">\r\n                                          <i class=\"fas fa-play\"><\/i>\r\n                                      <\/button>\r\n              \r\n                                      <div class=\"control-group\">\r\n                                          <button class=\"control-btn\" onclick=\"toggleFullscreen()\" id=\"fullscreenBtn\">\r\n                                              <i class=\"fas fa-expand\"><\/i>\r\n                                          <\/button>\r\n                                      <\/div>\r\n                                  <\/div>\r\n                              <\/div>\r\n                          <\/div>\r\n                      <\/div>\r\n              \r\n                      <!-- Download Section -->\r\n                      <div class=\"download-section\">\r\n                          <div class=\"download-header\">\r\n                              <h3 class=\"download-title\">\r\n                                  <i class=\"fas fa-download\"><\/i>\r\n                                  Download Options\r\n                              <\/h3>\r\n                              <p class=\"download-subtitle\">Choose your preferred quality and format<\/p>\r\n                          <\/div>\r\n                          \r\n                          <div class=\"download-grid\">\r\n                              <button class=\"download-btn\" onclick=\"downloadVideo('standard')\" id=\"downloadStandard\">\r\n                                  <i class=\"fas fa-download\"><\/i>\r\n                                  <span>Standard Quality<\/span>\r\n                              <\/button>\r\n                              <button class=\"download-btn hd\" onclick=\"downloadVideo('hd')\" id=\"downloadHD\">\r\n                                  <i class=\"fas fa-hd-video\"><\/i>\r\n                                  <span>HD Quality<\/span>\r\n                              <\/button>\r\n                          <\/div>\r\n                      <\/div>\r\n              \r\n                      <!-- Audio Streaming Section -->\r\n                      <div class=\"audio-streaming\" id=\"audioStreaming\" style=\"display: none;\">\r\n                          <div class=\"audio-header\">\r\n                              <h3 class=\"audio-main-title\">\r\n                                  <i class=\"fas fa-music\"><\/i>\r\n                                  Audio Streaming\r\n                              <\/h3>\r\n                              <p class=\"audio-subtitle\">High Quality Audio Player with Advanced Controls<\/p>\r\n                          <\/div>\r\n                          \r\n                          <div class=\"audio-player-section\">\r\n                              <div class=\"audio-icon-wrapper\">\r\n                                  <div class=\"audio-wave\"><\/div>\r\n                                  <div class=\"audio-wave\"><\/div>\r\n                                  <div class=\"audio-wave\"><\/div>\r\n                                  <div class=\"audio-icon\">\r\n                                      <i class=\"fas fa-music\"><\/i>\r\n                                  <\/div>\r\n                              <\/div>\r\n                              \r\n                              <div class=\"audio-info\">\r\n                                  <div class=\"audio-title\" id=\"audioTitle\">Audio Track<\/div>\r\n                                  <div class=\"audio-artist\" id=\"audioArtist\">TikTok Audio<\/div>\r\n                              <\/div>\r\n                          <\/div>\r\n              \r\n                          <!-- Audio Progress Bar -->\r\n                          <div class=\"audio-progress-container\">\r\n                              <div class=\"audio-progress\" onclick=\"seekAudio(event)\">\r\n                                  <div class=\"audio-progress-fill\" id=\"audioProgressFill\"><\/div>\r\n                              <\/div>\r\n                              <div class=\"audio-time\">\r\n                                  <span id=\"audioCurrentTime\">0:00<\/span>\r\n                                  <span id=\"audioDuration\">0:00<\/span>\r\n                              <\/div>\r\n                          <\/div>\r\n                          \r\n                          <!-- Audio Controls -->\r\n                          <div class=\"audio-controls\">\r\n                              <button class=\"audio-play-btn\" onclick=\"toggleAudioPlay()\" id=\"audioPlayBtn\">\r\n                                  <i class=\"fas fa-play\"><\/i>\r\n                              <\/button>\r\n              \r\n                              <!-- Audio Volume Control -->\r\n                              <div class=\"audio-volume-control\">\r\n                                  <button class=\"audio-volume-btn\" onclick=\"toggleAudioMute()\" id=\"audioMuteBtn\">\r\n                                      <i class=\"fas fa-volume-up\"><\/i>\r\n                                  <\/button>\r\n                                  <div class=\"audio-volume-slider\" onclick=\"setAudioVolume(event)\">\r\n                                      <div class=\"audio-volume-fill\" id=\"audioVolumeFill\" style=\"width: 100%;\"><\/div>\r\n                                  <\/div>\r\n                              <\/div>\r\n                          <\/div>\r\n                          \r\n                          <div class=\"download-audio-section\">\r\n                              <button class=\"download-audio-btn\" onclick=\"downloadVideo('audio')\" id=\"downloadAudio\">\r\n                                  <i class=\"fas fa-download\"><\/i>\r\n                                  <span>Download Audio<\/span>\r\n                              <\/button>\r\n                          <\/div>\r\n                          \r\n                          <audio id=\"audioElement\" loop=\"\"><\/audio>\r\n                      <\/div>\r\n                  <\/div>\r\n              <\/div>\r\n              \r\n              <!-- Download Progress -->\r\n              <div class=\"download-progress\" id=\"downloadProgress\">\r\n                  <div class=\"progress-header\">\r\n                      <span class=\"progress-text\" id=\"progressText\">Downloading...<\/span>\r\n                      <button class=\"cancel-btn\" onclick=\"cancelDownload()\">Cancel<\/button>\r\n                  <\/div>\r\n                  <div class=\"progress-bar-container\">\r\n                      <div class=\"progress-bar-fill\" id=\"progressBarFill\"><\/div>\r\n                  <\/div>\r\n              <\/div>\r\n          <\/div>\r\n      <\/section>\r\n   \r\n  <!-- Work Process Section -->\r\n  <section class=\"ttvv-work-process-section\" id=\"how-it-works\">\r\n      <div class=\"container ttvv-work-process-content\">\r\n          <div class=\"text-center mb-5\" data-aos=\"fade-up\">\r\n              <h2 class=\"ttvv-section-title ttvv-light-title\">How Our TikTok Link Viewer Works<\/h2>\r\n              <p class=\"ttvv-section-subtitle ttvv-light-subtitle\">View TikTok content anonymously in just 3 simple steps<\/p>\r\n          <\/div>\r\n          \r\n          <div class=\"row\">\r\n              <div class=\"col-md-4\" data-aos=\"fade-up\" data-aos-delay=\"50\">\r\n                  <div class=\"ttvv-process-step\">\r\n                      <div class=\"ttvv-step-number\">1<\/div>\r\n                      <h4 class=\"text-white\">Enter Link URL<\/h4>\r\n                      <p class=\"ttvv-light-subtitle\">Paste the TikTok link you want to view anonymously<\/p>\r\n                  <\/div>\r\n              <\/div>\r\n              \r\n              <div class=\"col-md-4\" data-aos=\"fade-up\" data-aos-delay=\"150\">\r\n                  <div class=\"ttvv-process-step\">\r\n                      <div class=\"ttvv-step-number\">2<\/div>\r\n                      <h4 class=\"text-white\">Process Request<\/h4>\r\n                      <p class=\"ttvv-light-subtitle\">Our system retrieves the content without revealing your identity<\/p>\r\n                  <\/div>\r\n              <\/div>\r\n              \r\n              <div class=\"col-md-4\" data-aos=\"fade-up\" data-aos-delay=\"250\">\r\n                  <div class=\"ttvv-process-step\">\r\n                      <div class=\"ttvv-step-number\">3<\/div>\r\n                      <h4 class=\"text-white\">View Content<\/h4>\r\n                      <p class=\"ttvv-light-subtitle\">Access the linked content without leaving any trace<\/p>\r\n                  <\/div>\r\n              <\/div>\r\n          <\/div>\r\n      <\/div>\r\n  <\/section>\r\n  \r\n  <!-- Features Section -->\r\n  <section class=\"ttvv-features-section\">\r\n      <div class=\"container\">\r\n          <div class=\"text-center mb-5\" data-aos=\"fade-up\">\r\n              <h2 class=\"ttvv-section-title\">Key Features<\/h2>\r\n              <p class=\"ttvv-section-subtitle\">Our TikTok Link Viewer offers powerful features for anonymous browsing<\/p>\r\n          <\/div>\r\n          \r\n          <div class=\"row\">\r\n              <div class=\"col-lg-4 mb-4\" data-aos=\"fade-up\" data-aos-delay=\"50\">\r\n                  <div class=\"ttvv-feature-card\">\r\n                      <div class=\"ttvv-feature-icon\">\r\n                          <i class=\"bx bx-user-check\"><\/i>\r\n                      <\/div>\r\n                      <h4>100% Anonymous<\/h4>\r\n                      <p>View linked content without leaving any trace or alerting the owner<\/p>\r\n                  <\/div>\r\n              <\/div>\r\n              \r\n              <div class=\"col-lg-4 mb-4\" data-aos=\"fade-up\" data-aos-delay=\"150\">\r\n                  <div class=\"ttvv-feature-card\">\r\n                      <div class=\"ttvv-feature-icon\">\r\n                          <i class=\"bx bx-link\"><\/i>\r\n                      <\/div>\r\n                      <h4>View Any Link<\/h4>\r\n                      <p>Access all public TikTok content with complete details and statistics<\/p>\r\n                  <\/div>\r\n              <\/div>\r\n              \r\n              <div class=\"col-lg-4 mb-4\" data-aos=\"fade-up\" data-aos-delay=\"250\">\r\n                  <div class=\"ttvv-feature-card\">\r\n                      <div class=\"ttvv-feature-icon\">\r\n                          <i class=\"bx bx-line-chart\"><\/i>\r\n                      <\/div>\r\n                      <h4>Content Analytics<\/h4>\r\n                      <p>Get detailed statistics about views, likes, comments, and engagement<\/p>\r\n                  <\/div>\r\n              <\/div>\r\n              \r\n              <div class=\"col-lg-4 mb-5\" data-aos=\"fade-up\" data-aos-delay=\"50\">\r\n                  <div class=\"ttvv-feature-card\">\r\n                      <div class=\"ttvv-feature-icon\">\r\n                          <i class=\"bx bx-devices\"><\/i>\r\n                      <\/div>\r\n                      <h4>Works on All Devices<\/h4>\r\n                      <p>Use our viewer on desktop, tablet, or mobile without issues<\/p>\r\n                  <\/div>\r\n              <\/div>\r\n              \r\n              <div class=\"col-lg-4 mb-5\" data-aos=\"fade-up\" data-aos-delay=\"150\">\r\n                  <div class=\"ttvv-feature-card\">\r\n                      <div class=\"ttvv-feature-icon\">\r\n                          <i class=\"bx bx-shield\"><\/i>\r\n                      <\/div>\r\n                      <h4>No Login Required<\/h4>\r\n                      <p>Access any public TikTok link without an account<\/p>\r\n                  <\/div>\r\n              <\/div>\r\n              \r\n              <div class=\"col-lg-4 mb-5\" data-aos=\"fade-up\" data-aos-delay=\"250\">\r\n                  <div class=\"ttvv-feature-card\">\r\n                      <div class=\"ttvv-feature-icon\">\r\n                          <i class=\"bx bx-time-five\"><\/i>\r\n                      <\/div>\r\n                      <h4>Instant Processing<\/h4>\r\n                      <p>Get access to linked content immediately without waiting<\/p>\r\n                  <\/div>\r\n              <\/div>\r\n          <\/div>\r\n      <\/div>\r\n  <\/section>\r\n  \r\n  <!-- Why Choose Section -->\r\n  <section class=\"ttvv-why-choose-section\">\r\n      <div class=\"container\">\r\n          <div class=\"row align-items-center\">\r\n              <div class=\"col-lg-6 mb-5 mb-lg-0\" data-aos=\"fade-right\">\r\n                  <div class=\"ttvv-why-choose-image ttvv-floating-element\">\r\n                      <img decoding=\"async\" src=\"https:\/\/viewanonymous.com\/wp-content\/uploads\/2026\/03\/Tiktok_Link_Viewer.webp\" alt=\"TikTok Link Viewer\" class=\"img-fluid rounded-3\">\r\n                  <\/div>\r\n              <\/div>\r\n              <div class=\"col-lg-6\" data-aos=\"fade-left\">\r\n                  <h2 class=\"ttvv-section-title mb-4\">Why Choose Our TikTok Link Viewer?<\/h2>\r\n                  <p class=\"mb-4\">Our tool provides a reliable and secure way to view TikTok content anonymously via links, prioritizing your privacy with comprehensive access to public content.<\/p>\r\n                  \r\n                  <div class=\"ttvv-benefit-item\">\r\n                      <div class=\"ttvv-benefit-icon\">\r\n                          <i class=\"bx bx-check\"><\/i>\r\n                      <\/div>\r\n                      <div>\r\n                          <h5 class=\"mb-1\">Completely undetectable<\/h5>\r\n                          <p class=\"mb-0\">No traces left when viewing linked content<\/p>\r\n                      <\/div>\r\n                  <\/div>\r\n                  \r\n                  <div class=\"ttvv-benefit-item\">\r\n                      <div class=\"ttvv-benefit-icon\">\r\n                          <i class=\"bx bx-check\"><\/i>\r\n                      <\/div>\r\n                      <div>\r\n                          <h5 class=\"mb-1\">No registration needed<\/h5>\r\n                          <p class=\"mb-0\">Start viewing linked content immediately<\/p>\r\n                      <\/div>\r\n                  <\/div>\r\n                  \r\n                  <div class=\"ttvv-benefit-item\">\r\n                      <div class=\"ttvv-benefit-icon\">\r\n                          <i class=\"bx bx-check\"><\/i>\r\n                      <\/div>\r\n                      <div>\r\n                          <h5 class=\"mb-1\">Detailed analytics<\/h5>\r\n                          <p class=\"mb-0\">Get insights into linked content performance<\/p>\r\n                      <\/div>\r\n                  <\/div>\r\n                  \r\n                  <div class=\"ttvv-benefit-item\">\r\n                      <div class=\"ttvv-benefit-icon\">\r\n                          <i class=\"bx bx-check\"><\/i>\r\n                      <\/div>\r\n                      <div>\r\n                          <h5 class=\"mb-1\">Fast processing<\/h5>\r\n                          <p class=\"mb-0\">Get instant access to any public linked content<\/p>\r\n                      <\/div>\r\n                  <\/div>\r\n              <\/div>\r\n          <\/div>\r\n      <\/div>\r\n  <\/section>\r\n  \r\n  <!-- FAQ Section -->\r\n  <section class=\"ttvv-faq-section\">\r\n      <div class=\"container\">\r\n          <div class=\"text-center mb-5\" data-aos=\"fade-up\">\r\n              <h2 class=\"ttvv-section-title\">Frequently Asked Questions<\/h2>\r\n              <p class=\"ttvv-section-subtitle\">Find answers to common questions about our TikTok Link Viewer<\/p>\r\n          <\/div>\r\n          \r\n          <div class=\"row justify-content-center\">\r\n              <div class=\"col-lg-8\">\r\n                  <div class=\"accordion\" id=\"ttvv-faqAccordion\">\r\n                      <div class=\"ttvv-accordion-item mb-3\" data-aos=\"fade-up\" data-aos-delay=\"50\">\r\n                          <h3 class=\"accordion-header\" id=\"ttvv-heading1\">\r\n                              <button class=\"ttvv-accordion-button\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#ttvv-collapse1\" aria-expanded=\"true\" aria-controls=\"ttvv-collapse1\">\r\n                                  Is it legal to use this TikTok Link Viewer?\r\n                              <\/button>\r\n                          <\/h3>\r\n                          <div id=\"ttvv-collapse1\" class=\"accordion-collapse collapse show\" aria-labelledby=\"ttvv-heading1\" data-bs-parent=\"#ttvv-faqAccordion\">\r\n                              <div class=\"ttvv-accordion-body\">\r\n                                  Yes, our tool is completely legal to use. It only allows you to view publicly available TikTok content via links. We don't access private accounts or bypass any security measures - we simply display content that is already publicly accessible on TikTok.\r\n                              <\/div>\r\n                          <\/div>\r\n                      <\/div>\r\n                      \r\n                      <div class=\"ttvv-accordion-item mb-3\" data-aos=\"fade-up\" data-aos-delay=\"100\">\r\n                          <h3 class=\"accordion-header\" id=\"ttvv-heading2\">\r\n                              <button class=\"ttvv-accordion-button collapsed\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#ttvv-collapse2\" aria-expanded=\"false\" aria-controls=\"ttvv-collapse2\">\r\n                                  Can I view private TikTok content with this tool?\r\n                              <\/button>\r\n                          <\/h3>\r\n                          <div id=\"ttvv-collapse2\" class=\"accordion-collapse collapse\" aria-labelledby=\"ttvv-heading2\" data-bs-parent=\"#ttvv-faqAccordion\">\r\n                              <div class=\"ttvv-accordion-body\">\r\n                                  No, our TikTok Link Viewer respects TikTok's privacy settings. We can only display content from links that are set to public. Private content cannot be accessed.\r\n                              <\/div>\r\n                          <\/div>\r\n                      <\/div>\r\n                      \r\n                      <div class=\"ttvv-accordion-item mb-3\" data-aos=\"fade-up\" data-aos-delay=\"150\">\r\n                          <h3 class=\"accordion-header\" id=\"ttvv-heading3\">\r\n                              <button class=\"ttvv-accordion-button collapsed\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#ttvv-collapse3\" aria-expanded=\"false\" aria-controls=\"ttvv-collapse3\">\r\n                                  Will TikTok know I viewed the linked content?\r\n                              <\/button>\r\n                          <\/h3>\r\n                          <div id=\"ttvv-collapse3\" class=\"accordion-collapse collapse\" aria-labelledby=\"ttvv-heading3\" data-bs-parent=\"#ttvv-faqAccordion\">\r\n                              <div class=\"ttvv-accordion-body\">\r\n                                  No, all viewing is completely anonymous. When you use our TikTok Link Viewer, TikTok doesn't register that you've viewed the content. The content owner won't know you accessed it.\r\n                              <\/div>\r\n                          <\/div>\r\n                      <\/div>\r\n                      \r\n                      <div class=\"ttvv-accordion-item mb-3\" data-aos=\"fade-up\" data-aos-delay=\"200\">\r\n                          <h3 class=\"accordion-header\" id=\"ttvv-heading4\">\r\n                              <button class=\"ttvv-accordion-button collapsed\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#ttvv-collapse4\" aria-expanded=\"false\" aria-controls=\"ttvv-collapse4\">\r\n                                  Do I need to install software to use this?\r\n                              <\/button>\r\n                          <\/h3>\r\n                          <div id=\"ttvv-collapse4\" class=\"accordion-collapse collapse\" aria-labelledby=\"ttvv-heading4\" data-bs-parent=\"#ttvv-faqAccordion\">\r\n                              <div class=\"ttvv-accordion-body\">\r\n                                  No, our TikTok Link Viewer is completely web-based. You don't need to download or install any software. Simply visit our website, enter the link URL, and view the content directly in your browser.\r\n                              <\/div>\r\n                          <\/div>\r\n                      <\/div>\r\n                      \r\n                      <div class=\"ttvv-accordion-item mb-3\" data-aos=\"fade-up\" data-aos-delay=\"250\">\r\n                          <h3 class=\"accordion-header\" id=\"ttvv-heading5\">\r\n                              <button class=\"ttvv-accordion-button collapsed\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#ttvv-collapse5\" aria-expanded=\"false\" aria-controls=\"ttvv-collapse5\">\r\n                                  What information can I see about the linked content?\r\n                              <\/button>\r\n                          <\/h3>\r\n                          <div id=\"ttvv-collapse5\" class=\"accordion-collapse collapse\" aria-labelledby=\"ttvv-heading5\" data-bs-parent=\"#ttvv-faqAccordion\">\r\n                              <div class=\"ttvv-accordion-body\">\r\n                                  Our TikTok Link Viewer shows all publicly available information, including content details, view count, like count, comments, and other statistics. Private information is not accessible.\r\n                              <\/div>\r\n                          <\/div>\r\n                      <\/div>\r\n                  <\/div>\r\n              <\/div>\r\n          <\/div>\r\n      <\/div>\r\n  <\/section>    \r\n    \r\n    <!-- Footer -->\r\n    \r\n  \r\n  <!-- Copyright Section -->\r\n  \r\n  \r\n  \r\n  \r\n   <!-- Tiktak video viewer js -->\r\n    <script src=\"https:\/\/tools.xrespond.com\/api\/rate-limit-handler.js\"><\/script>\r\n    <script src=\"https:\/\/tools.xrespond.com\/api\/js\/client-ip-detector.js\"><\/script>\r\n   <script>\r\n      const API_URL = 'https:\/\/tools.xrespond.com\/api\/tiktok\/profile\/videos\/details';\r\n      let currentVideoData = null;\r\n      let isLoading = false;\r\n      let isDownloading = false;\r\n      let downloadController = null;\r\n      let currentVolume = 1;\r\n      let isMuted = false;\r\n      let isFullscreen = false;\r\n      let audioPlaying = false;\r\n      let videoStarted = false;\r\n      let audioCurrentVolume = 1;\r\n      let audioIsMuted = false;\r\n      \r\n      \/\/ Mobile detection\r\n      const isMobile = \/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini\/i.test(navigator.userAgent);\r\n      const isTouch = 'ontouchstart' in window || navigator.maxTouchPoints > 0;\r\n      \r\n      \/\/ Utility Functions\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      function formatDuration(seconds) {\r\n          const mins = Math.floor(seconds \/ 60);\r\n          const secs = Math.floor(seconds % 60);\r\n          return `${mins}:${secs.toString().padStart(2, '0')}`;\r\n      }\r\n      \r\n      function formatFileSize(bytes) {\r\n          if (bytes >= 1024 * 1024) {\r\n              return (bytes \/ (1024 * 1024)).toFixed(1) + ' MB';\r\n          }\r\n          if (bytes >= 1024) {\r\n              return (bytes \/ 1024).toFixed(1) + ' KB';\r\n          }\r\n          return bytes + ' B';\r\n      }\r\n      \r\n      \/\/ Mobile-specific functions\r\n      function showVideoControlsOnMobile() {\r\n          if (isMobile || isTouch) {\r\n              const videoControls = document.getElementById('videoControls');\r\n              if (videoControls) {\r\n                  videoControls.classList.add('show');\r\n                  \/\/ Hide after 3 seconds of inactivity\r\n                  setTimeout(() => {\r\n                      if (!videoControls.matches(':hover')) {\r\n                          videoControls.classList.remove('show');\r\n                      }\r\n                  }, 3000);\r\n              }\r\n          }\r\n      }\r\n      \r\n      function handleTouchEvents() {\r\n          if (isMobile || isTouch) {\r\n              \/\/ Add touch event listeners for better mobile interaction\r\n              document.addEventListener('touchstart', function(e) {\r\n                  \/\/ Handle touch start\r\n              }, { passive: true });\r\n      \r\n              document.addEventListener('touchend', function(e) {\r\n                  \/\/ Handle touch end\r\n              }, { passive: true });\r\n      \r\n              \/\/ Prevent zoom on double tap for video controls\r\n              let lastTouchEnd = 0;\r\n              document.addEventListener('touchend', function(e) {\r\n                  const now = (new Date()).getTime();\r\n                  if (now - lastTouchEnd <= 300) {\r\n                      e.preventDefault();\r\n                  }\r\n                  lastTouchEnd = now;\r\n              }, false);\r\n          }\r\n      }\r\n      \r\n      \/\/ UI Functions\r\n      function showLoading() {\r\n          document.getElementById('loading').style.display = 'block';\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.classList.add('show');\r\n          \r\n          \/\/ Auto-hide error after 5 seconds on mobile\r\n          if (isMobile) {\r\n              setTimeout(() => {\r\n                  hideError();\r\n              }, 5000);\r\n          }\r\n      }\r\n      \r\n      function hideError() {\r\n          document.getElementById('errorMessage').classList.remove('show');\r\n      }\r\n      \r\n      function showDownloadProgress(text, progress = 0) {\r\n          const progressDiv = document.getElementById('downloadProgress');\r\n          const progressText = document.getElementById('progressText');\r\n          const progressFill = document.getElementById('progressBarFill');\r\n          \r\n          progressText.textContent = text;\r\n          progressFill.style.width = `${progress}%`;\r\n          progressDiv.classList.add('show');\r\n      }\r\n      \r\n      function hideDownloadProgress() {\r\n          document.getElementById('downloadProgress').classList.remove('show');\r\n      }\r\n      \r\n      \/\/ Main Functions\r\n      async function pasteFromClipboard() {\r\n          try {\r\n              const text = await navigator.clipboard.readText();\r\n              document.getElementById('videoInput').value = text;\r\n          } catch (err) {\r\n              console.error('Failed to read clipboard:', err);\r\n              \/\/ On mobile, focus the input to show keyboard\r\n              const input = document.getElementById('videoInput');\r\n              input.focus();\r\n              if (isMobile) {\r\n                  input.select();\r\n              }\r\n          }\r\n      }\r\n      \r\n      function searchAnother() {\r\n          document.getElementById('videoInput').value = '';\r\n          document.getElementById('videoSection').style.display = 'none';\r\n          document.getElementById('searchAnotherBtn').style.display = 'none';\r\n          document.getElementById('audioStreaming').style.display = 'none';\r\n          currentVideoData = null;\r\n          videoStarted = false;\r\n          hideError();\r\n          \r\n          \/\/ Reset players\r\n          const videoPlayer = document.getElementById('videoPlayer');\r\n          const audioElement = document.getElementById('audioElement');\r\n          const videoThumbnail = document.getElementById('videoThumbnail');\r\n          const thumbnailOverlay = document.querySelector('.thumbnail-overlay');\r\n          \r\n          videoPlayer.src = '';\r\n          videoPlayer.pause();\r\n          videoPlayer.classList.remove('playing');\r\n          audioElement.src = '';\r\n          audioElement.pause();\r\n          audioPlaying = false;\r\n          document.getElementById('audioPlayBtn').innerHTML = '<i class=\"fas fa-play\"><\/i>';\r\n          \r\n          \/\/ Show thumbnail again\r\n          videoThumbnail.style.display = 'block';\r\n          thumbnailOverlay.style.display = 'flex';\r\n          \r\n          \/\/ Scroll to top on mobile\r\n          if (isMobile) {\r\n              window.scrollTo({ top: 0, behavior: 'smooth' });\r\n          }\r\n          \r\n          document.getElementById('videoInput').focus();\r\n      }\r\n      \r\n      async function loadVideo() {\r\n          if (isLoading) return;\r\n          \r\n          const input = document.getElementById('videoInput').value.trim();\r\n          if (!input) {\r\n              showError('Please enter a TikTok video URL or ID');\r\n              return;\r\n          }\r\n      \r\n          isLoading = true;\r\n          const loadBtn = document.getElementById('loadBtn');\r\n          const loadText = document.getElementById('loadText');\r\n          \r\n          loadBtn.disabled = true;\r\n          loadText.textContent = 'Loading...';\r\n          showLoading();\r\n          hideError();\r\n      \r\n          try {\r\n              const response = await fetch(API_URL, {\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({ url: input })\r\n              });\r\n      \r\n              const data = await response.json();\r\n      \r\n              if (data.status !== 'success') {\r\n                  throw new Error(data.message || 'Failed to load video');\r\n              }\r\n      \r\n              currentVideoData = data.data.data;\r\n              displayVideo(currentVideoData);\r\n              \r\n              document.getElementById('videoSection').style.display = 'block';\r\n              document.getElementById('searchAnotherBtn').style.display = 'block';\r\n              document.getElementById('videoInput').value = '';\r\n      \r\n              \/\/ Scroll to video section on mobile\r\n              if (isMobile) {\r\n                  setTimeout(() => {\r\n                      document.getElementById('videoSection').scrollIntoView({ \r\n                          behavior: 'smooth', \r\n                          block: 'start' \r\n                      });\r\n                  }, 500);\r\n              }\r\n      \r\n          } catch (error) {\r\n              showError(error.message || 'Error loading video. Please try again.');\r\n              console.error('Load video error:', error);\r\n          } finally {\r\n              isLoading = false;\r\n              loadBtn.disabled = false;\r\n              loadText.textContent = 'Load Video';\r\n              hideLoading();\r\n          }\r\n      }\r\n      \r\n      function displayVideo(data) {\r\n          \/\/ Set video title\r\n          document.getElementById('videoTitle').textContent = data.title;\r\n      \r\n          \/\/ Set video stats in horizontal grid - REMOVED SIZE STAT\r\n          const statsContainer = document.getElementById('videoStats');\r\n          statsContainer.innerHTML = `\r\n              <div class=\"stat-item views\">\r\n                  <span class=\"stat-value\">${formatNumber(data.play_count)}<\/span>\r\n                  <span class=\"stat-label\">Views<\/span>\r\n              <\/div>\r\n              <div class=\"stat-item likes\">\r\n                  <span class=\"stat-value\">${formatNumber(data.digg_count)}<\/span>\r\n                  <span class=\"stat-label\">Likes<\/span>\r\n              <\/div>\r\n              <div class=\"stat-item comments\">\r\n                  <span class=\"stat-value\">${formatNumber(data.comment_count)}<\/span>\r\n                  <span class=\"stat-label\">Comments<\/span>\r\n              <\/div>\r\n              <div class=\"stat-item shares\">\r\n                  <span class=\"stat-value\">${formatNumber(data.share_count)}<\/span>\r\n                  <span class=\"stat-label\">Shares<\/span>\r\n              <\/div>\r\n              <div class=\"stat-item duration\">\r\n                  <span class=\"stat-value\">${formatDuration(data.duration)}<\/span>\r\n                  <span class=\"stat-label\">Duration<\/span>\r\n              <\/div>\r\n          `;\r\n      \r\n          \/\/ Set author info\r\n          document.getElementById('authorAvatar').src = data.author.avatar;\r\n          document.getElementById('authorName').textContent = data.author.nickname;\r\n          document.getElementById('authorUsername').textContent = `@${data.author.unique_id}`;\r\n      \r\n          \/\/ Set video thumbnail\r\n          const videoThumbnail = document.getElementById('videoThumbnail');\r\n          videoThumbnail.src = data.cover || data.dynamic_cover || '\/placeholder.svg?height=600&width=400';\r\n      \r\n          \/\/ Set video player\r\n          const videoPlayer = document.getElementById('videoPlayer');\r\n          videoPlayer.src = data.play;\r\n          videoPlayer.addEventListener('loadedmetadata', () => {\r\n              videoPlayer.volume = currentVolume;\r\n              videoPlayer.muted = isMuted;\r\n              updateVolumeDisplay();\r\n              \/\/ Set video duration\r\n              document.getElementById('videoDuration').textContent = formatDuration(videoPlayer.duration);\r\n          });\r\n          videoPlayer.addEventListener('timeupdate', updateVideoProgress);\r\n      \r\n          \/\/ Mobile-specific video player setup\r\n          if (isMobile) {\r\n              videoPlayer.setAttribute('playsinline', 'true');\r\n              videoPlayer.setAttribute('webkit-playsinline', 'true');\r\n              \r\n              \/\/ Show controls on touch\r\n              videoPlayer.addEventListener('touchstart', showVideoControlsOnMobile);\r\n          }\r\n      \r\n          \/\/ Set audio player\r\n          if (data.music) {\r\n              const audioElement = document.getElementById('audioElement');\r\n              const audioStreaming = document.getElementById('audioStreaming');\r\n              const audioTitle = document.getElementById('audioTitle');\r\n              const audioArtist = document.getElementById('audioArtist');\r\n              \r\n              audioElement.src = data.music;\r\n              audioTitle.textContent = data.music_info?.title || 'Audio Track';\r\n              audioArtist.textContent = data.music_info?.author || data.author.nickname;\r\n              audioStreaming.style.display = 'block';\r\n              \r\n              audioElement.addEventListener('timeupdate', updateAudioProgress);\r\n              audioElement.addEventListener('loadedmetadata', () => {\r\n                  document.getElementById('audioDuration').textContent = formatDuration(audioElement.duration);\r\n                  audioElement.volume = audioCurrentVolume;\r\n                  audioElement.muted = audioIsMuted;\r\n                  updateAudioVolumeDisplay();\r\n              });\r\n          }\r\n      \r\n          \/\/ Update download buttons\r\n          updateDownloadButtons(data);\r\n      }\r\n      \r\n      function updateDownloadButtons(data) {\r\n          const standardBtn = document.getElementById('downloadStandard');\r\n          const hdBtn = document.getElementById('downloadHD');\r\n          const audioBtn = document.getElementById('downloadAudio');\r\n      \r\n          \/\/ Standard quality\r\n          standardBtn.innerHTML = `<i class=\"fas fa-download\"><\/i><span>Standard (${formatFileSize(data.size)})<\/span>`;\r\n          \r\n          \/\/ HD quality\r\n          if (data.hd_size && data.hdplay) {\r\n              hdBtn.innerHTML = `<i class=\"fas fa-hd-video\"><\/i><span>HD (${formatFileSize(data.hd_size)})<\/span>`;\r\n              hdBtn.style.display = 'flex';\r\n          } else {\r\n              hdBtn.style.display = 'none';\r\n          }\r\n      \r\n          \/\/ Audio\r\n          audioBtn.innerHTML = `<i class=\"fas fa-download\"><\/i><span>Download Audio<\/span>`;\r\n      }\r\n      \r\n      function startVideoPlayback() {\r\n          const videoPlayer = document.getElementById('videoPlayer');\r\n          const videoThumbnail = document.getElementById('videoThumbnail');\r\n          const thumbnailOverlay = document.querySelector('.thumbnail-overlay');\r\n          \r\n          \/\/ Hide thumbnail and show video\r\n          videoThumbnail.style.display = 'none';\r\n          thumbnailOverlay.style.display = 'none';\r\n          videoPlayer.classList.add('playing');\r\n          \r\n          \/\/ Start playing\r\n          videoPlayer.play().catch(e => {\r\n              console.error('Error playing video:', e);\r\n              showError('Unable to play video. Please try again.');\r\n          });\r\n          \r\n          document.getElementById('playBtn').innerHTML = '<i class=\"fas fa-pause\"><\/i>';\r\n          videoStarted = true;\r\n          \r\n          \/\/ Show controls on mobile\r\n          if (isMobile) {\r\n              showVideoControlsOnMobile();\r\n          }\r\n      }\r\n      \r\n      \/\/ Video Player Controls\r\n      function togglePlay() {\r\n          if (!videoStarted) {\r\n              startVideoPlayback();\r\n              return;\r\n          }\r\n          \r\n          const videoPlayer = document.getElementById('videoPlayer');\r\n          const playBtn = document.getElementById('playBtn');\r\n          \r\n          if (videoPlayer.paused) {\r\n              videoPlayer.play().catch(e => {\r\n                  console.error('Error playing video:', e);\r\n                  showError('Unable to play video. Please try again.');\r\n              });\r\n              playBtn.innerHTML = '<i class=\"fas fa-pause\"><\/i>';\r\n          } else {\r\n              videoPlayer.pause();\r\n              playBtn.innerHTML = '<i class=\"fas fa-play\"><\/i>';\r\n          }\r\n          \r\n          \/\/ Show controls on mobile\r\n          if (isMobile) {\r\n              showVideoControlsOnMobile();\r\n          }\r\n      }\r\n      \r\n      function toggleAudioPlay() {\r\n          const audioElement = document.getElementById('audioElement');\r\n          const audioPlayBtn = document.getElementById('audioPlayBtn');\r\n          \r\n          if (audioElement.paused) {\r\n              audioElement.play().catch(e => {\r\n                  console.error('Error playing audio:', e);\r\n                  showError('Unable to play audio. Please try again.');\r\n              });\r\n              audioPlayBtn.innerHTML = '<i class=\"fas fa-pause\"><\/i>';\r\n              audioPlaying = true;\r\n          } else {\r\n              audioElement.pause();\r\n              audioPlayBtn.innerHTML = '<i class=\"fas fa-play\"><\/i>';\r\n              audioPlaying = false;\r\n          }\r\n      }\r\n      \r\n      function toggleMute() {\r\n          const videoPlayer = document.getElementById('videoPlayer');\r\n          const muteBtn = document.getElementById('muteBtn');\r\n          \r\n          if (isMuted) {\r\n              isMuted = false;\r\n              videoPlayer.muted = false;\r\n              videoPlayer.volume = currentVolume;\r\n              muteBtn.innerHTML = '<i class=\"fas fa-volume-up\"><\/i>';\r\n          } else {\r\n              isMuted = true;\r\n              videoPlayer.muted = true;\r\n              muteBtn.innerHTML = '<i class=\"fas fa-volume-mute\"><\/i>';\r\n          }\r\n          \r\n          updateVolumeDisplay();\r\n          \r\n          \/\/ Show controls on mobile\r\n          if (isMobile) {\r\n              showVideoControlsOnMobile();\r\n          }\r\n      }\r\n      \r\n      function toggleAudioMute() {\r\n          const audioElement = document.getElementById('audioElement');\r\n          const audioMuteBtn = document.getElementById('audioMuteBtn');\r\n          \r\n          if (audioIsMuted) {\r\n              audioIsMuted = false;\r\n              audioElement.muted = false;\r\n              audioElement.volume = audioCurrentVolume;\r\n              audioMuteBtn.innerHTML = '<i class=\"fas fa-volume-up\"><\/i>';\r\n          } else {\r\n              audioIsMuted = true;\r\n              audioElement.muted = true;\r\n              audioMuteBtn.innerHTML = '<i class=\"fas fa-volume-mute\"><\/i>';\r\n          }\r\n          \r\n          updateAudioVolumeDisplay();\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              document.getElementById('muteBtn').innerHTML = '<i class=\"fas fa-volume-mute\"><\/i>';\r\n          } else {\r\n              isMuted = false;\r\n              videoPlayer.muted = false;\r\n              document.getElementById('muteBtn').innerHTML = '<i class=\"fas fa-volume-up\"><\/i>';\r\n          }\r\n          \r\n          updateVolumeDisplay();\r\n          \r\n          \/\/ Show controls on mobile\r\n          if (isMobile) {\r\n              showVideoControlsOnMobile();\r\n          }\r\n      }\r\n      \r\n      function setAudioVolume(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          audioCurrentVolume = Math.max(0, Math.min(1, pos));\r\n          \r\n          const audioElement = document.getElementById('audioElement');\r\n          audioElement.volume = audioCurrentVolume;\r\n          \r\n          if (audioCurrentVolume === 0) {\r\n              audioIsMuted = true;\r\n              audioElement.muted = true;\r\n              document.getElementById('audioMuteBtn').innerHTML = '<i class=\"fas fa-volume-mute\"><\/i>';\r\n          } else {\r\n              audioIsMuted = false;\r\n              audioElement.muted = false;\r\n              document.getElementById('audioMuteBtn').innerHTML = '<i class=\"fas fa-volume-up\"><\/i>';\r\n          }\r\n          \r\n          updateAudioVolumeDisplay();\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 updateAudioVolumeDisplay() {\r\n          const volumeFill = document.getElementById('audioVolumeFill');\r\n          const displayVolume = audioIsMuted ? 0 : audioCurrentVolume;\r\n          volumeFill.style.width = `${displayVolume * 100}%`;\r\n      }\r\n      \r\n      function seekVideo(event) {\r\n          const videoPlayer = document.getElementById('videoPlayer');\r\n          const progressBar = event.currentTarget;\r\n          const rect = progressBar.getBoundingClientRect();\r\n          const pos = (event.clientX - rect.left) \/ rect.width;\r\n          videoPlayer.currentTime = pos * videoPlayer.duration;\r\n          \r\n          \/\/ Show controls on mobile\r\n          if (isMobile) {\r\n              showVideoControlsOnMobile();\r\n          }\r\n      }\r\n      \r\n      function seekAudio(event) {\r\n          const audioElement = document.getElementById('audioElement');\r\n          const progressBar = event.currentTarget;\r\n          const rect = progressBar.getBoundingClientRect();\r\n          const pos = (event.clientX - rect.left) \/ rect.width;\r\n          audioElement.currentTime = pos * audioElement.duration;\r\n      }\r\n      \r\n      \/\/ Updated video progress function with time display\r\n      function updateVideoProgress() {\r\n          const videoPlayer = document.getElementById('videoPlayer');\r\n          const progressFill = document.getElementById('progressFill');\r\n          const currentTime = document.getElementById('videoCurrentTime');\r\n          \r\n          const progress = (videoPlayer.currentTime \/ videoPlayer.duration) * 100;\r\n          progressFill.style.width = `${progress}%`;\r\n          currentTime.textContent = formatDuration(videoPlayer.currentTime);\r\n      }\r\n      \r\n      function updateAudioProgress() {\r\n          const audioElement = document.getElementById('audioElement');\r\n          const progressFill = document.getElementById('audioProgressFill');\r\n          const currentTime = document.getElementById('audioCurrentTime');\r\n          \r\n          const progress = (audioElement.currentTime \/ audioElement.duration) * 100;\r\n          progressFill.style.width = `${progress}%`;\r\n          currentTime.textContent = formatDuration(audioElement.currentTime);\r\n      }\r\n      \r\n      function toggleFullscreen() {\r\n          const videoWrapper = document.querySelector('.video-player-wrapper');\r\n          const fullscreenBtn = document.getElementById('fullscreenBtn');\r\n          \r\n          if (!isFullscreen) {\r\n              if (videoWrapper.requestFullscreen) {\r\n                  videoWrapper.requestFullscreen();\r\n              } else if (videoWrapper.webkitRequestFullscreen) {\r\n                  videoWrapper.webkitRequestFullscreen();\r\n              } else if (videoWrapper.msRequestFullscreen) {\r\n                  videoWrapper.msRequestFullscreen();\r\n              }\r\n              isFullscreen = true;\r\n              fullscreenBtn.innerHTML = '<i class=\"fas fa-compress\"><\/i>';\r\n          } else {\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              fullscreenBtn.innerHTML = '<i class=\"fas fa-expand\"><\/i>';\r\n          }\r\n          \r\n          \/\/ Show controls on mobile\r\n          if (isMobile) {\r\n              showVideoControlsOnMobile();\r\n          }\r\n      }\r\n      \r\n      \/\/ Download Functions\r\n      async function downloadVideo(quality) {\r\n          if (!currentVideoData || isDownloading) return;\r\n      \r\n          let downloadUrl, filename, expectedSize;\r\n          \r\n          switch (quality) {\r\n              case 'hd':\r\n                  if (!currentVideoData.hdplay) {\r\n                      showError('HD quality not available for this video');\r\n                      return;\r\n                  }\r\n                  downloadUrl = currentVideoData.hdplay;\r\n                  filename = `tiktok-${currentVideoData.id}-hd.mp4`;\r\n                  expectedSize = currentVideoData.hd_size;\r\n                  break;\r\n              case 'audio':\r\n                  if (!currentVideoData.music) {\r\n                      showError('Audio not available for this video');\r\n                      return;\r\n                  }\r\n                  downloadUrl = currentVideoData.music;\r\n                  filename = `tiktok-${currentVideoData.id}-audio.mp3`;\r\n                  expectedSize = null;\r\n                  break;\r\n              default:\r\n                  downloadUrl = currentVideoData.play;\r\n                  filename = `tiktok-${currentVideoData.id}.mp4`;\r\n                  expectedSize = currentVideoData.size;\r\n          }\r\n      \r\n          isDownloading = true;\r\n          downloadController = new AbortController();\r\n          \r\n          \/\/ Disable download buttons\r\n          document.querySelectorAll('.download-btn, .download-audio-btn').forEach(btn => btn.disabled = true);\r\n          \r\n          showDownloadProgress(`Starting download...`, 0);\r\n      \r\n          try {\r\n              const response = await fetch(downloadUrl, {\r\n                  signal: downloadController.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 = expectedSize || parseInt(response.headers.get('content-length') || '0');\r\n              const reader = response.body.getReader();\r\n              let receivedSize = 0;\r\n              const chunks = [];\r\n      \r\n              while (true) {\r\n                  const { done, value } = await reader.read();\r\n                  \r\n                  if (done) break;\r\n                  \r\n                  chunks.push(value);\r\n                  receivedSize += value.length;\r\n                  \r\n                  const progress = totalSize ? Math.round((receivedSize \/ totalSize) * 100) : 0;\r\n                  showDownloadProgress(`Downloading ${quality} quality... ${progress}%`, progress);\r\n              }\r\n      \r\n              showDownloadProgress('Processing download...', 95);\r\n      \r\n              \/\/ Combine chunks\r\n              const chunksAll = new Uint8Array(receivedSize);\r\n              let position = 0;\r\n              for (const chunk of chunks) {\r\n                  chunksAll.set(chunk, position);\r\n                  position += chunk.length;\r\n              }\r\n      \r\n              const mimeType = quality === 'audio' ? 'audio\/mpeg' : 'video\/mp4';\r\n              const blob = new Blob([chunksAll], { type: mimeType });\r\n              const url = URL.createObjectURL(blob);\r\n      \r\n              const a = document.createElement('a');\r\n              a.href = url;\r\n              a.download = filename;\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              showDownloadProgress('Download completed successfully!', 100);\r\n              setTimeout(hideDownloadProgress, 2000);\r\n      \r\n          } catch (error) {\r\n              if (error.name === 'AbortError') {\r\n                  showDownloadProgress('Download cancelled', 0);\r\n              } else {\r\n                  showError(`Download failed: ${error.message}`);\r\n                  hideDownloadProgress();\r\n              }\r\n          } finally {\r\n              isDownloading = false;\r\n              downloadController = null;\r\n              document.querySelectorAll('.download-btn, .download-audio-btn').forEach(btn => btn.disabled = false);\r\n          }\r\n      }\r\n      \r\n      function cancelDownload() {\r\n          if (downloadController) {\r\n              downloadController.abort();\r\n          }\r\n      }\r\n      \r\n      \/\/ Event Listeners\r\n      document.getElementById('videoInput').addEventListener('keypress', (e) => {\r\n          if (e.key === 'Enter' && !isLoading) {\r\n              loadVideo();\r\n          }\r\n      });\r\n      \r\n      \/\/ Fullscreen change events\r\n      document.addEventListener('fullscreenchange', () => {\r\n          isFullscreen = !!document.fullscreenElement;\r\n          const fullscreenBtn = document.getElementById('fullscreenBtn');\r\n          if (fullscreenBtn) {\r\n              fullscreenBtn.innerHTML = isFullscreen ? '<i class=\"fas fa-compress\"><\/i>' : '<i class=\"fas fa-expand\"><\/i>';\r\n          }\r\n      });\r\n      \r\n      \/\/ Keyboard shortcuts (desktop only)\r\n      document.addEventListener('keydown', (e) => {\r\n          if (!isMobile && currentVideoData && document.getElementById('videoSection').style.display === 'block') {\r\n              switch(e.key) {\r\n                  case ' ':\r\n                      e.preventDefault();\r\n                      togglePlay();\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      \r\n      \/\/ Touch event handlers for mobile\r\n      if (isMobile || isTouch) {\r\n          \/\/ Handle touch events for sliders\r\n          function handleTouchSlider(element, callback) {\r\n              element.addEventListener('touchstart', function(e) {\r\n                  e.preventDefault();\r\n                  const touch = e.touches[0];\r\n                  const rect = element.getBoundingClientRect();\r\n                  const pos = (touch.clientX - rect.left) \/ rect.width;\r\n                  callback(pos);\r\n              }, { passive: false });\r\n      \r\n              element.addEventListener('touchmove', function(e) {\r\n                  e.preventDefault();\r\n                  const touch = e.touches[0];\r\n                  const rect = element.getBoundingClientRect();\r\n                  const pos = (touch.clientX - rect.left) \/ rect.width;\r\n                  callback(pos);\r\n              }, { passive: false });\r\n          }\r\n      \r\n          \/\/ Apply touch handlers to sliders\r\n          document.addEventListener('DOMContentLoaded', () => {\r\n              const volumeSlider = document.getElementById('volumeFill')?.parentElement;\r\n              const audioVolumeSlider = document.getElementById('audioVolumeFill')?.parentElement;\r\n              const progressBar = document.getElementById('progressFill')?.parentElement;\r\n              const audioProgressBar = document.getElementById('audioProgressFill')?.parentElement;\r\n      \r\n              if (volumeSlider) {\r\n                  handleTouchSlider(volumeSlider, (pos) => {\r\n                      currentVolume = Math.max(0, Math.min(1, pos));\r\n                      const videoPlayer = document.getElementById('videoPlayer');\r\n                      if (videoPlayer) {\r\n                          videoPlayer.volume = currentVolume;\r\n                          updateVolumeDisplay();\r\n                      }\r\n                  });\r\n              }\r\n      \r\n              if (audioVolumeSlider) {\r\n                  handleTouchSlider(audioVolumeSlider, (pos) => {\r\n                      audioCurrentVolume = Math.max(0, Math.min(1, pos));\r\n                      const audioElement = document.getElementById('audioElement');\r\n                      if (audioElement) {\r\n                          audioElement.volume = audioCurrentVolume;\r\n                          updateAudioVolumeDisplay();\r\n                      }\r\n                  });\r\n              }\r\n      \r\n              if (progressBar) {\r\n                  handleTouchSlider(progressBar, (pos) => {\r\n                      const videoPlayer = document.getElementById('videoPlayer');\r\n                      if (videoPlayer && videoPlayer.duration) {\r\n                          videoPlayer.currentTime = pos * videoPlayer.duration;\r\n                      }\r\n                  });\r\n              }\r\n      \r\n              if (audioProgressBar) {\r\n                  handleTouchSlider(audioProgressBar, (pos) => {\r\n                      const audioElement = document.getElementById('audioElement');\r\n                      if (audioElement && audioElement.duration) {\r\n                          audioElement.currentTime = pos * audioElement.duration;\r\n                      }\r\n                  });\r\n              }\r\n          });\r\n      }\r\n      \r\n      \/\/ Initialize\r\n      document.addEventListener('DOMContentLoaded', () => {\r\n          document.getElementById('videoInput').focus();\r\n          updateAudioVolumeDisplay();\r\n          handleTouchEvents();\r\n          \r\n          \/\/ Prevent zoom on iOS when focusing inputs\r\n          if (\/iPad|iPhone|iPod\/.test(navigator.userAgent)) {\r\n              const viewport = document.querySelector('meta[name=viewport]');\r\n              if (viewport) {\r\n                  viewport.setAttribute('content', 'width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no');\r\n              }\r\n          }\r\n          \r\n          \/\/ Add orientation change handler\r\n          window.addEventListener('orientationchange', () => {\r\n              setTimeout(() => {\r\n                  \/\/ Recalculate dimensions after orientation change\r\n                  window.scrollTo(0, 0);\r\n              }, 100);\r\n          });\r\n          \r\n          \/\/ Add resize handler for responsive adjustments\r\n          window.addEventListener('resize', () => {\r\n              \/\/ Handle responsive adjustments\r\n              if (window.innerWidth <= 768) {\r\n                  \/\/ Mobile adjustments\r\n                  showVideoControlsOnMobile();\r\n              }\r\n          });\r\n      });\r\n      <\/script>\r\n    <script src=\"https:\/\/cdn.jsdelivr.net\/npm\/bootstrap@5.3.0\/dist\/js\/bootstrap.bundle.min.js\"><\/script>\r\n    <script src=\"https:\/\/unpkg.com\/aos@2.3.1\/dist\/aos.js\"><\/script>\r\n    <script>\r\n      (function () {\r\n        if (typeof AOS !== 'undefined') {\r\n          AOS.init({\r\n            duration: 800,\r\n            easing: 'ease-in-out',\r\n            once: true\r\n          });\r\n        }\r\n        document.querySelectorAll('a[href^=\"#\"]').forEach(function (anchor) {\r\n          anchor.addEventListener('click', function (e) {\r\n            var sel = this.getAttribute('href');\r\n            if (!sel || sel === '#') return;\r\n            var target = document.querySelector(sel);\r\n            if (target) {\r\n              e.preventDefault();\r\n              target.scrollIntoView({ behavior: 'smooth' });\r\n            }\r\n          });\r\n        });\r\n      })();\r\n    <\/script>\r\n  \r\n  <grammarly-desktop-integration data-grammarly-shadow-root=\"true\"><\/grammarly-desktop-integration><grammarly-desktop-integration data-grammarly-shadow-root=\"true\"><\/grammarly-desktop-integration>\r\n  <grammarly-desktop-integration data-grammarly-shadow-root=\"true\"><\/grammarly-desktop-integration><script defer=\"\" src=\"https:\/\/static.cloudflareinsights.com\/beacon.min.js\/vcd15cbe7772f49c399c6a5babf22c1241717689176015\" integrity=\"sha512-ZpsOmlRQV6y907TI0dKBHq9Md29nnaEIPlkf84rnaERnq6zvWvPUqr2ft8M1aS28oN72PdrCzSjY4U6VaAw1EQ==\" data-cf-beacon=\"{\"version\":\"2024.11.0\",\"token\":\"786b797d7952407aac48ed2776a3a826\",\"r\":1,\"server_timing\":{\"name\":{\"cfCacheStatus\":true,\"cfEdge\":true,\"cfExtPri\":true,\"cfL4\":true,\"cfOrigin\":true,\"cfSpeedBrain\":true},\"location_startswith\":null}}\" crossorigin=\"anonymous\"><\/script>\r\n  <script defer=\"\" src=\"https:\/\/static.cloudflareinsights.com\/beacon.min.js\/vcd15cbe7772f49c399c6a5babf22c1241717689176015\" integrity=\"sha512-ZpsOmlRQV6y907TI0dKBHq9Md29nnaEIPlkf84rnaERnq6zvWvPUqr2ft8M1aS28oN72PdrCzSjY4U6VaAw1EQ==\" data-cf-beacon=\"{\"version\":\"2024.11.0\",\"token\":\"786b797d7952407aac48ed2776a3a826\",\"r\":1,\"server_timing\":{\"name\":{\"cfCacheStatus\":true,\"cfEdge\":true,\"cfExtPri\":true,\"cfL4\":true,\"cfOrigin\":true,\"cfSpeedBrain\":true},\"location_startswith\":null}}\" crossorigin=\"anonymous\"><\/script>\r\n  <script defer=\"\" src=\"https:\/\/static.cloudflareinsights.com\/beacon.min.js\/v8c78df7c7c0f484497ecbca7046644da1771523124516\" integrity=\"sha512-8DS7rgIrAmghBFwoOTujcf6D9rXvH8xm8JQ1Ja01h9QX8EzXldiszufYa4IFfKdLUKTTrnSFXLDkUEOTrZQ8Qg==\" data-cf-beacon=\"{\"version\":\"2024.11.0\",\"token\":\"786b797d7952407aac48ed2776a3a826\",\"r\":1,\"server_timing\":{\"name\":{\"cfCacheStatus\":true,\"cfEdge\":true,\"cfExtPri\":true,\"cfL4\":true,\"cfOrigin\":true,\"cfSpeedBrain\":true},\"location_startswith\":null}}\" crossorigin=\"anonymous\"><\/script>\r\n  [\/et_pb_fullwidth_code][\/et_pb_section]\n","protected":false},"excerpt":{"rendered":"    <link rel=\"canonical\" href=\"\">\r\n  \r\n      <!-- Favicon -->\r\n   \r\n      \r\n      <!-- Google Fonts - Premium Typography -->\r\n      <link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\r\n      <link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin=\"\">\r\n      <link href=\"https:\/\/fonts.googleapis.com\/css2?family=Inter:wght@300;400;500;600;700;800;900&family=Space+Grotesk:wght@300;400;500;600;700&family=Manrope:wght@300;400;500;600;700;800&family=Varela+Round:wght@400;500;600;700&display=swap\" rel=\"stylesheet\">\r\n      \r\n      <!-- Bootstrap CSS -->\r\n      <link href=\"https:\/\/cdn.jsdelivr.net\/npm\/bootstrap@5.3.0\/dist\/css\/bootstrap.min.css\" rel=\"stylesheet\">\r\n      <!-- Boxicons -->\r\n      <link href=\"https:\/\/unpkg.com\/boxicons@2.1.4\/css\/boxicons.min.css\" rel=\"stylesheet\">\r\n      <!-- AOS Animation -->\r\n      <link href=\"https:\/\/unpkg.com\/aos@2.3.1\/dist\/aos.css\" rel=\"stylesheet\">\r\n      <style>\r\n          \/* Visible if AOS never inits (missing script \/ blocked) *\/\r\n          html:not(.aos-init) [data-aos] {\r\n              opacity: 1 !important;\r\n              transform: none !important;\r\n              pointer-events: auto !important;\r\n          }\r\n      <\/style>\r\n      <!-- Font Awesome CSS -->\r\n          <link href=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/font-awesome\/5.15.3\/css\/all.min.css\" rel=\"stylesheet\">\r\n  \r\n  \r\n  <style id=\"vvvebjs-styles\">\r\n      html{\r\n          overflow-x: hidden;\r\n      }\r\n     \r\n      :root {\r\n              --ttvv-primary-color: #9170ff;\r\n              --ttvv-secondary-color: #b99cff;\r\n              --ttvv-dark-color: #111111;\r\n              --ttvv-light-color: #FFFFFF;\r\n              --ttvv-gray-color: #f3efff;\r\n              --ttvv-primary-hover: #7d5af0;\r\n              --ttvv-secondary-hover: #a884ff;\r\n              --ttvv-section-padding: 100px 0;\r\n          }\r\n          \r\n\/*           body {\r\n              font-family: 'Varela Round', 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;\r\n              scroll-behavior: smooth;\r\n              overflow-x: hidden;\r\n              background-color: var(--ttvv-light-color);\r\n              color: var(--ttvv-dark-color);\r\n          }\r\n  \r\n      h1, h2, h3, h4, h5, h6 {\r\n          font-family: 'Space Grotesk', -apple-system, BlinkMacSystemFont, sans-serif;\r\n          font-weight: bold; \r\n      } *\/\r\n    \r\n  \r\n       \/* TikTok-style Hero Section *\/\r\n       .ttvv-hero-section {\r\n              padding: var(--ttvv-section-padding);\r\n              text-align: center;\r\n              background-color: var(--ttvv-light-color);\r\n          }\r\n          \r\n          .ttvv-hero-content {\r\n              position: relative;\r\n              z-index: 1;\r\n          }\r\n          \r\n          .ttvv-hero-section h1 {\r\n              font-size: 3.5rem;\r\n              font-weight: 700;\r\n              margin-bottom: 1.5rem;\r\n              color: var(--ttvv-primary-color);\r\n          }\r\n          \r\n          .ttvv-hero-section p {\r\n              font-size: 1.25rem;\r\n              max-width: 700px;\r\n              margin: 0 auto 2rem;\r\n              opacity: 0.9;\r\n              font-weight: 300;\r\n              color: #666;\r\n          }\r\n          \r\n          \/* Work Process Section with TikTok Colors *\/\r\n          .ttvv-work-process-section {\r\n              padding: var(--ttvv-section-padding);\r\n              background: var(--ttvv-primary-color);\r\n              color: white;\r\n              position: relative;\r\n              overflow: hidden;\r\n          }\r\n          \r\n          .ttvv-work-process-section::before {\r\n              content: '';\r\n              position: absolute;\r\n              top: 0;\r\n              left: 0;\r\n              width: 100%;\r\n              height: 100%;\r\n              background: rgba(0,0,0,0.05);\r\n          }\r\n          \r\n          .ttvv-work-process-content {\r\n              position: relative;\r\n              z-index: 1;\r\n          }\r\n          \r\n          .ttvv-process-step {\r\n              text-align: center;\r\n              padding: 30px 20px;\r\n              position: relative;\r\n              z-index: 1;\r\n              background: rgba(255,255,255,0.1);\r\n              backdrop-filter: blur(10px);\r\n              border-radius: 16px;\r\n              margin: 15px;\r\n              border: 1px solid rgba(255,255,255,0.2);\r\n              transition: all 0.3s ease;\r\n          }\r\n          \r\n          .ttvv-process-step:hover {\r\n              transform: translateY(-10px);\r\n              background: rgba(255,255,255,0.15);\r\n              box-shadow: 0 15px 30px rgba(0,0,0,0.2);\r\n          }\r\n          \r\n          .ttvv-step-number {\r\n              width: 60px;\r\n              height: 60px;\r\n              background: white;\r\n              color: var(--ttvv-primary-color);\r\n              border-radius: 50%;\r\n              display: flex;\r\n              align-items: center;\r\n              justify-content: center;\r\n              font-weight: 700;\r\n              margin: 0 auto 20px;\r\n              font-size: 1.5rem;\r\n              box-shadow: 0 5px 15px rgba(0,0,0,0.1);\r\n          }\r\n          \r\n          \/* Features Section *\/\r\n          .ttvv-features-section {\r\n              padding: var(--ttvv-section-padding);\r\n              background: white;\r\n          }\r\n          \r\n          .ttvv-feature-card {\r\n              padding: 40px 30px;\r\n              border-radius: 16px;\r\n              background: white;\r\n              box-shadow: 0 10px 30px rgba(0, 0, 0, 0.05);\r\n              margin-bottom: 30px;\r\n              transition: all 0.3s ease;\r\n              border: 1px solid rgba(0,0,0,0.05);\r\n              height: 100%;\r\n              position: relative;\r\n              overflow: hidden;\r\n          }\r\n          \r\n          .ttvv-feature-card::before {\r\n              content: '';\r\n              position: absolute;\r\n              top: 0;\r\n              left: 0;\r\n              width: 4px;\r\n              height: 100%;\r\n              background: var(--ttvv-primary-color);\r\n              transition: all 0.3s ease;\r\n          }\r\n          \r\n          .ttvv-feature-card:hover {\r\n              transform: translateY(-10px);\r\n              box-shadow: 0 15px 40px rgba(0,0,0,0.1);\r\n          }\r\n          \r\n          .ttvv-feature-card:hover::before {\r\n              width: 100%;\r\n              opacity: 0.1;\r\n          }\r\n          \r\n          .ttvv-feature-icon {\r\n              width: 70px;\r\n              height: 70px;\r\n              border-radius: 20px;\r\n              display: flex;\r\n              align-items: center;\r\n              justify-content: center;\r\n              margin-bottom: 25px;\r\n              background: var(--ttvv-primary-color);\r\n              color: white;\r\n              font-size: 1.8rem;\r\n              transition: all 0.3s ease;\r\n          }\r\n          \r\n          .ttvv-feature-card:hover .ttvv-feature-icon {\r\n              transform: rotate(15deg) scale(1.1);\r\n              background: var(--ttvv-primary-hover);\r\n          }\r\n          \r\n          \/* Why Choose Section *\/\r\n          .ttvv-why-choose-section {\r\n              padding: var(--ttvv-section-padding);\r\n              background: #faf8ff;\r\n          }\r\n          \r\n          .ttvv-why-choose-image {\r\n              border-radius: 16px;\r\n              overflow: hidden;\r\n              box-shadow: 0 20px 40px rgba(0,0,0,0.1);\r\n              transform: perspective(1000px) rotateY(-5deg);\r\n              transition: all 0.5s ease;\r\n          }\r\n          \r\n          .ttvv-why-choose-image:hover {\r\n              transform: perspective(1000px) rotateY(0deg);\r\n          }\r\n          \r\n          .ttvv-benefit-item {\r\n              display: flex;\r\n              align-items: flex-start;\r\n              margin-bottom: 20px;\r\n              padding: 15px;\r\n              border-radius: 12px;\r\n              background: white;\r\n              box-shadow: 0 5px 15px rgba(0,0,0,0.03);\r\n              transition: all 0.3s ease;\r\n          }\r\n          \r\n          .ttvv-benefit-item:hover {\r\n              transform: translateX(10px);\r\n              box-shadow: 0 10px 25px rgba(0,0,0,0.1);\r\n          }\r\n          \r\n          .ttvv-benefit-icon {\r\n              width: 40px;\r\n              height: 40px;\r\n              border-radius: 12px;\r\n              display: flex;\r\n              align-items: center;\r\n              justify-content: center;\r\n              margin-right: 15px;\r\n              background: var(--ttvv-primary-color);\r\n              color: white;\r\n              font-size: 1.2rem;\r\n              flex-shrink: 0;\r\n          }\r\n          \r\n          \/* FAQ Section *\/\r\n          .ttvv-faq-section {\r\n              padding: var(--ttvv-section-padding);\r\n              background: white;\r\n          }\r\n          \r\n          .ttvv-accordion-item {\r\n              border: none;\r\n              border-radius: 12px !important;\r\n              overflow: hidden;\r\n              margin-bottom: 15px;\r\n              box-shadow: 0 5px 15px rgba(0,0,0,0.05);\r\n          }\r\n          \r\n          .ttvv-accordion-button {\r\n              font-weight: 600;\r\n              color: var(--ttvv-dark-color);\r\n              padding: 20px 25px;\r\n              background: white;\r\n              box-shadow: none;\r\n              border-radius: 12px 12px 0 0 !important;\r\n          }\r\n          \r\n          .ttvv-accordion-button:not(.collapsed) {\r\n              background: white;\r\n              color: var(--ttvv-primary-color);\r\n              box-shadow: none;\r\n          }\r\n          \r\n          .ttvv-accordion-button:focus {\r\n              box-shadow: none;\r\n              border-color: rgba(145, 112, 255, 0.35);\r\n          }\r\n          \r\n          .ttvv-accordion-button::after {\r\n              background-image: url(\"data:image\/svg+xml,%3csvg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 16 16' fill='%239170ff'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'\/%3e%3c\/svg%3e\");\r\n          }\r\n          \r\n          .ttvv-accordion-body {\r\n              padding: 25px;\r\n              color: #666;\r\n          }\r\n          \r\n          \/* Section Titles *\/\r\n          .ttvv-section-title {\r\n              font-weight: 700;\r\n              color: var(--ttvv-dark-color);\r\n              margin-bottom: 1.5rem;\r\n              position: relative;\r\n              display: inline-block;\r\n          }\r\n          \r\n          .ttvv-section-title::after {\r\n              content: '';\r\n              position: absolute;\r\n              bottom: -10px;\r\n              left: 0;\r\n              width: 60px;\r\n              height: 4px;\r\n              background: var(--ttvv-primary-color);\r\n              border-radius: 2px;\r\n          }\r\n          \r\n          .ttvv-light-title {\r\n              color: white;\r\n          }\r\n          \r\n          .ttvv-light-title::after {\r\n              background: white;\r\n          }\r\n          \r\n          .ttvv-section-subtitle {\r\n              color: #666;\r\n              max-width: 700px;\r\n              margin: 0 auto 3rem;\r\n              font-size: 1.1rem;\r\n          }\r\n          \r\n          .ttvv-light-subtitle {\r\n              color: rgba(255,255,255,0.8);\r\n          }\r\n          \r\n          \/* Responsive Design *\/\r\n          @media (max-width: 991px) {\r\n              :root {\r\n                  --ttvv-section-padding: 80px 0;\r\n              }\r\n              \r\n              .ttvv-hero-section h1 {\r\n                  font-size: 2.8rem;\r\n              }\r\n              \r\n              .ttvv-process-step::before {\r\n                  display: none;\r\n              }\r\n          }\r\n          \r\n          @media (max-width: 767px) {\r\n              :root {\r\n                  --ttvv-section-padding: 70px 0;\r\n              }\r\n              \r\n              .ttvv-hero-section {\r\n                  padding: 100px 0 60px;\r\n              }\r\n              \r\n              .ttvv-hero-section h1 {\r\n                  font-size: 2.2rem;\r\n              }\r\n              \r\n              .ttvv-hero-section p {\r\n                  font-size: 1rem;\r\n              }\r\n              \r\n              .ttvv-section-title {\r\n                  font-size: 1.8rem;\r\n              }\r\n          }\r\n          \r\n          \/* Animation *\/\r\n          @keyframes ttvv-float {\r\n              0% { transform: translateY(0px); }\r\n              50% { transform: translateY(-15px); }\r\n              100% { transform: translateY(0px); }\r\n          }\r\n          \r\n          .ttvv-floating-element {\r\n              animation: ttvv-float 6s ease-in-out infinite;\r\n          }\r\n          \r\n          \/* Custom Scrollbar *\/\r\n          ::-webkit-scrollbar {\r\n              width: 8px;\r\n          }\r\n          \r\n          ::-webkit-scrollbar-track {\r\n              background: #f1f1f1;\r\n          }\r\n          \r\n          ::-webkit-scrollbar-thumb {\r\n              background: var(--ttvv-primary-color);\r\n              border-radius: 10px;\r\n          }\r\n          \r\n          ::-webkit-scrollbar-thumb:hover {\r\n              background: var(--ttvv-primary-hover);\r\n          }\r\n      \r\n  <\/style>\r\n  <!-- tools -->\r\n  <style>\r\n      :root {\r\n          --primary: #9170ff;\r\n          --secondary: #b99cff;\r\n          --accent: #9170ff;\r\n          --purple: #9170ff;\r\n          --purple-light: #b99cff;\r\n          --purple-dark: #6b4fd6;\r\n          --pink: #a78bfa;\r\n          --pink-light: #c4b5fd;\r\n          --orange: #6b4fd6;\r\n          --green: #7d5af0;\r\n          --blue: #9170ff;\r\n          --yellow: #d4c4ff;\r\n          --tiktok-red: #9170ff;\r\n          --tiktok-blue: #6b4fd6;\r\n          --tiktok-purple: #9170ff;\r\n          \r\n          \/* ViewAnonymous-style light scheme *\/\r\n          --bg-primary: #ffffff;\r\n          --bg-secondary: #faf8ff;\r\n          --bg-tertiary: #f3efff;\r\n          --card-dark: #ffffff;\r\n          --card-purple: #f5f2ff;\r\n          --card-blue: #faf8ff;\r\n          --text-light: #111111;\r\n          --text-gray: #555555;\r\n          --text-purple: #9170ff;\r\n          \r\n          --glass-dark: rgba(255, 255, 255, 0.95);\r\n          --glass-purple: rgba(243, 239, 255, 0.98);\r\n          --glass-blue: rgba(250, 248, 255, 0.98);\r\n          --glass-border: rgba(145, 112, 255, 0.28);\r\n          \r\n          --shadow: 0 4px 24px rgba(17, 17, 17, 0.08);\r\n          --shadow-lg: 0 12px 40px rgba(145, 112, 255, 0.12);\r\n          --shadow-xl: 0 20px 50px rgba(145, 112, 255, 0.15);\r\n          --shadow-purple: 0 8px 28px rgba(145, 112, 255, 0.25);\r\n          --shadow-pink: 0 8px 28px rgba(145, 112, 255, 0.2);\r\n          --shadow-blue: 0 8px 28px rgba(107, 79, 214, 0.2);\r\n          \r\n          --glow-purple: 0 0 24px rgba(145, 112, 255, 0.35);\r\n          --glow-pink: 0 0 24px rgba(145, 112, 255, 0.3);\r\n          --glow-blue: 0 0 24px rgba(107, 79, 214, 0.3);\r\n          --glow-tiktok: 0 0 32px rgba(145, 112, 255, 0.4);\r\n      }\r\n  \r\n      * {\r\n          margin: 0;\r\n          padding: 0;\r\n          box-sizing: border-box;\r\n      }\r\n  \r\n      .ttvv-hero-tools-section {\r\n          font-family: 'Varela Round', 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;\r\n          background: var(--bg-primary);\r\n          color: var(--text-light);\r\n          overflow-x: hidden;\r\n          position: relative;\r\n          padding: 80px 0;\r\n          margin-top: 3rem;\r\n      }\r\n  \r\n      .ttvv-hero-tools-section::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 18% 22%, rgba(145, 112, 255, 0.12) 0%, transparent 45%),\r\n              radial-gradient(circle at 82% 78%, rgba(145, 112, 255, 0.08) 0%, transparent 48%);\r\n          pointer-events: none;\r\n          z-index: 0;\r\n      }\r\n  \r\n      .ttvv-custom-container {\r\n          max-width: 1200px;\r\n          margin: 0 auto;\r\n          padding: 2rem;\r\n          position: relative;\r\n          z-index: 1;\r\n          isolation: isolate;\r\n      }\r\n  \r\n      \/* Header *\/\r\n      .header {\r\n          text-align: center;\r\n          margin-bottom: 2.5rem;\r\n          animation: fadeInDown 1s ease-out;\r\n      }\r\n  \r\n      .logo {\r\n          display: flex;\r\n          align-items: center;\r\n          justify-content: center;\r\n          gap: 1.5rem;\r\n          margin-bottom: 1rem;\r\n          flex-wrap: wrap;\r\n      }\r\n  \r\n      .logo-icon {\r\n          width: 70px;\r\n          height: 70px;\r\n          background: linear-gradient(145deg, var(--purple) 0%, var(--purple-dark) 100%);\r\n          border-radius: 20px;\r\n          display: flex;\r\n          align-items: center;\r\n          justify-content: center;\r\n          font-size: 28px;\r\n          color: white;\r\n          box-shadow: var(--shadow-lg), var(--glow-purple);\r\n          animation: logoFloat 4s ease-in-out infinite;\r\n          position: relative;\r\n          overflow: hidden;\r\n          border: 2px solid rgba(145, 112, 255, 0.35);\r\n          flex-shrink: 0;\r\n      }\r\n  \r\n      .logo-icon::before {\r\n          content: '';\r\n          position: absolute;\r\n          top: -50%;\r\n          left: -50%;\r\n          width: 200%;\r\n          height: 200%;\r\n          background: linear-gradient(45deg, transparent, rgba(255, 255, 255, 0.3), transparent);\r\n          animation: logoShine 3s ease-in-out infinite;\r\n      }\r\n  \r\n      .logo-text {\r\n          font-size: clamp(1.8rem, 5vw, 3.5rem);\r\n          font-weight: 800;\r\n          color: #111111;\r\n          letter-spacing: -1px;\r\n          text-align: center;\r\n      }\r\n      \r\n      .logo-text .logo-purple {\r\n          color: #9170ff;\r\n      }\r\n  \r\n      .subtitle {\r\n          font-size: clamp(0.9rem, 2.5vw, 1.1rem);\r\n          color: #444444;\r\n          font-weight: 500;\r\n          margin-top: 0.5rem;\r\n          text-align: center;\r\n          padding: 0 1rem;\r\n      }\r\n  \r\n      \/* Enhanced Search Section *\/\r\n    .search-section {\r\n      background: #ffffff;\r\n      backdrop-filter: blur(12px);\r\n      border: 2px solid var(--glass-border);\r\n      border-radius: 24px;\r\n      padding: clamp(1.5rem, 4vw, 2.5rem);\r\n      margin-bottom: 2rem;\r\n      box-shadow: var(--shadow-lg);\r\n      animation: fadeInUp 1s ease-out 0.2s both;\r\n      position: relative;\r\n      overflow: hidden;\r\n  }\r\n  \r\n      .search-section::before {\r\n          content: '';\r\n          position: absolute;\r\n          top: 0;\r\n          left: 0;\r\n          right: 0;\r\n          height: 2px;\r\n          background: linear-gradient(90deg, \r\n              transparent, \r\n              var(--purple), \r\n              var(--pink), \r\n              var(--tiktok-blue), \r\n              transparent);\r\n          animation: borderFlow 3s ease-in-out infinite;\r\n      }\r\n  \r\n      .search-section::after {\r\n          content: '';\r\n          position: absolute;\r\n          top: 0;\r\n          left: 0;\r\n          width: 100%;\r\n          height: 100%;\r\n          background: linear-gradient(135deg, \r\n              rgba(139, 92, 246, 0.05) 0%, \r\n              rgba(145, 112, 255, 0.05) 50%, \r\n              rgba(107, 79, 214, 0.05) 100%);\r\n          pointer-events: none;\r\n          border-radius: 24px;\r\n          animation: overlayPulse 6s ease-in-out infinite;\r\n      }\r\n  \r\n      .input-group {\r\n          position: relative;\r\n          margin-bottom: 1.5rem;\r\n          z-index: 2;\r\n      }\r\n  \r\n      .input-field {\r\n          width: 100% !important;\r\n          padding: clamp(1rem, 3vw, 1.5rem) clamp(1.2rem, 4vw, 2rem) !important;\r\n          background: #ffffff !important;\r\n          border: 2px solid rgba(145, 112, 255, 0.35) !important;\r\n          border-radius: 20px !important;\r\n          color: #111111 !important;\r\n          font-size: clamp(0.9rem, 2.5vw, 1.1rem) !important;\r\n          font-weight: 500 !important;\r\n          transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1) !important;\r\n          outline: none !important;\r\n          box-shadow: var(--shadow) !important;\r\n          position: relative !important;\r\n      }\r\n  \r\n      .input-field::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(139, 92, 246, 0.1) 0%, \r\n              rgba(145, 112, 255, 0.1) 100%);\r\n          border-radius: 20px;\r\n          opacity: 0;\r\n          transition: opacity 0.4s ease;\r\n          pointer-events: none;\r\n      }\r\n  \r\n      .input-field:focus {\r\n          border-color: var(--purple) !important;\r\n          box-shadow: 0 0 0 4px rgba(145, 112, 255, 0.2), var(--shadow-lg) !important;\r\n          background: #ffffff !important;\r\n          transform: translateY(-2px) scale(1.005) !important;\r\n      }\r\n  \r\n      .input-field:focus::before {\r\n          opacity: 1;\r\n      }\r\n  \r\n      .input-field::placeholder {\r\n          color: var(--text-gray) !important;\r\n          transition: all 0.3s ease !important;\r\n          font-weight: 400 !important;\r\n      }\r\n  \r\n      .input-field:focus::placeholder {\r\n          color: var(--text-purple) !important;\r\n          transform: translateY(-2px) !important;\r\n          opacity: 0.8 !important;\r\n      }\r\n  \r\n      .input-actions {\r\n          display: flex;\r\n          justify-content: space-between;\r\n          align-items: center;\r\n          margin-top: 1rem;\r\n          font-size: clamp(0.8rem, 2vw, 0.9rem);\r\n          color: var(--text-gray);\r\n          z-index: 2;\r\n          position: relative;\r\n          flex-wrap: wrap;\r\n          gap: 0.5rem;\r\n      }\r\n  \r\n      .paste-btn {\r\n          background: linear-gradient(135deg, #9170ff, #6b4fd6);\r\n          border: none;\r\n          color: #ffffff;\r\n          cursor: pointer;\r\n          padding: clamp(0.5rem, 2vw, 0.7rem) clamp(0.8rem, 3vw, 1.4rem);\r\n          border-radius: 14px;\r\n          transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);\r\n          display: flex;\r\n          align-items: center;\r\n          gap: 0.5rem;\r\n          font-weight: 600;\r\n          box-shadow: var(--shadow), var(--shadow-purple);\r\n          font-size: clamp(0.8rem, 2vw, 0.9rem);\r\n          position: relative;\r\n          overflow: hidden;\r\n          border: 1px solid rgba(145, 112, 255, 0.35);\r\n          min-height: 44px; \/* Touch-friendly *\/\r\n      }\r\n  \r\n      .paste-btn::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.3), transparent);\r\n          transition: left 0.5s;\r\n      }\r\n  \r\n      .paste-btn:hover::before,\r\n      .paste-btn:active::before {\r\n          left: 100%;\r\n      }\r\n  \r\n      .paste-btn:hover,\r\n      .paste-btn:active {\r\n          transform: translateY(-3px) scale(1.05);\r\n          box-shadow: var(--shadow-lg), var(--glow-purple);\r\n          background: linear-gradient(135deg, #7d5af0, #5b43c9);\r\n      }\r\n  \r\n      .action-buttons {\r\n          display: grid;\r\n          grid-template-columns: 1fr;\r\n          gap: 1rem;\r\n          align-items: center;\r\n          z-index: 2;\r\n          position: relative;\r\n      }\r\n  \r\n    .search-btn {\r\n      background: linear-gradient(135deg, #9170ff 0%, #6b4fd6 100%);\r\n      background-size: 200% 200%;\r\n      color: #ffffff;\r\n      border: none;\r\n      padding: clamp(1rem, 3vw, 1.4rem) clamp(1.5rem, 4vw, 2.8rem);\r\n      border-radius: 20px;\r\n      font-size: clamp(0.9rem, 2.5vw, 1.1rem);\r\n      font-weight: 700;\r\n      cursor: pointer;\r\n      transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);\r\n      position: relative;\r\n      overflow: hidden;\r\n      box-shadow: var(--shadow-lg), var(--glow-purple);\r\n      display: flex;\r\n      align-items: center;\r\n      justify-content: center;\r\n      gap: 0.75rem;\r\n      min-height: 56px;\r\n      animation: buttonPulse 4s ease-in-out infinite;\r\n      border: 2px solid rgba(145, 112, 255, 0.45);\r\n      width: 100%;\r\n  }\r\n      .search-btn::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.3), transparent);\r\n          transition: left 0.6s;\r\n      }\r\n  \r\n      .search-btn:hover:not(:disabled)::before,\r\n      .search-btn:active:not(:disabled)::before {\r\n          left: 100%;\r\n      }\r\n  \r\n      .search-btn:hover:not(:disabled),\r\n      .search-btn:active:not(:disabled) {\r\n          transform: translateY(-4px) scale(1.02);\r\n          box-shadow: var(--shadow-xl), var(--glow-tiktok);\r\n          background-position: 100% 100%;\r\n          animation: buttonHoverGlow 1s ease-in-out infinite;\r\n      }\r\n  \r\n      .search-btn:disabled {\r\n          opacity: 0.6;\r\n          cursor: not-allowed;\r\n          transform: none;\r\n          animation: none;\r\n      }\r\n  \r\n      .search-another-btn {\r\n          background: linear-gradient(135deg, var(--purple), var(--purple-dark));\r\n          color: white;\r\n          border: none;\r\n          padding: clamp(0.8rem, 2.5vw, 1.1rem) clamp(1rem, 3vw, 1.6rem);\r\n          border-radius: 18px;\r\n          cursor: pointer;\r\n          transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);\r\n          display: flex;\r\n          align-items: center;\r\n          justify-content: center;\r\n          gap: 0.5rem;\r\n          min-height: 48px;\r\n          width: 100%;\r\n          font-weight: 600;\r\n          box-shadow: var(--shadow), var(--shadow-purple);\r\n          font-size: clamp(0.8rem, 2vw, 0.95rem);\r\n          position: relative;\r\n          overflow: hidden;\r\n          border: 2px solid rgba(139, 92, 246, 0.3);\r\n      }\r\n  \r\n      .search-another-btn::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-another-btn:hover::before,\r\n      .search-another-btn:active::before {\r\n          left: 100%;\r\n      }\r\n  \r\n      .search-another-btn:hover,\r\n      .search-another-btn:active {\r\n          transform: translateY(-3px) scale(1.05);\r\n          box-shadow: var(--shadow-lg), var(--glow-purple);\r\n      }\r\n  \r\n      \/* Loading Animation - NO FLOATING *\/\r\n      .loading {\r\n          display: none;\r\n          text-align: center;\r\n          padding: clamp(2rem, 5vw, 3.5rem) clamp(1.5rem, 4vw, 2.5rem);\r\n          background: #ffffff;\r\n          border: 2px solid var(--glass-border);\r\n          border-radius: 24px;\r\n          margin: 2rem 0;\r\n          box-shadow: var(--shadow-lg);\r\n      }\r\n  \r\n      .loading::before {\r\n          content: '';\r\n          position: absolute;\r\n          top: 0;\r\n          left: 0;\r\n          right: 0;\r\n          height: 2px;\r\n          background: linear-gradient(90deg, \r\n              transparent, \r\n              var(--purple), \r\n              var(--pink), \r\n              transparent);\r\n          border-radius: 24px 24px 0 0;\r\n      }\r\n  \r\n      .loading-spinner {\r\n          width: clamp(60px, 15vw, 100px);\r\n          height: clamp(60px, 15vw, 100px);\r\n          margin: 0 auto 2rem;\r\n          position: relative;\r\n      }\r\n  \r\n      .spinner-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      .spinner-ring:nth-child(1) {\r\n          width: 100%;\r\n          height: 100%;\r\n          border-top-color: var(--tiktok-red);\r\n          border-right-color: var(--tiktok-red);\r\n          animation-duration: 2s;\r\n          box-shadow: 0 0 20px rgba(145, 112, 255, 0.4);\r\n      }\r\n  \r\n      .spinner-ring:nth-child(2) {\r\n          width: 75%;\r\n          height: 75%;\r\n          top: 12.5%;\r\n          left: 12.5%;\r\n          border-bottom-color: var(--tiktok-blue);\r\n          border-left-color: var(--tiktok-blue);\r\n          animation-duration: 1.5s;\r\n          animation-direction: reverse;\r\n          box-shadow: 0 0 15px rgba(107, 79, 214, 0.4);\r\n      }\r\n  \r\n      .spinner-ring:nth-child(3) {\r\n          width: 50%;\r\n          height: 50%;\r\n          top: 25%;\r\n          left: 25%;\r\n          border-top-color: var(--purple);\r\n          animation-duration: 1s;\r\n          box-shadow: 0 0 10px rgba(139, 92, 246, 0.4);\r\n      }\r\n  \r\n      .loading-text {\r\n          font-size: clamp(1rem, 3vw, 1.4rem);\r\n          font-weight: 700;\r\n          margin-bottom: 0.5rem;\r\n          background: linear-gradient(135deg, var(--tiktok-red), var(--tiktok-blue), var(--purple));\r\n          background-size: 200% 200%;\r\n          -webkit-background-clip: text;\r\n          -webkit-text-fill-color: transparent;\r\n          animation: textGradient 3s ease infinite;\r\n      }\r\n  \r\n      .loading-subtext {\r\n          color: #555555;\r\n          font-size: clamp(0.8rem, 2vw, 1rem);\r\n          animation: textFade 2s ease-in-out infinite;\r\n      }\r\n  \r\n      \/* Main Video Section - NO FLOATING *\/\r\n      .video-section {\r\n          display: none;\r\n          animation: fadeInUp 0.8s ease-out;\r\n          background: #ffffff;\r\n          border: 2px solid var(--glass-border);\r\n          border-radius: 24px;\r\n          padding: clamp(1.5rem, 4vw, 2.5rem);\r\n          box-shadow: var(--shadow-lg);\r\n          position: relative;\r\n          overflow: hidden;\r\n      }\r\n  \r\n      .video-section::before {\r\n          content: '';\r\n          position: absolute;\r\n          top: 0;\r\n          left: 0;\r\n          right: 0;\r\n          height: 2px;\r\n          background: linear-gradient(90deg, \r\n              transparent, \r\n              var(--tiktok-red), \r\n              var(--tiktok-blue), \r\n              var(--purple), \r\n              var(--pink), \r\n              transparent);\r\n          animation: borderFlow 4s ease-in-out infinite;\r\n      }\r\n  \r\n      \/* Author Info - NO FLOATING *\/\r\n      .author-section {\r\n          display: flex;\r\n          align-items: center;\r\n          gap: clamp(0.8rem, 3vw, 1.2rem);\r\n          margin-bottom: 1.5rem;\r\n          padding: clamp(1rem, 3vw, 1.5rem);\r\n          background: #f7f4ff;\r\n          border-radius: 20px;\r\n          border: 1px solid rgba(145, 112, 255, 0.25);\r\n          width: 100%;\r\n          box-shadow: var(--shadow);\r\n          transition: all 0.4s ease;\r\n          flex-wrap: wrap;\r\n          justify-content: center;\r\n          text-align: center;\r\n      }\r\n  \r\n      .author-section:hover,\r\n      .author-section:active {\r\n          transform: translateY(-3px);\r\n          box-shadow: var(--shadow-lg), var(--glow-purple);\r\n      }\r\n  \r\n      .author-avatar {\r\n          width: clamp(50px, 12vw, 60px);\r\n          height: clamp(50px, 12vw, 60px);\r\n          border-radius: 50%;\r\n          object-fit: cover;\r\n          border: 3px solid transparent;\r\n          background: linear-gradient(135deg, var(--tiktok-red), var(--tiktok-blue));\r\n          padding: 2px;\r\n          box-shadow: var(--shadow), var(--shadow-pink);\r\n          animation: avatarPulse 4s ease-in-out infinite;\r\n          flex-shrink: 0;\r\n      }\r\n  \r\n      .author-details {\r\n          flex: 1;\r\n          min-width: 0;\r\n      }\r\n  \r\n      .author-details h3 {\r\n          font-size: clamp(1rem, 3vw, 1.2rem);\r\n          font-weight: 700;\r\n          margin-bottom: 0.25rem;\r\n          color: #111111;\r\n          word-break: break-word;\r\n      }\r\n  \r\n      .author-username {\r\n          color: var(--text-gray);\r\n          font-size: clamp(0.8rem, 2.5vw, 0.95rem);\r\n          font-weight: 500;\r\n          word-break: break-word;\r\n      }\r\n  \r\n      \/* Title - NO FLOATING *\/\r\n      .video-title {\r\n          font-size: clamp(1.2rem, 4vw, 1.6rem);\r\n          font-weight: 800;\r\n          margin-bottom: 1.5rem;\r\n          line-height: 1.4;\r\n          color: #111111;\r\n          width: 100%;\r\n          text-align: center;\r\n          word-break: break-word;\r\n          padding: 0 1rem;\r\n      }\r\n  \r\n      \/* Stats Grid - NO FLOATING - REMOVED SIZE *\/\r\n      .video-stats {\r\n          display: grid;\r\n          grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));\r\n          gap: clamp(0.5rem, 2vw, 1rem);\r\n          margin-bottom: 2rem;\r\n      }\r\n  \r\n      .stat-item {\r\n          background: linear-gradient(135deg, \r\n              var(--glass-dark) 0%, \r\n              var(--glass-purple) 100%);\r\n          padding: clamp(0.8rem, 3vw, 1.2rem);\r\n          border-radius: 18px;\r\n          text-align: center;\r\n          border: 1px solid var(--glass-border);\r\n          transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);\r\n          position: relative;\r\n          overflow: hidden;\r\n          box-shadow: var(--shadow);\r\n          backdrop-filter: blur(15px);\r\n          min-height: 80px;\r\n          display: flex;\r\n          flex-direction: column;\r\n          justify-content: center;\r\n      }\r\n  \r\n      .stat-item::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(139, 92, 246, 0.3), transparent);\r\n          transition: left 0.6s;\r\n      }\r\n  \r\n      .stat-item:hover::before,\r\n      .stat-item:active::before {\r\n          left: 100%;\r\n      }\r\n  \r\n      .stat-item:hover,\r\n      .stat-item:active {\r\n          transform: translateY(-5px) scale(1.02);\r\n          box-shadow: var(--shadow-lg), var(--glow-purple);\r\n      }\r\n  \r\n      .stat-item.views {\r\n          border-color: rgba(145, 112, 255, 0.4);\r\n          background: linear-gradient(135deg, \r\n              rgba(145, 112, 255, 0.1) 0%, \r\n              var(--glass-dark) 100%);\r\n      }\r\n  \r\n      .stat-item.likes {\r\n          border-color: rgba(107, 79, 214, 0.4);\r\n          background: linear-gradient(135deg, \r\n              rgba(107, 79, 214, 0.1) 0%, \r\n              var(--glass-dark) 100%);\r\n      }\r\n  \r\n      .stat-item.comments {\r\n          border-color: rgba(168, 85, 247, 0.4);\r\n          background: linear-gradient(135deg, \r\n              rgba(168, 85, 247, 0.1) 0%, \r\n              var(--glass-dark) 100%);\r\n      }\r\n  \r\n      .stat-item.shares {\r\n          border-color: rgba(255, 136, 0, 0.4);\r\n          background: linear-gradient(135deg, \r\n              rgba(255, 136, 0, 0.1) 0%, \r\n              var(--glass-dark) 100%);\r\n      }\r\n  \r\n      .stat-item.duration {\r\n          border-color: rgba(59, 130, 246, 0.4);\r\n          background: linear-gradient(135deg, \r\n              rgba(59, 130, 246, 0.1) 0%, \r\n              var(--glass-dark) 100%);\r\n      }\r\n  \r\n      .stat-value {\r\n          font-size: clamp(1.2rem, 4vw, 1.6rem);\r\n          font-weight: 900;\r\n          display: block;\r\n          margin-bottom: 0.25rem;\r\n          background: linear-gradient(135deg, var(--tiktok-red), var(--tiktok-blue));\r\n          -webkit-background-clip: text;\r\n          -webkit-text-fill-color: transparent;\r\n          animation: valueGlow 4s ease-in-out infinite;\r\n      }\r\n  \r\n      .stat-label {\r\n          font-size: clamp(0.7rem, 2vw, 0.8rem);\r\n          color: var(--text-gray);\r\n          font-weight: 600;\r\n          text-transform: uppercase;\r\n          letter-spacing: 0.5px;\r\n      }\r\n  \r\n      \/* Video Streaming Area - NO FLOATING *\/\r\n      .video-streaming-area {\r\n          background: linear-gradient(135deg, \r\n              rgba(145, 112, 255, 0.08) 0%, \r\n              rgba(107, 79, 214, 0.08) 50%, \r\n              rgba(168, 85, 247, 0.08) 100%);\r\n          border: 2px solid rgba(145, 112, 255, 0.3);\r\n          border-radius: 24px;\r\n          padding: clamp(1.5rem, 4vw, 2.5rem);\r\n          margin-bottom: 1.5rem;\r\n          position: relative;\r\n          overflow: hidden;\r\n          box-shadow: var(--shadow-lg), var(--shadow-pink);\r\n          backdrop-filter: blur(15px);\r\n      }\r\n  \r\n      .video-streaming-area::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-image: \r\n              linear-gradient(rgba(145, 112, 255, 0.05) 1px, transparent 1px),\r\n              linear-gradient(90deg, rgba(107, 79, 214, 0.05) 1px, transparent 1px);\r\n          background-size: 30px 30px;\r\n          opacity: 0.6;\r\n          pointer-events: none;\r\n          z-index: 1;\r\n          animation: gridMove 12s linear infinite;\r\n      }\r\n  \r\n      .video-streaming-area::after {\r\n          content: '';\r\n          position: absolute;\r\n          top: 0;\r\n          left: 0;\r\n          right: 0;\r\n          height: 2px;\r\n          background: linear-gradient(90deg, \r\n              transparent, \r\n              var(--tiktok-red), \r\n              var(--tiktok-blue), \r\n              var(--purple), \r\n              transparent);\r\n          z-index: 2;\r\n          animation: borderFlow 3s ease-in-out infinite;\r\n      }\r\n  \r\n      .streaming-header {\r\n          text-align: center;\r\n          margin-bottom: 2rem;\r\n          position: relative;\r\n          z-index: 3;\r\n      }\r\n  \r\n      .streaming-title {\r\n          font-size: clamp(1rem, 3vw, 1.3rem);\r\n          font-weight: 700;\r\n          margin-bottom: 0.5rem;\r\n          background: linear-gradient(135deg, var(--tiktok-red), var(--tiktok-blue));\r\n          -webkit-background-clip: text;\r\n          -webkit-text-fill-color: transparent;\r\n          animation: titlePulse 4s ease-in-out infinite;\r\n      }\r\n  \r\n      .streaming-subtitle {\r\n          color: var(--text-gray);\r\n          font-size: clamp(0.8rem, 2vw, 0.95rem);\r\n          font-weight: 500;\r\n      }\r\n  \r\n      \/* Video Player - NO FLOATING *\/\r\n      .video-player-wrapper {\r\n          position: relative;\r\n          width: 100%;\r\n          max-width: min(380px, 90vw);\r\n          margin: 0 auto;\r\n          aspect-ratio: 9\/16;\r\n          border-radius: 24px;\r\n          overflow: hidden;\r\n          box-shadow: var(--shadow-xl), var(--shadow-pink);\r\n          background: #000;\r\n          z-index: 3;\r\n          border: 2px solid rgba(145, 112, 255, 0.3);\r\n      }\r\n  \r\n      .video-thumbnail {\r\n          position: absolute;\r\n          top: 0;\r\n          left: 0;\r\n          width: 100%;\r\n          height: 100%;\r\n          object-fit: cover;\r\n          z-index: 4;\r\n          cursor: pointer;\r\n          transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);\r\n      }\r\n  \r\n      .video-thumbnail:hover,\r\n      .video-thumbnail:active {\r\n          transform: scale(1.02);\r\n      }\r\n  \r\n      .thumbnail-overlay {\r\n          position: absolute;\r\n          top: 0;\r\n          left: 0;\r\n          width: 100%;\r\n          height: 100%;\r\n          background: rgba(0, 0, 0, 0.4);\r\n          display: flex;\r\n          align-items: center;\r\n          justify-content: center;\r\n          z-index: 5;\r\n          cursor: pointer;\r\n          transition: all 0.4s ease;\r\n          backdrop-filter: blur(2px);\r\n      }\r\n  \r\n      .thumbnail-overlay:hover,\r\n      .thumbnail-overlay:active {\r\n          background: rgba(0, 0, 0, 0.6);\r\n          backdrop-filter: blur(4px);\r\n      }\r\n  \r\n      .thumbnail-play-btn {\r\n          width: clamp(60px, 15vw, 80px);\r\n          height: clamp(60px, 15vw, 80px);\r\n          background: linear-gradient(135deg, var(--tiktok-red), var(--pink));\r\n          border: none;\r\n          border-radius: 50%;\r\n          color: white;\r\n          font-size: clamp(1.5rem, 4vw, 2rem);\r\n          cursor: pointer;\r\n          display: flex;\r\n          align-items: center;\r\n          justify-content: center;\r\n          box-shadow: var(--shadow-xl), var(--glow-tiktok);\r\n          transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);\r\n          position: relative;\r\n          overflow: hidden;\r\n          animation: playButtonPulse 3s ease-in-out infinite;\r\n          border: 2px solid rgba(255, 255, 255, 0.2);\r\n          min-height: 44px; \/* Touch-friendly *\/\r\n      }\r\n  \r\n      .thumbnail-play-btn::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(45deg, transparent, rgba(255, 255, 255, 0.3), transparent);\r\n          transform: translateX(-100%);\r\n          transition: transform 0.6s;\r\n      }\r\n  \r\n      .thumbnail-play-btn::hover,\r\n      .thumbnail-play-btn::active {\r\n          transform: translateX(100%);\r\n      }\r\n  \r\n      .thumbnail-play-btn:hover,\r\n      .thumbnail-play-btn:active {\r\n          transform: scale(1.15);\r\n          box-shadow: var(--shadow-xl), var(--glow-tiktok);\r\n      }\r\n  \r\n      .video-player {\r\n          width: 100%;\r\n          height: 100%;\r\n          object-fit: contain;\r\n          background: #000;\r\n          position: relative;\r\n          z-index: 2;\r\n          display: none;\r\n      }\r\n  \r\n      .video-player.playing {\r\n          display: block;\r\n      }\r\n  \r\n      .video-controls {\r\n          position: absolute;\r\n          bottom: 0;\r\n          left: 0;\r\n          right: 0;\r\n          background: linear-gradient(transparent, rgba(0, 0, 0, 0.9));\r\n          padding: clamp(1rem, 3vw, 1.5rem);\r\n          transform: translateY(100%);\r\n          transition: transform 0.4s ease;\r\n          z-index: 10;\r\n          backdrop-filter: blur(10px);\r\n      }\r\n  \r\n      .video-player-wrapper:hover .video-controls,\r\n      .video-controls.show {\r\n          transform: translateY(0);\r\n      }\r\n  \r\n      .progress-bar {\r\n          width: 100%;\r\n          height: clamp(4px, 1.5vw, 6px);\r\n          background: rgba(255, 255, 255, 0.2);\r\n          border-radius: 3px;\r\n          margin-bottom: 0.5rem;\r\n          cursor: pointer;\r\n          position: relative;\r\n          overflow: hidden;\r\n          min-height: 20px; \/* Touch-friendly *\/\r\n          display: flex;\r\n          align-items: center;\r\n      }\r\n  \r\n      .progress-fill {\r\n          height: 100%;\r\n          background: linear-gradient(90deg, var(--tiktok-red), var(--pink));\r\n          border-radius: 3px;\r\n          width: 0%;\r\n          transition: width 0.1s linear;\r\n          box-shadow: 0 0 10px rgba(145, 112, 255, 0.5);\r\n      }\r\n  \r\n      \/* Video Time Display *\/\r\n      .video-time {\r\n          display: flex;\r\n          justify-content: space-between;\r\n          font-size: clamp(0.7rem, 2vw, 0.8rem);\r\n          color: rgba(255, 255, 255, 0.9);\r\n          margin-bottom: 1rem;\r\n      }\r\n  \r\n      .control-buttons {\r\n          display: flex;\r\n          justify-content: space-between;\r\n          align-items: center;\r\n          flex-wrap: wrap;\r\n          gap: 1rem;\r\n      }\r\n  \r\n      .control-group {\r\n          display: flex;\r\n          align-items: center;\r\n          gap: clamp(0.5rem, 2vw, 0.75rem);\r\n          flex-wrap: wrap;\r\n      }\r\n  \r\n      .control-btn {\r\n          background: rgba(255, 255, 255, 0.15);\r\n          border: none;\r\n          color: white;\r\n          width: clamp(40px, 10vw, 44px);\r\n          height: clamp(40px, 10vw, 44px);\r\n          border-radius: 50%;\r\n          cursor: pointer;\r\n          display: flex;\r\n          align-items: center;\r\n          justify-content: center;\r\n          transition: all 0.3s ease;\r\n          backdrop-filter: blur(10px);\r\n          border: 1px solid rgba(255, 255, 255, 0.2);\r\n          font-size: clamp(0.8rem, 2vw, 1rem);\r\n          min-height: 44px; \/* Touch-friendly *\/\r\n          min-width: 44px;\r\n      }\r\n  \r\n      .control-btn:hover,\r\n      .control-btn:active {\r\n          background: rgba(255, 255, 255, 0.25);\r\n          transform: scale(1.1);\r\n          box-shadow: var(--shadow);\r\n      }\r\n  \r\n      .play-btn {\r\n          width: clamp(50px, 12vw, 60px);\r\n          height: clamp(50px, 12vw, 60px);\r\n          background: linear-gradient(135deg, var(--tiktok-red), var(--pink));\r\n          font-size: clamp(1rem, 3vw, 1.4rem);\r\n          border: none;\r\n          box-shadow: var(--shadow-lg), var(--glow-tiktok);\r\n      }\r\n  \r\n      .volume-control {\r\n          display: flex;\r\n          align-items: center;\r\n          gap: clamp(0.3rem, 1.5vw, 0.5rem);\r\n          flex-wrap: wrap;\r\n      }\r\n  \r\n      .volume-slider {\r\n          width: clamp(60px, 15vw, 80px);\r\n          height: clamp(4px, 1.5vw, 6px);\r\n          background: rgba(255, 255, 255, 0.2);\r\n          border-radius: 3px;\r\n          cursor: pointer;\r\n          position: relative;\r\n          overflow: hidden;\r\n          min-height: 20px; \/* Touch-friendly *\/\r\n          display: flex;\r\n          align-items: center;\r\n      }\r\n  \r\n      .volume-fill {\r\n          height: 100%;\r\n          background: linear-gradient(90deg, var(--tiktok-blue), var(--green));\r\n          border-radius: 3px;\r\n          width: 100%;\r\n          transition: width 0.1s ease;\r\n          box-shadow: 0 0 8px rgba(107, 79, 214, 0.4);\r\n      }\r\n  \r\n      \/* Download Section - NO FLOATING *\/\r\n      .download-section {\r\n          background: linear-gradient(135deg, \r\n              rgba(107, 79, 214, 0.1) 0%, \r\n              rgba(0, 255, 136, 0.1) 50%, \r\n              var(--glass-dark) 100%);\r\n          border: 2px solid rgba(107, 79, 214, 0.3);\r\n          border-radius: 20px;\r\n          padding: clamp(1rem, 3vw, 1.5rem);\r\n          margin-bottom: 1.5rem;\r\n          box-shadow: var(--shadow), var(--shadow-blue);\r\n          position: relative;\r\n          overflow: hidden;\r\n          backdrop-filter: blur(15px);\r\n      }\r\n  \r\n      .download-section::before {\r\n          content: '';\r\n          position: absolute;\r\n          top: 0;\r\n          left: 0;\r\n          right: 0;\r\n          height: 2px;\r\n          background: linear-gradient(90deg, \r\n              transparent, \r\n              var(--tiktok-blue), \r\n              var(--green), \r\n              transparent);\r\n          animation: borderFlow 3s ease-in-out infinite;\r\n      }\r\n  \r\n      .download-header {\r\n          text-align: center;\r\n          margin-bottom: clamp(0.8rem, 2.5vw, 1.2rem);\r\n      }\r\n  \r\n      .download-title {\r\n          font-size: clamp(1rem, 3vw, 1.2rem);\r\n          font-weight: 700;\r\n          margin-bottom: 0.25rem;\r\n          background: linear-gradient(135deg, var(--tiktok-blue), var(--green));\r\n          -webkit-background-clip: text;\r\n          -webkit-text-fill-color: transparent;\r\n          display: flex;\r\n          align-items: center;\r\n          justify-content: center;\r\n          gap: 0.5rem;\r\n          animation: titlePulse 4s ease-in-out infinite;\r\n          flex-wrap: wrap;\r\n      }\r\n  \r\n      .download-subtitle {\r\n          color: var(--text-gray);\r\n          font-size: clamp(0.8rem, 2vw, 0.9rem);\r\n      }\r\n  \r\n      .download-grid {\r\n          display: grid;\r\n          grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));\r\n          gap: clamp(0.8rem, 2vw, 1rem);\r\n      }\r\n  \r\n      .download-btn {\r\n          background: linear-gradient(135deg, var(--tiktok-blue), #00d4cc);\r\n          color: white;\r\n          border: none;\r\n          padding: clamp(0.8rem, 3vw, 1rem) clamp(1rem, 3vw, 1.5rem);\r\n          border-radius: 16px;\r\n          font-weight: 700;\r\n          cursor: pointer;\r\n          transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);\r\n          display: flex;\r\n          align-items: center;\r\n          justify-content: center;\r\n          gap: 0.5rem;\r\n          box-shadow: var(--shadow), var(--shadow-blue);\r\n          position: relative;\r\n          overflow: hidden;\r\n          font-size: clamp(0.8rem, 2vw, 0.95rem);\r\n          animation: buttonGlow 5s ease-in-out infinite;\r\n          border: 1px solid rgba(107, 79, 214, 0.3);\r\n          min-height: 48px;\r\n          text-align: center;\r\n      }\r\n  \r\n      .download-btn::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.3), transparent);\r\n          transition: left 0.5s;\r\n      }\r\n  \r\n      .download-btn:hover:not(:disabled)::before,\r\n      .download-btn:active:not(:disabled)::before {\r\n          left: 100%;\r\n      }\r\n  \r\n      .download-btn:hover:not(:disabled),\r\n      .download-btn:active:not(:disabled) {\r\n          transform: translateY(-3px) scale(1.02);\r\n          box-shadow: var(--shadow-lg), var(--glow-blue);\r\n      }\r\n  \r\n      .download-btn:disabled {\r\n          opacity: 0.6;\r\n          cursor: not-allowed;\r\n          transform: none;\r\n          animation: none;\r\n      }\r\n  \r\n      .download-btn.hd {\r\n          background: linear-gradient(135deg, var(--orange), #ff6600);\r\n          border-color: rgba(255, 136, 0, 0.3);\r\n      }\r\n  \r\n      .download-btn.hd:hover:not(:disabled),\r\n      .download-btn.hd:active:not(:disabled) {\r\n          box-shadow: var(--shadow-lg), 0 0 30px rgba(255, 136, 0, 0.5);\r\n      }\r\n  \r\n      \/* Audio Streaming Section - NO FLOATING *\/\r\n      .audio-streaming {\r\n          background: linear-gradient(135deg, \r\n              rgba(168, 85, 247, 0.12) 0%, \r\n              rgba(145, 112, 255, 0.12) 50%, \r\n              var(--glass-dark) 100%);\r\n          border: 2px solid rgba(168, 85, 247, 0.3);\r\n          border-radius: 20px;\r\n          padding: clamp(1rem, 3vw, 1.5rem);\r\n          position: relative;\r\n          overflow: hidden;\r\n          box-shadow: var(--shadow), var(--shadow-purple);\r\n          backdrop-filter: blur(15px);\r\n      }\r\n  \r\n      .audio-streaming::before {\r\n          content: '';\r\n          position: absolute;\r\n          top: 0;\r\n          left: 0;\r\n          right: 0;\r\n          height: 2px;\r\n          background: linear-gradient(90deg, \r\n              transparent, \r\n              var(--purple), \r\n              var(--pink), \r\n              transparent);\r\n          animation: borderFlow 3s ease-in-out infinite;\r\n      }\r\n  \r\n      .audio-header {\r\n          text-align: center;\r\n          margin-bottom: clamp(0.8rem, 2.5vw, 1.2rem);\r\n      }\r\n  \r\n      .audio-main-title {\r\n          font-size: clamp(1rem, 3vw, 1.2rem);\r\n          font-weight: 700;\r\n          margin-bottom: 0.25rem;\r\n          background: linear-gradient(135deg, var(--purple), var(--pink));\r\n          -webkit-background-clip: text;\r\n          -webkit-text-fill-color: transparent;\r\n          width: 100%;\r\n          display: flex;\r\n          align-items: center;\r\n          justify-content: center;\r\n          gap: 0.5rem;\r\n          animation: titlePulse 4s ease-in-out infinite;\r\n          flex-wrap: wrap;\r\n      }\r\n  \r\n      .audio-subtitle {\r\n          color: var(--text-gray);\r\n          font-size: clamp(0.8rem, 2vw, 0.9rem);\r\n          margin-bottom: clamp(0.8rem, 2.5vw, 1.2rem);\r\n      }\r\n  \r\n      .audio-player-section {\r\n          display: flex;\r\n          align-items: center;\r\n          gap: clamp(0.8rem, 3vw, 1.2rem);\r\n          margin-bottom: 1.5rem;\r\n          flex-wrap: wrap;\r\n          justify-content: center;\r\n      }\r\n  \r\n      \/* Audio Icon - Left Side, Smaller *\/\r\n      .audio-icon-wrapper {\r\n          position: relative;\r\n          flex-shrink: 0;\r\n      }\r\n  \r\n      .audio-icon {\r\n          width: clamp(40px, 10vw, 50px);\r\n          height: clamp(40px, 10vw, 50px);\r\n          background: linear-gradient(135deg, var(--purple), var(--pink));\r\n          border-radius: 50%;\r\n          display: flex;\r\n          align-items: center;\r\n          justify-content: center;\r\n          font-size: clamp(1rem, 2.5vw, 1.2rem);\r\n          color: white;\r\n          box-shadow: var(--shadow), var(--shadow-purple);\r\n          animation: audioIconPulse 4s ease-in-out infinite;\r\n          position: relative;\r\n          z-index: 2;\r\n          border: 2px solid rgba(168, 85, 247, 0.3);\r\n      }\r\n  \r\n      .audio-wave {\r\n          position: absolute;\r\n          top: 50%;\r\n          left: 50%;\r\n          transform: translate(-50%, -50%);\r\n          border: 1px solid rgba(168, 85, 247, 0.2);\r\n          border-radius: 50%;\r\n          animation: audioWaveRipple 2s ease-out infinite;\r\n      }\r\n  \r\n      .audio-wave:nth-child(1) {\r\n          width: clamp(50px, 12vw, 60px);\r\n          height: clamp(50px, 12vw, 60px);\r\n          animation-delay: 0s;\r\n      }\r\n  \r\n      .audio-wave:nth-child(2) {\r\n          width: clamp(60px, 15vw, 75px);\r\n          height: clamp(60px, 15vw, 75px);\r\n          animation-delay: 0.5s;\r\n      }\r\n  \r\n      .audio-wave:nth-child(3) {\r\n          width: clamp(70px, 18vw, 90px);\r\n          height: clamp(70px, 18vw, 90px);\r\n          animation-delay: 1s;\r\n      }\r\n  \r\n      .audio-info {\r\n          flex: 1;\r\n          min-width: 0;\r\n          text-align: center;\r\n      }\r\n  \r\n      .audio-title {\r\n          font-size: clamp(0.9rem, 2.5vw, 1rem);\r\n          font-weight: 700;\r\n          color: var(--text-light);\r\n          margin-bottom: 0.25rem;\r\n          word-break: break-word;\r\n      }\r\n  \r\n      .audio-artist {\r\n          font-size: clamp(0.75rem, 2vw, 0.85rem);\r\n          color: var(--text-gray);\r\n          margin-bottom: 1rem;\r\n          word-break: break-word;\r\n      }\r\n  \r\n      \/* Audio Progress Bar *\/\r\n      .audio-progress-container {\r\n          width: 100%;\r\n          margin-bottom: 1rem;\r\n      }\r\n  \r\n      .audio-progress {\r\n          height: clamp(6px, 2vw, 8px);\r\n          background: rgba(168, 85, 247, 0.2);\r\n          border-radius: 4px;\r\n          position: relative;\r\n          cursor: pointer;\r\n          overflow: hidden;\r\n          margin-bottom: 0.5rem;\r\n          min-height: 20px; \/* Touch-friendly *\/\r\n          display: flex;\r\n          align-items: center;\r\n      }\r\n  \r\n      .audio-progress-fill {\r\n          height: 100%;\r\n          background: linear-gradient(90deg, var(--purple), var(--pink));\r\n          border-radius: 4px;\r\n          width: 0%;\r\n          transition: width 0.1s ease;\r\n          box-shadow: 0 0 10px rgba(168, 85, 247, 0.4);\r\n      }\r\n  \r\n      .audio-time {\r\n          display: flex;\r\n          justify-content: space-between;\r\n          font-size: clamp(0.7rem, 2vw, 0.8rem);\r\n          color: var(--text-gray);\r\n          margin-bottom: 1rem;\r\n      }\r\n  \r\n      \/* Audio Controls *\/\r\n      .audio-controls {\r\n          display: flex;\r\n          align-items: center;\r\n          justify-content: center;\r\n          gap: clamp(0.8rem, 3vw, 1rem);\r\n          margin-bottom: 1rem;\r\n          flex-wrap: wrap;\r\n      }\r\n  \r\n      .audio-play-btn {\r\n          width: clamp(44px, 10vw, 50px);\r\n          height: clamp(44px, 10vw, 50px);\r\n          background: linear-gradient(135deg, var(--purple), var(--pink));\r\n          border: none;\r\n          border-radius: 50%;\r\n          color: white;\r\n          cursor: pointer;\r\n          display: flex;\r\n          align-items: center;\r\n          justify-content: center;\r\n          transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);\r\n          box-shadow: var(--shadow), var(--shadow-purple);\r\n          font-size: clamp(1rem, 2.5vw, 1.2rem);\r\n          flex-shrink: 0;\r\n          animation: audioPlayPulse 4s ease-in-out infinite;\r\n          border: 2px solid rgba(168, 85, 247, 0.3);\r\n          min-height: 44px; \/* Touch-friendly *\/\r\n          min-width: 44px;\r\n      }\r\n  \r\n      .audio-play-btn:hover,\r\n      .audio-play-btn:active {\r\n          transform: scale(1.1);\r\n          box-shadow: var(--shadow-lg), var(--glow-purple);\r\n      }\r\n  \r\n      \/* Audio Volume Control *\/\r\n      .audio-volume-control {\r\n          display: flex;\r\n          align-items: center;\r\n          gap: clamp(0.5rem, 2vw, 0.75rem);\r\n          flex-wrap: wrap;\r\n      }\r\n  \r\n      .audio-volume-btn {\r\n          background: rgba(168, 85, 247, 0.15);\r\n          border: none;\r\n          color: var(--purple-light);\r\n          width: clamp(36px, 8vw, 40px);\r\n          height: clamp(36px, 8vw, 40px);\r\n          border-radius: 50%;\r\n          cursor: pointer;\r\n          display: flex;\r\n          align-items: center;\r\n          justify-content: center;\r\n          transition: all 0.3s ease;\r\n          backdrop-filter: blur(10px);\r\n          border: 1px solid rgba(168, 85, 247, 0.2);\r\n          font-size: clamp(0.8rem, 2vw, 1rem);\r\n          min-height: 44px; \/* Touch-friendly *\/\r\n          min-width: 44px;\r\n      }\r\n  \r\n      .audio-volume-btn:hover,\r\n      .audio-volume-btn:active {\r\n          background: rgba(168, 85, 247, 0.25);\r\n          transform: scale(1.1);\r\n          box-shadow: var(--shadow);\r\n      }\r\n  \r\n      .audio-volume-slider {\r\n          width: clamp(60px, 15vw, 80px);\r\n          height: clamp(4px, 1.5vw, 6px);\r\n          background: rgba(168, 85, 247, 0.2);\r\n          border-radius: 3px;\r\n          cursor: pointer;\r\n          position: relative;\r\n          overflow: hidden;\r\n          min-height: 20px; \/* Touch-friendly *\/\r\n          display: flex;\r\n          align-items: center;\r\n      }\r\n  \r\n      .audio-volume-fill {\r\n          height: 100%;\r\n          background: linear-gradient(90deg, var(--purple), var(--pink));\r\n          border-radius: 3px;\r\n          width: 100%;\r\n          transition: width 0.1s ease;\r\n          box-shadow: 0 0 8px rgba(168, 85, 247, 0.4);\r\n      }\r\n  \r\n      .download-audio-section {\r\n          text-align: center;\r\n      }\r\n  \r\n      .download-audio-btn {\r\n          background: linear-gradient(135deg, var(--purple), var(--purple-dark));\r\n          color: white;\r\n          border: none;\r\n          padding: clamp(0.8rem, 3vw, 1rem) clamp(1rem, 3vw, 1.5rem);\r\n          border-radius: 16px;\r\n          font-weight: 700;\r\n          cursor: pointer;\r\n          transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);\r\n          display: inline-flex;\r\n          align-items: center;\r\n          gap: 0.5rem;\r\n          box-shadow: var(--shadow), var(--shadow-purple);\r\n          font-size: clamp(0.8rem, 2vw, 0.95rem);\r\n          position: relative;\r\n          overflow: hidden;\r\n          animation: buttonGlow 5s ease-in-out infinite;\r\n          border: 1px solid rgba(168, 85, 247, 0.3);\r\n          min-height: 48px;\r\n          width: 100%;\r\n          max-width: 300px;\r\n          justify-content: center;\r\n      }\r\n  \r\n      .download-audio-btn::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.3), transparent);\r\n          transition: left 0.5s;\r\n      }\r\n  \r\n      .download-audio-btn:hover:not(:disabled)::before,\r\n      .download-audio-btn:active:not(:disabled)::before {\r\n          left: 100%;\r\n      }\r\n  \r\n      .download-audio-btn:hover:not(:disabled),\r\n      .download-audio-btn:active:not(:disabled) {\r\n          transform: translateY(-3px) scale(1.02);\r\n          box-shadow: var(--shadow-lg), var(--glow-purple);\r\n      }\r\n  \r\n      .download-audio-btn:disabled {\r\n          opacity: 0.6;\r\n          cursor: not-allowed;\r\n          transform: none;\r\n          animation: none;\r\n      }\r\n  \r\n      \/* Download Progress - NO FLOATING *\/\r\n      .download-progress {\r\n          position: fixed;\r\n          bottom: 1.5rem;\r\n          right: 1.5rem;\r\n          background: linear-gradient(135deg, \r\n              var(--glass-dark) 0%, \r\n              var(--glass-purple) 100%);\r\n          backdrop-filter: blur(25px);\r\n          border: 2px solid var(--glass-border);\r\n          border-radius: 18px;\r\n          padding: clamp(1rem, 3vw, 1.5rem) clamp(1.5rem, 4vw, 2rem);\r\n          min-width: min(320px, 90vw);\r\n          max-width: 90vw;\r\n          box-shadow: var(--shadow-xl), var(--shadow-purple);\r\n          z-index: 1000;\r\n          display: none;\r\n      }\r\n  \r\n      .download-progress.show {\r\n          display: block;\r\n          animation: slideInRight 0.4s ease-out;\r\n      }\r\n  \r\n      .progress-header {\r\n          display: flex;\r\n          justify-content: space-between;\r\n          align-items: center;\r\n          margin-bottom: 1rem;\r\n          gap: 1rem;\r\n          flex-wrap: wrap;\r\n      }\r\n  \r\n      .progress-text {\r\n          font-weight: 700;\r\n          font-size: clamp(0.8rem, 2vw, 0.95rem);\r\n          color: var(--text-light);\r\n          background: linear-gradient(135deg, var(--tiktok-red), var(--tiktok-blue));\r\n          -webkit-background-clip: text;\r\n          -webkit-text-fill-color: transparent;\r\n          flex: 1;\r\n          min-width: 0;\r\n      }\r\n  \r\n      .cancel-btn {\r\n          background: rgba(255, 51, 102, 0.15);\r\n          border: 1px solid rgba(255, 51, 102, 0.3);\r\n          color: #ff3366;\r\n          padding: clamp(0.4rem, 1.5vw, 0.5rem) clamp(0.8rem, 2vw, 1rem);\r\n          border-radius: 10px;\r\n          font-size: clamp(0.7rem, 2vw, 0.8rem);\r\n          cursor: pointer;\r\n          transition: all 0.3s ease;\r\n          font-weight: 600;\r\n          backdrop-filter: blur(10px);\r\n          min-height: 36px;\r\n          flex-shrink: 0;\r\n      }\r\n  \r\n      .cancel-btn:hover,\r\n      .cancel-btn:active {\r\n          background: rgba(255, 51, 102, 0.25);\r\n          transform: scale(1.05);\r\n      }\r\n  \r\n      .progress-bar-container {\r\n          width: 100%;\r\n          height: clamp(6px, 2vw, 8px);\r\n          background: rgba(168, 85, 247, 0.2);\r\n          border-radius: 4px;\r\n          overflow: hidden;\r\n      }\r\n  \r\n      .progress-bar-fill {\r\n          height: 100%;\r\n          background: linear-gradient(90deg, var(--green), #00cc77);\r\n          border-radius: 4px;\r\n          width: 0%;\r\n          transition: width 0.3s ease;\r\n          box-shadow: 0 0 12px rgba(0, 255, 136, 0.4);\r\n          animation: progressGlow 3s ease-in-out infinite;\r\n      }\r\n  \r\n      \/* Error Message - NO FLOATING *\/\r\n      .error-message {\r\n          background: linear-gradient(135deg, \r\n              rgba(255, 51, 102, 0.1) 0%, \r\n              var(--glass-dark) 100%);\r\n          border: 2px solid rgba(255, 51, 102, 0.3);\r\n          color: #ff6b6b;\r\n          padding: clamp(1rem, 3vw, 1.2rem) clamp(1.2rem, 4vw, 1.8rem);\r\n          border-radius: 16px;\r\n          margin: 1rem 0;\r\n          display: none;\r\n          align-items: center;\r\n          gap: clamp(0.5rem, 2vw, 1rem);\r\n          font-weight: 600;\r\n          backdrop-filter: blur(15px);\r\n          box-shadow: var(--shadow);\r\n          animation: errorShake 0.5s ease-in-out;\r\n          font-size: clamp(0.8rem, 2vw, 1rem);\r\n          flex-wrap: wrap;\r\n      }\r\n  \r\n      .error-message.show {\r\n          display: flex;\r\n          animation: fadeInUp 0.3s ease-out, errorShake 0.5s ease-in-out;\r\n      }\r\n  \r\n      \/* Animations - KEPT ONLY DECORATIVE ONES *\/\r\n      @keyframes gradientShift {\r\n          0%, 100% { background-position: 0% 50%; }\r\n          50% { background-position: 100% 50%; }\r\n      }\r\n  \r\n      @keyframes backgroundFloat {\r\n          0%, 100% { opacity: 1; transform: translateY(0px); }\r\n          50% { opacity: 0.8; transform: translateY(-10px); }\r\n      }\r\n  \r\n      @keyframes fadeInDown {\r\n          from { opacity: 0; transform: translateY(-40px); }\r\n          to { opacity: 1; transform: translateY(0); }\r\n      }\r\n  \r\n      @keyframes fadeInUp {\r\n          from { opacity: 0; transform: translateY(40px); }\r\n          to { opacity: 1; transform: translateY(0); }\r\n      }\r\n  \r\n      @keyframes slideInRight {\r\n          from { opacity: 0; transform: translateX(100%); }\r\n          to { opacity: 1; transform: translateX(0); }\r\n      }\r\n  \r\n      @keyframes spin {\r\n          to { transform: rotate(360deg); }\r\n      }\r\n  \r\n      @keyframes logoFloat {\r\n          0%, 100% { transform: translateY(0px) rotate(0deg); }\r\n          50% { transform: translateY(-10px) rotate(5deg); }\r\n      }\r\n  \r\n      @keyframes logoShine {\r\n          0% { transform: translateX(-100%) translateY(-100%) rotate(45deg); }\r\n          100% { transform: translateX(100%) translateY(100%) rotate(45deg); }\r\n      }\r\n  \r\n      @keyframes textGradient {\r\n          0%, 100% { background-position: 0% 50%; }\r\n          50% { background-position: 100% 50%; }\r\n      }\r\n  \r\n      @keyframes subtitleGlow {\r\n          0%, 100% { text-shadow: 0 0 5px rgba(160, 160, 160, 0.3); }\r\n          50% { text-shadow: 0 0 15px rgba(160, 160, 160, 0.6); }\r\n      }\r\n  \r\n      @keyframes borderFlow {\r\n          0%, 100% { opacity: 0.5; }\r\n          50% { opacity: 1; }\r\n      }\r\n  \r\n      @keyframes overlayPulse {\r\n          0%, 100% { opacity: 1; }\r\n          50% { opacity: 0.7; }\r\n      }\r\n  \r\n      @keyframes inputFocusGlow {\r\n          0%, 100% { box-shadow: 0 0 0 4px rgba(139, 92, 246, 0.2), var(--glow-purple), inset 0 2px 10px rgba(0, 0, 0, 0.3); }\r\n          50% { box-shadow: 0 0 0 6px rgba(139, 92, 246, 0.4), var(--glow-purple), inset 0 2px 10px rgba(0, 0, 0, 0.3); }\r\n      }\r\n  \r\n      @keyframes buttonPulse {\r\n          0%, 100% { box-shadow: var(--shadow-lg), var(--shadow-pink); }\r\n          50% { box-shadow: var(--shadow-xl), var(--glow-tiktok); }\r\n      }\r\n  \r\n      @keyframes buttonHoverGlow {\r\n          0%, 100% { filter: brightness(1); }\r\n          50% { filter: brightness(1.2); }\r\n      }\r\n  \r\n      @keyframes textFade {\r\n          0%, 100% { opacity: 0.7; }\r\n          50% { opacity: 1; }\r\n      }\r\n  \r\n      @keyframes avatarPulse {\r\n          0%, 100% { box-shadow: var(--shadow), var(--shadow-pink); }\r\n          50% { box-shadow: var(--shadow), 0 0 30px rgba(145, 112, 255, 0.6); }\r\n      }\r\n  \r\n      @keyframes valueGlow {\r\n          0%, 100% { filter: brightness(1); }\r\n          50% { filter: brightness(1.2); }\r\n      }\r\n  \r\n      @keyframes gridMove {\r\n          0% { transform: translate(0, 0); }\r\n          100% { transform: translate(30px, 30px); }\r\n      }\r\n  \r\n      @keyframes titlePulse {\r\n          0%, 100% { filter: brightness(1); }\r\n          50% { filter: brightness(1.3); }\r\n      }\r\n  \r\n      @keyframes playButtonPulse {\r\n          0%, 100% { transform: scale(1); }\r\n          50% { transform: scale(1.05); }\r\n      }\r\n  \r\n      @keyframes buttonGlow {\r\n          0%, 100% { box-shadow: var(--shadow); }\r\n          50% { box-shadow: var(--shadow-lg); }\r\n      }\r\n  \r\n      @keyframes audioIconPulse {\r\n          0%, 100% { transform: scale(1); }\r\n          50% { transform: scale(1.1); }\r\n      }\r\n  \r\n      @keyframes audioWaveRipple {\r\n          0% {\r\n              opacity: 1;\r\n              transform: translate(-50%, -50%) scale(0.8);\r\n          }\r\n          100% {\r\n              opacity: 0;\r\n              transform: translate(-50%, -50%) scale(2);\r\n          }\r\n      }\r\n  \r\n      @keyframes audioPlayPulse {\r\n          0%, 100% { box-shadow: var(--shadow), var(--shadow-purple); }\r\n          50% { box-shadow: var(--shadow-lg), var(--glow-purple); }\r\n      }\r\n  \r\n      @keyframes progressGlow {\r\n          0%, 100% { box-shadow: 0 0 12px rgba(0, 255, 136, 0.4); }\r\n          50% { box-shadow: 0 0 20px rgba(0, 255, 136, 0.8); }\r\n      }\r\n  \r\n      @keyframes errorShake {\r\n          0%, 100% { transform: translateX(0); }\r\n          25% { transform: translateX(-5px); }\r\n          75% { transform: translateX(5px); }\r\n      }\r\n  \r\n      \/* Enhanced Responsive Design *\/\r\n      \r\n      \/* Large Tablets and Small Desktops *\/\r\n      @media (max-width: 1024px) {\r\n          .ttvv-custom-container {\r\n              padding: clamp(1rem, 3vw, 1.5rem);\r\n          }\r\n  \r\n          .video-stats {\r\n              grid-template-columns: repeat(3, 1fr);\r\n          }\r\n  \r\n          .download-grid {\r\n              grid-template-columns: 1fr;\r\n          }\r\n  \r\n          .action-buttons {\r\n              grid-template-columns: 1fr;\r\n              gap: 1rem;\r\n          }\r\n  \r\n          .search-another-btn {\r\n              width: 100%;\r\n          }\r\n  \r\n          .audio-player-section {\r\n              flex-direction: column;\r\n              text-align: center;\r\n              gap: 1rem;\r\n          }\r\n  \r\n          .audio-controls {\r\n              flex-direction: row;\r\n              justify-content: center;\r\n              gap: 1rem;\r\n          }\r\n  \r\n          .audio-volume-control {\r\n              justify-content: center;\r\n          }\r\n  \r\n          .video-player-wrapper {\r\n              max-width: min(320px, 85vw);\r\n          }\r\n      }\r\n  \r\n      \/* Tablets *\/\r\n      @media (max-width: 768px) {\r\n          .ttvv-custom-container {\r\n              padding: 1rem;\r\n          }\r\n  \r\n          .logo {\r\n              flex-direction: column;\r\n              gap: 1rem;\r\n          }\r\n  \r\n          .logo-icon {\r\n              width: 60px;\r\n              height: 60px;\r\n              font-size: 24px;\r\n          }\r\n  \r\n          .video-stats {\r\n              grid-template-columns: repeat(2, 1fr);\r\n              gap: 0.8rem;\r\n          }\r\n  \r\n          .author-section {\r\n              flex-direction: column;\r\n              text-align: center;\r\n              gap: 1rem;\r\n          }\r\n  \r\n          .download-progress {\r\n              left: 1rem;\r\n              right: 1rem;\r\n              bottom: 1rem;\r\n              min-width: auto;\r\n          }\r\n  \r\n          .control-buttons {\r\n              flex-direction: column;\r\n              gap: 1rem;\r\n              align-items: center;\r\n          }\r\n  \r\n          .volume-control {\r\n              order: 3;\r\n              width: 100%;\r\n              justify-content: center;\r\n          }\r\n  \r\n          .audio-controls {\r\n              flex-direction: column;\r\n              gap: 1rem;\r\n          }\r\n  \r\n          .audio-volume-control {\r\n              width: 100%;\r\n              justify-content: center;\r\n          }\r\n  \r\n          .video-player-wrapper {\r\n              max-width: min(300px, 80vw);\r\n          }\r\n  \r\n          \/* Show video controls on mobile *\/\r\n          .video-controls {\r\n              transform: translateY(0);\r\n              position: relative;\r\n              background: rgba(0, 0, 0, 0.8);\r\n              margin-top: 1rem;\r\n              border-radius: 12px;\r\n          }\r\n  \r\n          .video-player-wrapper:hover .video-controls {\r\n              transform: translateY(0);\r\n          }\r\n      }\r\n  \r\n      \/* Mobile Phones *\/\r\n      @media (max-width: 480px) {\r\n          .ttvv-custom-container {\r\n              padding: 0.8rem;\r\n          }\r\n  \r\n          .header {\r\n              margin-bottom: 1.5rem;\r\n          }\r\n  \r\n          .logo-icon {\r\n              width: 50px;\r\n              height: 50px;\r\n              font-size: 20px;\r\n          }\r\n  \r\n          .video-stats {\r\n              grid-template-columns: 1fr;\r\n              gap: 0.6rem;\r\n          }\r\n  \r\n          .stat-item {\r\n              min-height: 70px;\r\n              padding: 0.8rem;\r\n          }\r\n  \r\n          .stat-value {\r\n              font-size: 1.3rem;\r\n          }\r\n  \r\n          .audio-player-section {\r\n              gap: 0.8rem;\r\n          }\r\n  \r\n          .audio-icon {\r\n              width: 40px;\r\n              height: 40px;\r\n              font-size: 1rem;\r\n          }\r\n  \r\n          .audio-play-btn {\r\n              width: 44px;\r\n              height: 44px;\r\n              font-size: 1rem;\r\n          }\r\n  \r\n          .video-player-wrapper {\r\n              max-width: min(280px, 75vw);\r\n          }\r\n  \r\n          .thumbnail-play-btn {\r\n              width: 60px;\r\n              height: 60px;\r\n              font-size: 1.5rem;\r\n          }\r\n  \r\n          .download-progress {\r\n              left: 0.5rem;\r\n              right: 0.5rem;\r\n              bottom: 0.5rem;\r\n              padding: 1rem;\r\n          }\r\n  \r\n          .progress-header {\r\n              flex-direction: column;\r\n              gap: 0.5rem;\r\n              align-items: stretch;\r\n          }\r\n  \r\n          .cancel-btn {\r\n              align-self: center;\r\n              min-width: 80px;\r\n          }\r\n  \r\n          \/* Touch-friendly adjustments *\/\r\n          .input-field {\r\n              font-size: 16px !important; \/* Prevents zoom on iOS *\/\r\n          }\r\n  \r\n          .control-btn,\r\n          .audio-play-btn,\r\n          .audio-volume-btn,\r\n          .paste-btn,\r\n          .search-btn,\r\n          .download-btn,\r\n          .download-audio-btn {\r\n              min-height: 44px;\r\n              min-width: 44px;\r\n          }\r\n  \r\n          .progress-bar,\r\n          .audio-progress,\r\n          .volume-slider,\r\n          .audio-volume-slider {\r\n              min-height: 44px;\r\n          }\r\n      }\r\n  \r\n      \/* Small Mobile Phones *\/\r\n      @media (max-width: 360px) {\r\n          .ttvv-custom-container {\r\n              padding: 0.5rem;\r\n          }\r\n  \r\n          .search-section,\r\n          .video-section,\r\n          .download-section,\r\n          .audio-streaming {\r\n              padding: 1rem;\r\n              border-radius: 16px;\r\n          }\r\n  \r\n          .logo-text {\r\n              font-size: 1.5rem;\r\n              letter-spacing: -1px;\r\n          }\r\n  \r\n          .subtitle {\r\n              font-size: 0.8rem;\r\n          }\r\n  \r\n          .video-player-wrapper {\r\n              max-width: min(260px, 70vw);\r\n          }\r\n  \r\n          .audio-wave:nth-child(1) {\r\n              width: 45px;\r\n              height: 45px;\r\n          }\r\n  \r\n          .audio-wave:nth-child(2) {\r\n              width: 55px;\r\n              height: 55px;\r\n          }\r\n  \r\n          .audio-wave:nth-child(3) {\r\n              width: 65px;\r\n              height: 65px;\r\n          }\r\n      }\r\n  \r\n      \/* Landscape Mobile *\/\r\n      @media (max-height: 500px) and (orientation: landscape) {\r\n          .ttvv-custom-container {\r\n              padding: 1rem;\r\n          }\r\n  \r\n          .header {\r\n              margin-bottom: 1rem;\r\n          }\r\n  \r\n          .logo {\r\n              flex-direction: row;\r\n              gap: 1rem;\r\n          }\r\n  \r\n          .logo-icon {\r\n              width: 40px;\r\n              height: 40px;\r\n              font-size: 16px;\r\n          }\r\n  \r\n          .video-player-wrapper {\r\n              max-width: min(200px, 30vw);\r\n          }\r\n  \r\n          .video-stats {\r\n              grid-template-columns: repeat(5, 1fr);\r\n              gap: 0.5rem;\r\n          }\r\n  \r\n          .stat-item {\r\n              min-height: 60px;\r\n              padding: 0.5rem;\r\n          }\r\n  \r\n          .stat-value {\r\n              font-size: 1rem;\r\n          }\r\n  \r\n          .stat-label {\r\n              font-size: 0.6rem;\r\n          }\r\n      }\r\n  \r\n      \/* High DPI Displays *\/\r\n      @media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) {\r\n          .logo-icon,\r\n          .author-avatar,\r\n          .audio-icon,\r\n          .thumbnail-play-btn,\r\n          .audio-play-btn {\r\n              image-rendering: -webkit-optimize-contrast;\r\n              image-rendering: crisp-edges;\r\n          }\r\n      }\r\n  \r\n      \/* Reduced Motion *\/\r\n      @media (prefers-reduced-motion: reduce) {\r\n          *,\r\n          *::before,\r\n          *::after {\r\n              animation-duration: 0.01ms !important;\r\n              animation-iteration-count: 1 !important;\r\n              transition-duration: 0.01ms !important;\r\n          }\r\n  \r\n          .video-player-wrapper,\r\n          .search-section,\r\n          .video-section,\r\n          .download-section,\r\n          .audio-streaming {\r\n              animation: none !important;\r\n          }\r\n      }\r\n  \r\n      \/* High Contrast Mode *\/\r\n      @media (prefers-contrast: high) {\r\n          :root {\r\n              --glass-dark: rgba(0, 0, 0, 0.9);\r\n              --glass-purple: rgba(0, 0, 0, 0.9);\r\n              --glass-blue: rgba(0, 0, 0, 0.9);\r\n              --glass-border: rgba(255, 255, 255, 0.8);\r\n              --shadow: 0 4px 20px rgba(0, 0, 0, 0.8);\r\n              --shadow-lg: 0 8px 40px rgba(0, 0, 0, 0.9);\r\n              --shadow-xl: 0 16px 60px rgba(0, 0, 0, 1);\r\n          }\r\n  \r\n          .input-field,\r\n          .search-btn,\r\n          .download-btn,\r\n          .audio-play-btn {\r\n              border: 2px solid var(--text-light);\r\n          }\r\n      }\r\n  \r\n      \/* Dark Mode Support *\/\r\n      @media (prefers-color-scheme: dark) {\r\n          \/* Already using dark theme, but can add specific adjustments *\/\r\n          .ttvv-hero-tools-section {\r\n              background: linear-gradient(135deg, \r\n                  #000000 0%, \r\n                  var(--bg-primary) 25%, \r\n                  var(--bg-secondary) 50%, \r\n                  var(--card-purple) 75%, \r\n                  var(--card-blue) 100%);\r\n          }\r\n      }\r\n  \r\n      \/* Print Styles *\/\r\n      @media print {\r\n          .ttvv-hero-tools-section {\r\n              background: white !important;\r\n              color: black !important;\r\n          }\r\n  \r\n          .ttvv-custom-container {\r\n              max-width: none;\r\n              padding: 0;\r\n          }\r\n  \r\n          .video-player-wrapper,\r\n          .download-section,\r\n          .audio-streaming,\r\n          .download-progress {\r\n              display: none !important;\r\n          }\r\n  \r\n          .search-section,\r\n          .video-section {\r\n              background: white !important;\r\n              border: 1px solid black !important;\r\n              box-shadow: none !important;\r\n          }\r\n      }\r\n  <\/style>\r\n <body data-aos-easing=\"ease-in-out\" data-aos-duration=\"800\" data-aos-delay=\"0\" data-new-gr-c-s-check-loaded=\"14.1249.0\" data-gr-ext-installed=\"\" data-new-gr-c-s-loaded=\"14.1223.0\" class=\"\" style=\"\">\r\n  \r\n      <!-- hero section -->\r\n      <section class=\"ttvv-hero-tools-section\">\r\n          <div class=\"container\">\r\n              <div class=\"ttvv-custom-container\">\r\n                  <!-- Header -->\r\n                  <div class=\"header\">\r\n                      <div class=\"logo\">\r\n                          <div class=\"logo-icon\">\r\n                              <i class=\"fab fa-tiktok\"><\/i>\r\n                          <\/div>\r\n                          <h1 class=\"logo-text\"><span class=\"logo-purple\">TikTok<\/span> Link Viewer<\/h1>\r\n                      <\/div>\r\n                      <p class=\"subtitle\">Stream & Download TikTok Videos in Ultra Premium Quality<\/p>\r\n                  <\/div>\r\n              \r\n                  <!-- Search Section -->\r\n                  <div class=\"search-section\">\r\n                      <div class=\"input-group\">\r\n                          <input type=\"text\" class=\"input-field\" id=\"videoInput\" placeholder=\"Enter TikTok video URL or video ID\">\r\n                          <div class=\"input-actions\">\r\n                              <span>Supports URLs and video IDs<\/span>\r\n                              <button class=\"paste-btn\" onclick=\"pasteFromClipboard()\">\r\n                                  <i class=\"fas fa-paste\"><\/i> Paste\r\n                              <\/button>\r\n                          <\/div>\r\n                      <\/div>\r\n                      \r\n                      <div class=\"action-buttons\">\r\n                          <button class=\"search-btn\" onclick=\"loadVideo()\" id=\"loadBtn\">\r\n                              <i class=\"fas fa-play-circle\"><\/i>\r\n                              <span id=\"loadText\">Load Video<\/span>\r\n                          <\/button>\r\n                          <button class=\"search-another-btn\" onclick=\"searchAnother()\" id=\"searchAnotherBtn\" style=\"display: none;\">\r\n                              <i class=\"fas fa-search\"><\/i> Search Another\r\n                          <\/button>\r\n                      <\/div>\r\n              \r\n                      <div class=\"error-message\" id=\"errorMessage\">\r\n                          <i class=\"fas fa-exclamation-triangle\"><\/i>\r\n                          <span id=\"errorText\"><\/span>\r\n                      <\/div>\r\n                  <\/div>\r\n              \r\n                  <!-- Loading Animation -->\r\n                  <div class=\"loading\" id=\"loading\">\r\n                      <div class=\"loading-spinner\">\r\n                          <div class=\"spinner-ring\"><\/div>\r\n                          <div class=\"spinner-ring\"><\/div>\r\n                          <div class=\"spinner-ring\"><\/div>\r\n                      <\/div>\r\n                      <div class=\"loading-text\">Loading TikTok Video<\/div>\r\n                      <div class=\"loading-subtext\">Fetching video details and preparing premium stream...<\/div>\r\n                  <\/div>\r\n              \r\n                  <!-- Main Video Section -->\r\n                  <div class=\"video-section\" id=\"videoSection\">\r\n                      <!-- Full Width Title -->\r\n                      <h2 class=\"video-title\" id=\"videoTitle\"><\/h2>\r\n              \r\n                      <!-- Author Info -->\r\n                      <div class=\"author-section\" id=\"authorSection\">\r\n                          <img decoding=\"async\" class=\"author-avatar\" id=\"authorAvatar\" src=\"\/placeholder.svg\" alt=\"Author\">\r\n                          <div class=\"author-details\">\r\n                              <h3 id=\"authorName\"><\/h3>\r\n                              <p class=\"author-username\" id=\"authorUsername\"><\/p>\r\n                          <\/div>\r\n                      <\/div>\r\n              \r\n                      <!-- Stats Grid -->\r\n                      <div class=\"video-stats\" id=\"videoStats\"><\/div>\r\n              \r\n                      <!-- Video Streaming Area -->\r\n                      <div class=\"video-streaming-area\">\r\n                          <div class=\"streaming-header\">\r\n                              <h3 class=\"streaming-title\">\ud83c\udfac Video Streaming<\/h3>\r\n                              <p class=\"streaming-subtitle\">High Quality Video Player with Premium Controls<\/p>\r\n                          <\/div>\r\n              \r\n                          <div class=\"video-player-wrapper\">\r\n                              <!-- Video Thumbnail -->\r\n                              <img decoding=\"async\" class=\"video-thumbnail\" id=\"videoThumbnail\" src=\"\/placeholder.svg\" alt=\"Video Thumbnail\">\r\n                              <div class=\"thumbnail-overlay\" onclick=\"startVideoPlayback()\">\r\n                                  <button class=\"thumbnail-play-btn\">\r\n                                      <i class=\"fas fa-play\"><\/i>\r\n                                  <\/button>\r\n                              <\/div>\r\n              \r\n                              <!-- Video Player -->\r\n                              <video class=\"video-player\" id=\"videoPlayer\" loop=\"\" preload=\"metadata\">\r\n                                  Your browser doesn't support video playback.\r\n                              <\/video>\r\n                              \r\n                              <div class=\"video-controls\" id=\"videoControls\">\r\n                                  <div class=\"progress-bar\" onclick=\"seekVideo(event)\">\r\n                                      <div class=\"progress-fill\" id=\"progressFill\"><\/div>\r\n                                  <\/div>\r\n                                  \r\n                                  <!-- Video Time Display -->\r\n                                  <div class=\"video-time\">\r\n                                      <span id=\"videoCurrentTime\">0:00<\/span>\r\n                                      <span id=\"videoDuration\">0:00<\/span>\r\n                                  <\/div>\r\n                                  \r\n                                  <div class=\"control-buttons\">\r\n                                      <div class=\"control-group volume-control\">\r\n                                          <button class=\"control-btn\" onclick=\"toggleMute()\" id=\"muteBtn\">\r\n                                              <i class=\"fas fa-volume-up\"><\/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                                      <button class=\"control-btn play-btn\" onclick=\"togglePlay()\" id=\"playBtn\">\r\n                                          <i class=\"fas fa-play\"><\/i>\r\n                                      <\/button>\r\n              \r\n                                      <div class=\"control-group\">\r\n                                          <button class=\"control-btn\" onclick=\"toggleFullscreen()\" id=\"fullscreenBtn\">\r\n                                              <i class=\"fas fa-expand\"><\/i>\r\n                                          <\/button>\r\n                                      <\/div>\r\n                                  <\/div>\r\n                              <\/div>\r\n                          <\/div>\r\n                      <\/div>\r\n              \r\n                      <!-- Download Section -->\r\n                      <div class=\"download-section\">\r\n                          <div class=\"download-header\">\r\n                              <h3 class=\"download-title\">\r\n                                  <i class=\"fas fa-download\"><\/i>\r\n                                  Download Options\r\n                              <\/h3>\r\n                              <p class=\"download-subtitle\">Choose your preferred quality and format<\/p>\r\n                          <\/div>\r\n                          \r\n                          <div class=\"download-grid\">\r\n                              <button class=\"download-btn\" onclick=\"downloadVideo('standard')\" id=\"downloadStandard\">\r\n                                  <i class=\"fas fa-download\"><\/i>\r\n                                  <span>Standard Quality<\/span>\r\n                              <\/button>\r\n                              <button class=\"download-btn hd\" onclick=\"downloadVideo('hd')\" id=\"downloadHD\">\r\n                                  <i class=\"fas fa-hd-video\"><\/i>\r\n                                  <span>HD Quality<\/span>\r\n                              <\/button>\r\n                          <\/div>\r\n                      <\/div>\r\n              \r\n                      <!-- Audio Streaming Section -->\r\n                      <div class=\"audio-streaming\" id=\"audioStreaming\" style=\"display: none;\">\r\n                          <div class=\"audio-header\">\r\n                              <h3 class=\"audio-main-title\">\r\n                                  <i class=\"fas fa-music\"><\/i>\r\n                                  Audio Streaming\r\n                              <\/h3>\r\n                              <p class=\"audio-subtitle\">High Quality Audio Player with Advanced Controls<\/p>\r\n                          <\/div>\r\n                          \r\n                          <div class=\"audio-player-section\">\r\n                              <div class=\"audio-icon-wrapper\">\r\n                                  <div class=\"audio-wave\"><\/div>\r\n                                  <div class=\"audio-wave\"><\/div>\r\n                                  <div class=\"audio-wave\"><\/div>\r\n                                  <div class=\"audio-icon\">\r\n                                      <i class=\"fas fa-music\"><\/i>\r\n                                  <\/div>\r\n                              <\/div>\r\n                              \r\n                              <div class=\"audio-info\">\r\n                                  <div class=\"audio-title\" id=\"audioTitle\">Audio Track<\/div>\r\n                                  <div class=\"audio-artist\" id=\"audioArtist\">TikTok Audio<\/div>\r\n                              <\/div>\r\n                          <\/div>\r\n              \r\n                          <!-- Audio Progress Bar -->\r\n                          <div class=\"audio-progress-container\">\r\n                              <div class=\"audio-progress\" onclick=\"seekAudio(event)\">\r\n                                  <div class=\"audio-progress-fill\" id=\"audioProgressFill\"><\/div>\r\n                              <\/div>\r\n                              <div class=\"audio-time\">\r\n                                  <span id=\"audioCurrentTime\">0:00<\/span>\r\n                                  <span id=\"audioDuration\">0:00<\/span>\r\n                              <\/div>\r\n                          <\/div>\r\n                          \r\n                          <!-- Audio Controls -->\r\n                          <div class=\"audio-controls\">\r\n                              <button class=\"audio-play-btn\" onclick=\"toggleAudioPlay()\" id=\"audioPlayBtn\">\r\n                                  <i class=\"fas fa-play\"><\/i>\r\n                              <\/button>\r\n              \r\n                              <!-- Audio Volume Control -->\r\n                              <div class=\"audio-volume-control\">\r\n                                  <button class=\"audio-volume-btn\" onclick=\"toggleAudioMute()\" id=\"audioMuteBtn\">\r\n                                      <i class=\"fas fa-volume-up\"><\/i>\r\n                                  <\/button>\r\n                                  <div class=\"audio-volume-slider\" onclick=\"setAudioVolume(event)\">\r\n                                      <div class=\"audio-volume-fill\" id=\"audioVolumeFill\" style=\"width: 100%;\"><\/div>\r\n                                  <\/div>\r\n                              <\/div>\r\n                          <\/div>\r\n                          \r\n                          <div class=\"download-audio-section\">\r\n                              <button class=\"download-audio-btn\" onclick=\"downloadVideo('audio')\" id=\"downloadAudio\">\r\n                                  <i class=\"fas fa-download\"><\/i>\r\n                                  <span>Download Audio<\/span>\r\n                              <\/button>\r\n                          <\/div>\r\n                          \r\n                          <audio id=\"audioElement\" loop=\"\"><\/audio>\r\n                      <\/div>\r\n                  <\/div>\r\n              <\/div>\r\n              \r\n              <!-- Download Progress -->\r\n              <div class=\"download-progress\" id=\"downloadProgress\">\r\n                  <div class=\"progress-header\">\r\n                      <span class=\"progress-text\" id=\"progressText\">Downloading...<\/span>\r\n                      <button class=\"cancel-btn\" onclick=\"cancelDownload()\">Cancel<\/button>\r\n                  <\/div>\r\n                  <div class=\"progress-bar-container\">\r\n                      <div class=\"progress-bar-fill\" id=\"progressBarFill\"><\/div>\r\n                  <\/div>\r\n              <\/div>\r\n          <\/div>\r\n      <\/section>\r\n   \r\n  <!-- Work Process Section -->\r\n  <section class=\"ttvv-work-process-section\" id=\"how-it-works\">\r\n      <div class=\"container ttvv-work-process-content\">\r\n          <div class=\"text-center mb-5\" data-aos=\"fade-up\">\r\n              <h2 class=\"ttvv-section-title ttvv-light-title\">How Our TikTok Link Viewer Works<\/h2>\r\n              <p class=\"ttvv-section-subtitle ttvv-light-subtitle\">View TikTok content anonymously in just 3 simple steps<\/p>\r\n          <\/div>\r\n          \r\n          <div class=\"row\">\r\n              <div class=\"col-md-4\" data-aos=\"fade-up\" data-aos-delay=\"50\">\r\n                  <div class=\"ttvv-process-step\">\r\n                      <div class=\"ttvv-step-number\">1<\/div>\r\n                      <h4 class=\"text-white\">Enter Link URL<\/h4>\r\n                      <p class=\"ttvv-light-subtitle\">Paste the TikTok link you want to view anonymously<\/p>\r\n                  <\/div>\r\n              <\/div>\r\n              \r\n              <div class=\"col-md-4\" data-aos=\"fade-up\" data-aos-delay=\"150\">\r\n                  <div class=\"ttvv-process-step\">\r\n                      <div class=\"ttvv-step-number\">2<\/div>\r\n                      <h4 class=\"text-white\">Process Request<\/h4>\r\n                      <p class=\"ttvv-light-subtitle\">Our system retrieves the content without revealing your identity<\/p>\r\n                  <\/div>\r\n              <\/div>\r\n              \r\n              <div class=\"col-md-4\" data-aos=\"fade-up\" data-aos-delay=\"250\">\r\n                  <div class=\"ttvv-process-step\">\r\n                      <div class=\"ttvv-step-number\">3<\/div>\r\n                      <h4 class=\"text-white\">View Content<\/h4>\r\n                      <p class=\"ttvv-light-subtitle\">Access the linked content without leaving any trace<\/p>\r\n                  <\/div>\r\n              <\/div>\r\n          <\/div>\r\n      <\/div>\r\n  <\/section>\r\n  \r\n  <!-- Features Section -->\r\n  <section class=\"ttvv-features-section\">\r\n      <div class=\"container\">\r\n          <div class=\"text-center mb-5\" data-aos=\"fade-up\">\r\n              <h2 class=\"ttvv-section-title\">Key Features<\/h2>\r\n              <p class=\"ttvv-section-subtitle\">Our TikTok Link Viewer offers powerful features for anonymous browsing<\/p>\r\n          <\/div>\r\n          \r\n          <div class=\"row\">\r\n              <div class=\"col-lg-4 mb-4\" data-aos=\"fade-up\" data-aos-delay=\"50\">\r\n                  <div class=\"ttvv-feature-card\">\r\n                      <div class=\"ttvv-feature-icon\">\r\n                          <i class=\"bx bx-user-check\"><\/i>\r\n                      <\/div>\r\n                      <h4>100% Anonymous<\/h4>\r\n                      <p>View linked content without leaving any trace or alerting the owner<\/p>\r\n                  <\/div>\r\n              <\/div>\r\n              \r\n              <div class=\"col-lg-4 mb-4\" data-aos=\"fade-up\" data-aos-delay=\"150\">\r\n                  <div class=\"ttvv-feature-card\">\r\n                      <div class=\"ttvv-feature-icon\">\r\n                          <i class=\"bx bx-link\"><\/i>\r\n                      <\/div>\r\n                      <h4>View Any Link<\/h4>\r\n                      <p>Access all public TikTok content with complete details and statistics<\/p>\r\n                  <\/div>\r\n              <\/div>\r\n              \r\n              <div class=\"col-lg-4 mb-4\" data-aos=\"fade-up\" data-aos-delay=\"250\">\r\n                  <div class=\"ttvv-feature-card\">\r\n                      <div class=\"ttvv-feature-icon\">\r\n                          <i class=\"bx bx-line-chart\"><\/i>\r\n                      <\/div>\r\n                      <h4>Content Analytics<\/h4>\r\n                      <p>Get detailed statistics about views, likes, comments, and engagement<\/p>\r\n                  <\/div>\r\n              <\/div>\r\n              \r\n              <div class=\"col-lg-4 mb-5\" data-aos=\"fade-up\" data-aos-delay=\"50\">\r\n                  <div class=\"ttvv-feature-card\">\r\n                      <div class=\"ttvv-feature-icon\">\r\n                          <i class=\"bx bx-devices\"><\/i>\r\n                      <\/div>\r\n                      <h4>Works on All Devices<\/h4>\r\n                      <p>Use our viewer on desktop, tablet, or mobile without issues<\/p>\r\n                  <\/div>\r\n              <\/div>\r\n              \r\n              <div class=\"col-lg-4 mb-5\" data-aos=\"fade-up\" data-aos-delay=\"150\">\r\n                  <div class=\"ttvv-feature-card\">\r\n                      <div class=\"ttvv-feature-icon\">\r\n                          <i class=\"bx bx-shield\"><\/i>\r\n                      <\/div>\r\n                      <h4>No Login Required<\/h4>\r\n                      <p>Access any public TikTok link without an account<\/p>\r\n                  <\/div>\r\n              <\/div>\r\n              \r\n              <div class=\"col-lg-4 mb-5\" data-aos=\"fade-up\" data-aos-delay=\"250\">\r\n                  <div class=\"ttvv-feature-card\">\r\n                      <div class=\"ttvv-feature-icon\">\r\n                          <i class=\"bx bx-time-five\"><\/i>\r\n                      <\/div>\r\n                      <h4>Instant Processing<\/h4>\r\n                      <p>Get access to linked content immediately without waiting<\/p>\r\n                  <\/div>\r\n              <\/div>\r\n          <\/div>\r\n      <\/div>\r\n  <\/section>\r\n  \r\n  <!-- Why Choose Section -->\r\n  <section class=\"ttvv-why-choose-section\">\r\n      <div class=\"container\">\r\n          <div class=\"row align-items-center\">\r\n              <div class=\"col-lg-6 mb-5 mb-lg-0\" data-aos=\"fade-right\">\r\n                  <div class=\"ttvv-why-choose-image ttvv-floating-element\">\r\n                      <img decoding=\"async\" src=\"https:\/\/viewanonymous.com\/wp-content\/uploads\/2026\/03\/Tiktok_Link_Viewer.webp\" alt=\"TikTok Link Viewer\" class=\"img-fluid rounded-3\">\r\n                  <\/div>\r\n              <\/div>\r\n              <div class=\"col-lg-6\" data-aos=\"fade-left\">\r\n                  <h2 class=\"ttvv-section-title mb-4\">Why Choose Our TikTok Link Viewer?<\/h2>\r\n                  <p class=\"mb-4\">Our tool provides a reliable and secure way to view TikTok content anonymously via links, prioritizing your privacy with comprehensive access to public content.<\/p>\r\n                  \r\n                  <div class=\"ttvv-benefit-item\">\r\n                      <div class=\"ttvv-benefit-icon\">\r\n                          <i class=\"bx bx-check\"><\/i>\r\n                      <\/div>\r\n                      <div>\r\n                          <h5 class=\"mb-1\">Completely undetectable<\/h5>\r\n                          <p class=\"mb-0\">No traces left when viewing linked content<\/p>\r\n                      <\/div>\r\n                  <\/div>\r\n                  \r\n                  <div class=\"ttvv-benefit-item\">\r\n                      <div class=\"ttvv-benefit-icon\">\r\n                          <i class=\"bx bx-check\"><\/i>\r\n                      <\/div>\r\n                      <div>\r\n                          <h5 class=\"mb-1\">No registration needed<\/h5>\r\n                          <p class=\"mb-0\">Start viewing linked content immediately<\/p>\r\n                      <\/div>\r\n                  <\/div>\r\n                  \r\n                  <div class=\"ttvv-benefit-item\">\r\n                      <div class=\"ttvv-benefit-icon\">\r\n                          <i class=\"bx bx-check\"><\/i>\r\n                      <\/div>\r\n                      <div>\r\n                          <h5 class=\"mb-1\">Detailed analytics<\/h5>\r\n                          <p class=\"mb-0\">Get insights into linked content performance<\/p>\r\n                      <\/div>\r\n                  <\/div>\r\n                  \r\n                  <div class=\"ttvv-benefit-item\">\r\n                      <div class=\"ttvv-benefit-icon\">\r\n                          <i class=\"bx bx-check\"><\/i>\r\n                      <\/div>\r\n                      <div>\r\n                          <h5 class=\"mb-1\">Fast processing<\/h5>\r\n                          <p class=\"mb-0\">Get instant access to any public linked content<\/p>\r\n                      <\/div>\r\n                  <\/div>\r\n              <\/div>\r\n          <\/div>\r\n      <\/div>\r\n  <\/section>\r\n  \r\n  <!-- FAQ Section -->\r\n  <section class=\"ttvv-faq-section\">\r\n      <div class=\"container\">\r\n          <div class=\"text-center mb-5\" data-aos=\"fade-up\">\r\n              <h2 class=\"ttvv-section-title\">Frequently Asked Questions<\/h2>\r\n              <p class=\"ttvv-section-subtitle\">Find answers to common questions about our TikTok Link Viewer<\/p>\r\n          <\/div>\r\n          \r\n          <div class=\"row justify-content-center\">\r\n              <div class=\"col-lg-8\">\r\n                  <div class=\"accordion\" id=\"ttvv-faqAccordion\">\r\n                      <div class=\"ttvv-accordion-item mb-3\" data-aos=\"fade-up\" data-aos-delay=\"50\">\r\n                          <h3 class=\"accordion-header\" id=\"ttvv-heading1\">\r\n                              <button class=\"ttvv-accordion-button\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#ttvv-collapse1\" aria-expanded=\"true\" aria-controls=\"ttvv-collapse1\">\r\n                                  Is it legal to use this TikTok Link Viewer?\r\n                              <\/button>\r\n                          <\/h3>\r\n                          <div id=\"ttvv-collapse1\" class=\"accordion-collapse collapse show\" aria-labelledby=\"ttvv-heading1\" data-bs-parent=\"#ttvv-faqAccordion\">\r\n                              <div class=\"ttvv-accordion-body\">\r\n                                  Yes, our tool is completely legal to use. It only allows you to view publicly available TikTok content via links. We don't access private accounts or bypass any security measures - we simply display content that is already publicly accessible on TikTok.\r\n                              <\/div>\r\n                          <\/div>\r\n                      <\/div>\r\n                      \r\n                      <div class=\"ttvv-accordion-item mb-3\" data-aos=\"fade-up\" data-aos-delay=\"100\">\r\n                          <h3 class=\"accordion-header\" id=\"ttvv-heading2\">\r\n                              <button class=\"ttvv-accordion-button collapsed\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#ttvv-collapse2\" aria-expanded=\"false\" aria-controls=\"ttvv-collapse2\">\r\n                                  Can I view private TikTok content with this tool?\r\n                              <\/button>\r\n                          <\/h3>\r\n                          <div id=\"ttvv-collapse2\" class=\"accordion-collapse collapse\" aria-labelledby=\"ttvv-heading2\" data-bs-parent=\"#ttvv-faqAccordion\">\r\n                              <div class=\"ttvv-accordion-body\">\r\n                                  No, our TikTok Link Viewer respects TikTok's privacy settings. We can only display content from links that are set to public. Private content cannot be accessed.\r\n                              <\/div>\r\n                          <\/div>\r\n                      <\/div>\r\n                      \r\n                      <div class=\"ttvv-accordion-item mb-3\" data-aos=\"fade-up\" data-aos-delay=\"150\">\r\n                          <h3 class=\"accordion-header\" id=\"ttvv-heading3\">\r\n                              <button class=\"ttvv-accordion-button collapsed\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#ttvv-collapse3\" aria-expanded=\"false\" aria-controls=\"ttvv-collapse3\">\r\n                                  Will TikTok know I viewed the linked content?\r\n                              <\/button>\r\n                          <\/h3>\r\n                          <div id=\"ttvv-collapse3\" class=\"accordion-collapse collapse\" aria-labelledby=\"ttvv-heading3\" data-bs-parent=\"#ttvv-faqAccordion\">\r\n                              <div class=\"ttvv-accordion-body\">\r\n                                  No, all viewing is completely anonymous. When you use our TikTok Link Viewer, TikTok doesn't register that you've viewed the content. The content owner won't know you accessed it.\r\n                              <\/div>\r\n                          <\/div>\r\n                      <\/div>\r\n                      \r\n                      <div class=\"ttvv-accordion-item mb-3\" data-aos=\"fade-up\" data-aos-delay=\"200\">\r\n                          <h3 class=\"accordion-header\" id=\"ttvv-heading4\">\r\n                              <button class=\"ttvv-accordion-button collapsed\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#ttvv-collapse4\" aria-expanded=\"false\" aria-controls=\"ttvv-collapse4\">\r\n                                  Do I need to install software to use this?\r\n                              <\/button>\r\n                          <\/h3>\r\n                          <div id=\"ttvv-collapse4\" class=\"accordion-collapse collapse\" aria-labelledby=\"ttvv-heading4\" data-bs-parent=\"#ttvv-faqAccordion\">\r\n                              <div class=\"ttvv-accordion-body\">\r\n                                  No, our TikTok Link Viewer is completely web-based. You don't need to download or install any software. Simply visit our website, enter the link URL, and view the content directly in your browser.\r\n                              <\/div>\r\n                          <\/div>\r\n                      <\/div>\r\n                      \r\n                      <div class=\"ttvv-accordion-item mb-3\" data-aos=\"fade-up\" data-aos-delay=\"250\">\r\n                          <h3 class=\"accordion-header\" id=\"ttvv-heading5\">\r\n                              <button class=\"ttvv-accordion-button collapsed\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#ttvv-collapse5\" aria-expanded=\"false\" aria-controls=\"ttvv-collapse5\">\r\n                                  What information can I see about the linked content?\r\n                              <\/button>\r\n                          <\/h3>\r\n                          <div id=\"ttvv-collapse5\" class=\"accordion-collapse collapse\" aria-labelledby=\"ttvv-heading5\" data-bs-parent=\"#ttvv-faqAccordion\">\r\n                              <div class=\"ttvv-accordion-body\">\r\n                                  Our TikTok Link Viewer shows all publicly available information, including content details, view count, like count, comments, and other statistics. Private information is not accessible.\r\n                              <\/div>\r\n                          <\/div>\r\n                      <\/div>\r\n                  <\/div>\r\n              <\/div>\r\n          <\/div>\r\n      <\/div>\r\n  <\/section>    \r\n    \r\n    <!-- Footer -->\r\n    \r\n  \r\n  <!-- Copyright Section -->\r\n  \r\n  \r\n  \r\n  \r\n   <!-- Tiktak video viewer js -->\r\n    <script src=\"https:\/\/tools.xrespond.com\/api\/rate-limit-handler.js\"><\/script>\r\n    <script src=\"https:\/\/tools.xrespond.com\/api\/js\/client-ip-detector.js\"><\/script>\r\n   <script>\r\n      const API_URL = 'https:\/\/tools.xrespond.com\/api\/tiktok\/profile\/videos\/details';\r\n      let currentVideoData = null;\r\n      let isLoading = false;\r\n      let isDownloading = false;\r\n      let downloadController = null;\r\n      let currentVolume = 1;\r\n      let isMuted = false;\r\n      let isFullscreen = false;\r\n      let audioPlaying = false;\r\n      let videoStarted = false;\r\n      let audioCurrentVolume = 1;\r\n      let audioIsMuted = false;\r\n      \r\n      \/\/ Mobile detection\r\n      const isMobile = \/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini\/i.test(navigator.userAgent);\r\n      const isTouch = 'ontouchstart' in window || navigator.maxTouchPoints > 0;\r\n      \r\n      \/\/ Utility Functions\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      function formatDuration(seconds) {\r\n          const mins = Math.floor(seconds \/ 60);\r\n          const secs = Math.floor(seconds % 60);\r\n          return `${mins}:${secs.toString().padStart(2, '0')}`;\r\n      }\r\n      \r\n      function formatFileSize(bytes) {\r\n          if (bytes >= 1024 * 1024) {\r\n              return (bytes \/ (1024 * 1024)).toFixed(1) + ' MB';\r\n          }\r\n          if (bytes >= 1024) {\r\n              return (bytes \/ 1024).toFixed(1) + ' KB';\r\n          }\r\n          return bytes + ' B';\r\n      }\r\n      \r\n      \/\/ Mobile-specific functions\r\n      function showVideoControlsOnMobile() {\r\n          if (isMobile || isTouch) {\r\n              const videoControls = document.getElementById('videoControls');\r\n              if (videoControls) {\r\n                  videoControls.classList.add('show');\r\n                  \/\/ Hide after 3 seconds of inactivity\r\n                  setTimeout(() => {\r\n                      if (!videoControls.matches(':hover')) {\r\n                          videoControls.classList.remove('show');\r\n                      }\r\n                  }, 3000);\r\n              }\r\n          }\r\n      }\r\n      \r\n      function handleTouchEvents() {\r\n          if (isMobile || isTouch) {\r\n              \/\/ Add touch event listeners for better mobile interaction\r\n              document.addEventListener('touchstart', function(e) {\r\n                  \/\/ Handle touch start\r\n              }, { passive: true });\r\n      \r\n              document.addEventListener('touchend', function(e) {\r\n                  \/\/ Handle touch end\r\n              }, { passive: true });\r\n      \r\n              \/\/ Prevent zoom on double tap for video controls\r\n              let lastTouchEnd = 0;\r\n              document.addEventListener('touchend', function(e) {\r\n                  const now = (new Date()).getTime();\r\n                  if (now - lastTouchEnd <= 300) {\r\n                      e.preventDefault();\r\n                  }\r\n                  lastTouchEnd = now;\r\n              }, false);\r\n          }\r\n      }\r\n      \r\n      \/\/ UI Functions\r\n      function showLoading() {\r\n          document.getElementById('loading').style.display = 'block';\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.classList.add('show');\r\n          \r\n          \/\/ Auto-hide error after 5 seconds on mobile\r\n          if (isMobile) {\r\n              setTimeout(() => {\r\n                  hideError();\r\n              }, 5000);\r\n          }\r\n      }\r\n      \r\n      function hideError() {\r\n          document.getElementById('errorMessage').classList.remove('show');\r\n      }\r\n      \r\n      function showDownloadProgress(text, progress = 0) {\r\n          const progressDiv = document.getElementById('downloadProgress');\r\n          const progressText = document.getElementById('progressText');\r\n          const progressFill = document.getElementById('progressBarFill');\r\n          \r\n          progressText.textContent = text;\r\n          progressFill.style.width = `${progress}%`;\r\n          progressDiv.classList.add('show');\r\n      }\r\n      \r\n      function hideDownloadProgress() {\r\n          document.getElementById('downloadProgress').classList.remove('show');\r\n      }\r\n      \r\n      \/\/ Main Functions\r\n      async function pasteFromClipboard() {\r\n          try {\r\n              const text = await navigator.clipboard.readText();\r\n              document.getElementById('videoInput').value = text;\r\n          } catch (err) {\r\n              console.error('Failed to read clipboard:', err);\r\n              \/\/ On mobile, focus the input to show keyboard\r\n              const input = document.getElementById('videoInput');\r\n              input.focus();\r\n              if (isMobile) {\r\n                  input.select();\r\n              }\r\n          }\r\n      }\r\n      \r\n      function searchAnother() {\r\n          document.getElementById('videoInput').value = '';\r\n          document.getElementById('videoSection').style.display = 'none';\r\n          document.getElementById('searchAnotherBtn').style.display = 'none';\r\n          document.getElementById('audioStreaming').style.display = 'none';\r\n          currentVideoData = null;\r\n          videoStarted = false;\r\n          hideError();\r\n          \r\n          \/\/ Reset players\r\n          const videoPlayer = document.getElementById('videoPlayer');\r\n          const audioElement = document.getElementById('audioElement');\r\n          const videoThumbnail = document.getElementById('videoThumbnail');\r\n          const thumbnailOverlay = document.querySelector('.thumbnail-overlay');\r\n          \r\n          videoPlayer.src = '';\r\n          videoPlayer.pause();\r\n          videoPlayer.classList.remove('playing');\r\n          audioElement.src = '';\r\n          audioElement.pause();\r\n          audioPlaying = false;\r\n          document.getElementById('audioPlayBtn').innerHTML = '<i class=\"fas fa-play\"><\/i>';\r\n          \r\n          \/\/ Show thumbnail again\r\n          videoThumbnail.style.display = 'block';\r\n          thumbnailOverlay.style.display = 'flex';\r\n          \r\n          \/\/ Scroll to top on mobile\r\n          if (isMobile) {\r\n              window.scrollTo({ top: 0, behavior: 'smooth' });\r\n          }\r\n          \r\n          document.getElementById('videoInput').focus();\r\n      }\r\n      \r\n      async function loadVideo() {\r\n          if (isLoading) return;\r\n          \r\n          const input = document.getElementById('videoInput').value.trim();\r\n          if (!input) {\r\n              showError('Please enter a TikTok video URL or ID');\r\n              return;\r\n          }\r\n      \r\n          isLoading = true;\r\n          const loadBtn = document.getElementById('loadBtn');\r\n          const loadText = document.getElementById('loadText');\r\n          \r\n          loadBtn.disabled = true;\r\n          loadText.textContent = 'Loading...';\r\n          showLoading();\r\n          hideError();\r\n      \r\n          try {\r\n              const response = await fetch(API_URL, {\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({ url: input })\r\n              });\r\n      \r\n              const data = await response.json();\r\n      \r\n              if (data.status !== 'success') {\r\n                  throw new Error(data.message || 'Failed to load video');\r\n              }\r\n      \r\n              currentVideoData = data.data.data;\r\n              displayVideo(currentVideoData);\r\n              \r\n              document.getElementById('videoSection').style.display = 'block';\r\n              document.getElementById('searchAnotherBtn').style.display = 'block';\r\n              document.getElementById('videoInput').value = '';\r\n      \r\n              \/\/ Scroll to video section on mobile\r\n              if (isMobile) {\r\n                  setTimeout(() => {\r\n                      document.getElementById('videoSection').scrollIntoView({ \r\n                          behavior: 'smooth', \r\n                          block: 'start' \r\n                      });\r\n                  }, 500);\r\n              }\r\n      \r\n          } catch (error) {\r\n              showError(error.message || 'Error loading video. Please try again.');\r\n              console.error('Load video error:', error);\r\n          } finally {\r\n              isLoading = false;\r\n              loadBtn.disabled = false;\r\n              loadText.textContent = 'Load Video';\r\n              hideLoading();\r\n          }\r\n      }\r\n      \r\n      function displayVideo(data) {\r\n          \/\/ Set video title\r\n          document.getElementById('videoTitle').textContent = data.title;\r\n      \r\n          \/\/ Set video stats in horizontal grid - REMOVED SIZE STAT\r\n          const statsContainer = document.getElementById('videoStats');\r\n          statsContainer.innerHTML = `\r\n              <div class=\"stat-item views\">\r\n                  <span class=\"stat-value\">${formatNumber(data.play_count)}<\/span>\r\n                  <span class=\"stat-label\">Views<\/span>\r\n              <\/div>\r\n              <div class=\"stat-item likes\">\r\n                  <span class=\"stat-value\">${formatNumber(data.digg_count)}<\/span>\r\n                  <span class=\"stat-label\">Likes<\/span>\r\n              <\/div>\r\n              <div class=\"stat-item comments\">\r\n                  <span class=\"stat-value\">${formatNumber(data.comment_count)}<\/span>\r\n                  <span class=\"stat-label\">Comments<\/span>\r\n              <\/div>\r\n              <div class=\"stat-item shares\">\r\n                  <span class=\"stat-value\">${formatNumber(data.share_count)}<\/span>\r\n                  <span class=\"stat-label\">Shares<\/span>\r\n              <\/div>\r\n              <div class=\"stat-item duration\">\r\n                  <span class=\"stat-value\">${formatDuration(data.duration)}<\/span>\r\n                  <span class=\"stat-label\">Duration<\/span>\r\n              <\/div>\r\n          `;\r\n      \r\n          \/\/ Set author info\r\n          document.getElementById('authorAvatar').src = data.author.avatar;\r\n          document.getElementById('authorName').textContent = data.author.nickname;\r\n          document.getElementById('authorUsername').textContent = `@${data.author.unique_id}`;\r\n      \r\n          \/\/ Set video thumbnail\r\n          const videoThumbnail = document.getElementById('videoThumbnail');\r\n          videoThumbnail.src = data.cover || data.dynamic_cover || '\/placeholder.svg?height=600&width=400';\r\n      \r\n          \/\/ Set video player\r\n          const videoPlayer = document.getElementById('videoPlayer');\r\n          videoPlayer.src = data.play;\r\n          videoPlayer.addEventListener('loadedmetadata', () => {\r\n              videoPlayer.volume = currentVolume;\r\n              videoPlayer.muted = isMuted;\r\n              updateVolumeDisplay();\r\n              \/\/ Set video duration\r\n              document.getElementById('videoDuration').textContent = formatDuration(videoPlayer.duration);\r\n          });\r\n          videoPlayer.addEventListener('timeupdate', updateVideoProgress);\r\n      \r\n          \/\/ Mobile-specific video player setup\r\n          if (isMobile) {\r\n              videoPlayer.setAttribute('playsinline', 'true');\r\n              videoPlayer.setAttribute('webkit-playsinline', 'true');\r\n              \r\n              \/\/ Show controls on touch\r\n              videoPlayer.addEventListener('touchstart', showVideoControlsOnMobile);\r\n          }\r\n      \r\n          \/\/ Set audio player\r\n          if (data.music) {\r\n              const audioElement = document.getElementById('audioElement');\r\n              const audioStreaming = document.getElementById('audioStreaming');\r\n              const audioTitle = document.getElementById('audioTitle');\r\n              const audioArtist = document.getElementById('audioArtist');\r\n              \r\n              audioElement.src = data.music;\r\n              audioTitle.textContent = data.music_info?.title || 'Audio Track';\r\n              audioArtist.textContent = data.music_info?.author || data.author.nickname;\r\n              audioStreaming.style.display = 'block';\r\n              \r\n              audioElement.addEventListener('timeupdate', updateAudioProgress);\r\n              audioElement.addEventListener('loadedmetadata', () => {\r\n                  document.getElementById('audioDuration').textContent = formatDuration(audioElement.duration);\r\n                  audioElement.volume = audioCurrentVolume;\r\n                  audioElement.muted = audioIsMuted;\r\n                  updateAudioVolumeDisplay();\r\n              });\r\n          }\r\n      \r\n          \/\/ Update download buttons\r\n          updateDownloadButtons(data);\r\n      }\r\n      \r\n      function updateDownloadButtons(data) {\r\n          const standardBtn = document.getElementById('downloadStandard');\r\n          const hdBtn = document.getElementById('downloadHD');\r\n          const audioBtn = document.getElementById('downloadAudio');\r\n      \r\n          \/\/ Standard quality\r\n          standardBtn.innerHTML = `<i class=\"fas fa-download\"><\/i><span>Standard (${formatFileSize(data.size)})<\/span>`;\r\n          \r\n          \/\/ HD quality\r\n          if (data.hd_size && data.hdplay) {\r\n              hdBtn.innerHTML = `<i class=\"fas fa-hd-video\"><\/i><span>HD (${formatFileSize(data.hd_size)})<\/span>`;\r\n              hdBtn.style.display = 'flex';\r\n          } else {\r\n              hdBtn.style.display = 'none';\r\n          }\r\n      \r\n          \/\/ Audio\r\n          audioBtn.innerHTML = `<i class=\"fas fa-download\"><\/i><span>Download Audio<\/span>`;\r\n      }\r\n      \r\n      function startVideoPlayback() {\r\n          const videoPlayer = document.getElementById('videoPlayer');\r\n          const videoThumbnail = document.getElementById('videoThumbnail');\r\n          const thumbnailOverlay = document.querySelector('.thumbnail-overlay');\r\n          \r\n          \/\/ Hide thumbnail and show video\r\n          videoThumbnail.style.display = 'none';\r\n          thumbnailOverlay.style.display = 'none';\r\n          videoPlayer.classList.add('playing');\r\n          \r\n          \/\/ Start playing\r\n          videoPlayer.play().catch(e => {\r\n              console.error('Error playing video:', e);\r\n              showError('Unable to play video. Please try again.');\r\n          });\r\n          \r\n          document.getElementById('playBtn').innerHTML = '<i class=\"fas fa-pause\"><\/i>';\r\n          videoStarted = true;\r\n          \r\n          \/\/ Show controls on mobile\r\n          if (isMobile) {\r\n              showVideoControlsOnMobile();\r\n          }\r\n      }\r\n      \r\n      \/\/ Video Player Controls\r\n      function togglePlay() {\r\n          if (!videoStarted) {\r\n              startVideoPlayback();\r\n              return;\r\n          }\r\n          \r\n          const videoPlayer = document.getElementById('videoPlayer');\r\n          const playBtn = document.getElementById('playBtn');\r\n          \r\n          if (videoPlayer.paused) {\r\n              videoPlayer.play().catch(e => {\r\n                  console.error('Error playing video:', e);\r\n                  showError('Unable to play video. Please try again.');\r\n              });\r\n              playBtn.innerHTML = '<i class=\"fas fa-pause\"><\/i>';\r\n          } else {\r\n              videoPlayer.pause();\r\n              playBtn.innerHTML = '<i class=\"fas fa-play\"><\/i>';\r\n          }\r\n          \r\n          \/\/ Show controls on mobile\r\n          if (isMobile) {\r\n              showVideoControlsOnMobile();\r\n          }\r\n      }\r\n      \r\n      function toggleAudioPlay() {\r\n          const audioElement = document.getElementById('audioElement');\r\n          const audioPlayBtn = document.getElementById('audioPlayBtn');\r\n          \r\n          if (audioElement.paused) {\r\n              audioElement.play().catch(e => {\r\n                  console.error('Error playing audio:', e);\r\n                  showError('Unable to play audio. Please try again.');\r\n              });\r\n              audioPlayBtn.innerHTML = '<i class=\"fas fa-pause\"><\/i>';\r\n              audioPlaying = true;\r\n          } else {\r\n              audioElement.pause();\r\n              audioPlayBtn.innerHTML = '<i class=\"fas fa-play\"><\/i>';\r\n              audioPlaying = false;\r\n          }\r\n      }\r\n      \r\n      function toggleMute() {\r\n          const videoPlayer = document.getElementById('videoPlayer');\r\n          const muteBtn = document.getElementById('muteBtn');\r\n          \r\n          if (isMuted) {\r\n              isMuted = false;\r\n              videoPlayer.muted = false;\r\n              videoPlayer.volume = currentVolume;\r\n              muteBtn.innerHTML = '<i class=\"fas fa-volume-up\"><\/i>';\r\n          } else {\r\n              isMuted = true;\r\n              videoPlayer.muted = true;\r\n              muteBtn.innerHTML = '<i class=\"fas fa-volume-mute\"><\/i>';\r\n          }\r\n          \r\n          updateVolumeDisplay();\r\n          \r\n          \/\/ Show controls on mobile\r\n          if (isMobile) {\r\n              showVideoControlsOnMobile();\r\n          }\r\n      }\r\n      \r\n      function toggleAudioMute() {\r\n          const audioElement = document.getElementById('audioElement');\r\n          const audioMuteBtn = document.getElementById('audioMuteBtn');\r\n          \r\n          if (audioIsMuted) {\r\n              audioIsMuted = false;\r\n              audioElement.muted = false;\r\n              audioElement.volume = audioCurrentVolume;\r\n              audioMuteBtn.innerHTML = '<i class=\"fas fa-volume-up\"><\/i>';\r\n          } else {\r\n              audioIsMuted = true;\r\n              audioElement.muted = true;\r\n              audioMuteBtn.innerHTML = '<i class=\"fas fa-volume-mute\"><\/i>';\r\n          }\r\n          \r\n          updateAudioVolumeDisplay();\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              document.getElementById('muteBtn').innerHTML = '<i class=\"fas fa-volume-mute\"><\/i>';\r\n          } else {\r\n              isMuted = false;\r\n              videoPlayer.muted = false;\r\n              document.getElementById('muteBtn').innerHTML = '<i class=\"fas fa-volume-up\"><\/i>';\r\n          }\r\n          \r\n          updateVolumeDisplay();\r\n          \r\n          \/\/ Show controls on mobile\r\n          if (isMobile) {\r\n              showVideoControlsOnMobile();\r\n          }\r\n      }\r\n      \r\n      function setAudioVolume(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          audioCurrentVolume = Math.max(0, Math.min(1, pos));\r\n          \r\n          const audioElement = document.getElementById('audioElement');\r\n          audioElement.volume = audioCurrentVolume;\r\n          \r\n          if (audioCurrentVolume === 0) {\r\n              audioIsMuted = true;\r\n              audioElement.muted = true;\r\n              document.getElementById('audioMuteBtn').innerHTML = '<i class=\"fas fa-volume-mute\"><\/i>';\r\n          } else {\r\n              audioIsMuted = false;\r\n              audioElement.muted = false;\r\n              document.getElementById('audioMuteBtn').innerHTML = '<i class=\"fas fa-volume-up\"><\/i>';\r\n          }\r\n          \r\n          updateAudioVolumeDisplay();\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 updateAudioVolumeDisplay() {\r\n          const volumeFill = document.getElementById('audioVolumeFill');\r\n          const displayVolume = audioIsMuted ? 0 : audioCurrentVolume;\r\n          volumeFill.style.width = `${displayVolume * 100}%`;\r\n      }\r\n      \r\n      function seekVideo(event) {\r\n          const videoPlayer = document.getElementById('videoPlayer');\r\n          const progressBar = event.currentTarget;\r\n          const rect = progressBar.getBoundingClientRect();\r\n          const pos = (event.clientX - rect.left) \/ rect.width;\r\n          videoPlayer.currentTime = pos * videoPlayer.duration;\r\n          \r\n          \/\/ Show controls on mobile\r\n          if (isMobile) {\r\n              showVideoControlsOnMobile();\r\n          }\r\n      }\r\n      \r\n      function seekAudio(event) {\r\n          const audioElement = document.getElementById('audioElement');\r\n          const progressBar = event.currentTarget;\r\n          const rect = progressBar.getBoundingClientRect();\r\n          const pos = (event.clientX - rect.left) \/ rect.width;\r\n          audioElement.currentTime = pos * audioElement.duration;\r\n      }\r\n      \r\n      \/\/ Updated video progress function with time display\r\n      function updateVideoProgress() {\r\n          const videoPlayer = document.getElementById('videoPlayer');\r\n          const progressFill = document.getElementById('progressFill');\r\n          const currentTime = document.getElementById('videoCurrentTime');\r\n          \r\n          const progress = (videoPlayer.currentTime \/ videoPlayer.duration) * 100;\r\n          progressFill.style.width = `${progress}%`;\r\n          currentTime.textContent = formatDuration(videoPlayer.currentTime);\r\n      }\r\n      \r\n      function updateAudioProgress() {\r\n          const audioElement = document.getElementById('audioElement');\r\n          const progressFill = document.getElementById('audioProgressFill');\r\n          const currentTime = document.getElementById('audioCurrentTime');\r\n          \r\n          const progress = (audioElement.currentTime \/ audioElement.duration) * 100;\r\n          progressFill.style.width = `${progress}%`;\r\n          currentTime.textContent = formatDuration(audioElement.currentTime);\r\n      }\r\n      \r\n      function toggleFullscreen() {\r\n          const videoWrapper = document.querySelector('.video-player-wrapper');\r\n          const fullscreenBtn = document.getElementById('fullscreenBtn');\r\n          \r\n          if (!isFullscreen) {\r\n              if (videoWrapper.requestFullscreen) {\r\n                  videoWrapper.requestFullscreen();\r\n              } else if (videoWrapper.webkitRequestFullscreen) {\r\n                  videoWrapper.webkitRequestFullscreen();\r\n              } else if (videoWrapper.msRequestFullscreen) {\r\n                  videoWrapper.msRequestFullscreen();\r\n              }\r\n              isFullscreen = true;\r\n              fullscreenBtn.innerHTML = '<i class=\"fas fa-compress\"><\/i>';\r\n          } else {\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              fullscreenBtn.innerHTML = '<i class=\"fas fa-expand\"><\/i>';\r\n          }\r\n          \r\n          \/\/ Show controls on mobile\r\n          if (isMobile) {\r\n              showVideoControlsOnMobile();\r\n          }\r\n      }\r\n      \r\n      \/\/ Download Functions\r\n      async function downloadVideo(quality) {\r\n          if (!currentVideoData || isDownloading) return;\r\n      \r\n          let downloadUrl, filename, expectedSize;\r\n          \r\n          switch (quality) {\r\n              case 'hd':\r\n                  if (!currentVideoData.hdplay) {\r\n                      showError('HD quality not available for this video');\r\n                      return;\r\n                  }\r\n                  downloadUrl = currentVideoData.hdplay;\r\n                  filename = `tiktok-${currentVideoData.id}-hd.mp4`;\r\n                  expectedSize = currentVideoData.hd_size;\r\n                  break;\r\n              case 'audio':\r\n                  if (!currentVideoData.music) {\r\n                      showError('Audio not available for this video');\r\n                      return;\r\n                  }\r\n                  downloadUrl = currentVideoData.music;\r\n                  filename = `tiktok-${currentVideoData.id}-audio.mp3`;\r\n                  expectedSize = null;\r\n                  break;\r\n              default:\r\n                  downloadUrl = currentVideoData.play;\r\n                  filename = `tiktok-${currentVideoData.id}.mp4`;\r\n                  expectedSize = currentVideoData.size;\r\n          }\r\n      \r\n          isDownloading = true;\r\n          downloadController = new AbortController();\r\n          \r\n          \/\/ Disable download buttons\r\n          document.querySelectorAll('.download-btn, .download-audio-btn').forEach(btn => btn.disabled = true);\r\n          \r\n          showDownloadProgress(`Starting download...`, 0);\r\n      \r\n          try {\r\n              const response = await fetch(downloadUrl, {\r\n                  signal: downloadController.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 = expectedSize || parseInt(response.headers.get('content-length') || '0');\r\n              const reader = response.body.getReader();\r\n              let receivedSize = 0;\r\n              const chunks = [];\r\n      \r\n              while (true) {\r\n                  const { done, value } = await reader.read();\r\n                  \r\n                  if (done) break;\r\n                  \r\n                  chunks.push(value);\r\n                  receivedSize += value.length;\r\n                  \r\n                  const progress = totalSize ? Math.round((receivedSize \/ totalSize) * 100) : 0;\r\n                  showDownloadProgress(`Downloading ${quality} quality... ${progress}%`, progress);\r\n              }\r\n      \r\n              showDownloadProgress('Processing download...', 95);\r\n      \r\n              \/\/ Combine chunks\r\n              const chunksAll = new Uint8Array(receivedSize);\r\n              let position = 0;\r\n              for (const chunk of chunks) {\r\n                  chunksAll.set(chunk, position);\r\n                  position += chunk.length;\r\n              }\r\n      \r\n              const mimeType = quality === 'audio' ? 'audio\/mpeg' : 'video\/mp4';\r\n              const blob = new Blob([chunksAll], { type: mimeType });\r\n              const url = URL.createObjectURL(blob);\r\n      \r\n              const a = document.createElement('a');\r\n              a.href = url;\r\n              a.download = filename;\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              showDownloadProgress('Download completed successfully!', 100);\r\n              setTimeout(hideDownloadProgress, 2000);\r\n      \r\n          } catch (error) {\r\n              if (error.name === 'AbortError') {\r\n                  showDownloadProgress('Download cancelled', 0);\r\n              } else {\r\n                  showError(`Download failed: ${error.message}`);\r\n                  hideDownloadProgress();\r\n              }\r\n          } finally {\r\n              isDownloading = false;\r\n              downloadController = null;\r\n              document.querySelectorAll('.download-btn, .download-audio-btn').forEach(btn => btn.disabled = false);\r\n          }\r\n      }\r\n      \r\n      function cancelDownload() {\r\n          if (downloadController) {\r\n              downloadController.abort();\r\n          }\r\n      }\r\n      \r\n      \/\/ Event Listeners\r\n      document.getElementById('videoInput').addEventListener('keypress', (e) => {\r\n          if (e.key === 'Enter' && !isLoading) {\r\n              loadVideo();\r\n          }\r\n      });\r\n      \r\n      \/\/ Fullscreen change events\r\n      document.addEventListener('fullscreenchange', () => {\r\n          isFullscreen = !!document.fullscreenElement;\r\n          const fullscreenBtn = document.getElementById('fullscreenBtn');\r\n          if (fullscreenBtn) {\r\n              fullscreenBtn.innerHTML = isFullscreen ? '<i class=\"fas fa-compress\"><\/i>' : '<i class=\"fas fa-expand\"><\/i>';\r\n          }\r\n      });\r\n      \r\n      \/\/ Keyboard shortcuts (desktop only)\r\n      document.addEventListener('keydown', (e) => {\r\n          if (!isMobile && currentVideoData && document.getElementById('videoSection').style.display === 'block') {\r\n              switch(e.key) {\r\n                  case ' ':\r\n                      e.preventDefault();\r\n                      togglePlay();\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      \r\n      \/\/ Touch event handlers for mobile\r\n      if (isMobile || isTouch) {\r\n          \/\/ Handle touch events for sliders\r\n          function handleTouchSlider(element, callback) {\r\n              element.addEventListener('touchstart', function(e) {\r\n                  e.preventDefault();\r\n                  const touch = e.touches[0];\r\n                  const rect = element.getBoundingClientRect();\r\n                  const pos = (touch.clientX - rect.left) \/ rect.width;\r\n                  callback(pos);\r\n              }, { passive: false });\r\n      \r\n              element.addEventListener('touchmove', function(e) {\r\n                  e.preventDefault();\r\n                  const touch = e.touches[0];\r\n                  const rect = element.getBoundingClientRect();\r\n                  const pos = (touch.clientX - rect.left) \/ rect.width;\r\n                  callback(pos);\r\n              }, { passive: false });\r\n          }\r\n      \r\n          \/\/ Apply touch handlers to sliders\r\n          document.addEventListener('DOMContentLoaded', () => {\r\n              const volumeSlider = document.getElementById('volumeFill')?.parentElement;\r\n              const audioVolumeSlider = document.getElementById('audioVolumeFill')?.parentElement;\r\n              const progressBar = document.getElementById('progressFill')?.parentElement;\r\n              const audioProgressBar = document.getElementById('audioProgressFill')?.parentElement;\r\n      \r\n              if (volumeSlider) {\r\n                  handleTouchSlider(volumeSlider, (pos) => {\r\n                      currentVolume = Math.max(0, Math.min(1, pos));\r\n                      const videoPlayer = document.getElementById('videoPlayer');\r\n                      if (videoPlayer) {\r\n                          videoPlayer.volume = currentVolume;\r\n                          updateVolumeDisplay();\r\n                      }\r\n                  });\r\n              }\r\n      \r\n              if (audioVolumeSlider) {\r\n                  handleTouchSlider(audioVolumeSlider, (pos) => {\r\n                      audioCurrentVolume = Math.max(0, Math.min(1, pos));\r\n                      const audioElement = document.getElementById('audioElement');\r\n                      if (audioElement) {\r\n                          audioElement.volume = audioCurrentVolume;\r\n                          updateAudioVolumeDisplay();\r\n                      }\r\n                  });\r\n              }\r\n      \r\n              if (progressBar) {\r\n                  handleTouchSlider(progressBar, (pos) => {\r\n                      const videoPlayer = document.getElementById('videoPlayer');\r\n                      if (videoPlayer && videoPlayer.duration) {\r\n                          videoPlayer.currentTime = pos * videoPlayer.duration;\r\n                      }\r\n                  });\r\n              }\r\n      \r\n              if (audioProgressBar) {\r\n                  handleTouchSlider(audioProgressBar, (pos) => {\r\n                      const audioElement = document.getElementById('audioElement');\r\n                      if (audioElement && audioElement.duration) {\r\n                          audioElement.currentTime = pos * audioElement.duration;\r\n                      }\r\n                  });\r\n              }\r\n          });\r\n      }\r\n      \r\n      \/\/ Initialize\r\n      document.addEventListener('DOMContentLoaded', () => {\r\n          document.getElementById('videoInput').focus();\r\n          updateAudioVolumeDisplay();\r\n          handleTouchEvents();\r\n          \r\n          \/\/ Prevent zoom on iOS when focusing inputs\r\n          if (\/iPad|iPhone|iPod\/.test(navigator.userAgent)) {\r\n              const viewport = document.querySelector('meta[name=viewport]');\r\n              if (viewport) {\r\n                  viewport.setAttribute('content', 'width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no');\r\n              }\r\n          }\r\n          \r\n          \/\/ Add orientation change handler\r\n          window.addEventListener('orientationchange', () => {\r\n              setTimeout(() => {\r\n                  \/\/ Recalculate dimensions after orientation change\r\n                  window.scrollTo(0, 0);\r\n              }, 100);\r\n          });\r\n          \r\n          \/\/ Add resize handler for responsive adjustments\r\n          window.addEventListener('resize', () => {\r\n              \/\/ Handle responsive adjustments\r\n              if (window.innerWidth <= 768) {\r\n                  \/\/ Mobile adjustments\r\n                  showVideoControlsOnMobile();\r\n              }\r\n          });\r\n      });\r\n      <\/script>\r\n    <script src=\"https:\/\/cdn.jsdelivr.net\/npm\/bootstrap@5.3.0\/dist\/js\/bootstrap.bundle.min.js\"><\/script>\r\n    <script src=\"https:\/\/unpkg.com\/aos@2.3.1\/dist\/aos.js\"><\/script>\r\n    <script>\r\n      (function () {\r\n        if (typeof AOS !== 'undefined') {\r\n          AOS.init({\r\n            duration: 800,\r\n            easing: 'ease-in-out',\r\n            once: true\r\n          });\r\n        }\r\n        document.querySelectorAll('a[href^=\"#\"]').forEach(function (anchor) {\r\n          anchor.addEventListener('click', function (e) {\r\n            var sel = this.getAttribute('href');\r\n            if (!sel || sel === '#') return;\r\n            var target = document.querySelector(sel);\r\n            if (target) {\r\n              e.preventDefault();\r\n              target.scrollIntoView({ behavior: 'smooth' });\r\n            }\r\n          });\r\n        });\r\n      })();\r\n    <\/script>\r\n  \r\n  <grammarly-desktop-integration data-grammarly-shadow-root=\"true\"><\/grammarly-desktop-integration><grammarly-desktop-integration data-grammarly-shadow-root=\"true\"><\/grammarly-desktop-integration>\r\n  <grammarly-desktop-integration data-grammarly-shadow-root=\"true\"><\/grammarly-desktop-integration><script defer=\"\" src=\"https:\/\/static.cloudflareinsights.com\/beacon.min.js\/vcd15cbe7772f49c399c6a5babf22c1241717689176015\" integrity=\"sha512-ZpsOmlRQV6y907TI0dKBHq9Md29nnaEIPlkf84rnaERnq6zvWvPUqr2ft8M1aS28oN72PdrCzSjY4U6VaAw1EQ==\" data-cf-beacon=\"{\"version\":\"2024.11.0\",\"token\":\"786b797d7952407aac48ed2776a3a826\",\"r\":1,\"server_timing\":{\"name\":{\"cfCacheStatus\":true,\"cfEdge\":true,\"cfExtPri\":true,\"cfL4\":true,\"cfOrigin\":true,\"cfSpeedBrain\":true},\"location_startswith\":null}}\" crossorigin=\"anonymous\"><\/script>\r\n  <script defer=\"\" src=\"https:\/\/static.cloudflareinsights.com\/beacon.min.js\/vcd15cbe7772f49c399c6a5babf22c1241717689176015\" integrity=\"sha512-ZpsOmlRQV6y907TI0dKBHq9Md29nnaEIPlkf84rnaERnq6zvWvPUqr2ft8M1aS28oN72PdrCzSjY4U6VaAw1EQ==\" data-cf-beacon=\"{\"version\":\"2024.11.0\",\"token\":\"786b797d7952407aac48ed2776a3a826\",\"r\":1,\"server_timing\":{\"name\":{\"cfCacheStatus\":true,\"cfEdge\":true,\"cfExtPri\":true,\"cfL4\":true,\"cfOrigin\":true,\"cfSpeedBrain\":true},\"location_startswith\":null}}\" crossorigin=\"anonymous\"><\/script>\r\n  <script defer=\"\" src=\"https:\/\/static.cloudflareinsights.com\/beacon.min.js\/v8c78df7c7c0f484497ecbca7046644da1771523124516\" integrity=\"sha512-8DS7rgIrAmghBFwoOTujcf6D9rXvH8xm8JQ1Ja01h9QX8EzXldiszufYa4IFfKdLUKTTrnSFXLDkUEOTrZQ8Qg==\" data-cf-beacon=\"{\"version\":\"2024.11.0\",\"token\":\"786b797d7952407aac48ed2776a3a826\",\"r\":1,\"server_timing\":{\"name\":{\"cfCacheStatus\":true,\"cfEdge\":true,\"cfExtPri\":true,\"cfL4\":true,\"cfOrigin\":true,\"cfSpeedBrain\":true},\"location_startswith\":null}}\" crossorigin=\"anonymous\"><\/script>\r\n  \n","protected":false},"author":1,"featured_media":0,"parent":258,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_et_pb_use_builder":"on","_et_pb_old_content":"","_et_gb_content_width":"","footnotes":""},"class_list":["post-429","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/viewanonymous.com\/wp-json\/wp\/v2\/pages\/429","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/viewanonymous.com\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/viewanonymous.com\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/viewanonymous.com\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/viewanonymous.com\/wp-json\/wp\/v2\/comments?post=429"}],"version-history":[{"count":4,"href":"https:\/\/viewanonymous.com\/wp-json\/wp\/v2\/pages\/429\/revisions"}],"predecessor-version":[{"id":598,"href":"https:\/\/viewanonymous.com\/wp-json\/wp\/v2\/pages\/429\/revisions\/598"}],"up":[{"embeddable":true,"href":"https:\/\/viewanonymous.com\/wp-json\/wp\/v2\/pages\/258"}],"wp:attachment":[{"href":"https:\/\/viewanonymous.com\/wp-json\/wp\/v2\/media?parent=429"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}