{"id":6146,"date":"2026-06-02T00:00:29","date_gmt":"2026-06-02T00:00:29","guid":{"rendered":"https:\/\/viewari.com\/?page_id=6146"},"modified":"2026-06-14T06:30:23","modified_gmt":"2026-06-14T06:30:23","slug":"third-party","status":"publish","type":"page","link":"https:\/\/viewari.com\/tiktok\/third-party\/","title":{"rendered":"Third Party Tiktok Viewer &#8211; Enjoy Custom Clutter-Free Feeds"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"6146\" class=\"elementor elementor-6146\">\n\t\t\t\t<div class=\"elementor-element elementor-element-7983f59f e-con-full e-flex e-con e-parent\" data-id=\"7983f59f\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-219846bc elementor-widget elementor-widget-shortcode\" data-id=\"219846bc\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><style>\n\/* New Social TikTok Profile Viewer \u2014 WordPress-scoped styles *\/\n  .nstpv {\n    container-type: inline-size;\n    container-name: nstpv;\n    \/* TikTok brand: black + neon pink\/red + cyan *\/\n    --nstpv-ink: #ffffff;\n    --nstpv-muted: #cbd5e1;\n    --nstpv-dim: #94a3b8;\n    --nstpv-panel: rgba(22, 24, 35, 0.94);\n    --nstpv-panel-soft: rgba(255, 255, 255, 0.08);\n    --nstpv-line: rgba(255, 255, 255, 0.12);\n    --nstpv-accent: #ff0050;\n    --nstpv-accent-deep: #ee1d52;\n    --nstpv-cool: #00f2ea;\n    --nstpv-cool-deep: #69c9d0;\n    --nstpv-danger: #ff4d6d;\n    --nstpv-radius: 16px;\n    --nstpv-shadow: 0 16px 36px rgba(0, 0, 0, 0.45);\n    --nstpv-font: \"Segoe UI\", \"Helvetica Neue\", Arial, sans-serif;\n    --nstpv-space: 16px;\n    --nstpv-avatar: 96px;\n    --nstpv-pad: 12px;\n    --nstpv-gap: 12px;\n\n    box-sizing: border-box;\n    font-family: var(--nstpv-font);\n    color: var(--nstpv-ink);\n    line-height: 1.5;\n    width: 100%;\n    max-width: 100%;\n    min-height: 100vh;\n    min-width: 0;\n    margin: 0 auto;\n    padding: clamp(10px, 2.5vw, 28px) max(clamp(6px, 2vw, 14px), env(safe-area-inset-right, 0px)) max(clamp(14px, 3vw, 28px), env(safe-area-inset-bottom, 0px)) max(clamp(6px, 2vw, 14px), env(safe-area-inset-left, 0px));\n    background:\n      radial-gradient(ellipse 75% 50% at 12% 0%, rgba(255, 0, 80, 0.28), transparent 55%),\n      radial-gradient(ellipse 70% 45% at 92% 8%, rgba(0, 242, 234, 0.18), transparent 50%),\n      linear-gradient(145deg, #0a0a0f 0%, #161823 42%, #1c1917 100%);\n    border-radius: 0;\n    position: relative;\n    isolation: isolate;\n    text-align: left;\n    overflow-x: hidden;\n    -webkit-text-size-adjust: 100%;\n    text-size-adjust: 100%;\n  }\n\n  .nstpv *,\n  .nstpv *::before,\n  .nstpv *::after {\n    box-sizing: border-box;\n  }\n\n  .nstpv :where(h1, h2, h3, h4, h5, h6, p, ul, ol, li, figure, figcaption, label, span) {\n    margin: 0;\n    padding: 0;\n    border: 0;\n    font-weight: inherit;\n  }\n\n  .nstpv :where(ul, ol) {\n    list-style: none;\n  }\n\n  .nstpv img {\n    max-width: 100%;\n    height: auto;\n    display: block;\n    border: 0;\n  }\n\n  .nstpv a {\n    color: var(--nstpv-cool);\n    text-decoration: none;\n  }\n\n  .nstpv a:hover {\n    text-decoration: underline;\n  }\n\n  .nstpv-shell {\n    position: relative;\n    z-index: 1;\n    display: flex;\n    flex-direction: column;\n    gap: var(--nstpv-gap);\n    width: 100%;\n    max-width: 1280px;\n    margin: 0 auto;\n    min-width: 0;\n  }\n\n  .nstpv-hero {\n    background: transparent;\n    padding: 36px 0 14px;\n    text-align: center;\n    width: 100%;\n    max-width: 100%;\n    min-width: 0;\n    backdrop-filter: blur(12px);\n    border: 0;\n    box-shadow: none;\n    border-radius: 0;\n  }\n\n  .nstpv-hero__heading {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    gap: 12px;\n    flex-wrap: wrap;\n    margin: 0 0 8px;\n  }\n\n  .nstpv-hero__brand {\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    width: 44px;\n    height: 44px;\n    min-width: 44px;\n    margin: 0;\n    border-radius: 12px;\n    background: linear-gradient(135deg, var(--nstpv-accent), var(--nstpv-cool));\n    color: #fff;\n    box-shadow: 0 10px 24px rgba(255, 0, 80, 0.35);\n    flex: 0 0 auto;\n  }\n\n  .nstpv .nstpv-hero__brand i {\n    font-size: 1.25rem !important;\n    width: auto;\n    color: #fff !important;\n  }\n\n  .nstpv .nstpv-hero__title {\n    font-size: clamp(1.35rem, 3vw, 1.75rem);\n    font-weight: 700;\n    letter-spacing: -0.02em;\n    line-height: 1.25;\n    margin: 0;\n    color: var(--nstpv-ink);\n  }\n\n  .nstpv-hero__title-mark {\n    background: linear-gradient(135deg, var(--nstpv-accent) 0%, var(--nstpv-cool) 100%);\n    -webkit-background-clip: text;\n    background-clip: text;\n    color: transparent;\n    position: relative;\n    display: inline-block;\n  }\n\n  .nstpv-hero__title-mark::after {\n    content: \"\";\n    position: absolute;\n    left: 0;\n    right: 0;\n    bottom: -3px;\n    height: 3px;\n    border-radius: 999px;\n    background: linear-gradient(90deg, var(--nstpv-accent), var(--nstpv-cool));\n  }\n\n  .nstpv .nstpv-hero__lead {\n    max-width: 560px;\n    margin: 0 auto 16px;\n    color: var(--nstpv-muted);\n    font-size: clamp(0.88rem, 2.4vw, 0.95rem);\n    line-height: 1.55;\n    padding: 0 2px;\n  }\n\n  .nstpv-search {\n    display: flex;\n    flex-direction: column;\n    align-items: stretch;\n    gap: 10px;\n    text-align: left;\n    width: 100%;\n    max-width: 100%;\n    min-width: 0;\n    box-sizing: border-box;\n    margin-top: 4px;\n    padding: clamp(10px, 2vw, 14px);\n    background: rgba(10, 10, 15, 0.55);\n    border: 1px solid var(--nstpv-line);\n    border-radius: 12px;\n    box-shadow: var(--nstpv-shadow);\n  }\n\n  .nstpv .nstpv-search__label {\n    display: block;\n    font-size: 0.88rem;\n    font-weight: 600;\n    color: var(--nstpv-muted);\n    line-height: 1.3;\n  }\n\n  .nstpv-search__row {\n    display: flex;\n    flex-direction: column;\n    gap: 8px;\n    flex-wrap: wrap;\n    align-items: stretch;\n    width: 100%;\n    min-width: 0;\n  }\n\n  .nstpv .nstpv-search__field {\n    flex: 1 1 160px;\n    min-width: 0;\n    height: 46px;\n    min-height: 46px;\n    padding: 0 14px !important;\n    border: 1px solid var(--nstpv-line) !important;\n    border-radius: 10px;\n    background: rgba(10, 10, 15, 0.75) !important;\n    color: #ffffff !important;\n    font-family: var(--nstpv-font);\n    font-size: 16px !important;\n    font-weight: 500;\n    line-height: 46px;\n    outline: none;\n    box-shadow: none;\n    width: 100%;\n    max-width: 100%;\n  }\n\n  .nstpv .nstpv-search__field:focus {\n    border-color: var(--nstpv-cool) !important;\n    box-shadow: 0 0 0 3px rgba(0, 242, 234, 0.28);\n  }\n\n  .nstpv .nstpv-search__field::placeholder {\n    color: var(--nstpv-dim);\n    opacity: 1;\n  }\n\n  .nstpv .nstpv-btn {\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    gap: 7px;\n    flex: 1 1 calc(50% - 4px);\n    height: 46px;\n    min-height: 46px;\n    min-width: 0;\n    padding: 0 14px !important;\n    border: 0 !important;\n    border-radius: 10px;\n    font-family: var(--nstpv-font);\n    font-size: 0.9rem !important;\n    font-weight: 700 !important;\n    line-height: 1;\n    cursor: pointer;\n    transition: transform 0.2s ease, box-shadow 0.2s ease, opacity 0.2s ease;\n    white-space: nowrap;\n    user-select: none;\n    text-decoration: none;\n    appearance: none;\n    -webkit-appearance: none;\n    touch-action: manipulation;\n  }\n\n  .nstpv .nstpv-btn i,\n  .nstpv .nstpv-avatar__zoom i,\n  .nstpv .nstpv-modal__close i,\n  .nstpv .nstpv-card__dl i,\n  .nstpv .nstpv-card__play i,\n  .nstpv .nstpv-videos__dlall i,\n  .nstpv .nstpv-modal__action i,\n  .nstpv .nstpv-dlprog__title i,\n  .nstpv .nstpv-dlprog__stop i,\n  .nstpv .nstpv-stat i,\n  .nstpv .nstpv-hero__brand i,\n  .nstpv .nstpv-meta__verified i,\n  .nstpv i.fa-solid,\n  .nstpv i.fa-brands,\n  .nstpv i.fas {\n    --fa-display: inline-block;\n    display: inline-block !important;\n    line-height: 1 !important;\n    font-size: 0.92em;\n    width: 1.15em;\n    text-align: center;\n    vertical-align: middle;\n    font-style: normal !important;\n    font-variant: normal;\n    text-rendering: auto;\n    -webkit-font-smoothing: antialiased;\n  }\n\n  .nstpv .nstpv-btn--paste {\n    background: var(--nstpv-panel-soft) !important;\n    color: var(--nstpv-ink) !important;\n    border: 1px solid var(--nstpv-line) !important;\n  }\n\n  .nstpv .nstpv-btn--view {\n    background: linear-gradient(135deg, var(--nstpv-accent) 0%, #ff4081 45%, var(--nstpv-cool) 100%) !important;\n    color: #ffffff !important;\n    box-shadow: 0 8px 18px rgba(255, 0, 80, 0.35);\n  }\n\n  .nstpv .nstpv-btn--reset {\n    background: linear-gradient(135deg, var(--nstpv-cool), var(--nstpv-cool-deep)) !important;\n    color: #0a0a0f !important;\n    box-shadow: 0 8px 18px rgba(0, 242, 234, 0.28);\n  }\n\n  .nstpv .nstpv-btn:hover {\n    transform: translateY(-1px);\n  }\n\n  .nstpv .nstpv-btn:disabled,\n  .nstpv .nstpv-btn.is-hidden {\n    opacity: 0.55;\n    cursor: not-allowed;\n    transform: none;\n  }\n\n  .nstpv .nstpv-btn.is-hidden {\n    display: none !important;\n  }\n\n  .nstpv .nstpv-search__meta {\n    display: flex;\n    flex-wrap: wrap;\n    align-items: center;\n    gap: 8px 12px;\n    width: 100%;\n    min-width: 0;\n  }\n\n  .nstpv .nstpv-search__hint {\n    margin: 0;\n    flex: 1 1 180px;\n    font-size: 0.8rem;\n    font-style: italic;\n    color: var(--nstpv-dim);\n    line-height: 1.4;\n    min-width: 0;\n  }\n\n  .nstpv .nstpv-alert {\n    display: none;\n    margin: 0;\n    padding: 10px 12px;\n    border-radius: 8px;\n    background: rgba(255, 107, 122, 0.12);\n    border: 1px solid rgba(255, 107, 122, 0.35);\n    color: var(--nstpv-danger);\n    font-weight: 600;\n    font-size: 0.88rem;\n    text-align: left;\n    line-height: 1.4;\n    overflow-wrap: anywhere;\n  }\n\n  .nstpv .nstpv-alert.is-visible {\n    display: block;\n  }\n\n  .nstpv .nstpv-alert.is-info {\n    background: rgba(0, 242, 234, 0.12);\n    border-color: rgba(0, 242, 234, 0.35);\n    color: var(--nstpv-cool);\n  }\n\n  .nstpv .nstpv-skeleton {\n    display: none;\n    margin: 0;\n    width: 100%;\n    max-width: 100%;\n    min-width: 0;\n  }\n\n  .nstpv .nstpv-skeleton.is-visible {\n    display: block;\n  }\n\n  .nstpv .nstpv-content.is-hidden {\n    display: none !important;\n  }\n\n  @keyframes nstpv-shimmer {\n    0% {\n      background-position: -400px 0;\n    }\n\n    100% {\n      background-position: 400px 0;\n    }\n  }\n\n  .nstpv .nstpv-sk {\n    background: linear-gradient(90deg,\n        rgba(255, 255, 255, 0.06) 0%,\n        rgba(255, 255, 255, 0.14) 45%,\n        rgba(255, 255, 255, 0.06) 100%);\n    background-size: 800px 100%;\n    animation: nstpv-shimmer 1.35s ease-in-out infinite;\n    border-radius: 8px;\n  }\n\n  .nstpv-skeleton__panel {\n    background: var(--nstpv-panel);\n    border: 1px solid var(--nstpv-line);\n    border-radius: var(--nstpv-radius);\n    box-shadow: var(--nstpv-shadow);\n    padding: 18px;\n    width: 100%;\n    max-width: 100%;\n    min-width: 0;\n  }\n\n  .nstpv-skeleton__profile {\n    display: grid;\n    grid-template-columns: 1fr;\n    gap: 14px;\n    align-items: center;\n    justify-items: center;\n    padding: var(--nstpv-pad);\n    border-radius: 12px;\n    background: linear-gradient(160deg, rgba(0, 242, 234, 0.1), rgba(255, 0, 80, 0.1));\n    border: 1px solid rgba(255, 255, 255, 0.06);\n    text-align: center;\n    width: 100%;\n    min-width: 0;\n  }\n\n  .nstpv .nstpv-skeleton__avatar {\n    width: var(--nstpv-avatar);\n    height: var(--nstpv-avatar);\n    border-radius: 50% !important;\n    border: 3px solid rgba(255, 255, 255, 0.12);\n  }\n\n  .nstpv-skeleton__meta {\n    display: flex;\n    flex-direction: column;\n    gap: 10px;\n    min-width: 0;\n    align-items: center;\n    text-align: center;\n    width: 100%;\n  }\n\n  .nstpv-skeleton__line {\n    height: 16px;\n  }\n\n  .nstpv-skeleton__line--lg {\n    width: min(200px, 70%);\n    height: 22px;\n  }\n\n  .nstpv-skeleton__line--md {\n    width: min(140px, 50%);\n    height: 14px;\n  }\n\n  .nstpv-skeleton__line--bio {\n    width: 100%;\n    height: 54px;\n    margin-top: 4px;\n    grid-column: 1 \/ -1;\n  }\n\n  .nstpv-skeleton__stats {\n    display: grid;\n    grid-template-columns: repeat(2, minmax(0, 1fr));\n    gap: 10px;\n    margin-top: 2px;\n    width: 100%;\n  }\n\n  .nstpv-skeleton__stat {\n    height: 56px;\n    border-radius: 10px;\n  }\n\n  .nstpv-skeleton__head {\n    display: flex;\n    justify-content: space-between;\n    gap: 10px;\n    margin: 18px 0 12px;\n    align-items: center;\n  }\n\n  .nstpv-skeleton__head-line {\n    width: min(120px, 40%);\n    height: 20px;\n  }\n\n  .nstpv-skeleton__head-btn {\n    width: min(140px, 42%);\n    height: 40px;\n    border-radius: 10px;\n  }\n\n  .nstpv-skeleton__grid {\n    display: grid;\n    grid-template-columns: 1fr;\n    gap: 12px;\n    width: 100%;\n  }\n\n  .nstpv-skeleton__card {\n    border-radius: 12px;\n    overflow: hidden;\n    border: 1px solid var(--nstpv-line);\n    background: rgba(255, 255, 255, 0.04);\n    min-width: 0;\n  }\n\n  .nstpv-skeleton__thumb {\n    aspect-ratio: 9 \/ 14;\n    border-radius: 0;\n  }\n\n  .nstpv-skeleton__foot {\n    height: 64px;\n    margin: 10px 12px;\n    border-radius: 8px;\n  }\n\n  .nstpv .nstpv-result {\n    display: block;\n    margin: 0;\n    width: 100%;\n    max-width: 100%;\n    min-width: 0;\n  }\n\n  .nstpv-panel {\n    background: var(--nstpv-panel);\n    border: 1px solid var(--nstpv-line);\n    border-radius: var(--nstpv-radius);\n    box-shadow: var(--nstpv-shadow);\n    padding: var(--nstpv-pad);\n    backdrop-filter: blur(12px);\n    width: 100%;\n    max-width: 100%;\n    min-width: 0;\n  }\n\n  .nstpv-profile {\n    display: grid;\n    grid-template-columns: 1fr;\n    gap: 14px;\n    align-items: center;\n    justify-items: center;\n    padding: var(--nstpv-pad);\n    border-radius: 12px;\n    background: linear-gradient(160deg, rgba(0, 242, 234, 0.12), rgba(255, 0, 80, 0.12));\n    border: 1px solid rgba(255, 255, 255, 0.06);\n    width: 100%;\n    min-width: 0;\n    text-align: center;\n  }\n\n  .nstpv-avatar {\n    position: relative;\n    width: var(--nstpv-avatar);\n    height: var(--nstpv-avatar);\n  }\n\n  .nstpv-avatar__ring {\n    width: 100%;\n    height: 100%;\n    border-radius: 50%;\n    padding: 3px;\n    background: linear-gradient(135deg, var(--nstpv-accent), var(--nstpv-cool));\n    box-shadow: 0 8px 20px rgba(255, 0, 80, 0.35), 0 0 0 1px rgba(0, 242, 234, 0.2);\n  }\n\n  .nstpv .nstpv-avatar__img {\n    width: 100% !important;\n    height: 100% !important;\n    max-width: none;\n    object-fit: cover;\n    border-radius: 50%;\n    background: #12141f;\n    cursor: pointer;\n  }\n\n  .nstpv .nstpv-avatar__zoom {\n    position: absolute;\n    right: -2px;\n    bottom: -2px;\n    width: 36px;\n    height: 36px;\n    min-width: 36px;\n    border-radius: 50%;\n    border: 0 !important;\n    background: rgba(10, 10, 15, 0.9) !important;\n    color: #fff !important;\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    cursor: pointer;\n    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.35);\n    appearance: none;\n    -webkit-appearance: none;\n    touch-action: manipulation;\n    z-index: 2;\n  }\n\n  .nstpv-meta {\n    display: flex;\n    flex-direction: column;\n    gap: 6px;\n    min-width: 0;\n    align-items: center;\n    width: 100%;\n  }\n\n  .nstpv .nstpv-meta__name {\n    font-size: clamp(1.15rem, 3.5vw, 1.45rem);\n    font-weight: 800;\n    color: var(--nstpv-ink);\n    line-height: 1.25;\n    overflow-wrap: anywhere;\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    gap: 8px;\n    flex-wrap: wrap;\n  }\n\n  .nstpv .nstpv-meta__verified {\n    display: inline-flex;\n    align-items: center;\n    color: var(--nstpv-cool);\n    font-size: 0.85em;\n  }\n\n  .nstpv .nstpv-meta__verified[hidden] {\n    display: none !important;\n  }\n\n  .nstpv .nstpv-meta__handle {\n    font-size: 0.95rem;\n    font-weight: 600;\n    color: var(--nstpv-cool);\n    line-height: 1.3;\n    overflow-wrap: anywhere;\n  }\n\n  .nstpv .nstpv-stats {\n    display: grid;\n    grid-template-columns: repeat(2, minmax(0, 1fr));\n    gap: 10px;\n    width: 100%;\n    margin-top: 8px;\n  }\n\n  .nstpv .nstpv-stat {\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n    gap: 2px;\n    min-width: 0;\n    padding: 10px 8px;\n    border-radius: 12px;\n    background: rgba(255, 255, 255, 0.06);\n    border: 1px solid rgba(255, 255, 255, 0.08);\n  }\n\n  .nstpv .nstpv-stat__value {\n    font-size: clamp(1rem, 3.2vw, 1.15rem);\n    font-weight: 800;\n    color: var(--nstpv-cool);\n    line-height: 1.2;\n  }\n\n  .nstpv .nstpv-stat__label {\n    font-size: 0.75rem;\n    color: var(--nstpv-dim);\n    text-transform: capitalize;\n    line-height: 1.2;\n  }\n\n  .nstpv .nstpv-bio {\n    grid-column: 1 \/ -1;\n    margin: 0;\n    padding: 12px 0 0;\n    border-top: 1px solid var(--nstpv-line);\n    text-align: center;\n    color: #e2e8f0;\n    font-size: clamp(0.86rem, 3cqi, 0.92rem);\n    line-height: 1.55;\n    min-width: 0;\n    overflow-wrap: anywhere;\n    white-space: pre-line;\n  }\n\n  .nstpv-content.is-placeholder .nstpv-avatar__zoom {\n    opacity: 0.55;\n    pointer-events: none;\n  }\n\n  .nstpv-content.is-placeholder .nstpv-card__media,\n  .nstpv-content.is-placeholder .nstpv-card__dl,\n  .nstpv-content.is-placeholder .nstpv-card__play,\n  .nstpv-content.is-placeholder .nstpv-videos__dlall {\n    pointer-events: none;\n  }\n\n  .nstpv-content.is-placeholder .nstpv-card__dl,\n  .nstpv-content.is-placeholder .nstpv-videos__dlall {\n    opacity: 0.65;\n  }\n\n  .nstpv-content.is-placeholder .nstpv-bio {\n    color: var(--nstpv-dim);\n  }\n\n  .nstpv-card__media--ghost {\n    background: linear-gradient(145deg, #1a0a14, #ff0050 55%, #00f2ea);\n  }\n\n  .nstpv-card__media--ghost-b {\n    background: linear-gradient(145deg, #0a1418, #00f2ea 55%, #ff0050);\n  }\n\n  .nstpv-card__media--ghost-c {\n    background: linear-gradient(145deg, #12141f, #ee1d52 45%, #69c9d0);\n  }\n\n  .nstpv-card__media--ghost .nstpv-card__img {\n    display: none !important;\n  }\n\n  .nstpv-videos {\n    margin-top: 16px;\n    width: 100%;\n    max-width: 100%;\n    min-width: 0;\n  }\n\n  .nstpv-videos__head {\n    display: flex;\n    flex-wrap: wrap;\n    align-items: center;\n    justify-content: space-between;\n    gap: 10px;\n    margin-bottom: 12px;\n    width: 100%;\n    min-width: 0;\n  }\n\n  .nstpv .nstpv-videos__title {\n    display: inline-flex;\n    align-items: center;\n    gap: 8px;\n    font-size: 1.05rem;\n    font-weight: 800;\n    color: var(--nstpv-ink);\n    line-height: 1.3;\n  }\n\n  .nstpv .nstpv-videos__title i {\n    color: var(--nstpv-accent);\n  }\n\n  .nstpv .nstpv-videos__count {\n    font-size: 0.82rem;\n    font-weight: 600;\n    color: var(--nstpv-dim);\n    width: 100%;\n    order: 3;\n  }\n\n  .nstpv .nstpv-videos__dlall {\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    gap: 7px;\n    height: 44px;\n    min-height: 44px;\n    padding: 0 14px !important;\n    border-radius: 10px;\n    border: 0 !important;\n    background: linear-gradient(135deg, var(--nstpv-cool), var(--nstpv-cool-deep)) !important;\n    color: #0a0a0f !important;\n    font-family: var(--nstpv-font);\n    font-size: 0.85rem !important;\n    font-weight: 700 !important;\n    cursor: pointer;\n    appearance: none;\n    -webkit-appearance: none;\n    touch-action: manipulation;\n    white-space: nowrap;\n  }\n\n  .nstpv-more {\n    appearance: none;\n    width: 100%;\n    margin-top: 12px;\n    border: 1px solid rgba(0, 242, 234, 0.45);\n    background: rgba(0, 242, 234, 0.12);\n    color: #fff;\n    border-radius: 12px;\n    padding: 11px 14px;\n    font-weight: 800;\n    font-size: 0.88rem;\n    cursor: pointer;\n    display: none;\n    gap: 8px;\n    align-items: center;\n    justify-content: center;\n  }\n\n  .nstpv-more.is-visible {\n    display: inline-flex;\n  }\n\n  .nstpv-more:hover {\n    background: rgba(0, 242, 234, 0.2);\n  }\n\n  .nstpv-more:disabled {\n    opacity: .55;\n    cursor: not-allowed;\n  }\n\n  .nstpv-content.is-placeholder .nstpv-more {\n    display: none !important;\n  }\n\n  .nstpv .nstpv-videos__dlall:disabled {\n    opacity: 0.55;\n    cursor: not-allowed;\n  }\n\n  .nstpv-grid {\n    display: grid;\n    grid-template-columns: 1fr;\n    gap: clamp(10px, 2.5vw, 14px);\n    margin: 0;\n    width: 100%;\n    min-width: 0;\n  }\n\n  .nstpv-card {\n    display: flex;\n    flex-direction: column;\n    border-radius: 12px;\n    overflow: hidden;\n    background: rgba(255, 255, 255, 0.05);\n    border: 1px solid var(--nstpv-line);\n    box-shadow: 0 6px 16px rgba(0, 0, 0, 0.16);\n    transition: transform 0.25s ease, box-shadow 0.25s ease;\n    min-width: 0;\n    max-width: 100%;\n    width: 100%;\n  }\n\n  .nstpv-card:hover {\n    transform: translateY(-4px);\n    box-shadow: 0 12px 24px rgba(0, 0, 0, 0.24);\n  }\n\n  .nstpv-card__media {\n    position: relative;\n    aspect-ratio: 9 \/ 14;\n    overflow: hidden;\n    background: #12141f;\n    flex: 0 0 auto;\n  }\n\n  .nstpv .nstpv-card__img {\n    width: 100% !important;\n    height: 100% !important;\n    max-width: none;\n    object-fit: cover;\n    transition: transform 0.45s ease;\n  }\n\n  .nstpv-card:hover .nstpv-card__img {\n    transform: scale(1.05);\n  }\n\n  .nstpv .nstpv-card__dl {\n    position: absolute;\n    top: 8px;\n    right: 8px;\n    z-index: 2;\n    width: 36px;\n    height: 36px;\n    min-width: 36px;\n    border-radius: 9px;\n    border: 0 !important;\n    background: rgba(0, 0, 0, 0.6) !important;\n    color: #fff !important;\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    cursor: pointer;\n    appearance: none;\n    -webkit-appearance: none;\n    touch-action: manipulation;\n  }\n\n  .nstpv .nstpv-card__play {\n    position: absolute;\n    inset: 0;\n    z-index: 1;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    background: rgba(10, 10, 15, 0.35);\n    border: 0 !important;\n    cursor: pointer;\n    color: #fff;\n    appearance: none;\n    -webkit-appearance: none;\n    touch-action: manipulation;\n  }\n\n  .nstpv .nstpv-card__play span {\n    width: 56px;\n    height: 56px;\n    border-radius: 50%;\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    background: rgba(0, 0, 0, 0.55);\n    box-shadow: 0 8px 20px rgba(0, 0, 0, 0.35);\n    font-size: 1.1rem;\n  }\n\n  .nstpv-card__body {\n    display: flex;\n    flex-direction: column;\n    gap: 8px;\n    padding: 10px 12px 12px;\n    min-width: 0;\n  }\n\n  .nstpv .nstpv-card__title {\n    font-size: 0.88rem;\n    font-weight: 700;\n    color: var(--nstpv-ink);\n    line-height: 1.35;\n    display: -webkit-box;\n    -webkit-line-clamp: 2;\n    line-clamp: 2;\n    -webkit-box-orient: vertical;\n    overflow: hidden;\n    overflow-wrap: anywhere;\n  }\n\n  .nstpv-card__metrics {\n    display: flex;\n    flex-wrap: wrap;\n    gap: 10px 14px;\n    color: var(--nstpv-muted);\n    font-size: 0.78rem;\n    font-weight: 600;\n  }\n\n  .nstpv-card__metrics span {\n    display: inline-flex;\n    align-items: center;\n    gap: 5px;\n  }\n\n  .nstpv-card__metrics i {\n    color: var(--nstpv-accent);\n  }\n\n  .nstpv-card__metrics span:nth-child(3) i {\n    color: var(--nstpv-cool);\n  }\n\n  .nstpv .nstpv-empty {\n    text-align: center;\n    padding: 28px 16px;\n    color: var(--nstpv-muted);\n  }\n\n  .nstpv .nstpv-empty i {\n    display: block !important;\n    font-size: 2.1rem !important;\n    width: auto;\n    margin: 0 auto 14px;\n    opacity: 0.85;\n    line-height: 1 !important;\n    color: #fff;\n  }\n\n  .nstpv-modal {\n    position: fixed;\n    inset: 0;\n    z-index: 99999;\n    display: none;\n    align-items: center;\n    justify-content: center;\n    padding: 16px;\n    background: rgba(10, 10, 15, 0.82);\n    backdrop-filter: blur(6px);\n  }\n\n  .nstpv-modal.is-open {\n    display: flex;\n  }\n\n  .nstpv-modal__dialog {\n    position: relative;\n    width: min(720px, 100%);\n    max-height: min(92vh, 900px);\n    overflow: auto;\n    background: var(--nstpv-panel);\n    border: 1px solid var(--nstpv-line);\n    border-radius: 16px;\n    box-shadow: var(--nstpv-shadow);\n    padding: 14px;\n    min-width: 0;\n  }\n\n  .nstpv-modal__dialog--avatar {\n    width: min(420px, 100%);\n  }\n\n  .nstpv .nstpv-modal__close {\n    position: absolute;\n    top: 10px;\n    right: 10px;\n    z-index: 3;\n    width: 40px;\n    height: 40px;\n    min-width: 40px;\n    border-radius: 50%;\n    border: 0 !important;\n    background: rgba(0, 0, 0, 0.55) !important;\n    color: #fff !important;\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    cursor: pointer;\n    appearance: none;\n    -webkit-appearance: none;\n    touch-action: manipulation;\n  }\n\n  .nstpv-modal__stage {\n    position: relative;\n    border-radius: 12px;\n    overflow: hidden;\n    background: #0a0a0f;\n    min-height: min(52vh, 420px);\n    display: flex;\n    align-items: center;\n    justify-content: center;\n  }\n\n  .nstpv .nstpv-modal__media {\n    width: 100% !important;\n    max-width: 100%;\n    height: auto !important;\n    max-height: min(70vh, 640px);\n    min-height: min(42vh, 360px);\n    object-fit: contain;\n    display: block;\n    margin: 0 auto;\n    background: #000;\n  }\n\n  .nstpv .nstpv-modal__media.is-hidden {\n    display: none !important;\n  }\n\n  .nstpv-modal__stage-note {\n    position: absolute;\n    left: 12px;\n    right: 12px;\n    bottom: 12px;\n    display: none;\n    align-items: center;\n    justify-content: center;\n    gap: 8px;\n    padding: 8px 12px;\n    text-align: center;\n    color: #e2e8f0;\n    font-size: 0.82rem;\n    background: rgba(10, 10, 15, 0.78);\n    border-radius: 999px;\n    z-index: 2;\n    pointer-events: none;\n    width: auto;\n    max-width: calc(100% - 24px);\n    margin: 0 auto;\n  }\n\n  .nstpv-modal__stage-note.is-visible {\n    display: inline-flex;\n  }\n\n  .nstpv-modal__bar {\n    display: flex;\n    flex-wrap: wrap;\n    align-items: center;\n    justify-content: space-between;\n    gap: 10px;\n    margin-top: 12px;\n    min-width: 0;\n  }\n\n  .nstpv .nstpv-modal__caption {\n    flex: 1 1 160px;\n    font-size: 0.92rem;\n    font-weight: 700;\n    color: var(--nstpv-ink);\n    line-height: 1.35;\n    overflow-wrap: anywhere;\n    min-width: 0;\n  }\n\n  .nstpv-modal__actions {\n    display: flex;\n    flex-wrap: wrap;\n    gap: 8px;\n  }\n\n  .nstpv .nstpv-modal__action {\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    gap: 7px;\n    height: 44px;\n    min-height: 44px;\n    padding: 0 14px !important;\n    border-radius: 10px;\n    border: 0 !important;\n    font-family: var(--nstpv-font);\n    font-size: 0.85rem !important;\n    font-weight: 700 !important;\n    cursor: pointer;\n    appearance: none;\n    -webkit-appearance: none;\n    touch-action: manipulation;\n  }\n\n  .nstpv .nstpv-modal__action--play {\n    background: var(--nstpv-panel-soft) !important;\n    color: #fff !important;\n    border: 1px solid var(--nstpv-line) !important;\n  }\n\n  .nstpv .nstpv-modal__action--download {\n    background: var(--nstpv-accent) !important;\n    color: #ffffff !important;\n  }\n\n  .nstpv .nstpv-modal__action.is-hidden {\n    display: none !important;\n  }\n\n  .nstpv-dlprog {\n    position: fixed;\n    right: 16px;\n    bottom: 16px;\n    z-index: 100000;\n    width: min(320px, calc(100vw - 24px));\n    display: none;\n    padding: 14px;\n    border-radius: 14px;\n    background: rgba(16, 18, 28, 0.97);\n    border: 1px solid var(--nstpv-line);\n    box-shadow: var(--nstpv-shadow), 0 0 24px rgba(255, 0, 80, 0.18);\n    color: var(--nstpv-ink);\n  }\n\n  .nstpv-dlprog.is-open {\n    display: block;\n  }\n\n  .nstpv-dlprog.is-success {\n    border-color: rgba(0, 242, 234, 0.45);\n  }\n\n  .nstpv-dlprog.is-error {\n    border-color: rgba(255, 107, 122, 0.55);\n  }\n\n  .nstpv-dlprog__head {\n    display: flex;\n    justify-content: space-between;\n    align-items: flex-start;\n    gap: 10px;\n    margin-bottom: 8px;\n  }\n\n  .nstpv-dlprog__title {\n    display: inline-flex;\n    align-items: center;\n    gap: 8px;\n    font-size: 0.88rem;\n    font-weight: 700;\n    min-width: 0;\n  }\n\n  .nstpv-dlprog__title i {\n    color: var(--nstpv-accent);\n  }\n\n  .nstpv-dlprog__name {\n    overflow-wrap: anywhere;\n    min-width: 0;\n  }\n\n  .nstpv-dlprog__pct {\n    font-size: 0.82rem;\n    font-weight: 800;\n    color: var(--nstpv-cool);\n    white-space: nowrap;\n  }\n\n  .nstpv-dlprog__track {\n    height: 8px;\n    border-radius: 999px;\n    background: rgba(255, 255, 255, 0.1);\n    overflow: hidden;\n  }\n\n  .nstpv-dlprog__fill {\n    height: 100%;\n    width: 0%;\n    border-radius: 999px;\n    background: linear-gradient(90deg, var(--nstpv-accent), var(--nstpv-cool));\n    transition: width 0.2s ease;\n  }\n\n  .nstpv-dlprog__meta {\n    display: flex;\n    justify-content: space-between;\n    gap: 8px;\n    margin-top: 8px;\n    font-size: 0.75rem;\n    color: var(--nstpv-muted);\n  }\n\n  .nstpv .nstpv-dlprog__stop {\n    margin-top: 10px;\n    width: 100%;\n    height: 40px;\n    min-height: 40px;\n    border-radius: 10px;\n    border: 1px solid var(--nstpv-line) !important;\n    background: rgba(255, 255, 255, 0.08) !important;\n    color: #fff !important;\n    font-family: var(--nstpv-font);\n    font-weight: 700 !important;\n    font-size: 0.82rem !important;\n    cursor: pointer;\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    gap: 6px;\n    appearance: none;\n    -webkit-appearance: none;\n    touch-action: manipulation;\n  }\n\n  \/* ResizeObserver helpers *\/\n  .nstpv.nstpv--narrow .nstpv-grid,\n  .nstpv.nstpv--narrow .nstpv-skeleton__grid {\n    grid-template-columns: 1fr !important;\n  }\n\n  @media (max-width: 359px) {\n    .nstpv {\n      --nstpv-avatar: 84px;\n      --nstpv-pad: 10px;\n    }\n\n    .nstpv .nstpv-hero__title {\n      font-size: 1.2rem;\n    }\n\n    .nstpv .nstpv-btn {\n      font-size: 0.82rem !important;\n    }\n  }\n\n  .nstpv.nstpv--roomy .nstpv-grid,\n  .nstpv.nstpv--roomy .nstpv-skeleton__grid {\n    grid-template-columns: repeat(4, minmax(0, 1fr)) !important;\n  }\n\n  @media (max-height: 480px) and (orientation: landscape) {\n    .nstpv .nstpv-hero__lead {\n      display: none;\n    }\n  }\n\n  @media (prefers-reduced-motion: reduce) {\n\n    .nstpv *,\n    .nstpv *::before,\n    .nstpv *::after {\n      animation-duration: 0.01ms !important;\n      animation-iteration-count: 1 !important;\n      transition-duration: 0.01ms !important;\n    }\n\n    .nstpv .nstpv-sk {\n      animation: none;\n      background: rgba(255, 255, 255, 0.1);\n    }\n  }\n\n  \/* ------------------------------------------------------------------\n   Responsive \u2014 same pattern as Facebook Friends \/ YouTube Channel\n   JS classes (ResizeObserver on tool width):\n     --narrow  < 480\n     --compact < 768\n     --desktop >= 768\n   Grid columns set inline via JS (beats WP theme CSS).\n------------------------------------------------------------------- *\/\n  .nstpv {\n    --nstpv-cols: 1;\n  }\n\n  .nstpv-search__row {\n    display: flex;\n    flex-direction: column;\n    gap: 8px;\n    width: 100%;\n    min-width: 0;\n  }\n\n  .nstpv-search__field {\n    width: 100% !important;\n    max-width: 100% !important;\n    min-width: 0 !important;\n    flex: 1 1 auto !important;\n    font-size: 16px !important;\n  }\n\n  .nstpv-search__actions {\n    display: flex;\n    flex-wrap: wrap;\n    gap: 8px;\n    width: 100%;\n  }\n\n  .nstpv-btn {\n    flex: 1 1 calc(50% - 4px);\n    justify-content: center;\n    min-height: 44px;\n  }\n\n  .nstpv-grid,\n  .nstpv-skeleton__grid {\n    display: grid;\n    grid-template-columns: repeat(var(--nstpv-cols, 1), minmax(0, 1fr));\n    gap: clamp(10px, 2.5vw, 14px);\n    width: 100%;\n    min-width: 0;\n  }\n\n  .nstpv-stats {\n    display: grid;\n    grid-template-columns: repeat(2, minmax(0, 1fr));\n    gap: 8px;\n  }\n\n  .nstpv.nstpv--desktop .nstpv-stats {\n    grid-template-columns: repeat(4, minmax(0, 1fr));\n  }\n\n  .nstpv.nstpv--compact .nstpv-videos__head {\n    flex-direction: column !important;\n    align-items: stretch !important;\n  }\n\n  .nstpv.nstpv--compact .nstpv-videos__dlall {\n    width: 100% !important;\n    justify-content: center !important;\n  }\n\n  @media (min-width: 768px) {\n    .nstpv:not(.nstpv--compact) .nstpv-search__row {\n      flex-direction: row;\n      flex-wrap: wrap;\n      align-items: stretch;\n    }\n\n    .nstpv:not(.nstpv--compact) .nstpv-search__field {\n      flex: 1 1 220px !important;\n      width: auto !important;\n    }\n\n    .nstpv:not(.nstpv--compact) .nstpv-search__actions {\n      width: auto;\n      flex: 0 0 auto;\n      flex-wrap: nowrap;\n    }\n\n    .nstpv:not(.nstpv--compact) .nstpv-btn {\n      flex: 0 0 auto;\n    }\n  }\n\n  \/* WordPress \/ Live Server narrow container (set by ResizeObserver) *\/\n  .nstpv.nstpv--compact .nstpv-search__row {\n    flex-direction: column !important;\n  }\n\n  .nstpv.nstpv--compact .nstpv-search__actions {\n    width: 100% !important;\n    display: flex !important;\n    flex-wrap: wrap !important;\n  }\n\n  .nstpv.nstpv--compact .nstpv-btn {\n    flex: 1 1 calc(50% - 4px) !important;\n  }\n\n  .nstpv.nstpv--compact .nstpv-search__field {\n    width: 100% !important;\n    flex: 1 1 100% !important;\n  }\n\n  .nstpv.nstpv--narrow .nstpv-btn {\n    flex: 1 1 100% !important;\n  }\n\n  .nstpv.nstpv--narrow .nstpv-search__actions {\n    flex-direction: column !important;\n  }\n\n  .nstpv.nstpv--narrow .nstpv-hero__title {\n    font-size: 1.15rem;\n  }\n\n  @media (hover: none) {\n\n    .nstpv .nstpv-btn:hover,\n    .nstpv-card:hover {\n      transform: none;\n    }\n\n    .nstpv-card:hover .nstpv-card__img {\n      transform: none;\n    }\n  }\n\n  \/* Turnstile host: keep hidden in-flow; floating panel styles come from turnstile-handler.js *\/\n  .nstpv #xrespond-tools-turnstile-host {\n    display: none;\n  }\n\n  .nstpv #xrespond-tools-turnstile-host.is-visible {\n    display: block !important;\n  }\n\n  \/* Ensure floating Turnstile panel (moved to body) is never clipped\/hidden by tool CSS *\/\n  body>#xrespond-tools-turnstile-host.is-visible {\n    display: block !important;\n    position: fixed !important;\n    z-index: 2147483000 !important;\n    visibility: visible !important;\n    opacity: 1 !important;\n    pointer-events: auto !important;\n  }\n\n  \/* Search controls: one row on large screens, wrap on narrow *\/\n  .nstpv .nstpv-search,\n  .nstpv .nstpv-search .nstpv-search__row,\n  .nstpv .nstpv-search .nstpv-search__actions {\n    width: 100% !important;\n    max-width: 100% !important;\n    min-width: 0 !important;\n    box-sizing: border-box !important;\n  }\n\n  .nstpv .nstpv-search .nstpv-search__row {\n    display: flex !important;\n    flex-direction: row !important;\n    flex-wrap: nowrap !important;\n    align-items: stretch !important;\n    gap: 8px !important;\n  }\n\n  .nstpv .nstpv-search .nstpv-search__field,\n  .nstpv .nstpv-search .nstpv-search__row > .nstpv-search__field {\n    flex: 1 1 auto !important;\n    width: auto !important;\n    max-width: none !important;\n    min-width: 0 !important;\n  }\n\n  .nstpv .nstpv-search .nstpv-search__actions,\n  .nstpv .nstpv-search .nstpv-search__row > .nstpv-search__actions {\n    display: flex !important;\n    flex: 0 0 auto !important;\n    flex-direction: row !important;\n    width: auto !important;\n    max-width: none !important;\n    min-width: 0 !important;\n    flex-wrap: nowrap !important;\n    gap: 8px !important;\n  }\n\n  .nstpv .nstpv-search .nstpv-search__row > .nstpv-btn,\n  .nstpv .nstpv-search .nstpv-search__actions .nstpv-btn,\n  .nstpv .nstpv-search .nstpv-search__row .nstpv-search__actions .nstpv-btn {\n    flex: 0 0 auto !important;\n    width: auto !important;\n    max-width: none !important;\n    min-width: 110px !important;\n  }\n\n  .nstpv.nstpv--compact .nstpv-search .nstpv-search__row,\n  .nstpv.nstpv--narrow .nstpv-search .nstpv-search__row {\n    flex-wrap: wrap !important;\n  }\n\n  .nstpv.nstpv--compact .nstpv-search .nstpv-search__field,\n  .nstpv.nstpv--narrow .nstpv-search .nstpv-search__field,\n  .nstpv.nstpv--compact .nstpv-search .nstpv-search__row > .nstpv-search__field,\n  .nstpv.nstpv--narrow .nstpv-search .nstpv-search__row > .nstpv-search__field {\n    flex: 1 1 100% !important;\n    width: 100% !important;\n    max-width: 100% !important;\n  }\n\n  .nstpv.nstpv--compact .nstpv-search .nstpv-search__actions,\n  .nstpv.nstpv--narrow .nstpv-search .nstpv-search__actions,\n  .nstpv.nstpv--compact .nstpv-search .nstpv-search__row > .nstpv-search__actions,\n  .nstpv.nstpv--narrow .nstpv-search .nstpv-search__row > .nstpv-search__actions {\n    flex: 1 1 100% !important;\n    width: 100% !important;\n    max-width: 100% !important;\n  }\n\n  .nstpv.nstpv--compact .nstpv-search .nstpv-search__row > .nstpv-btn,\n  .nstpv.nstpv--narrow .nstpv-search .nstpv-search__row > .nstpv-btn,\n  .nstpv.nstpv--compact .nstpv-search .nstpv-search__actions .nstpv-btn,\n  .nstpv.nstpv--narrow .nstpv-search .nstpv-search__actions .nstpv-btn,\n  .nstpv.nstpv--compact .nstpv-search .nstpv-search__row .nstpv-search__actions .nstpv-btn,\n  .nstpv.nstpv--narrow .nstpv-search .nstpv-search__row .nstpv-search__actions .nstpv-btn {\n    flex: 1 1 calc(50% - 4px) !important;\n    min-width: 0 !important;\n    max-width: 100% !important;\n  }\n\n  @media (max-width: 720px) {\n    .nstpv .nstpv-search .nstpv-search__row {\n      flex-wrap: wrap !important;\n    }\n\n    .nstpv .nstpv-search .nstpv-search__field,\n    .nstpv .nstpv-search .nstpv-search__row > .nstpv-search__field {\n      flex: 1 1 100% !important;\n      width: 100% !important;\n      max-width: 100% !important;\n    }\n\n    .nstpv .nstpv-search .nstpv-search__actions,\n    .nstpv .nstpv-search .nstpv-search__row > .nstpv-search__actions {\n      flex: 1 1 100% !important;\n      width: 100% !important;\n      max-width: 100% !important;\n    }\n\n    .nstpv .nstpv-search .nstpv-search__row > .nstpv-btn,\n    .nstpv .nstpv-search .nstpv-search__actions .nstpv-btn,\n    .nstpv .nstpv-search .nstpv-search__row .nstpv-search__actions .nstpv-btn {\n      flex: 1 1 calc(50% - 4px) !important;\n      min-width: 0 !important;\n      max-width: 100% !important;\n    }\n  }\n\n\/* --- Codex CSS updates --- *\/\n\/* New Social TikTok Profile Viewer \u2014 WordPress-scoped styles *\/\n.nstpv {\n  container-type: inline-size;\n  container-name: nstpv;\n  --nstpv-ink: #f8fbff;\n  --nstpv-muted: #c6d0e5;\n  --nstpv-dim: #8f9bb3;\n  --nstpv-panel: rgba(12, 16, 28, 0.88);\n  --nstpv-panel-soft: rgba(255, 255, 255, 0.09);\n  --nstpv-line: rgba(255, 255, 255, 0.12);\n  --nstpv-line-strong: rgba(255, 255, 255, 0.2);\n  --nstpv-accent: #ff2f75;\n  --nstpv-accent-deep: #d91461;\n  --nstpv-cool: #5ee7df;\n  --nstpv-cool-deep: #22c7dd;\n  --nstpv-gold: #ffd166;\n  --nstpv-danger: #ff6b7f;\n  --nstpv-success: #49d7a5;\n  --nstpv-radius: 22px;\n  --nstpv-radius-md: 16px;\n  --nstpv-radius-sm: 12px;\n  --nstpv-shadow: 0 24px 60px rgba(0, 0, 0, 0.38);\n  --nstpv-shadow-soft: 0 14px 34px rgba(0, 0, 0, 0.22);\n  --nstpv-font: \"Segoe UI\", \"Helvetica Neue\", Arial, sans-serif;\n  --nstpv-space: 16px;\n  --nstpv-avatar: 104px;\n  --nstpv-pad: 16px;\n  --nstpv-gap: 16px;\n  --nstpv-glow: 0 0 0 1px rgba(255, 255, 255, 0.06), 0 20px 60px rgba(0, 0, 0, 0.28);\n  --nstpv-gradient: linear-gradient(135deg, rgba(255, 47, 117, 0.95) 0%, rgba(255, 116, 158, 0.92) 36%, rgba(94, 231, 223, 0.95) 100%);\n  --nstpv-gradient-soft: linear-gradient(135deg, rgba(255, 47, 117, 0.18) 0%, rgba(94, 231, 223, 0.16) 100%);\n\n  box-sizing: border-box;\n  font-family: var(--nstpv-font);\n  color: var(--nstpv-ink);\n  line-height: 1.5;\n  width: 100%;\n  max-width: 100%;\n  min-height: 100vh;\n  min-width: 0;\n  margin: 0 auto;\n  padding: clamp(12px, 2.5vw, 30px) max(clamp(8px, 2vw, 18px), env(safe-area-inset-right, 0px)) max(clamp(18px, 3vw, 30px), env(safe-area-inset-bottom, 0px)) max(clamp(8px, 2vw, 18px), env(safe-area-inset-left, 0px));\n  background:\n    radial-gradient(circle at 12% 0%, rgba(255, 47, 117, 0.28), transparent 34%),\n    radial-gradient(circle at 100% 0%, rgba(94, 231, 223, 0.2), transparent 32%),\n    radial-gradient(circle at 50% 100%, rgba(255, 209, 102, 0.08), transparent 30%),\n    linear-gradient(145deg, #05070d 0%, #0d1220 42%, #161421 100%);\n  border-radius: 0;\n  position: relative;\n  isolation: isolate;\n  text-align: left;\n  overflow-x: hidden;\n  -webkit-text-size-adjust: 100%;\n  text-size-adjust: 100%;\n}\n\n.nstpv *,\n.nstpv *::before,\n.nstpv *::after {\n  box-sizing: border-box;\n}\n\n.nstpv :where(h1, h2, h3, h4, h5, h6, p, ul, ol, li, figure, figcaption, label, span) {\n  margin: 0;\n  padding: 0;\n  border: 0;\n  font-weight: inherit;\n}\n\n.nstpv :where(ul, ol) {\n  list-style: none;\n}\n\n.nstpv img {\n  max-width: 100%;\n  height: auto;\n  display: block;\n  border: 0;\n}\n\n.nstpv a {\n  color: var(--nstpv-cool);\n  text-decoration: none;\n  transition: color 0.25s ease, opacity 0.25s ease;\n}\n\n.nstpv a:hover {\n  text-decoration: underline;\n  color: #a5fff9;\n}\n\n.nstpv-shell {\n  position: relative;\n  z-index: 1;\n  display: flex;\n  flex-direction: column;\n  gap: var(--nstpv-gap);\n  width: 100%;\n  max-width: 1280px;\n  margin: 0 auto;\n  min-width: 0;\n}\n\n.nstpv-hero {\n  background: linear-gradient(180deg, rgba(255, 255, 255, 0.05), rgba(255, 255, 255, 0.02));\n  padding: clamp(24px, 5vw, 42px) clamp(14px, 2.5vw, 28px) clamp(18px, 3vw, 24px);\n  text-align: center;\n  width: 100%;\n  max-width: 100%;\n  min-width: 0;\n  backdrop-filter: blur(18px);\n  border: 1px solid rgba(255, 255, 255, 0.08);\n  box-shadow: var(--nstpv-glow);\n  border-radius: calc(var(--nstpv-radius) + 2px);\n  position: relative;\n  overflow: hidden;\n}\n\n.nstpv-hero::before {\n  content: \"\";\n  position: absolute;\n  inset: 0;\n  background:\n    linear-gradient(115deg, rgba(255, 255, 255, 0.08), transparent 42%),\n    radial-gradient(circle at 80% 16%, rgba(94, 231, 223, 0.12), transparent 28%);\n  pointer-events: none;\n}\n\n.nstpv-hero__heading {\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  gap: 14px;\n  flex-wrap: wrap;\n  margin: 0 0 10px;\n  position: relative;\n  z-index: 1;\n}\n\n.nstpv-hero__brand {\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n  width: 52px;\n  height: 52px;\n  min-width: 52px;\n  margin: 0;\n  border-radius: 16px;\n  background: var(--nstpv-gradient);\n  color: #fff;\n  box-shadow: 0 16px 34px rgba(255, 47, 117, 0.34);\n  flex: 0 0 auto;\n  position: relative;\n}\n\n.nstpv-hero__brand::after {\n  content: \"\";\n  position: absolute;\n  inset: 1px;\n  border-radius: 15px;\n  background: linear-gradient(180deg, rgba(255, 255, 255, 0.16), rgba(255, 255, 255, 0.02));\n  pointer-events: none;\n}\n\n.nstpv .nstpv-hero__brand i {\n  font-size: 1.25rem !important;\n  width: auto;\n  color: #fff !important;\n  position: relative;\n  z-index: 1;\n}\n\n.nstpv .nstpv-hero__title {\n  font-size: clamp(1.45rem, 3vw, 2rem);\n  font-weight: 800;\n  letter-spacing: -0.03em;\n  line-height: 1.15;\n  margin: 0;\n  color: var(--nstpv-ink);\n}\n\n.nstpv-hero__title-mark {\n  background: linear-gradient(135deg, #ff7db1 0%, #fff0f6 22%, #6ff3ec 100%);\n  -webkit-background-clip: text;\n  background-clip: text;\n  color: transparent;\n  position: relative;\n  display: inline-block;\n}\n\n.nstpv-hero__title-mark::after {\n  content: \"\";\n  position: absolute;\n  left: 0;\n  right: 0;\n  bottom: -5px;\n  height: 3px;\n  border-radius: 999px;\n  background: var(--nstpv-gradient);\n  opacity: 0.9;\n}\n\n.nstpv .nstpv-hero__lead {\n  max-width: 640px;\n  margin: 0 auto 18px;\n  color: var(--nstpv-muted);\n  font-size: clamp(0.92rem, 2.4vw, 1rem);\n  line-height: 1.65;\n  padding: 0 2px;\n  position: relative;\n  z-index: 1;\n}\n\n.nstpv-search {\n  display: flex;\n  flex-direction: column;\n  align-items: stretch;\n  gap: 12px;\n  text-align: left;\n  width: 100%;\n  max-width: 100%;\n  min-width: 0;\n  box-sizing: border-box;\n  margin-top: 6px;\n  padding: clamp(14px, 2.4vw, 20px);\n  background: linear-gradient(180deg, rgba(12, 16, 28, 0.86), rgba(18, 23, 38, 0.76));\n  border: 1px solid rgba(255, 255, 255, 0.1);\n  border-radius: calc(var(--nstpv-radius) - 2px);\n  box-shadow: var(--nstpv-glow);\n  backdrop-filter: blur(16px);\n  position: relative;\n}\n\n.nstpv-search::before {\n  content: \"\";\n  position: absolute;\n  inset: 0;\n  border-radius: inherit;\n  background: linear-gradient(135deg, rgba(255, 255, 255, 0.06), transparent 34%);\n  pointer-events: none;\n}\n\n.nstpv .nstpv-search__label {\n  display: block;\n  font-size: 0.9rem;\n  font-weight: 700;\n  color: #e7edf9;\n  line-height: 1.3;\n  letter-spacing: 0.01em;\n}\n\n.nstpv-search__row {\n  display: flex;\n  flex-direction: column;\n  gap: 10px;\n  flex-wrap: wrap;\n  align-items: stretch;\n  width: 100%;\n  min-width: 0;\n}\n\n.nstpv .nstpv-search__field {\n  flex: 1 1 160px;\n  min-width: 0;\n  height: 50px;\n  min-height: 50px;\n  padding: 0 16px !important;\n  border: 1px solid rgba(255, 255, 255, 0.12) !important;\n  border-radius: 14px;\n  background: linear-gradient(180deg, rgba(255, 255, 255, 0.08), rgba(255, 255, 255, 0.04)) !important;\n  color: #ffffff !important;\n  font-family: var(--nstpv-font);\n  font-size: 16px !important;\n  font-weight: 500;\n  line-height: 50px;\n  outline: none;\n  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.05);\n  width: 100%;\n  max-width: 100%;\n  transition: border-color 0.25s ease, box-shadow 0.25s ease, background 0.25s ease, transform 0.25s ease;\n}\n\n.nstpv .nstpv-search__field:hover {\n  border-color: rgba(255, 255, 255, 0.18) !important;\n  background: linear-gradient(180deg, rgba(255, 255, 255, 0.1), rgba(255, 255, 255, 0.05)) !important;\n}\n\n.nstpv .nstpv-search__field:focus {\n  border-color: rgba(94, 231, 223, 0.85) !important;\n  box-shadow: 0 0 0 4px rgba(94, 231, 223, 0.16), 0 14px 28px rgba(0, 0, 0, 0.2);\n  background: rgba(18, 23, 38, 0.95) !important;\n  transform: translateY(-1px);\n}\n\n.nstpv .nstpv-search__field::placeholder {\n  color: #9aabc6;\n  opacity: 1;\n}\n\n.nstpv .nstpv-btn {\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n  gap: 8px;\n  flex: 1 1 calc(50% - 4px);\n  height: 50px;\n  min-height: 50px;\n  min-width: 0;\n  padding: 0 18px !important;\n  border: 0 !important;\n  border-radius: 14px;\n  font-family: var(--nstpv-font);\n  font-size: 0.92rem !important;\n  font-weight: 800 !important;\n  line-height: 1;\n  cursor: pointer;\n  transition: transform 0.22s ease, box-shadow 0.22s ease, opacity 0.22s ease, filter 0.22s ease, background 0.22s ease;\n  white-space: nowrap;\n  user-select: none;\n  text-decoration: none;\n  appearance: none;\n  -webkit-appearance: none;\n  touch-action: manipulation;\n  position: relative;\n  overflow: hidden;\n}\n\n.nstpv .nstpv-btn::before,\n.nstpv .nstpv-videos__dlall::before,\n.nstpv .nstpv-modal__action::before,\n.nstpv .nstpv-more::before,\n.nstpv .nstpv-dlprog__stop::before {\n  content: \"\";\n  position: absolute;\n  inset: 0;\n  background: linear-gradient(180deg, rgba(255, 255, 255, 0.18), rgba(255, 255, 255, 0.02));\n  opacity: 0.85;\n  pointer-events: none;\n}\n\n.nstpv .nstpv-btn i,\n.nstpv .nstpv-avatar__zoom i,\n.nstpv .nstpv-modal__close i,\n.nstpv .nstpv-card__dl i,\n.nstpv .nstpv-card__play i,\n.nstpv .nstpv-videos__dlall i,\n.nstpv .nstpv-modal__action i,\n.nstpv .nstpv-dlprog__title i,\n.nstpv .nstpv-dlprog__stop i,\n.nstpv .nstpv-stat i,\n.nstpv .nstpv-hero__brand i,\n.nstpv .nstpv-meta__verified i,\n.nstpv i.fa-solid,\n.nstpv i.fa-brands,\n.nstpv i.fas,\n.nstpv .fa-angles-down,\n.nstpv .fa-circle-check,\n.nstpv .fa-cloud-arrow-down,\n.nstpv .fa-download,\n.nstpv .fa-expand,\n.nstpv .fa-eye,\n.nstpv .fa-film,\n.nstpv .fa-paste,\n.nstpv .fa-play,\n.nstpv .fa-rotate-left,\n.nstpv .fa-tiktok,\n.nstpv .fa-xmark {\n  --fa-display: inline-block;\n  display: inline-block !important;\n  line-height: 1 !important;\n  font-size: 0.92em;\n  width: 1.15em;\n  text-align: center;\n  vertical-align: middle;\n  font-style: normal !important;\n  font-variant: normal;\n  text-rendering: auto;\n  -webkit-font-smoothing: antialiased;\n}\n\n.nstpv .nstpv-btn--paste {\n  background: linear-gradient(180deg, rgba(255, 255, 255, 0.1), rgba(255, 255, 255, 0.06)) !important;\n  color: var(--nstpv-ink) !important;\n  border: 1px solid rgba(255, 255, 255, 0.12) !important;\n  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.06), 0 10px 24px rgba(0, 0, 0, 0.16);\n}\n\n.nstpv .nstpv-btn--view {\n  background: var(--nstpv-gradient) !important;\n  color: #ffffff !important;\n  box-shadow: 0 14px 28px rgba(255, 47, 117, 0.28), 0 8px 18px rgba(94, 231, 223, 0.12);\n}\n\n.nstpv .nstpv-btn--reset {\n  background: linear-gradient(135deg, rgba(94, 231, 223, 0.98), rgba(34, 199, 221, 0.94)) !important;\n  color: #071018 !important;\n  box-shadow: 0 14px 28px rgba(34, 199, 221, 0.24);\n}\n\n.nstpv .nstpv-btn:hover,\n.nstpv .nstpv-videos__dlall:hover,\n.nstpv .nstpv-modal__action:hover,\n.nstpv .nstpv-more:hover,\n.nstpv .nstpv-dlprog__stop:hover,\n.nstpv .nstpv-avatar__zoom:hover,\n.nstpv .nstpv-card__dl:hover,\n.nstpv .nstpv-modal__close:hover {\n  transform: translateY(-2px);\n  filter: brightness(1.03);\n}\n\n.nstpv .nstpv-btn:active,\n.nstpv .nstpv-videos__dlall:active,\n.nstpv .nstpv-modal__action:active,\n.nstpv .nstpv-more:active,\n.nstpv .nstpv-dlprog__stop:active,\n.nstpv .nstpv-avatar__zoom:active,\n.nstpv .nstpv-card__dl:active,\n.nstpv .nstpv-modal__close:active {\n  transform: translateY(0);\n}\n\n.nstpv .nstpv-btn:focus-visible,\n.nstpv .nstpv-videos__dlall:focus-visible,\n.nstpv .nstpv-more:focus-visible,\n.nstpv .nstpv-avatar__zoom:focus-visible,\n.nstpv .nstpv-card__dl:focus-visible,\n.nstpv .nstpv-card__play:focus-visible,\n.nstpv .nstpv-modal__close:focus-visible,\n.nstpv .nstpv-modal__action:focus-visible,\n.nstpv .nstpv-dlprog__stop:focus-visible {\n  outline: none;\n  box-shadow: 0 0 0 4px rgba(94, 231, 223, 0.18), 0 16px 28px rgba(0, 0, 0, 0.22);\n}\n\n.nstpv .nstpv-btn:disabled,\n.nstpv .nstpv-btn.is-hidden {\n  opacity: 0.55;\n  cursor: not-allowed;\n  transform: none;\n  filter: none;\n}\n\n.nstpv .nstpv-btn.is-hidden {\n  display: none !important;\n}\n\n.nstpv .nstpv-search__meta {\n  display: flex;\n  flex-wrap: wrap;\n  align-items: center;\n  gap: 10px 12px;\n  width: 100%;\n  min-width: 0;\n}\n\n.nstpv .nstpv-search__hint {\n  margin: 0;\n  flex: 1 1 180px;\n  font-size: 0.8rem;\n  font-style: italic;\n  color: var(--nstpv-dim);\n  line-height: 1.5;\n  min-width: 0;\n}\n\n.nstpv .nstpv-alert,\n.nstpv .xrespond-ts-error {\n  display: none;\n  margin: 0;\n  padding: 12px 14px;\n  border-radius: 14px;\n  background: rgba(255, 107, 127, 0.12);\n  border: 1px solid rgba(255, 107, 127, 0.28);\n  color: #ff98a7;\n  font-weight: 700;\n  font-size: 0.88rem;\n  text-align: left;\n  line-height: 1.45;\n  overflow-wrap: anywhere;\n  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.04);\n}\n\n.nstpv .nstpv-alert.is-visible,\n.nstpv .xrespond-ts-error:not(:empty) {\n  display: block;\n}\n\n.nstpv .nstpv-alert.is-info {\n  background: rgba(94, 231, 223, 0.12);\n  border-color: rgba(94, 231, 223, 0.28);\n  color: #87fff7;\n}\n\n.nstpv .nstpv-skeleton {\n  display: none;\n  margin: 0;\n  width: 100%;\n  max-width: 100%;\n  min-width: 0;\n}\n\n.nstpv .nstpv-skeleton.is-visible {\n  display: block;\n}\n\n.nstpv .nstpv-content.is-hidden {\n  display: none !important;\n}\n\n@keyframes nstpv-shimmer {\n  0% {\n    background-position: -400px 0;\n  }\n\n  100% {\n    background-position: 400px 0;\n  }\n}\n\n.nstpv .nstpv-sk {\n  background: linear-gradient(\n    90deg,\n    rgba(255, 255, 255, 0.05) 0%,\n    rgba(255, 255, 255, 0.14) 45%,\n    rgba(255, 255, 255, 0.05) 100%\n  );\n  background-size: 800px 100%;\n  animation: nstpv-shimmer 1.35s ease-in-out infinite;\n  border-radius: 10px;\n}\n\n.nstpv-skeleton__panel {\n  background: linear-gradient(180deg, rgba(15, 19, 31, 0.94), rgba(12, 16, 28, 0.88));\n  border: 1px solid var(--nstpv-line);\n  border-radius: var(--nstpv-radius);\n  box-shadow: var(--nstpv-glow);\n  padding: 20px;\n  width: 100%;\n  max-width: 100%;\n  min-width: 0;\n}\n\n.nstpv-skeleton__profile {\n  display: grid;\n  grid-template-columns: 1fr;\n  gap: 16px;\n  align-items: center;\n  justify-items: center;\n  padding: calc(var(--nstpv-pad) + 2px);\n  border-radius: calc(var(--nstpv-radius) - 4px);\n  background: linear-gradient(160deg, rgba(94, 231, 223, 0.1), rgba(255, 47, 117, 0.11));\n  border: 1px solid rgba(255, 255, 255, 0.08);\n  text-align: center;\n  width: 100%;\n  min-width: 0;\n}\n\n.nstpv .nstpv-skeleton__avatar {\n  width: var(--nstpv-avatar);\n  height: var(--nstpv-avatar);\n  border-radius: 50% !important;\n  border: 3px solid rgba(255, 255, 255, 0.12);\n}\n\n.nstpv-skeleton__meta {\n  display: flex;\n  flex-direction: column;\n  gap: 10px;\n  min-width: 0;\n  align-items: center;\n  text-align: center;\n  width: 100%;\n}\n\n.nstpv-skeleton__line {\n  height: 16px;\n}\n\n.nstpv-skeleton__line--lg {\n  width: min(220px, 74%);\n  height: 24px;\n}\n\n.nstpv-skeleton__line--md {\n  width: min(150px, 54%);\n  height: 14px;\n}\n\n.nstpv-skeleton__line--bio {\n  width: 100%;\n  height: 58px;\n  margin-top: 6px;\n  grid-column: 1 \/ -1;\n}\n\n.nstpv-skeleton__stats {\n  display: grid;\n  grid-template-columns: repeat(2, minmax(0, 1fr));\n  gap: 12px;\n  margin-top: 4px;\n  width: 100%;\n}\n\n.nstpv-skeleton__stat {\n  height: 60px;\n  border-radius: 12px;\n}\n\n.nstpv-skeleton__head {\n  display: flex;\n  justify-content: space-between;\n  gap: 12px;\n  margin: 22px 0 14px;\n  align-items: center;\n}\n\n.nstpv-skeleton__head-line {\n  width: min(130px, 42%);\n  height: 20px;\n}\n\n.nstpv-skeleton__head-btn {\n  width: min(144px, 42%);\n  height: 42px;\n  border-radius: 12px;\n}\n\n.nstpv-skeleton__grid {\n  display: grid;\n  grid-template-columns: 1fr;\n  gap: 14px;\n  width: 100%;\n}\n\n.nstpv-skeleton__card {\n  border-radius: 16px;\n  overflow: hidden;\n  border: 1px solid var(--nstpv-line);\n  background: rgba(255, 255, 255, 0.04);\n  min-width: 0;\n}\n\n.nstpv-skeleton__thumb {\n  aspect-ratio: 9 \/ 14;\n  border-radius: 0;\n}\n\n.nstpv-skeleton__foot {\n  height: 66px;\n  margin: 12px;\n  border-radius: 10px;\n}\n\n.nstpv .nstpv-result {\n  display: block;\n  margin: 0;\n  width: 100%;\n  max-width: 100%;\n  min-width: 0;\n}\n\n.nstpv-panel {\n  background: linear-gradient(180deg, rgba(15, 19, 31, 0.92), rgba(12, 16, 28, 0.84));\n  border: 1px solid rgba(255, 255, 255, 0.1);\n  border-radius: var(--nstpv-radius);\n  box-shadow: var(--nstpv-glow);\n  padding: var(--nstpv-pad);\n  backdrop-filter: blur(14px);\n  width: 100%;\n  max-width: 100%;\n  min-width: 0;\n}\n\n.nstpv-profile {\n  display: grid;\n  grid-template-columns: 1fr;\n  gap: 16px;\n  align-items: center;\n  justify-items: center;\n  padding: calc(var(--nstpv-pad) + 4px);\n  border-radius: calc(var(--nstpv-radius) - 4px);\n  background:\n    linear-gradient(160deg, rgba(94, 231, 223, 0.1), rgba(255, 47, 117, 0.12)),\n    linear-gradient(180deg, rgba(255, 255, 255, 0.05), rgba(255, 255, 255, 0.02));\n  border: 1px solid rgba(255, 255, 255, 0.08);\n  width: 100%;\n  min-width: 0;\n  text-align: center;\n  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.04);\n}\n\n.nstpv-avatar {\n  position: relative;\n  width: var(--nstpv-avatar);\n  height: var(--nstpv-avatar);\n}\n\n.nstpv-avatar__ring {\n  width: 100%;\n  height: 100%;\n  border-radius: 50%;\n  padding: 4px;\n  background: var(--nstpv-gradient);\n  box-shadow: 0 16px 32px rgba(255, 47, 117, 0.25), 0 0 0 1px rgba(94, 231, 223, 0.18);\n}\n\n.nstpv .nstpv-avatar__img {\n  width: 100% !important;\n  height: 100% !important;\n  max-width: none;\n  object-fit: cover;\n  border-radius: 50%;\n  background: #12141f;\n  cursor: pointer;\n  border: 2px solid rgba(12, 16, 28, 0.95);\n}\n\n.nstpv .nstpv-avatar__zoom {\n  position: absolute;\n  right: -3px;\n  bottom: -3px;\n  width: 40px;\n  height: 40px;\n  min-width: 40px;\n  border-radius: 50%;\n  border: 1px solid rgba(255, 255, 255, 0.12) !important;\n  background: rgba(12, 16, 28, 0.88) !important;\n  color: #fff !important;\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n  cursor: pointer;\n  box-shadow: 0 10px 24px rgba(0, 0, 0, 0.28);\n  appearance: none;\n  -webkit-appearance: none;\n  touch-action: manipulation;\n  z-index: 2;\n  backdrop-filter: blur(10px);\n}\n\n.nstpv-meta {\n  display: flex;\n  flex-direction: column;\n  gap: 8px;\n  min-width: 0;\n  align-items: center;\n  width: 100%;\n}\n\n.nstpv .nstpv-meta__name {\n  font-size: clamp(1.2rem, 3.5vw, 1.55rem);\n  font-weight: 800;\n  color: var(--nstpv-ink);\n  line-height: 1.22;\n  overflow-wrap: anywhere;\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n  gap: 8px;\n  flex-wrap: wrap;\n}\n\n.nstpv .nstpv-meta__verified {\n  display: inline-flex;\n  align-items: center;\n  color: var(--nstpv-cool);\n  font-size: 0.88em;\n  text-shadow: 0 0 14px rgba(94, 231, 223, 0.24);\n}\n\n.nstpv .nstpv-meta__verified[hidden] {\n  display: none !important;\n}\n\n.nstpv .nstpv-meta__handle {\n  font-size: 0.96rem;\n  font-weight: 700;\n  color: #90fff7;\n  line-height: 1.3;\n  overflow-wrap: anywhere;\n}\n\n.nstpv .nstpv-stats {\n  display: grid;\n  grid-template-columns: repeat(2, minmax(0, 1fr));\n  gap: 12px;\n  width: 100%;\n  margin-top: 10px;\n}\n\n.nstpv .nstpv-stat {\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  gap: 4px;\n  min-width: 0;\n  padding: 14px 10px;\n  border-radius: 16px;\n  background: linear-gradient(180deg, rgba(255, 255, 255, 0.08), rgba(255, 255, 255, 0.04));\n  border: 1px solid rgba(255, 255, 255, 0.08);\n  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.04);\n  transition: transform 0.22s ease, border-color 0.22s ease, background 0.22s ease;\n}\n\n.nstpv .nstpv-stat:hover {\n  transform: translateY(-2px);\n  border-color: rgba(94, 231, 223, 0.2);\n  background: linear-gradient(180deg, rgba(255, 255, 255, 0.1), rgba(255, 255, 255, 0.05));\n}\n\n.nstpv .nstpv-stat__value {\n  font-size: clamp(1rem, 3.2vw, 1.18rem);\n  font-weight: 800;\n  color: #9bfff8;\n  line-height: 1.2;\n}\n\n.nstpv .nstpv-stat__label {\n  font-size: 0.75rem;\n  color: var(--nstpv-dim);\n  text-transform: capitalize;\n  line-height: 1.2;\n  letter-spacing: 0.01em;\n}\n\n.nstpv .nstpv-bio {\n  grid-column: 1 \/ -1;\n  margin: 0;\n  padding: 14px 0 0;\n  border-top: 1px solid rgba(255, 255, 255, 0.1);\n  text-align: center;\n  color: #e7eefb;\n  font-size: clamp(0.88rem, 3cqi, 0.96rem);\n  line-height: 1.65;\n  min-width: 0;\n  overflow-wrap: anywhere;\n  white-space: pre-line;\n  max-width: 72ch;\n}\n\n.nstpv-content.is-placeholder .nstpv-avatar__zoom {\n  opacity: 0.55;\n  pointer-events: none;\n}\n\n.nstpv-content.is-placeholder .nstpv-card__media,\n.nstpv-content.is-placeholder .nstpv-card__dl,\n.nstpv-content.is-placeholder .nstpv-card__play,\n.nstpv-content.is-placeholder .nstpv-videos__dlall {\n  pointer-events: none;\n}\n\n.nstpv-content.is-placeholder .nstpv-card__dl,\n.nstpv-content.is-placeholder .nstpv-videos__dlall {\n  opacity: 0.65;\n}\n\n.nstpv-content.is-placeholder .nstpv-bio {\n  color: var(--nstpv-dim);\n}\n\n.nstpv-card__media--ghost {\n  background: linear-gradient(145deg, #28101a, #ff2f75 56%, #5ee7df);\n}\n\n.nstpv-card__media--ghost-b {\n  background: linear-gradient(145deg, #0e1f24, #5ee7df 56%, #ff2f75);\n}\n\n.nstpv-card__media--ghost-c {\n  background: linear-gradient(145deg, #12141f, #d91461 45%, #7fe8e7);\n}\n\n.nstpv-card__media--ghost .nstpv-card__img {\n  display: none !important;\n}\n\n.nstpv-videos {\n  margin-top: 18px;\n  width: 100%;\n  max-width: 100%;\n  min-width: 0;\n}\n\n.nstpv-videos__head {\n  display: flex;\n  flex-wrap: wrap;\n  align-items: center;\n  justify-content: space-between;\n  gap: 12px;\n  margin-bottom: 14px;\n  width: 100%;\n  min-width: 0;\n}\n\n.nstpv .nstpv-videos__title {\n  display: inline-flex;\n  align-items: center;\n  gap: 10px;\n  font-size: 1.08rem;\n  font-weight: 800;\n  color: var(--nstpv-ink);\n  line-height: 1.3;\n}\n\n.nstpv .nstpv-videos__title i {\n  color: var(--nstpv-accent);\n}\n\n.nstpv .nstpv-videos__count {\n  font-size: 0.82rem;\n  font-weight: 700;\n  color: var(--nstpv-dim);\n  width: 100%;\n  order: 3;\n}\n\n.nstpv .nstpv-videos__dlall {\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n  gap: 7px;\n  height: 46px;\n  min-height: 46px;\n  padding: 0 16px !important;\n  border-radius: 14px;\n  border: 0 !important;\n  background: linear-gradient(135deg, rgba(94, 231, 223, 0.98), rgba(34, 199, 221, 0.95)) !important;\n  color: #071018 !important;\n  font-family: var(--nstpv-font);\n  font-size: 0.86rem !important;\n  font-weight: 800 !important;\n  cursor: pointer;\n  appearance: none;\n  -webkit-appearance: none;\n  touch-action: manipulation;\n  white-space: nowrap;\n  position: relative;\n  overflow: hidden;\n  box-shadow: 0 14px 28px rgba(34, 199, 221, 0.22);\n}\n\n.nstpv-more {\n  appearance: none;\n  width: 100%;\n  margin-top: 14px;\n  border: 1px solid rgba(94, 231, 223, 0.28);\n  background: linear-gradient(180deg, rgba(94, 231, 223, 0.14), rgba(94, 231, 223, 0.09));\n  color: #f6feff;\n  border-radius: 14px;\n  padding: 13px 16px;\n  font-weight: 800;\n  font-size: 0.9rem;\n  cursor: pointer;\n  display: none;\n  gap: 8px;\n  align-items: center;\n  justify-content: center;\n  position: relative;\n  overflow: hidden;\n  transition: transform 0.22s ease, box-shadow 0.22s ease, background 0.22s ease;\n  box-shadow: 0 12px 26px rgba(0, 0, 0, 0.16);\n}\n\n.nstpv-more.is-visible {\n  display: inline-flex;\n}\n\n.nstpv-more:hover {\n  background: linear-gradient(180deg, rgba(94, 231, 223, 0.2), rgba(94, 231, 223, 0.12));\n  box-shadow: 0 16px 32px rgba(0, 0, 0, 0.22);\n}\n\n.nstpv-more:disabled {\n  opacity: 0.55;\n  cursor: not-allowed;\n}\n\n.nstpv-content.is-placeholder .nstpv-more {\n  display: none !important;\n}\n\n.nstpv .nstpv-videos__dlall:disabled {\n  opacity: 0.55;\n  cursor: not-allowed;\n}\n\n.nstpv-grid {\n  display: grid;\n  grid-template-columns: 1fr;\n  gap: clamp(12px, 2.5vw, 16px);\n  margin: 0;\n  width: 100%;\n  min-width: 0;\n}\n\n.nstpv-card {\n  display: flex;\n  flex-direction: column;\n  border-radius: 18px;\n  overflow: hidden;\n  background: linear-gradient(180deg, rgba(20, 25, 40, 0.9), rgba(14, 18, 30, 0.92));\n  border: 1px solid rgba(255, 255, 255, 0.1);\n  box-shadow: 0 12px 32px rgba(0, 0, 0, 0.22);\n  transition: transform 0.28s ease, box-shadow 0.28s ease, border-color 0.28s ease;\n  min-width: 0;\n  max-width: 100%;\n  width: 100%;\n}\n\n.nstpv-card:hover {\n  transform: translateY(-5px);\n  box-shadow: 0 20px 42px rgba(0, 0, 0, 0.3);\n  border-color: rgba(94, 231, 223, 0.18);\n}\n\n.nstpv-card__media {\n  position: relative;\n  aspect-ratio: 9 \/ 14;\n  overflow: hidden;\n  background: #12141f;\n  flex: 0 0 auto;\n}\n\n.nstpv-card__media::after {\n  content: \"\";\n  position: absolute;\n  inset: 0;\n  background: linear-gradient(180deg, transparent 42%, rgba(7, 11, 20, 0.18) 100%);\n  pointer-events: none;\n}\n\n.nstpv .nstpv-card__img {\n  width: 100% !important;\n  height: 100% !important;\n  max-width: none;\n  object-fit: cover;\n  transition: transform 0.45s ease;\n}\n\n.nstpv-card:hover .nstpv-card__img {\n  transform: scale(1.05);\n}\n\n.nstpv .nstpv-card__dl {\n  position: absolute;\n  top: 10px;\n  right: 10px;\n  z-index: 2;\n  width: 40px;\n  height: 40px;\n  min-width: 40px;\n  border-radius: 12px;\n  border: 1px solid rgba(255, 255, 255, 0.12) !important;\n  background: rgba(12, 16, 28, 0.72) !important;\n  color: #fff !important;\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n  cursor: pointer;\n  appearance: none;\n  -webkit-appearance: none;\n  touch-action: manipulation;\n  backdrop-filter: blur(10px);\n  box-shadow: 0 12px 24px rgba(0, 0, 0, 0.22);\n}\n\n.nstpv .nstpv-card__play {\n  position: absolute;\n  inset: 0;\n  z-index: 1;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  background: linear-gradient(180deg, rgba(10, 10, 15, 0.08), rgba(10, 10, 15, 0.4));\n  border: 0 !important;\n  cursor: pointer;\n  color: #fff;\n  appearance: none;\n  -webkit-appearance: none;\n  touch-action: manipulation;\n  transition: background 0.25s ease;\n}\n\n.nstpv .nstpv-card__play:hover {\n  background: linear-gradient(180deg, rgba(10, 10, 15, 0.04), rgba(10, 10, 15, 0.34));\n}\n\n.nstpv .nstpv-card__play span {\n  width: 62px;\n  height: 62px;\n  border-radius: 50%;\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n  background: linear-gradient(180deg, rgba(12, 16, 28, 0.82), rgba(12, 16, 28, 0.64));\n  box-shadow: 0 12px 28px rgba(0, 0, 0, 0.32);\n  font-size: 1.15rem;\n  border: 1px solid rgba(255, 255, 255, 0.12);\n  backdrop-filter: blur(10px);\n}\n\n.nstpv-card__body {\n  display: flex;\n  flex-direction: column;\n  gap: 10px;\n  padding: 14px 14px 15px;\n  min-width: 0;\n}\n\n.nstpv .nstpv-card__title {\n  font-size: 0.9rem;\n  font-weight: 700;\n  color: var(--nstpv-ink);\n  line-height: 1.45;\n  display: -webkit-box;\n  -webkit-line-clamp: 2;\n  line-clamp: 2;\n  -webkit-box-orient: vertical;\n  overflow: hidden;\n  overflow-wrap: anywhere;\n}\n\n.nstpv-card__metrics {\n  display: flex;\n  flex-wrap: wrap;\n  gap: 10px 14px;\n  color: var(--nstpv-muted);\n  font-size: 0.78rem;\n  font-weight: 700;\n}\n\n.nstpv-card__metrics span {\n  display: inline-flex;\n  align-items: center;\n  gap: 6px;\n}\n\n.nstpv-card__metrics i {\n  color: var(--nstpv-accent);\n}\n\n.nstpv-card__metrics span:nth-child(3) i {\n  color: var(--nstpv-cool);\n}\n\n.nstpv .nstpv-empty {\n  text-align: center;\n  padding: 32px 18px;\n  color: var(--nstpv-muted);\n  background: linear-gradient(180deg, rgba(255, 255, 255, 0.04), rgba(255, 255, 255, 0.02));\n  border: 1px dashed rgba(255, 255, 255, 0.12);\n  border-radius: 18px;\n}\n\n.nstpv .nstpv-empty i {\n  display: block !important;\n  font-size: 2.2rem !important;\n  width: auto;\n  margin: 0 auto 14px;\n  opacity: 0.9;\n  line-height: 1 !important;\n  color: #fff;\n}\n\n.nstpv-modal {\n  position: fixed;\n  inset: 0;\n  z-index: 99999;\n  display: none;\n  align-items: center;\n  justify-content: center;\n  padding: 18px;\n  background: rgba(6, 9, 16, 0.84);\n  backdrop-filter: blur(10px);\n}\n\n.nstpv-modal.is-open {\n  display: flex;\n}\n\n.nstpv-modal__dialog {\n  position: relative;\n  width: min(760px, 100%);\n  max-height: min(92vh, 900px);\n  overflow: auto;\n  background: linear-gradient(180deg, rgba(15, 19, 31, 0.96), rgba(10, 14, 24, 0.92));\n  border: 1px solid rgba(255, 255, 255, 0.1);\n  border-radius: 22px;\n  box-shadow: var(--nstpv-shadow);\n  padding: 16px;\n  min-width: 0;\n}\n\n.nstpv-modal__dialog--avatar {\n  width: min(440px, 100%);\n}\n\n.nstpv .nstpv-modal__close {\n  position: absolute;\n  top: 12px;\n  right: 12px;\n  z-index: 3;\n  width: 42px;\n  height: 42px;\n  min-width: 42px;\n  border-radius: 50%;\n  border: 1px solid rgba(255, 255, 255, 0.12) !important;\n  background: rgba(12, 16, 28, 0.8) !important;\n  color: #fff !important;\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n  cursor: pointer;\n  appearance: none;\n  -webkit-appearance: none;\n  touch-action: manipulation;\n  backdrop-filter: blur(10px);\n  box-shadow: 0 12px 24px rgba(0, 0, 0, 0.22);\n}\n\n.nstpv-modal__stage {\n  position: relative;\n  border-radius: 16px;\n  overflow: hidden;\n  background: #0a0a0f;\n  min-height: min(52vh, 420px);\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.05);\n}\n\n.nstpv .nstpv-modal__media {\n  width: 100% !important;\n  max-width: 100%;\n  height: auto !important;\n  max-height: min(70vh, 640px);\n  min-height: min(42vh, 360px);\n  object-fit: contain;\n  display: block;\n  margin: 0 auto;\n  background: #000;\n}\n\n.nstpv .nstpv-modal__media.is-hidden {\n  display: none !important;\n}\n\n.nstpv-modal__stage-note {\n  position: absolute;\n  left: 12px;\n  right: 12px;\n  bottom: 12px;\n  display: none;\n  align-items: center;\n  justify-content: center;\n  gap: 8px;\n  padding: 9px 14px;\n  text-align: center;\n  color: #eef5ff;\n  font-size: 0.82rem;\n  background: rgba(12, 16, 28, 0.76);\n  border: 1px solid rgba(255, 255, 255, 0.1);\n  border-radius: 999px;\n  z-index: 2;\n  pointer-events: none;\n  width: auto;\n  max-width: calc(100% - 24px);\n  margin: 0 auto;\n  backdrop-filter: blur(10px);\n}\n\n.nstpv-modal__stage-note.is-visible {\n  display: inline-flex;\n}\n\n.nstpv-modal__bar {\n  display: flex;\n  flex-wrap: wrap;\n  align-items: center;\n  justify-content: space-between;\n  gap: 12px;\n  margin-top: 14px;\n  min-width: 0;\n}\n\n.nstpv .nstpv-modal__caption {\n  flex: 1 1 160px;\n  font-size: 0.92rem;\n  font-weight: 700;\n  color: var(--nstpv-ink);\n  line-height: 1.45;\n  overflow-wrap: anywhere;\n  min-width: 0;\n}\n\n.nstpv-modal__actions {\n  display: flex;\n  flex-wrap: wrap;\n  gap: 8px;\n}\n\n.nstpv .nstpv-modal__action {\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n  gap: 7px;\n  height: 46px;\n  min-height: 46px;\n  padding: 0 16px !important;\n  border-radius: 14px;\n  border: 0 !important;\n  font-family: var(--nstpv-font);\n  font-size: 0.86rem !important;\n  font-weight: 800 !important;\n  cursor: pointer;\n  appearance: none;\n  -webkit-appearance: none;\n  touch-action: manipulation;\n  position: relative;\n  overflow: hidden;\n  transition: transform 0.22s ease, box-shadow 0.22s ease, filter 0.22s ease;\n}\n\n.nstpv .nstpv-modal__action--play {\n  background: linear-gradient(180deg, rgba(255, 255, 255, 0.1), rgba(255, 255, 255, 0.05)) !important;\n  color: #fff !important;\n  border: 1px solid rgba(255, 255, 255, 0.12) !important;\n  box-shadow: 0 12px 24px rgba(0, 0, 0, 0.16);\n}\n\n.nstpv .nstpv-modal__action--download {\n  background: var(--nstpv-gradient) !important;\n  color: #ffffff !important;\n  box-shadow: 0 14px 28px rgba(255, 47, 117, 0.24);\n}\n\n.nstpv .nstpv-modal__action.is-hidden {\n  display: none !important;\n}\n\n.nstpv-dlprog {\n  position: fixed;\n  right: 16px;\n  bottom: 16px;\n  z-index: 100000;\n  width: min(340px, calc(100vw - 24px));\n  display: none;\n  padding: 16px;\n  border-radius: 18px;\n  background: linear-gradient(180deg, rgba(16, 19, 31, 0.98), rgba(12, 16, 28, 0.96));\n  border: 1px solid rgba(255, 255, 255, 0.1);\n  box-shadow: var(--nstpv-shadow), 0 0 24px rgba(255, 47, 117, 0.16);\n  color: var(--nstpv-ink);\n  backdrop-filter: blur(14px);\n}\n\n.nstpv-dlprog.is-open {\n  display: block;\n}\n\n.nstpv-dlprog.is-success {\n  border-color: rgba(73, 215, 165, 0.4);\n  box-shadow: var(--nstpv-shadow), 0 0 24px rgba(73, 215, 165, 0.12);\n}\n\n.nstpv-dlprog.is-error {\n  border-color: rgba(255, 107, 127, 0.45);\n}\n\n.nstpv-dlprog__head {\n  display: flex;\n  justify-content: space-between;\n  align-items: flex-start;\n  gap: 10px;\n  margin-bottom: 10px;\n}\n\n.nstpv-dlprog__title {\n  display: inline-flex;\n  align-items: center;\n  gap: 8px;\n  font-size: 0.9rem;\n  font-weight: 800;\n  min-width: 0;\n}\n\n.nstpv-dlprog__title i {\n  color: var(--nstpv-accent);\n}\n\n.nstpv-dlprog__name {\n  overflow-wrap: anywhere;\n  min-width: 0;\n}\n\n.nstpv-dlprog__pct {\n  font-size: 0.82rem;\n  font-weight: 800;\n  color: var(--nstpv-cool);\n  white-space: nowrap;\n}\n\n.nstpv-dlprog__track {\n  height: 9px;\n  border-radius: 999px;\n  background: rgba(255, 255, 255, 0.09);\n  overflow: hidden;\n  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.2);\n}\n\n.nstpv-dlprog__fill {\n  height: 100%;\n  width: 0%;\n  border-radius: 999px;\n  background: var(--nstpv-gradient);\n  transition: width 0.2s ease;\n}\n\n.nstpv-dlprog__meta {\n  display: flex;\n  justify-content: space-between;\n  gap: 8px;\n  margin-top: 9px;\n  font-size: 0.76rem;\n  color: var(--nstpv-muted);\n}\n\n.nstpv .nstpv-dlprog__stop {\n  margin-top: 12px;\n  width: 100%;\n  height: 42px;\n  min-height: 42px;\n  border-radius: 14px;\n  border: 1px solid rgba(255, 255, 255, 0.12) !important;\n  background: linear-gradient(180deg, rgba(255, 255, 255, 0.09), rgba(255, 255, 255, 0.05)) !important;\n  color: #fff !important;\n  font-family: var(--nstpv-font);\n  font-weight: 800 !important;\n  font-size: 0.83rem !important;\n  cursor: pointer;\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n  gap: 6px;\n  appearance: none;\n  -webkit-appearance: none;\n  touch-action: manipulation;\n  position: relative;\n  overflow: hidden;\n}\n\n\/* Added required selectors for fixed HTML *\/\n.nstpv .xrespond-ts-widget {\n  width: 100%;\n  min-width: 0;\n  padding: 12px 14px;\n  border-radius: 14px;\n  background: linear-gradient(180deg, rgba(255, 255, 255, 0.06), rgba(255, 255, 255, 0.03));\n  border: 1px solid rgba(255, 255, 255, 0.1);\n  color: var(--nstpv-muted);\n  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.04);\n}\n\n.nstpv .xrespond-ts-label {\n  display: inline-flex;\n  align-items: center;\n  gap: 8px;\n  font-size: 0.82rem;\n  font-weight: 700;\n  color: #e7edf9;\n  margin-bottom: 8px;\n}\n\n.nstpv .fa-tiktok,\n.nstpv .fa-play,\n.nstpv .fa-expand,\n.nstpv .fa-download,\n.nstpv .fa-cloud-arrow-down,\n.nstpv .fa-paste,\n.nstpv .fa-eye,\n.nstpv .fa-film,\n.nstpv .fa-circle-check,\n.nstpv .fa-rotate-left,\n.nstpv .fa-angles-down,\n.nstpv .fa-xmark {\n  vertical-align: middle;\n}\n\n\/* ResizeObserver helpers *\/\n.nstpv.nstpv--narrow .nstpv-grid,\n.nstpv.nstpv--narrow .nstpv-skeleton__grid {\n  grid-template-columns: 1fr !important;\n}\n\n@media (max-width: 359px) {\n  .nstpv {\n    --nstpv-avatar: 84px;\n    --nstpv-pad: 10px;\n    --nstpv-gap: 12px;\n  }\n\n  .nstpv .nstpv-hero {\n    padding: 18px 12px 14px;\n  }\n\n  .nstpv .nstpv-hero__title {\n    font-size: 1.2rem;\n  }\n\n  .nstpv .nstpv-btn {\n    font-size: 0.82rem !important;\n  }\n}\n\n.nstpv.nstpv--roomy .nstpv-grid,\n.nstpv.nstpv--roomy .nstpv-skeleton__grid {\n  grid-template-columns: repeat(4, minmax(0, 1fr)) !important;\n}\n\n@media (max-height: 480px) and (orientation: landscape) {\n  .nstpv .nstpv-hero__lead {\n    display: none;\n  }\n}\n\n@media (prefers-reduced-motion: reduce) {\n  .nstpv *,\n  .nstpv *::before,\n  .nstpv *::after {\n    animation-duration: 0.01ms !important;\n    animation-iteration-count: 1 !important;\n    transition-duration: 0.01ms !important;\n  }\n\n  .nstpv .nstpv-sk {\n    animation: none;\n    background: rgba(255, 255, 255, 0.1);\n  }\n}\n\n\/* ------------------------------------------------------------------\n Responsive \u2014 same pattern as Facebook Friends \/ YouTube Channel\n JS classes (ResizeObserver on tool width):\n   --narrow  < 480\n   --compact < 768\n   --desktop >= 768\n Grid columns set inline via JS (beats WP theme CSS).\n------------------------------------------------------------------- *\/\n.nstpv {\n  --nstpv-cols: 1;\n}\n\n.nstpv-search__row {\n  display: flex;\n  flex-direction: column;\n  gap: 10px;\n  width: 100%;\n  min-width: 0;\n}\n\n.nstpv-search__field {\n  width: 100% !important;\n  max-width: 100% !important;\n  min-width: 0 !important;\n  flex: 1 1 auto !important;\n  font-size: 16px !important;\n}\n\n.nstpv-search__actions {\n  display: flex;\n  flex-wrap: wrap;\n  gap: 10px;\n  width: 100%;\n}\n\n.nstpv-btn {\n  flex: 1 1 calc(50% - 5px);\n  justify-content: center;\n  min-height: 46px;\n}\n\n.nstpv-grid,\n.nstpv-skeleton__grid {\n  display: grid;\n  grid-template-columns: repeat(var(--nstpv-cols, 1), minmax(0, 1fr));\n  gap: clamp(12px, 2.5vw, 16px);\n  width: 100%;\n  min-width: 0;\n}\n\n.nstpv-stats {\n  display: grid;\n  grid-template-columns: repeat(2, minmax(0, 1fr));\n  gap: 10px;\n}\n\n.nstpv.nstpv--desktop .nstpv-stats {\n  grid-template-columns: repeat(4, minmax(0, 1fr));\n}\n\n.nstpv.nstpv--compact .nstpv-videos__head {\n  flex-direction: column !important;\n  align-items: stretch !important;\n}\n\n.nstpv.nstpv--compact .nstpv-videos__dlall {\n  width: 100% !important;\n  justify-content: center !important;\n}\n\n@media (min-width: 768px) {\n  .nstpv:not(.nstpv--compact) .nstpv-search__row {\n    flex-direction: row;\n    flex-wrap: wrap;\n    align-items: stretch;\n  }\n\n  .nstpv:not(.nstpv--compact) .nstpv-search__field {\n    flex: 1 1 220px !important;\n    width: auto !important;\n  }\n\n  .nstpv:not(.nstpv--compact) .nstpv-search__actions {\n    width: auto;\n    flex: 0 0 auto;\n    flex-wrap: nowrap;\n  }\n\n  .nstpv:not(.nstpv--compact) .nstpv-btn {\n    flex: 0 0 auto;\n  }\n}\n\n\/* WordPress \/ Live Server narrow container (set by ResizeObserver) *\/\n.nstpv.nstpv--compact .nstpv-search__row {\n  flex-direction: column !important;\n}\n\n.nstpv.nstpv--compact .nstpv-search__actions {\n  width: 100% !important;\n  display: flex !important;\n  flex-wrap: wrap !important;\n}\n\n.nstpv.nstpv--compact .nstpv-btn {\n  flex: 1 1 calc(50% - 5px) !important;\n}\n\n.nstpv.nstpv--compact .nstpv-search__field {\n  width: 100% !important;\n  flex: 1 1 100% !important;\n}\n\n.nstpv.nstpv--narrow .nstpv-btn {\n  flex: 1 1 100% !important;\n}\n\n.nstpv.nstpv--narrow .nstpv-search__actions {\n  flex-direction: column !important;\n}\n\n.nstpv.nstpv--narrow .nstpv-hero__title {\n  font-size: 1.15rem;\n}\n\n.nstpv.nstpv--narrow .nstpv-videos__count {\n  order: initial;\n}\n\n.nstpv.nstpv--narrow .nstpv-modal__actions,\n.nstpv.nstpv--compact .nstpv-modal__actions {\n  width: 100%;\n}\n\n.nstpv.nstpv--narrow .nstpv-modal__action,\n.nstpv.nstpv--compact .nstpv-modal__action {\n  flex: 1 1 100%;\n}\n\n@media (hover: none) {\n  .nstpv .nstpv-btn:hover,\n  .nstpv-card:hover,\n  .nstpv .nstpv-videos__dlall:hover,\n  .nstpv .nstpv-modal__action:hover,\n  .nstpv-more:hover,\n  .nstpv .nstpv-avatar__zoom:hover,\n  .nstpv .nstpv-card__dl:hover,\n  .nstpv .nstpv-modal__close:hover {\n    transform: none;\n  }\n\n  .nstpv-card:hover .nstpv-card__img {\n    transform: none;\n  }\n}\n\n\/* Turnstile host: keep hidden in-flow; floating panel styles come from turnstile-handler.js *\/\n.nstpv #xrespond-tools-turnstile-host {\n  display: none;\n}\n\n.nstpv #xrespond-tools-turnstile-host.is-visible {\n  display: block !important;\n}\n\n\/* Ensure floating Turnstile panel (moved to body) is never clipped\/hidden by tool CSS *\/\nbody > #xrespond-tools-turnstile-host.is-visible {\n  display: block !important;\n  position: fixed !important;\n  z-index: 2147483000 !important;\n  visibility: visible !important;\n  opacity: 1 !important;\n  pointer-events: auto !important;\n}\n\n\/* Search controls: one row on large screens, wrap on narrow *\/\n.nstpv .nstpv-search,\n.nstpv .nstpv-search .nstpv-search__row,\n.nstpv .nstpv-search .nstpv-search__actions {\n  width: 100% !important;\n  max-width: 100% !important;\n  min-width: 0 !important;\n  box-sizing: border-box !important;\n}\n\n.nstpv .nstpv-search .nstpv-search__row {\n  display: flex !important;\n  flex-direction: row !important;\n  flex-wrap: nowrap !important;\n  align-items: stretch !important;\n  gap: 10px !important;\n}\n\n.nstpv .nstpv-search .nstpv-search__field,\n.nstpv .nstpv-search .nstpv-search__row > .nstpv-search__field {\n  flex: 1 1 auto !important;\n  width: auto !important;\n  max-width: none !important;\n  min-width: 0 !important;\n}\n\n.nstpv .nstpv-search .nstpv-search__actions,\n.nstpv .nstpv-search .nstpv-search__row > .nstpv-search__actions {\n  display: flex !important;\n  flex: 0 0 auto !important;\n  flex-direction: row !important;\n  width: auto !important;\n  max-width: none !important;\n  min-width: 0 !important;\n  flex-wrap: nowrap !important;\n  gap: 10px !important;\n}\n\n.nstpv .nstpv-search .nstpv-search__row > .nstpv-btn,\n.nstpv .nstpv-search .nstpv-search__actions .nstpv-btn,\n.nstpv .nstpv-search .nstpv-search__row .nstpv-search__actions .nstpv-btn {\n  flex: 0 0 auto !important;\n  width: auto !important;\n  max-width: none !important;\n  min-width: 118px !important;\n}\n\n.nstpv.nstpv--compact .nstpv-search .nstpv-search__row,\n.nstpv.nstpv--narrow .nstpv-search .nstpv-search__row {\n  flex-wrap: wrap !important;\n}\n\n.nstpv.nstpv--compact .nstpv-search .nstpv-search__field,\n.nstpv.nstpv--narrow .nstpv-search .nstpv-search__field,\n.nstpv.nstpv--compact .nstpv-search .nstpv-search__row > .nstpv-search__field,\n.nstpv.nstpv--narrow .nstpv-search .nstpv-search__row > .nstpv-search__field {\n  flex: 1 1 100% !important;\n  width: 100% !important;\n  max-width: 100% !important;\n}\n\n.nstpv.nstpv--compact .nstpv-search .nstpv-search__actions,\n.nstpv.nstpv--narrow .nstpv-search .nstpv-search__actions,\n.nstpv.nstpv--compact .nstpv-search .nstpv-search__row > .nstpv-search__actions,\n.nstpv.nstpv--narrow .nstpv-search .nstpv-search__row > .nstpv-search__actions {\n  flex: 1 1 100% !important;\n  width: 100% !important;\n  max-width: 100% !important;\n}\n\n.nstpv.nstpv--compact .nstpv-search .nstpv-search__row > .nstpv-btn,\n.nstpv.nstpv--narrow .nstpv-search .nstpv-search__row > .nstpv-btn,\n.nstpv.nstpv--compact .nstpv-search .nstpv-search__actions .nstpv-btn,\n.nstpv.nstpv--narrow .nstpv-search .nstpv-search__actions .nstpv-btn,\n.nstpv.nstpv--compact .nstpv-search .nstpv-search__row .nstpv-search__actions .nstpv-btn,\n.nstpv.nstpv--narrow .nstpv-search .nstpv-search__row .nstpv-search__actions .nstpv-btn {\n  flex: 1 1 calc(50% - 5px) !important;\n  min-width: 0 !important;\n  max-width: 100% !important;\n}\n\n@media (max-width: 720px) {\n  .nstpv {\n    min-height: auto;\n    padding-top: 12px;\n  }\n\n  .nstpv .nstpv-search .nstpv-search__row {\n    flex-wrap: wrap !important;\n  }\n\n  .nstpv .nstpv-search .nstpv-search__field,\n  .nstpv .nstpv-search .nstpv-search__row > .nstpv-search__field {\n    flex: 1 1 100% !important;\n    width: 100% !important;\n    max-width: 100% !important;\n  }\n\n  .nstpv .nstpv-search .nstpv-search__actions,\n  .nstpv .nstpv-search .nstpv-search__row > .nstpv-search__actions {\n    flex: 1 1 100% !important;\n    width: 100% !important;\n    max-width: 100% !important;\n  }\n\n  .nstpv .nstpv-search .nstpv-search__row > .nstpv-btn,\n  .nstpv .nstpv-search .nstpv-search__actions .nstpv-btn,\n  .nstpv .nstpv-search .nstpv-search__row .nstpv-search__actions .nstpv-btn {\n    flex: 1 1 calc(50% - 5px) !important;\n    min-width: 0 !important;\n    max-width: 100% !important;\n  }\n\n  .nstpv-profile,\n  .nstpv-skeleton__profile {\n    padding: 16px 14px;\n  }\n\n  .nstpv-modal {\n    padding: 12px;\n  }\n\n  .nstpv-modal__dialog {\n    border-radius: 18px;\n    padding: 14px;\n  }\n\n  .nstpv-dlprog {\n    right: 12px;\n    bottom: 12px;\n    width: min(340px, calc(100vw - 20px));\n  }\n}\n\n@media (max-width: 560px) {\n  .nstpv-hero__heading {\n    gap: 12px;\n  }\n\n  .nstpv-hero__brand {\n    width: 48px;\n    height: 48px;\n    min-width: 48px;\n  }\n\n  .nstpv .nstpv-videos__dlall,\n  .nstpv .nstpv-modal__action,\n  .nstpv .nstpv-btn,\n  .nstpv-more {\n    width: 100%;\n  }\n\n  .nstpv .nstpv-card__play span {\n    width: 58px;\n    height: 58px;\n  }\n\n  .nstpv-card__body {\n    padding: 13px;\n  }\n}\n<\/style>\n<link rel=\"stylesheet\" href=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/font-awesome\/6.5.1\/css\/all.min.css\">\n\n<div class=\"nstpv\" id=\"nstpv-root\" data-nstpv-ready=\"0\">\n  <div class=\"nstpv-shell\">\n    <section class=\"nstpv-hero\" aria-labelledby=\"nstpv-title\">\n      <div class=\"nstpv-hero__heading\">\n        <div class=\"nstpv-hero__brand\" aria-hidden=\"true\">\n          <i class=\"fa-brands fa-tiktok\"><\/i>\n        <\/div>\n<h1 class=\"nstpv-hero__title\" id=\"nstpv-title\">Third Party Tiktok Viewer<\/h1>\n      <\/div>\n<p class=\"nstpv-hero__lead\">\n        Preview public TikTok profiles with stats and recent videos.\n      <\/p>\n<div class=\"nstpv-search\">\n        <label class=\"nstpv-search__label\" for=\"nstpv-input\">Enter TikTok username or profile URL<\/label>\n        <div id=\"xrespond-tools-turnstile-host\" aria-hidden=\"true\">\n          <span class=\"xrespond-ts-label\">Please verify you are human to continue:<\/span>\n          <div class=\"xrespond-ts-widget\"><\/div>\n<div class=\"xrespond-ts-error\" role=\"alert\"><\/div>\n        <\/div>\n<div class=\"nstpv-search__row\">\n          <input class=\"nstpv-search__field\" id=\"nstpv-input\" type=\"text\" name=\"nstpv_input\"\n            placeholder=\"@username or tiktok.com\/@username\" autocomplete=\"off\" spellcheck=\"false\">\n          <button type=\"button\" class=\"nstpv-btn nstpv-btn--paste\" id=\"nstpv-paste\" aria-label=\"Paste username or URL\">\n            <i class=\"fa-solid fa-paste\" aria-hidden=\"true\"><\/i> Paste\n          <\/button>\n          <button type=\"submit\" class=\"nstpv-btn nstpv-btn--view\" id=\"xrespond-tools-turnstile\">\n            <i class=\"fa-solid fa-eye\" aria-hidden=\"true\"><\/i> Analyze Profile\n          <\/button>\n          <button type=\"button\" class=\"nstpv-btn nstpv-btn--reset is-hidden\" id=\"nstpv-reset\">\n            <i class=\"fa-solid fa-rotate-left\" aria-hidden=\"true\"><\/i> Search Another Profile\n          <\/button>\n        <\/div>\n<div class=\"nstpv-alert\" id=\"nstpv-alert\" role=\"alert\"><\/div>\n<div class=\"nstpv-search__meta\">\n          <p class=\"nstpv-search__hint\">Enter a public TikTok username or profile URL (example: khaby.lame)<\/p>\n        <\/div>\n      <\/div>\n    <\/section>\n\n    <div class=\"nstpv-skeleton\" id=\"nstpv-skeleton\" aria-hidden=\"true\" aria-busy=\"false\">\n      <div class=\"nstpv-skeleton__panel\">\n        <div class=\"nstpv-skeleton__profile\">\n          <div class=\"nstpv-sk nstpv-skeleton__avatar\" aria-hidden=\"true\"><\/div>\n<div class=\"nstpv-skeleton__meta\">\n            <div class=\"nstpv-sk nstpv-skeleton__line nstpv-skeleton__line--lg\" aria-hidden=\"true\"><\/div>\n<div class=\"nstpv-sk nstpv-skeleton__line nstpv-skeleton__line--md\" aria-hidden=\"true\"><\/div>\n<div class=\"nstpv-skeleton__stats\">\n              <div class=\"nstpv-sk nstpv-skeleton__stat\" aria-hidden=\"true\"><\/div>\n<div class=\"nstpv-sk nstpv-skeleton__stat\" aria-hidden=\"true\"><\/div>\n<div class=\"nstpv-sk nstpv-skeleton__stat\" aria-hidden=\"true\"><\/div>\n<div class=\"nstpv-sk nstpv-skeleton__stat\" aria-hidden=\"true\"><\/div>\n            <\/div>\n          <\/div>\n<div class=\"nstpv-sk nstpv-skeleton__line nstpv-skeleton__line--bio\" aria-hidden=\"true\"><\/div>\n        <\/div>\n<div class=\"nstpv-skeleton__head\" aria-hidden=\"true\">\n          <div class=\"nstpv-sk nstpv-skeleton__head-line\"><\/div>\n<div class=\"nstpv-sk nstpv-skeleton__head-btn\"><\/div>\n        <\/div>\n<div class=\"nstpv-skeleton__grid\" aria-hidden=\"true\">\n          <div class=\"nstpv-skeleton__card\">\n            <div class=\"nstpv-sk nstpv-skeleton__thumb\"><\/div>\n<div class=\"nstpv-sk nstpv-skeleton__foot\"><\/div>\n          <\/div>\n<div class=\"nstpv-skeleton__card\">\n            <div class=\"nstpv-sk nstpv-skeleton__thumb\"><\/div>\n<div class=\"nstpv-sk nstpv-skeleton__foot\"><\/div>\n          <\/div>\n<div class=\"nstpv-skeleton__card\">\n            <div class=\"nstpv-sk nstpv-skeleton__thumb\"><\/div>\n<div class=\"nstpv-sk nstpv-skeleton__foot\"><\/div>\n          <\/div>\n<div class=\"nstpv-skeleton__card\">\n            <div class=\"nstpv-sk nstpv-skeleton__thumb\"><\/div>\n<div class=\"nstpv-sk nstpv-skeleton__foot\"><\/div>\n          <\/div>\n<div class=\"nstpv-skeleton__card\">\n            <div class=\"nstpv-sk nstpv-skeleton__thumb\"><\/div>\n<div class=\"nstpv-sk nstpv-skeleton__foot\"><\/div>\n          <\/div>\n<div class=\"nstpv-skeleton__card\">\n            <div class=\"nstpv-sk nstpv-skeleton__thumb\"><\/div>\n<div class=\"nstpv-sk nstpv-skeleton__foot\"><\/div>\n          <\/div>\n        <\/div>\n      <\/div>\n    <\/div>\n\n    <section class=\"nstpv-result\" id=\"nstpv-result\" aria-live=\"polite\">\n      <div class=\"nstpv-panel nstpv-content is-placeholder\" id=\"nstpv-content\">\n        <div class=\"nstpv-profile\">\n          <div class=\"nstpv-avatar\">\n            <div class=\"nstpv-avatar__ring\">\n              <img decoding=\"async\" class=\"nstpv-avatar__img\" id=\"nstpv-avatar\" src=\"\" alt=\"Profile avatar placeholder\">\n            <\/div>\n            <button type=\"button\" class=\"nstpv-avatar__zoom\" id=\"nstpv-avatar-zoom\" aria-label=\"Expand profile photo\">\n              <i class=\"fa-solid fa-expand\" aria-hidden=\"true\"><\/i>\n            <\/button>\n          <\/div>\n<div class=\"nstpv-meta\">\n            <h2 class=\"nstpv-meta__name\" id=\"nstpv-name\">\n              Display name\n              <span class=\"nstpv-meta__verified\" id=\"nstpv-verified\" hidden title=\"Verified\">\n                <i class=\"fa-solid fa-circle-check\" aria-hidden=\"true\"><\/i>\n              <\/span>\n            <\/h2>\n<p class=\"nstpv-meta__handle\" id=\"nstpv-handle\">@username<\/p>\n<ul class=\"nstpv-stats\" id=\"nstpv-stats\">\n              <li class=\"nstpv-stat\">\n                <span class=\"nstpv-stat__value\" id=\"nstpv-following\">0<\/span>\n                <span class=\"nstpv-stat__label\">Following<\/span>\n              <\/li>\n              <li class=\"nstpv-stat\">\n                <span class=\"nstpv-stat__value\" id=\"nstpv-followers\">0<\/span>\n                <span class=\"nstpv-stat__label\">Followers<\/span>\n              <\/li>\n              <li class=\"nstpv-stat\">\n                <span class=\"nstpv-stat__value\" id=\"nstpv-likes\">0<\/span>\n                <span class=\"nstpv-stat__label\">Likes<\/span>\n              <\/li>\n              <li class=\"nstpv-stat\">\n                <span class=\"nstpv-stat__value\" id=\"nstpv-videos-count\">0<\/span>\n                <span class=\"nstpv-stat__label\">Videos<\/span>\n              <\/li>\n            <\/ul>\n          <\/div>\n<div class=\"nstpv-bio\" id=\"nstpv-bio\">Enter a TikTok username above to preview a public profile.<\/div>\n        <\/div>\n<div class=\"nstpv-videos\" id=\"nstpv-videos\">\n          <div class=\"nstpv-videos__head\">\n            <h3 class=\"nstpv-videos__title\"><i class=\"fa-solid fa-film\" aria-hidden=\"true\"><\/i> Videos<\/h3>\n            <span class=\"nstpv-videos__count\" id=\"nstpv-found\">Found 0 videos<\/span>\n            <button type=\"button\" class=\"nstpv-videos__dlall\" id=\"nstpv-download-all\">\n              <i class=\"fa-solid fa-download\" aria-hidden=\"true\"><\/i> Download All\n            <\/button>\n          <\/div>\n<div class=\"nstpv-grid\" id=\"nstpv-grid\" aria-busy=\"false\">\n            <!-- Placeholder cards injected by profile.js on boot -->\n          <\/div>\n          <button type=\"button\" class=\"nstpv-more\" id=\"nstpv-more\" hidden>\n            <i class=\"fa-solid fa-angles-down\" aria-hidden=\"true\"><\/i> Load more videos\n          <\/button>\n        <\/div>\n      <\/div>\n    <\/section>\n  <\/div>\n<div class=\"nstpv-modal\" id=\"nstpv-avatar-modal\" aria-hidden=\"true\">\n    <div class=\"nstpv-modal__dialog nstpv-modal__dialog--avatar\" role=\"dialog\" aria-modal=\"true\"\n      aria-label=\"Profile photo\">\n      <button type=\"button\" class=\"nstpv-modal__close\" id=\"nstpv-avatar-modal-close\" aria-label=\"Close photo preview\">\n        <i class=\"fa-solid fa-xmark\" aria-hidden=\"true\"><\/i>\n      <\/button>\n      <div class=\"nstpv-modal__stage\">\n        <img decoding=\"async\" class=\"nstpv-modal__media\" id=\"nstpv-avatar-modal-img\" src=\"\" alt=\"Profile photo large\">\n      <\/div>\n<div class=\"nstpv-modal__bar\">\n        <p class=\"nstpv-modal__caption\" id=\"nstpv-avatar-modal-caption\">Profile photo<\/p>\n<div class=\"nstpv-modal__actions\">\n          <button type=\"button\" class=\"nstpv-modal__action nstpv-modal__action--download\" id=\"nstpv-avatar-download\">\n            <i class=\"fa-solid fa-download\" aria-hidden=\"true\"><\/i> Download\n          <\/button>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n<div class=\"nstpv-modal\" id=\"nstpv-video-modal\" aria-hidden=\"true\">\n    <div class=\"nstpv-modal__dialog\" role=\"dialog\" aria-modal=\"true\" aria-label=\"Video preview\">\n      <button type=\"button\" class=\"nstpv-modal__close\" id=\"nstpv-video-modal-close\" aria-label=\"Close video preview\">\n        <i class=\"fa-solid fa-xmark\" aria-hidden=\"true\"><\/i>\n      <\/button>\n      <div class=\"nstpv-modal__stage\">\n        <video class=\"nstpv-modal__media\" id=\"nstpv-video-el\" loop playsinline preload=\"auto\"\n          controlsList=\"nodownload\"><\/video>\n        <div class=\"nstpv-modal__stage-note\" id=\"nstpv-video-note\" aria-live=\"polite\"><\/div>\n      <\/div>\n<div class=\"nstpv-modal__bar\">\n        <p class=\"nstpv-modal__caption\" id=\"nstpv-video-caption\"><\/p>\n<div class=\"nstpv-modal__actions\">\n          <button type=\"button\" class=\"nstpv-modal__action nstpv-modal__action--play\" id=\"nstpv-video-play\">\n            <i class=\"fa-solid fa-play\" aria-hidden=\"true\"><\/i> <span id=\"nstpv-video-play-label\">Play<\/span>\n          <\/button>\n          <button type=\"button\" class=\"nstpv-modal__action nstpv-modal__action--download\" id=\"nstpv-video-download\">\n            <i class=\"fa-solid fa-download\" aria-hidden=\"true\"><\/i> Download\n          <\/button>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n<div class=\"nstpv-dlprog\" id=\"nstpv-dlprog\" aria-live=\"polite\">\n    <div class=\"nstpv-dlprog__head\">\n      <div class=\"nstpv-dlprog__title\">\n        <i class=\"fa-solid fa-cloud-arrow-down\" aria-hidden=\"true\"><\/i>\n        <span class=\"nstpv-dlprog__name\" id=\"nstpv-dlprog-name\">Preparing download\u2026<\/span>\n      <\/div>\n      <span class=\"nstpv-dlprog__pct\" id=\"nstpv-dlprog-pct\">0%<\/span>\n    <\/div>\n<div class=\"nstpv-dlprog__track\" aria-hidden=\"true\">\n      <div class=\"nstpv-dlprog__fill\" id=\"nstpv-dlprog-fill\"><\/div>\n    <\/div>\n<div class=\"nstpv-dlprog__meta\">\n      <span id=\"nstpv-dlprog-status\">Starting\u2026<\/span>\n      <span id=\"nstpv-dlprog-bytes\"><\/span>\n    <\/div>\n    <button type=\"button\" class=\"nstpv-dlprog__stop\" id=\"nstpv-dlprog-stop\">\n      <i class=\"fa-solid fa-xmark\" aria-hidden=\"true\"><\/i> Stop\n    <\/button>\n  <\/div>\n<\/div>\r\n\r\n\r\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Inter:wght@300;400;500;600;700;800;900&display=swap\" rel=\"stylesheet\">\r\n<link href=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/font-awesome\/6.0.0\/css\/all.min.css\" rel=\"stylesheet\">\r\n<style>\r\n    :root {\r\n        --primary-gradient: linear-gradient(135deg, #4158D0 0%, #C850C0 46%, #FFCC70 100%);\r\n        --secondary-gradient: linear-gradient(135deg, #00C9FF 0%, #92FE9D 100%);\r\n        --accent-gradient: linear-gradient(135deg, #FC466B 0%, #3F5EFB 100%);\r\n        --card-gradient: linear-gradient(135deg, #536976 0%, #292E49 100%);\r\n        --stats-gradient-1: linear-gradient(135deg, #6A11CB 0%, #2575FC 100%);\r\n        --stats-gradient-2: linear-gradient(135deg, #FF8008 0%, #FFC837 100%);\r\n        --stats-gradient-3: linear-gradient(135deg, #00B09B 0%, #96C93D 100%);\r\n        --stats-gradient-4: linear-gradient(135deg, #EB3349 0%, #F45C43 100%);\r\n        --glass-bg: rgba(255, 255, 255, 0.08);\r\n        --glass-border: rgba(255, 255, 255, 0.15);\r\n        --text-primary: #ffffff;\r\n        --text-secondary: #e2e8f0;\r\n        --text-muted: #a0aec0;\r\n        --shadow-sm: 0 2px 8px rgba(0, 0, 0, 0.15);\r\n        --shadow-md: 0 4px 16px rgba(0, 0, 0, 0.2);\r\n        --shadow-lg: 0 8px 32px rgba(0, 0, 0, 0.3);\r\n        --shadow-xl: 0 25px 50px rgba(0, 0, 0, 0.4);\r\n        --shadow-neon: 0 0 20px rgba(65, 88, 208, 0.4);\r\n    }\r\n\r\n    * {\r\n        margin: 0;\r\n        padding: 0;\r\n        box-sizing: border-box;\r\n        font-family: 'Inter', sans-serif;\r\n    }\r\n\r\n    .tiktok_body {\r\n        background: linear-gradient(135deg, #0c0c1e 0%, #1a1a3e 50%, #16213e 100%);\r\n        min-height: 60vh;\r\n        color: var(--text-primary);\r\n        line-height: 1.6;\r\n        position: relative;\r\n        overflow-x: hidden;\r\n    }\r\n\r\n    .tiktok_body::before {\r\n        content: '';\r\n        position: fixed;\r\n        top: 0;\r\n        left: 0;\r\n        width: 100%;\r\n        height: 100%;\r\n        background:\r\n            radial-gradient(circle at 20% 30%, rgba(65, 88, 208, 0.15) 0%, transparent 50%),\r\n            radial-gradient(circle at 80% 70%, rgba(200, 192, 112, 0.15) 0%, transparent 50%);\r\n        pointer-events: none;\r\n        z-index: -1;\r\n    }\r\n\r\n    .container_tiktok {\r\n        max-width: 1400px;\r\n        margin: 0 auto;\r\n        padding: 80px 16px;\r\n        position: relative;\r\n        z-index: 1;\r\n    }\r\n\r\n    \/* Header Styles *\/\r\n    .header {\r\n        text-align: center;\r\n        margin-bottom: 48px;\r\n        animation: fadeInDown 1s ease-out;\r\n    }\r\n\r\n    .logo-container {\r\n        display: flex;\r\n        align-items: center;\r\n        justify-content: center;\r\n        gap: 24px;\r\n        margin-bottom: 24px;\r\n        flex-direction: column;\r\n    }\r\n\r\n    .logo-icon {\r\n        width: 80px;\r\n        height: 80px;\r\n        background: var(--primary-gradient);\r\n        border-radius: 20px;\r\n        display: flex;\r\n        align-items: center;\r\n        justify-content: center;\r\n        font-size: 36px;\r\n        font-weight: 900;\r\n        box-shadow: var(--shadow-xl), var(--shadow-neon);\r\n        position: relative;\r\n        overflow: hidden;\r\n        animation: pulse 2s ease-in-out infinite;\r\n        margin-top: 40px;\r\n    }\r\n\r\n    .logo-text {\r\n        font-size: clamp(32px, 6vw, 60px);\r\n        font-weight: 900;\r\n        background: var(--primary-gradient);\r\n        -webkit-background-clip: text;\r\n        -webkit-text-fill-color: transparent;\r\n        text-shadow: 0 4px 20px rgba(0, 0, 0, 0.3);\r\n        letter-spacing: -1px;\r\n    }\r\n\r\n    \/* Search Section *\/\r\n    .search-section {\r\n        background: var(--glass-bg);\r\n        backdrop-filter: blur(30px);\r\n        border: 1px solid var(--glass-border);\r\n        padding: clamp(24px, 5vw, 48px);\r\n        border-radius: 24px;\r\n        box-shadow: var(--shadow-xl);\r\n        margin-bottom: 32px;\r\n        animation: fadeInUp 1s ease-out 0.2s both;\r\n    }\r\n\r\n    .input-container {\r\n        position: relative;\r\n        margin-bottom: 20px;\r\n    }\r\n\r\n    .search-input {\r\n        width: 100% !important;\r\n        padding: clamp(16px, 3vw, 20px) clamp(20px, 4vw, 24px) !important;\r\n        border: 2px solid rgba(255, 255, 255, 0.2) !important;\r\n        border-radius: 16px !important;\r\n        font-size: clamp(14px, 2.5vw, 16px) !important;\r\n        font-weight: 500 !important;\r\n        background: rgba(255, 255, 255, 0.1) !important;\r\n        color: var(--text-primary) !important;\r\n        transition: all 0.3s ease !important;\r\n    }\r\n\r\n    .search-input:focus {\r\n        outline: none !important;\r\n        border-color: #4158D0 !important;\r\n        box-shadow: 0 0 0 4px rgba(65, 88, 208, 0.2) !important;\r\n    }\r\n\r\n    .search-input::placeholder {\r\n        color: rgba(255, 255, 255, 0.5);\r\n    }\r\n\r\n    .paste-hint {\r\n        display: flex;\r\n        align-items: center;\r\n        justify-content: flex-end;\r\n        gap: 8px;\r\n        margin-top: 8px;\r\n        font-size: 13px;\r\n        color: var(--text-muted);\r\n    }\r\n\r\n    .paste-icon {\r\n        cursor: pointer;\r\n        padding: 6px;\r\n        border-radius: 6px;\r\n        transition: all 0.3s ease;\r\n        font-size: 16px;\r\n    }\r\n\r\n    .paste-icon:hover {\r\n        background: rgba(255, 255, 255, 0.1);\r\n        color: var(--text-primary);\r\n        transform: scale(1.1);\r\n    }\r\n\r\n    .search-box {\r\n        display: flex;\r\n        gap: 16px;\r\n        margin-bottom: 20px;\r\n        flex-wrap: wrap;\r\n    }\r\n\r\n    .search-button {\r\n        flex: 1;\r\n        min-width: 200px;\r\n        padding: clamp(16px, 3vw, 20px) clamp(24px, 5vw, 32px);\r\n        background: var(--primary-gradient);\r\n        color: white;\r\n        border: none;\r\n        border-radius: 16px;\r\n        font-size: clamp(14px, 2.5vw, 16px);\r\n        font-weight: 700;\r\n        cursor: pointer;\r\n        transition: all 0.3s ease;\r\n        position: relative;\r\n        overflow: hidden;\r\n        box-shadow: var(--shadow-lg), var(--shadow-neon);\r\n    }\r\n\r\n    .search-button::before {\r\n        content: '';\r\n        position: absolute;\r\n        top: 0;\r\n        left: -100%;\r\n        width: 100%;\r\n        height: 100%;\r\n        background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.2), transparent);\r\n        transition: left 0.5s;\r\n    }\r\n\r\n    .search-button:hover:not(:disabled)::before {\r\n        left: 100%;\r\n    }\r\n\r\n    .search-button:hover:not(:disabled) {\r\n        transform: translateY(-3px);\r\n        box-shadow: var(--shadow-xl), 0 0 30px rgba(65, 88, 208, 0.5);\r\n    }\r\n\r\n    .search-button:disabled {\r\n        opacity: 0.6;\r\n        cursor: not-allowed;\r\n        transform: none;\r\n    }\r\n\r\n    .search-again-btn {\r\n        background: var(--secondary-gradient);\r\n        color: white;\r\n        margin-top: 16px;\r\n        width: 100%;\r\n        padding: 16px;\r\n        border: none;\r\n        border-radius: 16px;\r\n        font-weight: 700;\r\n        cursor: pointer;\r\n        transition: all 0.3s ease;\r\n        box-shadow: var(--shadow-lg);\r\n    }\r\n\r\n    .search-again-btn:hover {\r\n        transform: translateY(-2px);\r\n        box-shadow: var(--shadow-xl);\r\n    }\r\n\r\n    \/* Profile Section *\/\r\n    .profile-section {\r\n        background: var(--glass-bg);\r\n        backdrop-filter: blur(30px);\r\n        border: 1px solid var(--glass-border);\r\n        border-radius: 24px;\r\n        padding: 32px;\r\n        margin-bottom: 32px;\r\n        animation: fadeInUp 0.8s ease-out;\r\n        box-shadow: var(--shadow-xl);\r\n    }\r\n\r\n    .profile-header {\r\n        display: flex;\r\n        gap: 24px;\r\n        margin-bottom: 32px;\r\n    }\r\n\r\n    .profile-avatar-container {\r\n        position: relative;\r\n    }\r\n\r\n    .profile-avatar {\r\n        width: 120px;\r\n        height: 120px;\r\n        border-radius: 50%;\r\n        object-fit: cover;\r\n        border: 4px solid transparent;\r\n        background: var(--primary-gradient);\r\n        padding: 2px;\r\n        box-shadow: var(--shadow-lg);\r\n        cursor: pointer;\r\n        transition: all 0.3s ease;\r\n    }\r\n\r\n    .profile-avatar:hover {\r\n        transform: scale(1.05);\r\n        box-shadow: var(--shadow-xl), var(--shadow-neon);\r\n    }\r\n\r\n    .fullscreen-icon {\r\n        position: absolute;\r\n        bottom: 5px;\r\n        right: 5px;\r\n        width: 24px;\r\n        height: 24px;\r\n        background: var(--primary-gradient);\r\n        border-radius: 50%;\r\n        display: flex;\r\n        align-items: center;\r\n        justify-content: center;\r\n        color: white;\r\n        font-size: 10px;\r\n        cursor: pointer;\r\n        transition: all 0.3s ease;\r\n        box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);\r\n    }\r\n\r\n    .fullscreen-icon:hover {\r\n        transform: scale(1.1);\r\n    }\r\n\r\n    .profile-info {\r\n        flex: 1;\r\n    }\r\n\r\n    .profile-name {\r\n        font-size: 32px;\r\n        font-weight: 800;\r\n        margin-bottom: 8px;\r\n        background: var(--primary-gradient);\r\n        -webkit-background-clip: text;\r\n        -webkit-text-fill-color: transparent;\r\n    }\r\n\r\n    .profile-username {\r\n        font-size: 18px;\r\n        color: var(--text-secondary);\r\n        margin-bottom: 16px;\r\n    }\r\n\r\n    \/* Enhanced Stats Section *\/\r\n    .profile-stats {\r\n        display: grid;\r\n        grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));\r\n        gap: 20px;\r\n        padding: 0;\r\n        background: transparent;\r\n        border-radius: 0;\r\n        backdrop-filter: none;\r\n    }\r\n\r\n    .stat-item {\r\n        text-align: center;\r\n        padding: 24px 20px;\r\n        border-radius: 16px;\r\n        transition: all 0.3s ease;\r\n        position: relative;\r\n        overflow: hidden;\r\n        border: 1px solid rgba(255, 255, 255, 0.1);\r\n        backdrop-filter: blur(20px);\r\n    }\r\n\r\n    .stat-item:nth-child(1) {\r\n        background: var(--stats-gradient-1);\r\n        box-shadow: 0 8px 32px rgba(106, 17, 203, 0.4);\r\n    }\r\n\r\n    .stat-item:nth-child(2) {\r\n        background: var(--stats-gradient-2);\r\n        box-shadow: 0 8px 32px rgba(255, 128, 8, 0.4);\r\n    }\r\n\r\n    .stat-item:nth-child(3) {\r\n        background: var(--stats-gradient-3);\r\n        box-shadow: 0 8px 32px rgba(0, 176, 155, 0.4);\r\n    }\r\n\r\n    .stat-item:nth-child(4) {\r\n        background: var(--stats-gradient-4);\r\n        box-shadow: 0 8px 32px rgba(235, 51, 73, 0.4);\r\n    }\r\n\r\n    .stat-item::before {\r\n        content: '';\r\n        position: absolute;\r\n        top: 0;\r\n        left: 0;\r\n        right: 0;\r\n        bottom: 0;\r\n        background: linear-gradient(135deg, rgba(255, 255, 255, 0.1) 0%, transparent 50%, rgba(255, 255, 255, 0.05) 100%);\r\n        opacity: 0;\r\n        transition: opacity 0.3s ease;\r\n    }\r\n\r\n    .stat-item:hover::before {\r\n        opacity: 1;\r\n    }\r\n\r\n    .stat-item:hover {\r\n        transform: translateY(-8px) scale(1.02);\r\n        box-shadow: 0 16px 48px rgba(0, 0, 0, 0.4);\r\n    }\r\n\r\n    .stat-value {\r\n        font-size: 28px;\r\n        font-weight: 800;\r\n        margin-bottom: 8px;\r\n        color: #ffffff;\r\n        text-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);\r\n    }\r\n\r\n    .stat-label {\r\n        font-size: 14px;\r\n        color: rgba(255, 255, 255, 0.9);\r\n        font-weight: 600;\r\n        text-transform: capitalize;\r\n        letter-spacing: 0.5px;\r\n    }\r\n\r\n    \/* Videos Section Header *\/\r\n    .videos-section-header {\r\n        display: flex !important;\r\n        align-items: center !important;\r\n        justify-content: space-between;\r\n        margin-bottom: 24px;\r\n        padding: 20px 0;\r\n    }\r\n\r\n    .videos-button {\r\n        padding: 16px 32px;\r\n        background: var(--primary-gradient);\r\n        color: white;\r\n        border: none;\r\n        border-radius: 16px;\r\n        font-weight: 700;\r\n        font-size: 16px;\r\n        cursor: pointer;\r\n        transition: all 0.3s ease;\r\n        box-shadow: var(--shadow-md);\r\n        display: flex;\r\n        align-items: center;\r\n        gap: 8px;\r\n    }\r\n\r\n    .videos-button:hover {\r\n        transform: translateY(-2px);\r\n        box-shadow: var(--shadow-lg);\r\n    }\r\n\r\n    .videos-count {\r\n        font-size: 16px;\r\n        font-weight: 600;\r\n        color: var(--text-secondary);\r\n    }\r\n\r\n    .download-all-btn {\r\n        padding: 12px 24px;\r\n        background: var(--secondary-gradient);\r\n        color: white;\r\n        border: none;\r\n        border-radius: 12px;\r\n        font-weight: 600;\r\n        cursor: pointer;\r\n        transition: all 0.3s ease;\r\n        box-shadow: var(--shadow-md);\r\n        display: flex;\r\n        align-items: center;\r\n        gap: 8px;\r\n        margin-left: 16px;\r\n        width: 100%;\r\n        font-size: 13px;\r\n    }\r\n\r\n    .download-all-btn:hover {\r\n        transform: translateY(-2px);\r\n        box-shadow: var(--shadow-lg);\r\n    }\r\n\r\n    .download-all-btn:disabled {\r\n        opacity: 0.6;\r\n        cursor: not-allowed;\r\n        transform: none;\r\n    }\r\n\r\n    \/* Video Grid *\/\r\n    .video-grid {\r\n        display: grid;\r\n        grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));\r\n        gap: 24px;\r\n    }\r\n\r\n    .video-card {\r\n        background: linear-gradient(135deg,\r\n                rgba(65, 88, 208, 0.1) 0%,\r\n                rgba(200, 192, 112, 0.1) 50%,\r\n                rgba(0, 201, 255, 0.1) 100%);\r\n        border-radius: 20px;\r\n        overflow: hidden;\r\n        transition: all 0.3s ease;\r\n        position: relative;\r\n        backdrop-filter: blur(20px);\r\n        border: 1px solid rgba(255, 255, 255, 0.2);\r\n        box-shadow:\r\n            var(--shadow-lg),\r\n            0 0 20px rgba(65, 88, 208, 0.1),\r\n            inset 0 1px 0 rgba(255, 255, 255, 0.1);\r\n        cursor: pointer;\r\n        height: 480px;\r\n    }\r\n\r\n    .video-card:hover {\r\n        transform: translateY(-15px) scale(1.02);\r\n        box-shadow:\r\n            var(--shadow-xl),\r\n            0 0 40px rgba(65, 88, 208, 0.3),\r\n            0 0 60px rgba(200, 192, 112, 0.2),\r\n            inset 0 1px 0 rgba(255, 255, 255, 0.2);\r\n        border-color: rgba(65, 88, 208, 0.5);\r\n    }\r\n\r\n    .video-card::before {\r\n        content: '';\r\n        position: absolute;\r\n        top: 0;\r\n        left: 0;\r\n        right: 0;\r\n        bottom: 0;\r\n        background: linear-gradient(135deg,\r\n                rgba(65, 88, 208, 0.05) 0%,\r\n                transparent 50%,\r\n                rgba(200, 192, 112, 0.05) 100%);\r\n        opacity: 0;\r\n        transition: opacity 0.3s ease;\r\n        pointer-events: none;\r\n        z-index: 1;\r\n    }\r\n\r\n    .video-card:hover::before {\r\n        opacity: 1;\r\n    }\r\n\r\n    .video-thumbnail-container {\r\n        position: relative;\r\n        width: 100%;\r\n        height: 320px;\r\n        overflow: hidden;\r\n    }\r\n\r\n    .video-thumbnail {\r\n        width: 100%;\r\n        height: 100%;\r\n        object-fit: cover;\r\n        transition: transform 0.3s ease;\r\n    }\r\n\r\n    .video-card:hover .video-thumbnail {\r\n        transform: scale(1.1);\r\n    }\r\n\r\n    \/* Fixed Play Icon *\/\r\n    .play-overlay {\r\n        position: absolute;\r\n        top: 50%;\r\n        left: 50%;\r\n        transform: translate(-50%, -50%);\r\n        width: 64px;\r\n        height: 64px;\r\n        background: rgba(65, 88, 208, 0.9);\r\n        border-radius: 50%;\r\n        display: flex;\r\n        align-items: center;\r\n        justify-content: center;\r\n        transition: all 0.3s ease;\r\n        z-index: 2;\r\n        box-shadow: 0 8px 25px rgba(65, 88, 208, 0.4);\r\n        border: 2px solid rgba(255, 255, 255, 0.3);\r\n    }\r\n\r\n    .play-overlay::after {\r\n        content: '';\r\n        width: 0;\r\n        height: 0;\r\n        border-left: 16px solid white;\r\n        border-top: 12px solid transparent;\r\n        border-bottom: 12px solid transparent;\r\n        margin-left: 4px;\r\n    }\r\n\r\n    .video-card:hover .play-overlay {\r\n        transform: translate(-50%, -50%) scale(1.2);\r\n        background: rgba(65, 88, 208, 1);\r\n        box-shadow: 0 12px 35px rgba(65, 88, 208, 0.6);\r\n    }\r\n\r\n    \/* Always Visible Download Button *\/\r\n    .video-download-btn {\r\n        position: absolute;\r\n        top: 12px;\r\n        right: 12px;\r\n        width: 40px;\r\n        height: 40px;\r\n        background: rgba(0, 0, 0, 0.8);\r\n        backdrop-filter: blur(10px);\r\n        border-radius: 50%;\r\n        display: flex;\r\n        align-items: center;\r\n        justify-content: center;\r\n        color: white;\r\n        font-size: 16px;\r\n        transition: all 0.3s ease;\r\n        opacity: 1;\r\n        cursor: pointer;\r\n        z-index: 10;\r\n        border: 2px solid rgba(255, 255, 255, 0.2);\r\n    }\r\n\r\n    .video-download-btn:hover {\r\n        background: var(--primary-gradient);\r\n        transform: scale(1.1);\r\n        border-color: rgba(255, 255, 255, 0.5);\r\n    }\r\n\r\n    \/* Video Info *\/\r\n    .video-info {\r\n        padding: 20px;\r\n        background: rgba(0, 0, 0, 0.3);\r\n        backdrop-filter: blur(10px);\r\n        height: 160px;\r\n        display: flex;\r\n        flex-direction: column;\r\n        justify-content: space-between;\r\n    }\r\n\r\n    .video-title {\r\n        font-size: 14px;\r\n        font-weight: 600;\r\n        margin-bottom: 12px;\r\n        display: -webkit-box;\r\n        -webkit-line-clamp: 3;\r\n        -webkit-box-orient: vertical;\r\n        overflow: hidden;\r\n        color: var(--text-primary);\r\n        line-height: 1.4;\r\n    }\r\n\r\n    .video-stats {\r\n        display: grid;\r\n        grid-template-columns: repeat(3, 1fr);\r\n        gap: 8px;\r\n        font-size: 12px;\r\n        color: var(--text-secondary);\r\n    }\r\n\r\n    .stat {\r\n        display: flex;\r\n        align-items: center;\r\n        justify-content: center;\r\n        gap: 4px;\r\n        padding: 8px;\r\n        background: rgba(255, 255, 255, 0.05);\r\n        border-radius: 8px;\r\n        transition: all 0.3s ease;\r\n    }\r\n\r\n    .stat:hover {\r\n        background: rgba(65, 88, 208, 0.1);\r\n        color: var(--text-primary);\r\n    }\r\n\r\n    \/* Video Modal *\/\r\n    .modal {\r\n        position: fixed;\r\n        top: 0;\r\n        left: 0;\r\n        width: 100%;\r\n        height: 100%;\r\n        background: rgba(0, 0, 0, 0.95);\r\n        backdrop-filter: blur(20px);\r\n        z-index: 1000;\r\n        display: none;\r\n        animation: fadeIn 0.3s ease-out;\r\n        padding: 20px;\r\n    }\r\n\r\n    .modal-content {\r\n        position: relative;\r\n        width: 100%;\r\n        height: 100%;\r\n        display: flex;\r\n        flex-direction: column;\r\n        justify-content: center;\r\n        align-items: center;\r\n        max-width: 500px;\r\n        margin: 0 auto;\r\n    }\r\n\r\n    .modal-title {\r\n        color: white;\r\n        font-size: 18px;\r\n        font-weight: 600;\r\n        margin-bottom: 16px;\r\n        text-align: center;\r\n        padding: 0 20px;\r\n        display: -webkit-box;\r\n        -webkit-line-clamp: 2;\r\n        -webkit-box-orient: vertical;\r\n        overflow: hidden;\r\n        line-height: 1.4;\r\n    }\r\n\r\n    .video-player-container {\r\n        position: relative;\r\n        width: 100%;\r\n        aspect-ratio: 9\/16;\r\n        background: #000;\r\n        border-radius: 20px;\r\n        overflow: hidden;\r\n        box-shadow: var(--shadow-xl);\r\n    }\r\n\r\n    .video-player {\r\n        width: 100%;\r\n        height: 100%;\r\n        object-fit: contain;\r\n    }\r\n\r\n    \/* Close Modal Button *\/\r\n    .close-modal {\r\n        position: absolute;\r\n        top: 10px;\r\n        right: -30px;\r\n        width: 48px;\r\n        height: 48px;\r\n        background: rgba(65, 88, 208, 0.2);\r\n        border: 2px solid rgba(65, 88, 208, 0.5);\r\n        border-radius: 50%;\r\n        color: white;\r\n        font-size: 24px;\r\n        cursor: pointer;\r\n        display: flex;\r\n        align-items: center;\r\n        justify-content: center;\r\n        backdrop-filter: blur(10px);\r\n        transition: all 0.3s ease;\r\n        z-index: 20;\r\n        box-shadow: 0 4px 15px rgba(65, 88, 208, 0.3);\r\n    }\r\n\r\n    .close-modal:hover {\r\n        background: rgba(65, 88, 208, 0.4);\r\n        transform: rotate(90deg) scale(1.1);\r\n        border-color: rgba(65, 88, 208, 0.8);\r\n        box-shadow: 0 6px 20px rgba(65, 88, 208, 0.5);\r\n    }\r\n\r\n    \/* Video Controls *\/\r\n    .video-controls {\r\n        position: absolute;\r\n        bottom: 0;\r\n        left: 0;\r\n        right: 0;\r\n        padding: 20px;\r\n        background: linear-gradient(transparent, rgba(0, 0, 0, 0.9));\r\n        display: flex;\r\n        flex-direction: column;\r\n        gap: 16px;\r\n    }\r\n\r\n    .progress-container {\r\n        width: 100%;\r\n        height: 4px;\r\n        background: rgba(255, 255, 255, 0.2);\r\n        border-radius: 2px;\r\n        cursor: pointer;\r\n        position: relative;\r\n    }\r\n\r\n    .progress-bar {\r\n        height: 100%;\r\n        background: var(--primary-gradient);\r\n        border-radius: 2px;\r\n        position: relative;\r\n        transition: width 0.1s linear;\r\n    }\r\n\r\n    .control-buttons {\r\n        display: flex;\r\n        align-items: center;\r\n        justify-content: space-between;\r\n    }\r\n\r\n    .control-group {\r\n        display: flex;\r\n        align-items: center;\r\n        gap: 12px;\r\n    }\r\n\r\n    .control-button {\r\n        width: 44px;\r\n        height: 44px;\r\n        border: none;\r\n        border-radius: 50%;\r\n        background: var(--glass-bg);\r\n        color: white;\r\n        font-size: 18px;\r\n        cursor: pointer;\r\n        display: flex;\r\n        align-items: center;\r\n        justify-content: center;\r\n        backdrop-filter: blur(10px);\r\n        transition: all 0.3s ease;\r\n        border: 1px solid var(--glass-border);\r\n    }\r\n\r\n    .control-button:hover {\r\n        background: rgba(255, 255, 255, 0.2);\r\n        transform: scale(1.1);\r\n    }\r\n\r\n    .play-pause {\r\n        width: 56px;\r\n        height: 56px;\r\n        background: var(--primary-gradient);\r\n        font-size: 24px;\r\n        border: none;\r\n    }\r\n\r\n    .play-pause:hover {\r\n        background: var(--secondary-gradient);\r\n    }\r\n\r\n    \/* Volume Controls *\/\r\n    .volume-controls {\r\n        display: flex;\r\n        align-items: center;\r\n        gap: 8px;\r\n    }\r\n\r\n    .volume-slider {\r\n        width: 80px;\r\n        height: 4px;\r\n        background: rgba(255, 255, 255, 0.2);\r\n        border-radius: 2px;\r\n        position: relative;\r\n        cursor: pointer;\r\n    }\r\n\r\n    .volume-fill {\r\n        height: 100%;\r\n        background: var(--primary-gradient);\r\n        border-radius: 2px;\r\n        transition: width 0.1s ease;\r\n    }\r\n\r\n    \/* Advanced Loading Animation *\/\r\n    .loading {\r\n        display: none;\r\n        justify-content: center;\r\n        align-items: center;\r\n        padding: 60px 40px;\r\n        background: var(--glass-bg);\r\n        backdrop-filter: blur(30px);\r\n        border-radius: 24px;\r\n        margin: 32px 0;\r\n        border: 1px solid var(--glass-border);\r\n        box-shadow: var(--shadow-xl);\r\n    }\r\n\r\n    .loading-content {\r\n        text-align: center;\r\n    }\r\n\r\n    .loading-animation {\r\n        position: relative;\r\n        width: 120px;\r\n        height: 120px;\r\n        margin: 0 auto 24px;\r\n    }\r\n\r\n    .loading-ring {\r\n        position: absolute;\r\n        border: 4px solid transparent;\r\n        border-radius: 50%;\r\n        animation: spin 2s linear infinite;\r\n    }\r\n\r\n    .loading-ring:nth-child(1) {\r\n        width: 120px;\r\n        height: 120px;\r\n        border-top-color: #4158D0;\r\n        animation-duration: 2s;\r\n    }\r\n\r\n    .loading-ring:nth-child(2) {\r\n        width: 90px;\r\n        height: 90px;\r\n        top: 15px;\r\n        left: 15px;\r\n        border-right-color: #C850C0;\r\n        animation-duration: 1.5s;\r\n        animation-direction: reverse;\r\n    }\r\n\r\n    .loading-ring:nth-child(3) {\r\n        width: 60px;\r\n        height: 60px;\r\n        top: 30px;\r\n        left: 30px;\r\n        border-bottom-color: #FFCC70;\r\n        animation-duration: 1s;\r\n    }\r\n\r\n    .loading-dots {\r\n        display: flex;\r\n        justify-content: center;\r\n        gap: 8px;\r\n        margin-bottom: 16px;\r\n    }\r\n\r\n    .loading-dot {\r\n        width: 12px;\r\n        height: 12px;\r\n        background: var(--primary-gradient);\r\n        border-radius: 50%;\r\n        animation: bounce 1.4s ease-in-out infinite both;\r\n    }\r\n\r\n    .loading-dot:nth-child(1) {\r\n        animation-delay: -0.32s;\r\n    }\r\n\r\n    .loading-dot:nth-child(2) {\r\n        animation-delay: -0.16s;\r\n    }\r\n\r\n    .loading-dot:nth-child(3) {\r\n        animation-delay: 0s;\r\n    }\r\n\r\n    @keyframes bounce {\r\n        0%, 80%, 100% {\r\n            transform: scale(0);\r\n        }\r\n        40% {\r\n            transform: scale(1);\r\n        }\r\n    }\r\n\r\n    @keyframes spin {\r\n        to {\r\n            transform: rotate(360deg);\r\n        }\r\n    }\r\n\r\n    .loading-text {\r\n        font-size: 18px;\r\n        font-weight: 600;\r\n        color: var(--text-primary);\r\n        margin-bottom: 8px;\r\n    }\r\n\r\n    .loading-subtext {\r\n        font-size: 14px;\r\n        color: var(--text-secondary);\r\n    }\r\n\r\n    \/* Profile Picture Modal *\/\r\n    .profile-modal {\r\n        position: fixed;\r\n        top: 0;\r\n        left: 0;\r\n        width: 100%;\r\n        height: 100%;\r\n        background: rgba(0, 0, 0, 0.95);\r\n        backdrop-filter: blur(20px);\r\n        z-index: 1000;\r\n        display: none;\r\n        animation: fadeIn 0.3s ease-out;\r\n        padding: 20px;\r\n    }\r\n\r\n    .profile-modal-content {\r\n        position: relative;\r\n        width: 100%;\r\n        height: 100%;\r\n        display: flex;\r\n        justify-content: center;\r\n        align-items: center;\r\n    }\r\n\r\n    .profile-modal-image {\r\n        max-width: 80%;\r\n        max-height: 80%;\r\n        border-radius: 20px;\r\n        box-shadow: var(--shadow-xl);\r\n    }\r\n\r\n    .profile-modal-close {\r\n        position: absolute;\r\n        top: 20px;\r\n        right: 20px;\r\n        width: 48px;\r\n        height: 48px;\r\n        background: rgba(65, 88, 208, 0.2);\r\n        border: 2px solid rgba(65, 88, 208, 0.5);\r\n        border-radius: 50%;\r\n        color: white;\r\n        font-size: 24px;\r\n        cursor: pointer;\r\n        display: flex;\r\n        align-items: center;\r\n        justify-content: center;\r\n        backdrop-filter: blur(10px);\r\n        transition: all 0.3s ease;\r\n    }\r\n\r\n    .profile-modal-download {\r\n        position: absolute;\r\n        bottom: 20px;\r\n        right: 20px;\r\n        padding: 12px 24px;\r\n        background: var(--primary-gradient);\r\n        color: white;\r\n        border: none;\r\n        border-radius: 12px;\r\n        font-weight: 600;\r\n        cursor: pointer;\r\n        transition: all 0.3s ease;\r\n        display: flex;\r\n        align-items: center;\r\n        gap: 8px;\r\n    }\r\n\r\n    .profile-modal-download:hover {\r\n        transform: translateY(-2px);\r\n        box-shadow: var(--shadow-lg);\r\n    }\r\n\r\n    \/* Download Progress Indicator *\/\r\n    .download-progress {\r\n        position: fixed;\r\n        bottom: 20px;\r\n        right: 20px;\r\n        background: var(--glass-bg);\r\n        backdrop-filter: blur(20px);\r\n        border: 1px solid var(--glass-border);\r\n        border-radius: 12px;\r\n        padding: 16px 20px;\r\n        color: white;\r\n        font-weight: 600;\r\n        z-index: 1001;\r\n        display: none;\r\n        align-items: center;\r\n        gap: 12px;\r\n        box-shadow: var(--shadow-lg);\r\n        min-width: 300px;\r\n    }\r\n\r\n    .download-progress.show {\r\n        display: flex;\r\n    }\r\n\r\n    .download-spinner {\r\n        width: 20px;\r\n        height: 20px;\r\n        border: 2px solid rgba(255, 255, 255, 0.3);\r\n        border-top-color: #4158D0;\r\n        border-radius: 50%;\r\n        animation: spin 1s linear infinite;\r\n        flex-shrink: 0;\r\n    }\r\n\r\n    .download-info {\r\n        flex-grow: 1;\r\n        display: flex;\r\n        flex-direction: column;\r\n        gap: 4px;\r\n    }\r\n\r\n    .download-text {\r\n        font-size: 14px;\r\n        white-space: nowrap;\r\n        overflow: hidden;\r\n        text-overflow: ellipsis;\r\n    }\r\n\r\n    .download-progress-bar {\r\n        width: 100%;\r\n        height: 4px;\r\n        background: rgba(255, 255, 255, 0.2);\r\n        border-radius: 2px;\r\n        overflow: hidden;\r\n    }\r\n\r\n    .download-progress-fill {\r\n        height: 100%;\r\n        background: var(--primary-gradient);\r\n        border-radius: 2px;\r\n        width: 0%;\r\n        transition: width 0.3s ease;\r\n    }\r\n\r\n    .cancel-download-btn {\r\n        background: rgba(65, 88, 208, 0.2);\r\n        border: 1px solid rgba(65, 88, 208, 0.4);\r\n        color: white;\r\n        border-radius: 8px;\r\n        padding: 6px 12px;\r\n        font-size: 12px;\r\n        font-weight: 600;\r\n        cursor: pointer;\r\n        transition: all 0.3s ease;\r\n        flex-shrink: 0;\r\n        display: flex;\r\n        align-items: center;\r\n        gap: 4px;\r\n    }\r\n\r\n    .cancel-download-btn:hover {\r\n        background: rgba(65, 88, 208, 0.4);\r\n    }\r\n\r\n    \/* Animations *\/\r\n    @keyframes fadeIn {\r\n        from {\r\n            opacity: 0;\r\n        }\r\n        to {\r\n            opacity: 1;\r\n        }\r\n    }\r\n\r\n    @keyframes fadeInDown {\r\n        from {\r\n            opacity: 0;\r\n            transform: translateY(-30px);\r\n        }\r\n        to {\r\n            opacity: 1;\r\n            transform: translateY(0);\r\n        }\r\n    }\r\n\r\n    @keyframes fadeInUp {\r\n        from {\r\n            opacity: 0;\r\n            transform: translateY(30px);\r\n        }\r\n        to {\r\n            opacity: 1;\r\n            transform: translateY(0);\r\n        }\r\n    }\r\n\r\n    @keyframes pulse {\r\n        0%, 100% {\r\n            transform: scale(1);\r\n        }\r\n        50% {\r\n            transform: scale(1.05);\r\n        }\r\n    }\r\n\r\n    \/* Error Message *\/\r\n    .error-message {\r\n        background: rgba(65, 88, 208, 0.1);\r\n        border: 1px solid rgba(65, 88, 208, 0.2);\r\n        color: #4158D0;\r\n        padding: 16px 24px;\r\n        border-radius: 12px;\r\n        margin-top: 16px;\r\n        display: none;\r\n        align-items: center;\r\n        gap: 12px;\r\n        font-weight: 500;\r\n    }\r\n\r\n    \/* Responsive Design *\/\r\n    @media (max-width: 768px) {\r\n        .profile-header {\r\n            flex-direction: column;\r\n            align-items: center;\r\n            text-align: center;\r\n        }\r\n\r\n        .profile-stats {\r\n            grid-template-columns: repeat(2, 1fr);\r\n        }\r\n\r\n        .video-grid {\r\n            grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));\r\n            gap: 16px;\r\n        }\r\n\r\n        .video-card {\r\n            height: 440px;\r\n        }\r\n\r\n        .video-thumbnail-container {\r\n            height: 280px;\r\n        }\r\n\r\n        .search-box {\r\n            flex-direction: column;\r\n        }\r\n\r\n        .search-button {\r\n            width: 100%;\r\n        }\r\n\r\n        .control-buttons {\r\n            flex-wrap: wrap;\r\n            gap: 12px;\r\n        }\r\n\r\n        .volume-controls {\r\n            order: 3;\r\n            width: 100%;\r\n            justify-content: center;\r\n        }\r\n\r\n        .close-modal {\r\n            top: -50px;\r\n            right: 10px;\r\n        }\r\n\r\n        .videos-section-header {\r\n            flex-direction: column;\r\n            gap: 12px;\r\n            align-items: flex-start;\r\n        }\r\n\r\n        .download-all-btn {\r\n            margin-left: 0;\r\n            margin-top: 8px;\r\n        }\r\n\r\n        .download-progress {\r\n            left: 20px;\r\n            right: 20px;\r\n            width: auto;\r\n        }\r\n\t\t\t\t\t.buttons_flex{\r\n\t\t\t\t\t\tdisplay: flex;\r\n  align-items: center;\r\n  gap: 16px;\r\n  flex-direction: column;\r\n\t\t\t\t\r\n\t\t\t}\r\n    }\r\n\r\n    @media (max-width: 480px) {\r\n        .profile-stats {\r\n            grid-template-columns: 1fr;\r\n        }\r\n\r\n        .video-grid {\r\n            grid-template-columns: 1fr;\r\n        }\r\n\t\t\t\r\n\t\t\t.buttons_flex{\r\n\t\t\t\t\t\tdisplay: flex;\r\n  align-items: center;\r\n  gap: 16px;\r\n  flex-direction: column;\r\n\t\t\t\t\r\n\t\t\t}\r\n\t\t\t\r\n\r\n    }\r\n\r\n    @media (max-width: 500px) {\r\n        .logo-icon {\r\n            width: 60px;\r\n            height: 60px;\r\n            font-size: 28px;\r\n        }\r\n\r\n        .logo-text {\r\n            font-size: clamp(24px, 5vw, 40px);\r\n        }\r\n\t\t\t\r\n\t\t\t\t\t.buttons_flex{\r\n\t\t\t\t\t\tdisplay: flex;\r\n  align-items: center;\r\n  gap: 16px;\r\n  flex-direction: column;\r\n\t\t\t\t\r\n\t\t\t}\r\n    }\r\n<\/style>\r\n\r\n\t\r\n\t\t\t<script src=\"https:\/\/tools.xrespond.com\/api\/rate-limit-handler.js\"><\/script>\r\n\t\t\t<script src=\"https:\/\/tools.xrespond.com\/api\/js\/client-ip-detector.js\"><\/script>\r\n\t\r\n    <script>\r\n        const API_BASE_URL = 'https:\/\/tools.xrespond.com\/api\/tiktok';\r\n        let currentVideo = null;\r\n        let currentProfileData = null;\r\n        let allVideos = [];\r\n        let isFullscreen = false;\r\n        let currentVolume = 1;\r\n        let isMuted = false;\r\n        let isProcessing = false;\r\n        let isDownloading = false;\r\n        let activeDownloads = [];\r\n        let downloadCancelled = false;\r\n\r\n        async function pasteFromClipboard() {\r\n            try {\r\n                const text = await navigator.clipboard.readText();\r\n                document.getElementById('usernameInput').value = text;\r\n            } catch (err) {\r\n                console.error('Failed to read clipboard contents: ', err);\r\n                document.getElementById('usernameInput').focus();\r\n            }\r\n        }\r\n\r\n        function searchAgain() {\r\n            document.getElementById('usernameInput').value = '';\r\n            document.getElementById('resultsContainer').style.display = 'none';\r\n            document.getElementById('searchAgainBtn').style.display = 'none';\r\n            document.getElementById('searchBox').style.display = 'flex';\r\n            document.getElementById('videosHeader').style.display = 'none';\r\n            document.getElementById('usernameInput').focus();\r\n            allVideos = [];\r\n        }\r\n\r\n        function extractUsername(input) {\r\n            \/\/ Handle @username format\r\n            if (input.startsWith('@')) {\r\n                return input.substring(1);\r\n            }\r\n\r\n            \/\/ Handle TikTok URLs\r\n            const urlPatterns = [\r\n                \/tiktok\\.com\\\/@([^\\\/\\?]+)\/,\r\n                \/tiktok\\.com\\\/([^\\\/\\?@]+)\/,\r\n                \/vm\\.tiktok\\.com\\\/([^\\\/\\?]+)\/\r\n            ];\r\n\r\n            for (const pattern of urlPatterns) {\r\n                const match = input.match(pattern);\r\n                if (match) {\r\n                    return match[1];\r\n                }\r\n            }\r\n\r\n            \/\/ Return as is if no pattern matches\r\n            return input;\r\n        }\r\n\r\n        async function searchProfile() {\r\n            if (isProcessing) return;\r\n\r\n            const input = document.getElementById('usernameInput').value.trim();\r\n            if (!input) {\r\n                showError('Please enter a TikTok username or profile URL');\r\n                return;\r\n            }\r\n\r\n            const username = extractUsername(input);\r\n\r\n            isProcessing = true;\r\n            const searchBtn = document.getElementById('searchBtn');\r\n            const searchText = document.getElementById('searchText');\r\n\r\n            searchBtn.disabled = true;\r\n            searchText.textContent = 'Analyzing...';\r\n            showLoading();\r\n            hideError();\r\n\r\n            try {\r\n                \/\/ Fetch profile data\r\n                const profileResponse = await fetch(`${API_BASE_URL}\/profile\/details`, {\r\n                    method: 'POST',\r\n                    headers: {\r\n                        'Content-Type': 'application\/json',\r\n                        'Accept': 'application\/json'\r\n                    },\r\n                    body: JSON.stringify({ profile: username })\r\n                });\r\n\r\n                const profileData = await profileResponse.json();\r\n                \/\/ Defensive check for profile data\r\n                if (\r\n                    profileData.status === 'success' &&\r\n                    profileData.data &&\r\n                    profileData.data.data &&\r\n                    profileData.data.data.user\r\n                ) {\r\n                    currentProfileData = profileData.data.data;\r\n                    displayProfile(currentProfileData);\r\n                } else {\r\n                    showError('Failed to load profile data');\r\n                    hideLoading();\r\n                    isProcessing = false;\r\n                    searchBtn.disabled = false;\r\n                    searchText.textContent = 'Analyze Profile';\r\n                    return;\r\n                }\r\n\r\n                \/\/ Fetch videos\r\n                const videosResponse = await fetch(`${API_BASE_URL}\/profile\/videos`, {\r\n                    method: 'POST',\r\n                    headers: {\r\n                        'Content-Type': 'application\/json',\r\n                        'Accept': 'application\/json'\r\n                    },\r\n                    body: JSON.stringify({ profile: username })\r\n                });\r\n\r\n                const videosData = await videosResponse.json();\r\n                \/\/ Defensive check for videos data\r\n                if (\r\n                    (videosData.status === 'ok' || videosData.status === 'success') &&\r\n                    videosData.data &&\r\n                    videosData.data.data &&\r\n                    Array.isArray(videosData.data.data.videos)\r\n                ) {\r\n                    const videos = videosData.data.data.videos.reverse();\r\n                    allVideos = videos;\r\n                    displayVideos(videos);\r\n                } else {\r\n                    showError('Failed to load videos');\r\n                    hideLoading();\r\n                    isProcessing = false;\r\n                    searchBtn.disabled = false;\r\n                    searchText.textContent = 'Analyze Profile';\r\n                    return;\r\n                }\r\n\r\n                document.getElementById('resultsContainer').style.display = 'block';\r\n                document.getElementById('searchAgainBtn').style.display = 'block';\r\n                document.getElementById('searchBox').style.display = 'none';\r\n                document.getElementById('videosHeader').style.display = 'flex';\r\n\r\n                \/\/ Clear input after successful search\r\n                document.getElementById('usernameInput').value = '';\r\n\r\n            } catch (error) {\r\n                showError(error.message || 'Error fetching profile. Please try again.');\r\n            } finally {\r\n                isProcessing = false;\r\n                searchBtn.disabled = false;\r\n                searchText.textContent = 'Analyze Profile';\r\n                hideLoading();\r\n            }\r\n        }\r\n\r\n        function displayProfile(data) {\r\n            const profileSection = document.getElementById('profileSection');\r\n\r\n            profileSection.innerHTML = `\r\n        <div class=\"profile-header\">\r\n            <div class=\"profile-avatar-container\">\r\n                <img decoding=\"async\" src=\"${data.user.avatarLarger}\" alt=\"Profile\" class=\"profile-avatar\" onclick=\"openProfileModal('${data.user.avatarLarger}')\">\r\n                <div class=\"fullscreen-icon\" onclick=\"openProfileModal('${data.user.avatarLarger}')\" title=\"View Fullscreen\">\r\n                    <i class=\"fas fa-expand\"><\/i>\r\n                <\/div>\r\n            <\/div>\r\n            <div class=\"profile-info\">\r\n                <h2 class=\"profile-name\">${data.user.nickname}<\/h2>\r\n                <p class=\"profile-username\">@${data.user.uniqueId}<\/p>\r\n                <div class=\"profile-bio\">${data.user.signature || ''}<\/div>\r\n            <\/div>\r\n        <\/div>\r\n        <div class=\"profile-stats\">\r\n            <div class=\"stat-item\">\r\n                <div class=\"stat-value\">${formatNumber(data.stats.followingCount)}<\/div>\r\n                <div class=\"stat-label\">Following<\/div>\r\n            <\/div>\r\n            <div class=\"stat-item\">\r\n                <div class=\"stat-value\">${formatNumber(data.stats.followerCount)}<\/div>\r\n                <div class=\"stat-label\">Followers<\/div>\r\n            <\/div>\r\n            <div class=\"stat-item\">\r\n                <div class=\"stat-value\">${formatNumber(data.stats.heartCount)}<\/div>\r\n                <div class=\"stat-label\">Likes<\/div>\r\n            <\/div>\r\n            <div class=\"stat-item\">\r\n                <div class=\"stat-value\">${formatNumber(data.stats.videoCount)}<\/div>\r\n                <div class=\"stat-label\">Videos<\/div>\r\n            <\/div>\r\n        <\/div>\r\n    `;\r\n        }\r\n\r\n        function displayVideos(videos) {\r\n            const videoGrid = document.getElementById('videoGrid');\r\n            const videosCount = document.getElementById('videosCount');\r\n\r\n            videoGrid.innerHTML = '';\r\n            videosCount.textContent = `Found ${videos.length} videos`;\r\n\r\n            videos.forEach((video, index) => {\r\n                const videoCard = document.createElement('div');\r\n                videoCard.className = 'video-card';\r\n                videoCard.innerHTML = `\r\n            <div class=\"video-thumbnail-container\">\r\n                <img decoding=\"async\" src=\"${video.cover}\" alt=\"${video.title}\" class=\"video-thumbnail\">\r\n                <div class=\"play-overlay\" onclick=\"openVideoModal(event, ${index})\"><\/div>\r\n                <div class=\"video-download-btn\" onclick=\"downloadVideoFromCard(allVideos[${index}])\" title=\"Download Video\">\r\n                    <i class=\"fas fa-download\"><\/i>\r\n                <\/div>\r\n            <\/div>\r\n            <div class=\"video-info\">\r\n                <div class=\"video-title\">${video.title}<\/div>\r\n                <div class=\"video-stats\">\r\n                    <div class=\"stat\">\r\n                        <i class=\"fas fa-heart\"><\/i>\r\n                        <span>${formatNumber(video.digg_count)}<\/span>\r\n                    <\/div>\r\n                    <div class=\"stat\">\r\n                        <i class=\"fas fa-comment\"><\/i>\r\n                        <span>${formatNumber(video.comment_count)}<\/span>\r\n                    <\/div>\r\n                    <div class=\"stat\">\r\n                        <i class=\"fas fa-share\"><\/i>\r\n                        <span>${formatNumber(video.share_count)}<\/span>\r\n                    <\/div>\r\n                <\/div>\r\n            <\/div>\r\n        `;\r\n\r\n                videoGrid.appendChild(videoCard);\r\n            });\r\n        }\r\n\r\n        function openVideoModal(event, videoIndex) {\r\n            event.stopPropagation();\r\n            const video = allVideos[videoIndex];\r\n            if (!video) return;\r\n\r\n            currentVideo = video;\r\n            const modal = document.getElementById('videoModal');\r\n            const videoPlayer = document.getElementById('videoPlayer');\r\n            const modalTitle = document.getElementById('modalTitle');\r\n\r\n            \/\/ Set title\r\n            modalTitle.textContent = video.title;\r\n\r\n            \/\/ Use highest quality video URL\r\n            videoPlayer.src = video.play;\r\n            videoPlayer.preload = 'metadata';\r\n            modal.style.display = 'block';\r\n            document.body.style.overflow = 'hidden';\r\n\r\n            \/\/ Reset controls\r\n            document.getElementById('playIcon').className = 'fas fa-play';\r\n            updateVolumeIcon();\r\n            document.getElementById('progressBar').style.width = '0%';\r\n            updateVolumeDisplay();\r\n\r\n            \/\/ Set video properties\r\n            videoPlayer.addEventListener('loadedmetadata', () => {\r\n                videoPlayer.volume = currentVolume;\r\n                videoPlayer.muted = isMuted;\r\n                updateVolumeDisplay();\r\n            });\r\n\r\n            videoPlayer.addEventListener('timeupdate', updateVideoProgress);\r\n            videoPlayer.addEventListener('ended', onVideoEnd);\r\n        }\r\n\r\n        function closeVideoModal() {\r\n            const modal = document.getElementById('videoModal');\r\n            const videoPlayer = document.getElementById('videoPlayer');\r\n\r\n            videoPlayer.pause();\r\n            videoPlayer.removeEventListener('timeupdate', updateVideoProgress);\r\n            videoPlayer.removeEventListener('ended', onVideoEnd);\r\n            modal.style.display = 'none';\r\n            document.body.style.overflow = 'auto';\r\n            currentVideo = null;\r\n\r\n            \/\/ Exit fullscreen if active\r\n            if (isFullscreen) {\r\n                exitFullscreen();\r\n            }\r\n        }\r\n\r\n        function openProfileModal(imageUrl) {\r\n            const modal = document.getElementById('profileModal');\r\n            const image = document.getElementById('profileModalImage');\r\n\r\n            image.src = imageUrl;\r\n            modal.style.display = 'block';\r\n            document.body.style.overflow = 'hidden';\r\n        }\r\n\r\n        function closeProfileModal() {\r\n            const modal = document.getElementById('profileModal');\r\n            modal.style.display = 'none';\r\n            document.body.style.overflow = 'auto';\r\n        }\r\n\r\n        \/\/ Cancel all active downloads\r\n        function cancelDownloads() {\r\n            downloadCancelled = true;\r\n\r\n            \/\/ Abort all active fetch requests\r\n            activeDownloads.forEach(controller => {\r\n                if (controller) {\r\n                    controller.abort();\r\n                }\r\n            });\r\n\r\n            \/\/ Clear the active downloads array\r\n            activeDownloads = [];\r\n\r\n            \/\/ Reset download UI\r\n            isDownloading = false;\r\n            const downloadBtn = document.getElementById('downloadAllBtn');\r\n            downloadBtn.innerHTML = '<i class=\"fas fa-download\"><\/i> Download All';\r\n            downloadBtn.disabled = false;\r\n\r\n            updateDownloadProgress('Downloads cancelled', 0);\r\n            setTimeout(hideDownloadProgress, 2000);\r\n        }\r\n\r\n        \/\/ Fixed download functions with cancel support\r\n        async function downloadProfilePicture() {\r\n            if (!currentProfileData) {\r\n                showError('No profile data available');\r\n                return;\r\n            }\r\n\r\n            if (isDownloading) {\r\n                showError('Another download is in progress');\r\n                return;\r\n            }\r\n\r\n            isDownloading = true;\r\n            downloadCancelled = false;\r\n            showDownloadProgress('Downloading profile picture...', 0);\r\n\r\n            try {\r\n                const controller = new AbortController();\r\n                activeDownloads.push(controller);\r\n\r\n                const response = await fetch(currentProfileData.user.avatarLarger, {\r\n                    signal: controller.signal\r\n                });\r\n\r\n                if (!response.ok) throw new Error(`HTTP error! status: ${response.status}`);\r\n\r\n                updateDownloadProgress('Processing profile picture...', 50);\r\n\r\n                const blob = await response.blob();\r\n                const url = window.URL.createObjectURL(blob);\r\n                const a = document.createElement('a');\r\n                a.href = url;\r\n                a.download = `${currentProfileData.user.uniqueId}_profile.jpg`;\r\n                a.style.display = 'none';\r\n                document.body.appendChild(a);\r\n\r\n                updateDownloadProgress('Saving profile picture...', 90);\r\n\r\n                a.click();\r\n                document.body.removeChild(a);\r\n                window.URL.revokeObjectURL(url);\r\n\r\n                updateDownloadProgress('Profile picture downloaded successfully!', 100);\r\n                console.log('Profile picture download completed successfully');\r\n\r\n                \/\/ Remove this controller from active downloads\r\n                activeDownloads = activeDownloads.filter(c => c !== controller);\r\n\r\n                setTimeout(hideDownloadProgress, 2000);\r\n            } catch (error) {\r\n                if (error.name === 'AbortError') {\r\n                    console.log('Profile picture download cancelled');\r\n                } else {\r\n                    console.error('Download failed:', error);\r\n                    showError(`Failed to download profile picture: ${error.message}`);\r\n                }\r\n            } finally {\r\n                isDownloading = false;\r\n            }\r\n        }\r\n\r\n        async function downloadVideo() {\r\n            if (!currentVideo) {\r\n                showError('No video selected for download');\r\n                return;\r\n            }\r\n\r\n            if (isDownloading) {\r\n                showError('Another download is in progress');\r\n                return;\r\n            }\r\n\r\n            isDownloading = true;\r\n            downloadCancelled = false;\r\n            showDownloadProgress('Downloading video...', 0);\r\n\r\n            try {\r\n                const controller = new AbortController();\r\n                activeDownloads.push(controller);\r\n\r\n                \/\/ Use backend proxy endpoint for download\r\n                const proxyUrl = `https:\/\/tools.xrespond.com\/api\/tiktok\/proxy-video?url=${encodeURIComponent(currentVideo.play)}`;\r\n                const response = await fetch(proxyUrl, {\r\n                    signal: controller.signal\r\n                });\r\n\r\n                if (!response.ok) {\r\n                    throw new Error(`HTTP error! status: ${response.status}`);\r\n                }\r\n\r\n                const totalSize = parseInt(response.headers.get('content-length') || '0');\r\n                let receivedSize = 0;\r\n                const chunks = [];\r\n                let fakeProgress = 0;\r\n                let progressInterval = null;\r\n\r\n                \/\/ Start fake progress animation if Content-Length is not available\r\n                if (!totalSize) {\r\n                    progressInterval = setInterval(() => {\r\n                        fakeProgress = Math.min(fakeProgress + 2, 90); \/\/ Animate up to 90%\r\n                        updateDownloadProgress('Downloading video...', fakeProgress);\r\n                    }, 200);\r\n                }\r\n\r\n                const reader = response.body.getReader();\r\n\r\n                while (true) {\r\n                    const { done, value } = await reader.read();\r\n                    if (done) break;\r\n\r\n                    chunks.push(value);\r\n                    receivedSize += value.length;\r\n\r\n                    if (totalSize) {\r\n                        \/\/ Real progress tracking when Content-Length is available\r\n                        const progress = Math.round((receivedSize \/ totalSize) * 100);\r\n                        updateDownloadProgress(`Downloading video... ${progress}%`, progress);\r\n                    }\r\n\r\n                    if (downloadCancelled) throw new Error('AbortError');\r\n                }\r\n\r\n                \/\/ Clear fake progress interval if it was running\r\n                if (progressInterval) {\r\n                    clearInterval(progressInterval);\r\n                    updateDownloadProgress('Processing video...', 95);\r\n                }\r\n\r\n                const blob = new Blob(chunks, { type: 'video\/mp4' });\r\n                const url = URL.createObjectURL(blob);\r\n                const a = document.createElement('a');\r\n                a.href = url;\r\n                a.download = `tiktok_video_${Date.now()}.mp4`;\r\n                document.body.appendChild(a);\r\n                a.click();\r\n                document.body.removeChild(a);\r\n                URL.revokeObjectURL(url);\r\n\r\n                updateDownloadProgress('Download completed!', 100);\r\n                setTimeout(() => {\r\n                    hideDownloadProgress();\r\n                }, 2000);\r\n\r\n            } catch (error) {\r\n                if (error.name === 'AbortError' || error.message === 'AbortError') {\r\n                    updateDownloadProgress('Download cancelled', 0);\r\n                } else {\r\n                    showError(`Failed to download video: ${error.message}`);\r\n                }\r\n            } finally {\r\n                isDownloading = false;\r\n                downloadCancelled = false;\r\n                activeDownloads = activeDownloads.filter(d => d !== controller);\r\n            }\r\n        }\r\n\r\n        async function downloadVideoFromCard(video) {\r\n            if (isDownloading) {\r\n                showError('Another download is in progress');\r\n                return;\r\n            }\r\n\r\n            isDownloading = true;\r\n            downloadCancelled = false;\r\n            showDownloadProgress('Downloading video...', 0);\r\n\r\n            try {\r\n                const controller = new AbortController();\r\n                activeDownloads.push(controller);\r\n\r\n                \/\/ Use backend proxy endpoint for download\r\n                const proxyUrl = `https:\/\/tools.xrespond.com\/api\/tiktok\/proxy-video?url=${encodeURIComponent(video.play)}`;\r\n                const response = await fetch(proxyUrl, {\r\n                    signal: controller.signal\r\n                });\r\n\r\n                if (!response.ok) {\r\n                    throw new Error(`HTTP error! status: ${response.status}`);\r\n                }\r\n\r\n                const totalSize = parseInt(response.headers.get('content-length') || '0');\r\n                let receivedSize = 0;\r\n                const chunks = [];\r\n                let fakeProgress = 0;\r\n                let progressInterval = null;\r\n\r\n                \/\/ Start fake progress animation if Content-Length is not available\r\n                if (!totalSize) {\r\n                    progressInterval = setInterval(() => {\r\n                        fakeProgress = Math.min(fakeProgress + 2, 90); \/\/ Animate up to 90%\r\n                        updateDownloadProgress('Downloading video...', fakeProgress);\r\n                    }, 200);\r\n                }\r\n\r\n                const reader = response.body.getReader();\r\n\r\n                while (true) {\r\n                    const { done, value } = await reader.read();\r\n                    if (done) break;\r\n\r\n                    chunks.push(value);\r\n                    receivedSize += value.length;\r\n\r\n                    if (totalSize) {\r\n                        \/\/ Real progress tracking when Content-Length is available\r\n                        const progress = Math.round((receivedSize \/ totalSize) * 100);\r\n                        updateDownloadProgress(`Downloading video... ${progress}%`, progress);\r\n                    }\r\n\r\n                    if (downloadCancelled) throw new Error('AbortError');\r\n                }\r\n\r\n                \/\/ Clear fake progress interval if it was running\r\n                if (progressInterval) {\r\n                    clearInterval(progressInterval);\r\n                    updateDownloadProgress('Processing video...', 95);\r\n                }\r\n\r\n                const blob = new Blob(chunks, { type: 'video\/mp4' });\r\n                const url = URL.createObjectURL(blob);\r\n                const a = document.createElement('a');\r\n                a.href = url;\r\n                a.download = `tiktok_video_${Date.now()}.mp4`;\r\n                document.body.appendChild(a);\r\n                a.click();\r\n                document.body.removeChild(a);\r\n                URL.revokeObjectURL(url);\r\n\r\n                updateDownloadProgress('Download completed!', 100);\r\n                setTimeout(() => {\r\n                    hideDownloadProgress();\r\n                }, 2000);\r\n\r\n            } catch (error) {\r\n                if (error.name === 'AbortError' || error.message === 'AbortError') {\r\n                    updateDownloadProgress('Download cancelled', 0);\r\n                } else {\r\n                    showError(`Failed to download video: ${error.message}`);\r\n                }\r\n            } finally {\r\n                isDownloading = false;\r\n                downloadCancelled = false;\r\n                activeDownloads = activeDownloads.filter(d => d !== controller);\r\n            }\r\n        }\r\n\r\n        async function downloadAllVideos() {\r\n            if (allVideos.length === 0 || isDownloading) return;\r\n\r\n            isDownloading = true;\r\n            downloadCancelled = false;\r\n            const downloadBtn = document.getElementById('downloadAllBtn');\r\n            const originalText = downloadBtn.innerHTML;\r\n\r\n            downloadBtn.innerHTML = '<i class=\"fas fa-spinner fa-spin\"><\/i> Downloading...';\r\n            downloadBtn.disabled = true;\r\n\r\n            showDownloadProgress(`Starting download of ${allVideos.length} videos...`, 0);\r\n\r\n            let successCount = 0;\r\n            let failCount = 0;\r\n\r\n            try {\r\n                for (let i = 0; i < allVideos.length; i++) {\r\n                    if (downloadCancelled) break;\r\n\r\n                    const video = allVideos[i];\r\n\r\n                    try {\r\n                        const controller = new AbortController();\r\n                        activeDownloads.push(controller);\r\n\r\n                        updateDownloadProgress(`Downloading video ${i + 1} of ${allVideos.length}...`, Math.round((i \/ allVideos.length) * 100));\r\n\r\n                        const response = await fetch(video.play, {\r\n                            signal: controller.signal\r\n                        });\r\n\r\n                        if (!response.ok) throw new Error(`HTTP error! status: ${response.status}`);\r\n\r\n                        const blob = await response.blob();\r\n                        const url = URL.createObjectURL(blob);\r\n                        const a = document.createElement('a');\r\n                        a.href = url;\r\n                        a.download = `tiktok-${video.id || `video-${i + 1}`}.mp4`;\r\n                        a.style.display = 'none';\r\n                        document.body.appendChild(a);\r\n                        a.click();\r\n                        document.body.removeChild(a);\r\n                        URL.revokeObjectURL(url);\r\n\r\n                        successCount++;\r\n                        console.log(`Video ${i + 1} downloaded successfully`);\r\n\r\n                        \/\/ Remove this controller from active downloads\r\n                        activeDownloads = activeDownloads.filter(c => c !== controller);\r\n\r\n                        \/\/ Wait between downloads to avoid overwhelming the browser\r\n                        if (i < allVideos.length - 1 && !downloadCancelled) {\r\n                            await new Promise(resolve => setTimeout(resolve, 1000));\r\n                        }\r\n                    } catch (error) {\r\n                        if (error.name === 'AbortError' || error.message === 'AbortError') {\r\n                            console.log(`Video ${i + 1} download cancelled`);\r\n                            break;\r\n                        } else {\r\n                            failCount++;\r\n                            console.error(`Failed to download video ${i + 1}:`, error);\r\n                        }\r\n                    }\r\n                }\r\n\r\n                if (downloadCancelled) {\r\n                    updateDownloadProgress('Downloads cancelled', 0);\r\n                } else {\r\n                    updateDownloadProgress(`Downloads completed! ${successCount} successful, ${failCount} failed`, 100);\r\n                }\r\n\r\n                setTimeout(hideDownloadProgress, 3000);\r\n\r\n            } catch (error) {\r\n                console.error('Bulk download failed:', error);\r\n                showError('Bulk download encountered errors');\r\n                hideDownloadProgress();\r\n            } finally {\r\n                isDownloading = false;\r\n                downloadCancelled = false;\r\n                downloadBtn.innerHTML = originalText;\r\n                downloadBtn.disabled = false;\r\n                activeDownloads = [];\r\n            }\r\n        }\r\n\r\n        function showDownloadProgress(text, progress = 0) {\r\n            const progressElement = document.getElementById('downloadProgress');\r\n            const downloadText = document.getElementById('downloadText');\r\n            const progressFill = document.getElementById('downloadProgressFill');\r\n\r\n            downloadText.textContent = text;\r\n            progressFill.style.width = `${progress}%`;\r\n            progressElement.classList.add('show');\r\n        }\r\n\r\n        function updateDownloadProgress(text, progress = 0) {\r\n            const downloadText = document.getElementById('downloadText');\r\n            const progressFill = document.getElementById('downloadProgressFill');\r\n\r\n            downloadText.textContent = text;\r\n            progressFill.style.width = `${progress}%`;\r\n        }\r\n\r\n        function hideDownloadProgress() {\r\n            const progress = document.getElementById('downloadProgress');\r\n            progress.classList.remove('show');\r\n        }\r\n\r\n        function togglePlay() {\r\n            const videoPlayer = document.getElementById('videoPlayer');\r\n            const playIcon = document.getElementById('playIcon');\r\n\r\n            if (videoPlayer.paused) {\r\n                videoPlayer.play();\r\n                playIcon.className = 'fas fa-pause';\r\n            } else {\r\n                videoPlayer.pause();\r\n                playIcon.className = 'fas fa-play';\r\n            }\r\n        }\r\n\r\n        function toggleMute() {\r\n            const videoPlayer = document.getElementById('videoPlayer');\r\n\r\n            if (isMuted) {\r\n                \/\/ Unmute and restore previous volume\r\n                isMuted = false;\r\n                videoPlayer.muted = false;\r\n                videoPlayer.volume = currentVolume;\r\n            } else {\r\n                \/\/ Mute but keep volume level\r\n                isMuted = true;\r\n                videoPlayer.muted = true;\r\n            }\r\n\r\n            updateVolumeIcon();\r\n            updateVolumeDisplay();\r\n        }\r\n\r\n        function updateVolumeIcon() {\r\n            const volumeIcon = document.getElementById('volumeIcon');\r\n            if (isMuted) {\r\n                volumeIcon.className = 'fas fa-volume-mute';\r\n            } else if (currentVolume > 0.5) {\r\n                volumeIcon.className = 'fas fa-volume-up';\r\n            } else if (currentVolume > 0) {\r\n                volumeIcon.className = 'fas fa-volume-down';\r\n            } else {\r\n                volumeIcon.className = 'fas fa-volume-mute';\r\n            }\r\n        }\r\n\r\n        function setVolume(event) {\r\n            const volumeSlider = event.currentTarget;\r\n            const rect = volumeSlider.getBoundingClientRect();\r\n            const pos = (event.clientX - rect.left) \/ rect.width;\r\n            currentVolume = Math.max(0, Math.min(1, pos));\r\n\r\n            const videoPlayer = document.getElementById('videoPlayer');\r\n            videoPlayer.volume = currentVolume;\r\n\r\n            if (currentVolume === 0) {\r\n                isMuted = true;\r\n                videoPlayer.muted = true;\r\n            } else {\r\n                isMuted = false;\r\n                videoPlayer.muted = false;\r\n            }\r\n\r\n            updateVolumeIcon();\r\n            updateVolumeDisplay();\r\n        }\r\n\r\n        function updateVolumeDisplay() {\r\n            const volumeFill = document.getElementById('volumeFill');\r\n            const displayVolume = isMuted ? 0 : currentVolume;\r\n            volumeFill.style.width = `${displayVolume * 100}%`;\r\n        }\r\n\r\n        function updateVideoProgress() {\r\n            const videoPlayer = document.getElementById('videoPlayer');\r\n            const progressBar = document.getElementById('progressBar');\r\n            const progress = (videoPlayer.currentTime \/ videoPlayer.duration) * 100;\r\n            progressBar.style.width = `${progress}%`;\r\n        }\r\n\r\n        function seekVideo(event) {\r\n            const videoPlayer = document.getElementById('videoPlayer');\r\n            const progressContainer = event.currentTarget;\r\n            const rect = progressContainer.getBoundingClientRect();\r\n            const pos = (event.clientX - rect.left) \/ rect.width;\r\n            videoPlayer.currentTime = pos * videoPlayer.duration;\r\n        }\r\n\r\n        function onVideoEnd() {\r\n            const playIcon = document.getElementById('playIcon');\r\n            playIcon.className = 'fas fa-play';\r\n        }\r\n\r\n        function toggleFullscreen() {\r\n            const modal = document.getElementById('videoModal');\r\n            const fullscreenIcon = document.getElementById('fullscreenIcon');\r\n\r\n            if (!isFullscreen) {\r\n                if (modal.requestFullscreen) {\r\n                    modal.requestFullscreen();\r\n                } else if (modal.webkitRequestFullscreen) {\r\n                    modal.webkitRequestFullscreen();\r\n                } else if (modal.msRequestFullscreen) {\r\n                    modal.msRequestFullscreen();\r\n                }\r\n                isFullscreen = true;\r\n                fullscreenIcon.className = 'fas fa-compress';\r\n            } else {\r\n                exitFullscreen();\r\n            }\r\n        }\r\n\r\n        function exitFullscreen() {\r\n            if (document.exitFullscreen) {\r\n                document.exitFullscreen();\r\n            } else if (document.webkitExitFullscreen) {\r\n                document.webkitExitFullscreen();\r\n            } else if (document.msExitFullscreen) {\r\n                document.msExitFullscreen();\r\n            }\r\n            isFullscreen = false;\r\n            document.getElementById('fullscreenIcon').className = 'fas fa-expand';\r\n        }\r\n\r\n        function showLoading() {\r\n            document.getElementById('loading').style.display = 'flex';\r\n        }\r\n\r\n        function hideLoading() {\r\n            document.getElementById('loading').style.display = 'none';\r\n        }\r\n\r\n        function showError(message) {\r\n            const errorDiv = document.getElementById('errorMessage');\r\n            const errorText = document.getElementById('errorText');\r\n            errorText.textContent = message;\r\n            errorDiv.style.display = 'flex';\r\n        }\r\n\r\n        function hideError() {\r\n            document.getElementById('errorMessage').style.display = 'none';\r\n        }\r\n\r\n        function formatNumber(num) {\r\n            if (num >= 1000000) {\r\n                return (num \/ 1000000).toFixed(1) + 'M';\r\n            }\r\n            if (num >= 1000) {\r\n                return (num \/ 1000).toFixed(1) + 'K';\r\n            }\r\n            return num.toString();\r\n        }\r\n\r\n        \/\/ Event Listeners\r\n        document.getElementById('usernameInput').addEventListener('keypress', (e) => {\r\n            if (e.key === 'Enter' && !isProcessing) {\r\n                searchProfile();\r\n            }\r\n        });\r\n\r\n        \/\/ Close modals when clicking outside\r\n        document.getElementById('videoModal').addEventListener('click', (e) => {\r\n            if (e.target === document.getElementById('videoModal')) {\r\n                closeVideoModal();\r\n            }\r\n        });\r\n\r\n        document.getElementById('profileModal').addEventListener('click', (e) => {\r\n            if (e.target === document.getElementById('profileModal')) {\r\n                closeProfileModal();\r\n            }\r\n        });\r\n\r\n        \/\/ Handle fullscreen change events\r\n        document.addEventListener('fullscreenchange', () => {\r\n            isFullscreen = !!document.fullscreenElement;\r\n            const fullscreenIcon = document.getElementById('fullscreenIcon');\r\n            fullscreenIcon.className = isFullscreen ? 'fas fa-compress' : 'fas fa-expand';\r\n        });\r\n\r\n        document.addEventListener('webkitfullscreenchange', () => {\r\n            isFullscreen = !!document.webkitFullscreenElement;\r\n            const fullscreenIcon = document.getElementById('fullscreenIcon');\r\n            fullscreenIcon.className = isFullscreen ? 'fas fa-compress' : 'fas fa-expand';\r\n        });\r\n\r\n        \/\/ Keyboard shortcuts\r\n        document.addEventListener('keydown', (e) => {\r\n            if (document.getElementById('videoModal').style.display === 'block') {\r\n                switch (e.key) {\r\n                    case ' ':\r\n                        e.preventDefault();\r\n                        togglePlay();\r\n                        break;\r\n                    case 'Escape':\r\n                        closeVideoModal();\r\n                        break;\r\n                    case 'f':\r\n                    case 'F':\r\n                        toggleFullscreen();\r\n                        break;\r\n                    case 'm':\r\n                    case 'M':\r\n                        toggleMute();\r\n                        break;\r\n                }\r\n            }\r\n\r\n            if (document.getElementById('profileModal').style.display === 'block') {\r\n                if (e.key === 'Escape') {\r\n                    closeProfileModal();\r\n                }\r\n            }\r\n        });\r\n    <\/script>\r\n<\/div>\r\n\r\n\r\n<!-- ======== Content Section Start ======== -->\r\n<!-- Third Party TikTok Viewer - 3 Content Sections + Shortcode -->\r\n\r\n<link rel=\"stylesheet\" href=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/font-awesome\/6.4.0\/css\/all.min.css\" \/>\r\n\r\n<style>\r\n  .tttp-s1-root { --s1-bg: #ffffff; --s1-card-bg: #f0fdfa; --s1-text: #0f172a; --s1-text-soft: #334155; --s1-text-muted: #64748b; --s1-primary: #25F4EE; --s1-accent: #FE2C55; width: 100%; background: var(--s1-bg); padding: 80px 20px; font-family: system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif; }\r\n  .tttp-s1-container { max-width: 1200px; margin: 0 auto; }\r\n  .tttp-s1-header { text-align: center; margin-bottom: 30px; }\r\n  .tttp-s1-heading { font-size: clamp(1.4rem, 4vw, 2.5rem); font-weight: 800; margin-bottom: 16px; color: #0f172a; }\r\n  .tttp-highlight { background: linear-gradient(135deg, #25F4EE 0%, #FE2C55 50%, #ff6b8a 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; }\r\n  .tttp-s1-subheading { font-size: clamp(0.8rem, 2vw, 1rem); color: var(--s1-text-muted); max-width: 700px; margin: 0 auto; line-height: 1.6; }\r\n  .tttp-s1-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; }\r\n  .tttp-s1-card { background: var(--s1-card-bg); border-radius: 10px; padding: 32px 28px; position: relative; overflow: hidden; transition: all 0.4s ease; cursor: pointer; border: 2px solid transparent; opacity: 0; animation: tttp-s1-fadeSlideUp 0.6s ease forwards; }\r\n  .tttp-s1-card:nth-child(1) { animation-delay: 0.05s; }\r\n  .tttp-s1-card:nth-child(2) { animation-delay: 0.1s; }\r\n  .tttp-s1-card:nth-child(3) { animation-delay: 0.15s; }\r\n  .tttp-s1-card:nth-child(4) { animation-delay: 0.2s; }\r\n  .tttp-s1-card:nth-child(5) { animation-delay: 0.25s; }\r\n  .tttp-s1-card:nth-child(6) { animation-delay: 0.3s; }\r\n  @keyframes tttp-s1-fadeSlideUp { from { opacity: 0; transform: translateY(30px); } to { opacity: 1; transform: translateY(0); } }\r\n  .tttp-s1-card::before { content: \"\"; position: absolute; inset: 0; border-radius: 10px; padding: 2px; background: linear-gradient(90deg, var(--s1-primary), var(--s1-accent), var(--s1-primary)); background-size: 300% 100%; -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0); mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0); -webkit-mask-composite: xor; mask-composite: exclude; opacity: 0; transition: opacity 0.3s ease; animation: tttp-s1-borderTrace 2s linear infinite; }\r\n  .tttp-s1-card:hover::before { opacity: 1; }\r\n  @keyframes tttp-s1-borderTrace { 0% { background-position: 0% 50%; } 100% { background-position: 300% 50%; } }\r\n  .tttp-s1-card:hover { transform: translateY(-6px); box-shadow: 0 20px 40px rgba(254, 44, 85, 0.15); }\r\n  .tttp-s1-icon-wrap { width: 56px; height: 56px; background: linear-gradient(135deg, #ffffff 0%, #f1f5f9 100%); border: 2px solid #e2e8f0; border-radius: 12px; display: flex; align-items: center; justify-content: center; margin-bottom: 20px; transition: all 0.4s ease; }\r\n  .tttp-s1-card:hover .tttp-s1-icon-wrap { border-color: var(--s1-accent); background: linear-gradient(135deg, var(--s1-primary) 0%, var(--s1-accent) 100%); }\r\n  .tttp-s1-icon { font-size: 24px; color: var(--s1-accent); transition: all 0.4s ease; }\r\n  .tttp-s1-card:hover .tttp-s1-icon { color: #ffffff; transform: rotate(15deg) scale(1.1); }\r\n  .tttp-s1-card-title { font-size: 1.2rem; font-weight: 700; color: var(--s1-text); margin-bottom: 12px; }\r\n  .tttp-s1-card-desc { font-size: 0.95rem; color: var(--s1-text-soft); line-height: 1.6; }\r\n\r\n  .tttp-s2-root { --s2-bg: #f0fdfa; --s2-card-bg: #ffffff; --s2-text: #0f172a; --s2-text-soft: #334155; --s2-text-muted: #64748b; --s2-primary: #25F4EE; --s2-accent: #FE2C55; width: 100%; background: var(--s2-bg); padding: 80px 20px; font-family: system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif; }\r\n  .tttp-s2-container { max-width: 1200px; margin: 0 auto; }\r\n  .tttp-s2-header { text-align: center; margin-bottom: 30px; }\r\n  .tttp-s2-heading { font-size: clamp(1.4rem, 4vw, 2.5rem); font-weight: 800; margin-bottom: 16px; color: #0f172a; }\r\n  .tttp-s2-subheading { font-size: clamp(0.8rem, 2vw, 1rem); color: var(--s2-text-muted); max-width: 700px; margin: 0 auto; line-height: 1.6; }\r\n  .tttp-s2-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; }\r\n  .tttp-s2-card { background: var(--s2-card-bg); border-radius: 10px; padding: 32px 28px; text-align: center; position: relative; transition: all 0.4s ease; cursor: pointer; border: 1px solid #e2e8f0; opacity: 0; animation: tttp-s2-fadeSlideUp 0.6s ease forwards; }\r\n  .tttp-s2-card:nth-child(1) { animation-delay: 0.05s; }\r\n  .tttp-s2-card:nth-child(2) { animation-delay: 0.1s; }\r\n  .tttp-s2-card:nth-child(3) { animation-delay: 0.15s; }\r\n  .tttp-s2-card:nth-child(4) { animation-delay: 0.2s; }\r\n  .tttp-s2-card:nth-child(5) { animation-delay: 0.25s; }\r\n  .tttp-s2-card:nth-child(6) { animation-delay: 0.3s; }\r\n  @keyframes tttp-s2-fadeSlideUp { from { opacity: 0; transform: translateY(30px); } to { opacity: 1; transform: translateY(0); } }\r\n  .tttp-s2-card::after { content: \"\"; position: absolute; inset: 0; border-radius: 10px; box-shadow: 0 0 0 0 rgba(254, 44, 85, 0.4); opacity: 0; pointer-events: none; }\r\n  .tttp-s2-card:hover::after { animation: tttp-s2-pulseEcho 1.5s ease-out infinite; }\r\n  @keyframes tttp-s2-pulseEcho { 0% { box-shadow: 0 0 0 0 rgba(254, 44, 85, 0.4); opacity: 1; } 100% { box-shadow: 0 0 0 20px rgba(254, 44, 85, 0); opacity: 0; } }\r\n  .tttp-s2-card:hover { transform: translateY(-8px); }\r\n  .tttp-s2-icon-wrap { width: 64px; height: 64px; margin: 0 auto 20px; background: linear-gradient(135deg, var(--s2-primary) 0%, var(--s2-accent) 100%); border-radius: 50%; display: flex; align-items: center; justify-content: center; transition: all 0.6s cubic-bezier(0.68, -0.55, 0.265, 1.55); }\r\n  .tttp-s2-card:hover .tttp-s2-icon-wrap { animation: tttp-s2-elasticBounce 0.6s ease; }\r\n  @keyframes tttp-s2-elasticBounce { 0% { transform: scale(1); } 30% { transform: scale(0.85) translateY(5px); } 50% { transform: scale(1.15) translateY(-10px); } 70% { transform: scale(0.95) translateY(2px); } 100% { transform: scale(1) translateY(0); } }\r\n  .tttp-s2-icon { font-size: 26px; color: #ffffff; transition: transform 0.3s ease; }\r\n  .tttp-s2-card:hover .tttp-s2-icon { transform: rotate(10deg); }\r\n  .tttp-s2-card-title { font-size: 1.2rem; font-weight: 700; color: var(--s2-text); margin-bottom: 12px; }\r\n  .tttp-s2-card-desc { font-size: 0.95rem; color: var(--s2-text-soft); line-height: 1.6; }\r\n\r\n  .tttp-s3-root { --s3-bg: #ffffff; --s3-card-bg: #f0fdfa; --s3-text: #0f172a; --s3-text-soft: #334155; --s3-text-muted: #64748b; --s3-primary: #25F4EE; --s3-accent: #FE2C55; width: 100%; background: var(--s3-bg); padding: 80px 20px; font-family: system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif; }\r\n  .tttp-s3-container { max-width: 1200px; margin: 0 auto; }\r\n  .tttp-s3-header { text-align: center; margin-bottom: 30px; }\r\n  .tttp-s3-heading { font-size: clamp(1.4rem, 4vw, 2.5rem); font-weight: 800; margin-bottom: 16px; color: #0f172a; }\r\n  .tttp-s3-subheading { font-size: clamp(0.8rem, 2vw, 1rem); color: var(--s3-text-muted); max-width: 700px; margin: 0 auto; line-height: 1.6; }\r\n  .tttp-s3-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; }\r\n  .tttp-s3-card { background: var(--s3-card-bg); border-radius: 10px; padding: 28px; position: relative; overflow: hidden; transition: all 0.4s ease; cursor: pointer; border: 1px solid transparent; opacity: 0; animation: tttp-s3-fadeSlideUp 0.6s ease forwards; }\r\n  .tttp-s3-card:nth-child(1) { animation-delay: 0.05s; }\r\n  .tttp-s3-card:nth-child(2) { animation-delay: 0.1s; }\r\n  .tttp-s3-card:nth-child(3) { animation-delay: 0.15s; }\r\n  .tttp-s3-card:nth-child(4) { animation-delay: 0.2s; }\r\n  .tttp-s3-card:nth-child(5) { animation-delay: 0.25s; }\r\n  .tttp-s3-card:nth-child(6) { animation-delay: 0.3s; }\r\n  @keyframes tttp-s3-fadeSlideUp { from { opacity: 0; transform: translateY(30px); } to { opacity: 1; transform: translateY(0); } }\r\n  .tttp-s3-card::before { content: \"\"; position: absolute; width: 200px; height: 200px; background: radial-gradient(circle, rgba(254, 44, 85, 0.25) 0%, transparent 70%); border-radius: 50%; pointer-events: none; opacity: 0; transform: translate(-50%, -50%); transition: opacity 0.4s ease; left: var(--mouse-x, 50%); top: var(--mouse-y, 50%); }\r\n  .tttp-s3-card:hover::before { opacity: 1; }\r\n  .tttp-s3-card:hover { border-color: rgba(254, 44, 85, 0.3); transform: translateY(-4px); box-shadow: 0 12px 30px rgba(254, 44, 85, 0.1); }\r\n  .tttp-s3-step-badge { position: absolute; top: 16px; right: 16px; width: 28px; height: 28px; background: linear-gradient(135deg, var(--s3-primary) 0%, var(--s3-accent) 100%); border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 0.75rem; font-weight: 700; color: #ffffff; transition: transform 0.3s ease; }\r\n  .tttp-s3-card:hover .tttp-s3-step-badge { transform: scale(1.2) rotate(10deg); }\r\n  .tttp-s3-icon-wrap { width: 52px; height: 52px; background: #ffffff; border: 2px solid #e2e8f0; border-radius: 12px; display: flex; align-items: center; justify-content: center; margin-bottom: 16px; transition: all 0.4s ease; transform-style: preserve-3d; }\r\n  .tttp-s3-card:hover .tttp-s3-icon-wrap { transform: rotateY(180deg); border-color: var(--s3-accent); background: linear-gradient(135deg, var(--s3-primary) 0%, var(--s3-accent) 100%); }\r\n  .tttp-s3-icon { font-size: 22px; color: var(--s3-accent); transition: all 0.4s ease; backface-visibility: hidden; }\r\n  .tttp-s3-card:hover .tttp-s3-icon { color: #ffffff; transform: rotateY(180deg); }\r\n  .tttp-s3-card-title { font-size: 1.1rem; font-weight: 700; color: var(--s3-text); margin-bottom: 10px; position: relative; z-index: 1; }\r\n  .tttp-s3-card-desc { font-size: 0.9rem; color: var(--s3-text-soft); line-height: 1.5; position: relative; z-index: 1; }\r\n\r\n  .tttp-shortcode { --sc-bg: #ffffff; --sc-border: #e2e8f0; --sc-text: #0f172a; --sc-text-muted: #64748b; --sc-primary: #25F4EE; --sc-accent: #FE2C55; width: 100%; background: var(--sc-bg); padding: 60px 20px; font-family: system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif; }\r\n  .tttp-shortcode-container { max-width: 1200px; margin: 0 auto; }\r\n  .tttp-shortcode-inner { border: 2px dashed var(--sc-border); border-radius: 12px; padding: 40px; text-align: center; background: linear-gradient(135deg, #fafafa 0%, #ffffff 100%); transition: border-color 0.3s ease; }\r\n  .tttp-shortcode-inner:hover { border-color: var(--sc-accent); }\r\n  .tttp-shortcode-placeholder { display: inline-block; background: linear-gradient(135deg, var(--sc-primary) 0%, var(--sc-accent) 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; font-size: clamp(1.2rem, 3vw, 1.8rem); font-weight: 800; letter-spacing: 1px; }\r\n  .tttp-shortcode-hint { margin-top: 12px; font-size: 0.9rem; color: var(--sc-text-muted); }\r\n\r\n  @media (max-width: 1024px) { .tttp-s1-grid, .tttp-s2-grid, .tttp-s3-grid { grid-template-columns: repeat(2, 1fr); gap: 20px; } }\r\n  @media (max-width: 640px) { .tttp-s1-root, .tttp-s2-root, .tttp-s3-root, .tttp-shortcode { padding: 50px 10px; } .tttp-s1-grid, .tttp-s2-grid, .tttp-s3-grid { grid-template-columns: 1fr; gap: 16px; } .tttp-s1-card, .tttp-s2-card, .tttp-s3-card { padding: 28px 24px; } .tttp-shortcode-inner { padding: 24px 16px; } }\r\n<\/style>\r\n\r\n<section class=\"tttp-shortcode\"><div class=\"tttp-shortcode-container\"><\/div><\/section>\r\n\r\n<section class=\"tttp-s1-root\" id=\"what-is-third-party-tiktok-viewer\">\r\n  <div class=\"tttp-s1-container\">\r\n    <div class=\"tttp-s1-header\">\r\n      <h2 class=\"tttp-s1-heading\">What Is a <span class=\"tttp-highlight\">Third Party TikTok Viewer<\/span>?<\/h2>\r\n      <p class=\"tttp-s1-subheading\">Access TikTok content through third-party integrations and tools<\/p>\r\n    <\/div>\r\n    <div class=\"tttp-s1-grid\">\r\n      <article class=\"tttp-s1-card\"><div class=\"tttp-s1-icon-wrap\"><i class=\"fa-solid fa-eye tttp-s1-icon\"><\/i><\/div><h3 class=\"tttp-s1-card-title\">External View<\/h3><p class=\"tttp-s1-card-desc\">View TikTok content from external platforms<\/p><\/article>\r\n      <article class=\"tttp-s1-card\"><div class=\"tttp-s1-icon-wrap\"><i class=\"fa-solid fa-key tttp-s1-icon\"><\/i><\/div><h3 class=\"tttp-s1-card-title\">API Access<\/h3><p class=\"tttp-s1-card-desc\">Access TikTok data through API endpoints<\/p><\/article>\r\n      <article class=\"tttp-s1-card\"><div class=\"tttp-s1-icon-wrap\"><i class=\"fa-solid fa-database tttp-s1-icon\"><\/i><\/div><h3 class=\"tttp-s1-card-title\">Data Fetch<\/h3><p class=\"tttp-s1-card-desc\">Fetch TikTok data from third-party sources<\/p><\/article>\r\n      <article class=\"tttp-s1-card\"><div class=\"tttp-s1-icon-wrap\"><i class=\"fa-solid fa-arrows-rotate tttp-s1-icon\"><\/i><\/div><h3 class=\"tttp-s1-card-title\">Cross Platform<\/h3><p class=\"tttp-s1-card-desc\">Use TikTok content across different platforms<\/p><\/article>\r\n      <article class=\"tttp-s1-card\"><div class=\"tttp-s1-icon-wrap\"><i class=\"fa-solid fa-code tttp-s1-icon\"><\/i><\/div><h3 class=\"tttp-s1-card-title\">Embed View<\/h3><p class=\"tttp-s1-card-desc\">Embed TikTok content on external websites<\/p><\/article>\r\n      <article class=\"tttp-s1-card\"><div class=\"tttp-s1-icon-wrap\"><i class=\"fa-solid fa-puzzle-piece tttp-s1-icon\"><\/i><\/div><h3 class=\"tttp-s1-card-title\">Widget Ready<\/h3><p class=\"tttp-s1-card-desc\">Ready-to-use widgets for TikTok content<\/p><\/article>\r\n    <\/div>\r\n  <\/div>\r\n<\/section>\r\n\r\n<section class=\"tttp-s2-root\" id=\"why-use-third-party-tiktok-viewer\">\r\n  <div class=\"tttp-s2-container\">\r\n    <div class=\"tttp-s2-header\">\r\n      <h2 class=\"tttp-s2-heading\">Why Use a <span class=\"tttp-highlight\">Third Party TikTok Viewer<\/span>?<\/h2>\r\n      <p class=\"tttp-s2-subheading\">Extend TikTok functionality with powerful third-party tools<\/p>\r\n    <\/div>\r\n    <div class=\"tttp-s2-grid\">\r\n      <article class=\"tttp-s2-card\"><div class=\"tttp-s2-icon-wrap\"><i class=\"fa-solid fa-puzzle-piece tttp-s2-icon\"><\/i><\/div><h3 class=\"tttp-s2-card-title\">Integration Options<\/h3><p class=\"tttp-s2-card-desc\">Multiple integration options for any workflow<\/p><\/article>\r\n      <article class=\"tttp-s2-card\"><div class=\"tttp-s2-icon-wrap\"><i class=\"fa-solid fa-wand-magic-sparkles tttp-s2-icon\"><\/i><\/div><h3 class=\"tttp-s2-card-title\">Extended Features<\/h3><p class=\"tttp-s2-card-desc\">Access features beyond native TikTok capabilities<\/p><\/article>\r\n      <article class=\"tttp-s2-card\"><div class=\"tttp-s2-icon-wrap\"><i class=\"fa-solid fa-screwdriver-wrench tttp-s2-icon\"><\/i><\/div><h3 class=\"tttp-s2-card-title\">Developer Tools<\/h3><p class=\"tttp-s2-card-desc\">Tools for developers building TikTok integrations<\/p><\/article>\r\n      <article class=\"tttp-s2-card\"><div class=\"tttp-s2-icon-wrap\"><i class=\"fa-solid fa-cubes tttp-s2-icon\"><\/i><\/div><h3 class=\"tttp-s2-card-title\">Custom Solutions<\/h3><p class=\"tttp-s2-card-desc\">Build custom solutions using third-party access<\/p><\/article>\r\n      <article class=\"tttp-s2-card\"><div class=\"tttp-s2-icon-wrap\"><i class=\"fa-solid fa-bridge tttp-s2-icon\"><\/i><\/div><h3 class=\"tttp-s2-card-title\">Platform Bridge<\/h3><p class=\"tttp-s2-card-desc\">Bridge TikTok with other digital platforms<\/p><\/article>\r\n      <article class=\"tttp-s2-card\"><div class=\"tttp-s2-icon-wrap\"><i class=\"fa-solid fa-arrow-up-right-dots tttp-s2-icon\"><\/i><\/div><h3 class=\"tttp-s2-card-title\">Enhanced Access<\/h3><p class=\"tttp-s2-card-desc\">Enhanced access to TikTok content and data<\/p><\/article>\r\n    <\/div>\r\n  <\/div>\r\n<\/section>\r\n\r\n<section class=\"tttp-s3-root\" id=\"how-to-use-third-party-tiktok-viewer\">\r\n  <div class=\"tttp-s3-container\">\r\n    <div class=\"tttp-s3-header\">\r\n      <h2 class=\"tttp-s3-heading\">How to Use the <span class=\"tttp-highlight\">Third Party TikTok Viewer<\/span>?<\/h2>\r\n      <p class=\"tttp-s3-subheading\">Connect and access TikTok through third-party integrations<\/p>\r\n    <\/div>\r\n    <div class=\"tttp-s3-grid\">\r\n      <article class=\"tttp-s3-card\"><span class=\"tttp-s3-step-badge\">1<\/span><div class=\"tttp-s3-icon-wrap\"><i class=\"fa-solid fa-plug tttp-s3-icon\"><\/i><\/div><h3 class=\"tttp-s3-card-title\">Connect Platform<\/h3><p class=\"tttp-s3-card-desc\">Connect your third-party platform to TikTok<\/p><\/article>\r\n      <article class=\"tttp-s3-card\"><span class=\"tttp-s3-step-badge\">2<\/span><div class=\"tttp-s3-icon-wrap\"><i class=\"fa-solid fa-shield-halved tttp-s3-icon\"><\/i><\/div><h3 class=\"tttp-s3-card-title\">Authorize Access<\/h3><p class=\"tttp-s3-card-desc\">Authorize the connection between platforms<\/p><\/article>\r\n      <article class=\"tttp-s3-card\"><span class=\"tttp-s3-step-badge\">3<\/span><div class=\"tttp-s3-icon-wrap\"><i class=\"fa-solid fa-download tttp-s3-icon\"><\/i><\/div><h3 class=\"tttp-s3-card-title\">Fetch Data<\/h3><p class=\"tttp-s3-card-desc\">Fetch TikTok data through the integration<\/p><\/article>\r\n      <article class=\"tttp-s3-card\"><span class=\"tttp-s3-step-badge\">4<\/span><div class=\"tttp-s3-icon-wrap\"><i class=\"fa-solid fa-eye tttp-s3-icon\"><\/i><\/div><h3 class=\"tttp-s3-card-title\">View Content<\/h3><p class=\"tttp-s3-card-desc\">View TikTok content in your third-party tool<\/p><\/article>\r\n      <article class=\"tttp-s3-card\"><span class=\"tttp-s3-step-badge\">5<\/span><div class=\"tttp-s3-icon-wrap\"><i class=\"fa-solid fa-toolbox tttp-s3-icon\"><\/i><\/div><h3 class=\"tttp-s3-card-title\">Integrate Tools<\/h3><p class=\"tttp-s3-card-desc\">Use integrated tools to manage content<\/p><\/article>\r\n      <article class=\"tttp-s3-card\"><span class=\"tttp-s3-step-badge\">6<\/span><div class=\"tttp-s3-icon-wrap\"><i class=\"fa-solid fa-lock tttp-s3-icon\"><\/i><\/div><h3 class=\"tttp-s3-card-title\">Manage Permissions<\/h3><p class=\"tttp-s3-card-desc\">Manage access permissions and security settings<\/p><\/article>\r\n    <\/div>\r\n  <\/div>\r\n<\/section>\r\n\r\n<script>\r\n  (function () {\r\n    var cards = document.querySelectorAll(\".tttp-s3-card\");\r\n    cards.forEach(function (card) {\r\n      card.addEventListener(\"mousemove\", function (e) {\r\n        var rect = card.getBoundingClientRect();\r\n        card.style.setProperty(\"--mouse-x\", ((e.clientX - rect.left) \/ rect.width) * 100 + \"%\");\r\n        card.style.setProperty(\"--mouse-y\", ((e.clientY - rect.top) \/ rect.height) * 100 + \"%\");\r\n      });\r\n    });\r\n  })();\r\n<\/script>\r\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"","protected":false},"author":4,"featured_media":0,"parent":5496,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"template-homepage.php","meta":{"footnotes":""},"class_list":["post-6146","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/viewari.com\/wp-json\/wp\/v2\/pages\/6146","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/viewari.com\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/viewari.com\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/viewari.com\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/viewari.com\/wp-json\/wp\/v2\/comments?post=6146"}],"version-history":[{"count":4,"href":"https:\/\/viewari.com\/wp-json\/wp\/v2\/pages\/6146\/revisions"}],"predecessor-version":[{"id":6150,"href":"https:\/\/viewari.com\/wp-json\/wp\/v2\/pages\/6146\/revisions\/6150"}],"up":[{"embeddable":true,"href":"https:\/\/viewari.com\/wp-json\/wp\/v2\/pages\/5496"}],"wp:attachment":[{"href":"https:\/\/viewari.com\/wp-json\/wp\/v2\/media?parent=6146"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}