{"id":12,"date":"2026-01-27T00:50:01","date_gmt":"2026-01-27T00:50:01","guid":{"rendered":"https:\/\/shadowplayer.app\/?page_id=12"},"modified":"2026-04-23T23:16:24","modified_gmt":"2026-04-23T23:16:24","slug":"shadow-player","status":"publish","type":"page","link":"https:\/\/shadowplayer.app\/","title":{"rendered":"Shadow Player"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"12\" class=\"elementor elementor-12\">\n\t\t\t\t<div class=\"elementor-element elementor-element-1fd9fdf e-flex e-con-boxed e-con e-parent\" data-id=\"1fd9fdf\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-909d9ab elementor-widget elementor-widget-html\" data-id=\"909d9ab\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n  <title>Shadow Player - White-Label IPTV App + Full Reseller Portal (APK Builder, Device Management, Cloud DVR)<\/title>\n  <meta name=\"title\" content=\"Shadow Player - White-Label IPTV App + Full Reseller Portal\">\n  <meta name=\"description\" content=\"Complete IPTV reseller SaaS. Web-based APK build farm (custom colors, logo, splash, main\/beta branches). Live device dashboard with bulk remote commands (message, clear cache, restart, force update, wipe). Device error log ingestion. Push player settings bulk or per-device. One-line web player deploy. In-app broadcasts. Cloud DVR with shared recordings. Cross-device favorites sync. ~10MB Android TV \/ Fire TV \/ Android app with proven ExoPlayer freeze recovery. Pairs with Shadow Panel for the complete stack.\">\n  <meta name=\"keywords\" content=\"IPTV reseller portal, IPTV SaaS, white-label IPTV, APK builder, IPTV APK build farm, Android TV IPTV, Fire TV IPTV, device management, bulk remote commands, IPTV error logs, push player settings, web player deploy, Cloud DVR IPTV, IPTV Smarters alternative, TiviMate alternative, XCIPTV alternative, reseller IPTV app, OTA updates, in-app broadcasts, master version control, main beta branches, D-pad IPTV, ExoPlayer freeze recovery, cloud favorites sync, Shadow Panel companion, Xtream Codes player\">\n  <meta name=\"author\" content=\"Shadow Player\">\n  <meta name=\"robots\" content=\"index, follow\">\n  <link rel=\"canonical\" href=\"https:\/\/shadowplayer.app\/\">\n\n  <!-- Open Graph -->\n  <meta property=\"og:type\" content=\"website\">\n  <meta property=\"og:url\" content=\"https:\/\/shadowplayer.app\/\">\n  <meta property=\"og:title\" content=\"Shadow Player - White-Label IPTV App + Full Reseller Portal\">\n  <meta property=\"og:description\" content=\"Complete reseller SaaS: web-based APK builder, live device dashboard, bulk remote commands, device error logs, push player settings, one-line web player deploy, in-app broadcasts, Cloud DVR with shared recordings. ~10MB app, cross-device favorites sync, proven freeze recovery. Pairs with Shadow Panel.\">\n  <meta property=\"og:site_name\" content=\"Shadow Player\">\n\n  <!-- Twitter -->\n  <meta property=\"twitter:card\" content=\"summary_large_image\">\n  <meta property=\"twitter:title\" content=\"Shadow Player - White-Label IPTV + Full Reseller Portal\">\n  <meta property=\"twitter:description\" content=\"Full reseller SaaS: APK build farm, live device dashboard, bulk remote commands, error logs, web player deploy, Cloud DVR. ~10MB app. Pairs with Shadow Panel.\">\n\n  <!-- Structured Data -->\n  <script type=\"application\/ld+json\">\n  {\n    \"@context\": \"https:\/\/schema.org\",\n    \"@type\": \"SoftwareApplication\",\n    \"name\": \"Shadow Player\",\n    \"applicationCategory\": \"MultimediaApplication\",\n    \"operatingSystem\": \"Android, Android TV, Fire TV\",\n    \"description\": \"White-label IPTV player for Android TV, Fire TV, and Android \u00e2\u20ac\u201d paired with a full reseller SaaS control plane. Web-based APK builder, live device dashboard, bulk remote commands, device error log ingestion, push player settings, one-line web player deploy, in-app broadcasts, main\/beta branch management, master version control, custom DNS, Cloud DVR with shared recordings, cross-device cloud favorites sync, proven ExoPlayer freeze recovery. Pairs with Shadow Panel.\",\n    \"url\": \"https:\/\/shadowplayer.app\",\n    \"offers\": {\n      \"@type\": \"AggregateOffer\",\n      \"lowPrice\": \"25\",\n      \"highPrice\": \"199\",\n      \"priceCurrency\": \"USD\",\n      \"offerCount\": \"3\"\n    },\n    \"featureList\": [\n      \"Full Reseller SaaS Portal (web-based control plane)\",\n      \"Web-Based APK Build Farm (color pickers, logo\/splash upload, main\/beta branches)\",\n      \"Live Device Dashboard (Online \/ Recent \/ Active stats, per-device table)\",\n      \"Bulk Remote Commands (message, clear cache, restart, force update, kill, wipe, push settings)\",\n      \"Device Error Log Ingestion (STUCK_PLAYER, PLAYBACK_FAILED, NUCLEAR_RECOVERY)\",\n      \"Bulk and Per-Device Player Settings Push\",\n      \"One-Line Web Player Deploy with Portal Monitoring\",\n      \"In-App Broadcast Messages\",\n      \"Master Version Control + Per-Client Version Pinning\",\n      \"Custom DNS Management (1 \/ 5 \/ unlimited entries by tier)\",\n      \"Cloud DVR with Shared Recordings (pairs with Shadow Panel)\",\n      \"Cross-Device Cloud Favorites Sync\",\n      \"~10MB App Footprint\",\n      \"Instant EPG Loading (no refresh required)\",\n      \"Proven ExoPlayer Freeze Recovery (STATE_IDLE + position-stall detection)\",\n      \"Full Audio Track Selection (AC3, EAC3, AAC, MP3, Opus, DTS, TrueHD, FLAC, 5.1\/7.1)\",\n      \"Full Subtitle Track Selection (CC, WebVTT, SRT, ASS, TTML, DVB, PGS)\",\n      \"Stream Info HUD (codec, resolution, bitrate, fps, sample rate)\",\n      \"Channel History Carousel\",\n      \"DirecTV-Style D-Pad Interface\",\n      \"Full White-Label Branding with Custom Package ID\",\n      \"OTA Updates from Reseller Portal\",\n      \"Web Player (browser fallback)\",\n      \"Android TV, Fire TV, and Android Phone support\"\n    ]\n  }\n  <\/script>\n\n  <link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n  <link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\n  <link href=\"https:\/\/fonts.googleapis.com\/css2?family=JetBrains+Mono:wght@400;600;700&family=Outfit:wght@300;400;500;600;700;800&display=swap\" rel=\"stylesheet\">\n  <link rel=\"stylesheet\" href=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/font-awesome\/6.5.1\/css\/all.min.css\">\n\n  <style>\n    :root {\n      --bg-primary: #0a0a0f;\n      --bg-secondary: #12121a;\n      --bg-tertiary: #1a1a26;\n      --bg-card: #15151f;\n      --accent-primary: #3b82f6;\n      --accent-secondary: #6366f1;\n      --accent-gradient: linear-gradient(135deg, #3b82f6 0%, #6366f1 50%, #8b5cf6 100%);\n      --accent-glow: rgba(59, 130, 246, 0.4);\n      --green: #22c55e;\n      --green-glow: rgba(34, 197, 94, 0.3);\n      --red: #ef4444;\n      --orange: #f59e0b;\n      --cyan: #06b6d4;\n      --text-primary: #f4f4f5;\n      --text-secondary: #a1a1aa;\n      --text-muted: #71717a;\n      --border: rgba(255, 255, 255, 0.08);\n      --font-display: 'Outfit', sans-serif;\n      --font-mono: 'JetBrains Mono', monospace;\n    }\n\n    * {\n      margin: 0;\n      padding: 0;\n      box-sizing: border-box;\n    }\n\n    html {\n      scroll-behavior: smooth;\n    }\n\n    body {\n      font-family: var(--font-display);\n      background: var(--bg-primary);\n      color: var(--text-primary);\n      line-height: 1.6;\n      overflow-x: hidden;\n    }\n\n    body::before {\n      content: '';\n      position: fixed;\n      top: 0;\n      left: 0;\n      width: 100%;\n      height: 100%;\n      background-image: url(\"data:image\/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http:\/\/www.w3.org\/2000\/svg'%3E%3Cfilter id='noiseFilter'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='4' stitchTiles='stitch'\/%3E%3C\/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noiseFilter)'\/%3E%3C\/svg%3E\");\n      opacity: 0.03;\n      pointer-events: none;\n      z-index: 1000;\n    }\n\n    .grid-bg {\n      position: fixed;\n      top: 0;\n      left: 0;\n      width: 100%;\n      height: 100%;\n      background-image:\n        linear-gradient(rgba(59, 130, 246, 0.03) 1px, transparent 1px),\n        linear-gradient(90deg, rgba(59, 130, 246, 0.03) 1px, transparent 1px);\n      background-size: 60px 60px;\n      pointer-events: none;\n      z-index: -1;\n    }\n\n    \/* Navigation *\/\n    nav {\n      position: fixed;\n      top: 0;\n      left: 0;\n      right: 0;\n      padding: 1.25rem 4%;\n      display: flex;\n      justify-content: space-between;\n      align-items: center;\n      background: rgba(10, 10, 15, 0.85);\n      backdrop-filter: blur(20px);\n      border-bottom: 1px solid var(--border);\n      z-index: 100;\n    }\n\n    .logo {\n      display: flex;\n      align-items: center;\n      gap: 0.75rem;\n      font-size: 1.5rem;\n      font-weight: 700;\n      letter-spacing: -0.02em;\n    }\n\n    .logo-icon {\n      width: 38px;\n      height: 38px;\n      background: var(--accent-gradient);\n      border-radius: 10px;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      font-size: 1.1rem;\n      box-shadow: 0 4px 20px var(--accent-glow);\n    }\n\n    .nav-links {\n      display: flex;\n      gap: 2.5rem;\n      list-style: none;\n    }\n\n    .nav-links a {\n      color: var(--text-secondary);\n      text-decoration: none;\n      font-weight: 500;\n      font-size: 0.95rem;\n      transition: all 0.2s;\n    }\n\n    .nav-links a:hover {\n      color: var(--text-primary);\n    }\n\n    .nav-cta {\n      display: flex;\n      gap: 1rem;\n    }\n\n    .btn {\n      padding: 0.75rem 1.75rem;\n      border-radius: 10px;\n      font-weight: 600;\n      font-size: 0.95rem;\n      cursor: pointer;\n      transition: all 0.25s;\n      text-decoration: none;\n      display: inline-flex;\n      align-items: center;\n      gap: 0.5rem;\n      border: none;\n    }\n\n    .btn-ghost {\n      background: transparent;\n      color: var(--text-primary);\n      border: 1px solid var(--border);\n    }\n\n    .btn-ghost:hover {\n      background: rgba(255, 255, 255, 0.05);\n      border-color: rgba(255, 255, 255, 0.15);\n    }\n\n    .btn-primary {\n      background: var(--accent-gradient);\n      color: white;\n      box-shadow: 0 4px 20px var(--accent-glow);\n    }\n\n    .btn-primary:hover {\n      transform: translateY(-2px);\n      box-shadow: 0 8px 30px var(--accent-glow);\n    }\n\n    \/* Hero Section *\/\n    .hero {\n      min-height: 100vh;\n      display: flex;\n      flex-direction: column;\n      justify-content: center;\n      align-items: center;\n      text-align: center;\n      padding: 8rem 5% 4rem;\n      position: relative;\n    }\n\n    .hero::before {\n      content: '';\n      position: absolute;\n      top: 10%;\n      left: 50%;\n      transform: translateX(-50%);\n      width: 800px;\n      height: 800px;\n      background: radial-gradient(circle, var(--accent-glow) 0%, transparent 70%);\n      filter: blur(80px);\n      opacity: 0.6;\n      pointer-events: none;\n    }\n\n    .badge {\n      display: inline-flex;\n      align-items: center;\n      gap: 0.5rem;\n      padding: 0.5rem 1rem;\n      background: rgba(59, 130, 246, 0.1);\n      border: 1px solid rgba(59, 130, 246, 0.3);\n      border-radius: 100px;\n      font-size: 0.85rem;\n      font-weight: 500;\n      color: var(--accent-primary);\n      margin-bottom: 1.5rem;\n      animation: float 3s ease-in-out infinite;\n    }\n\n    @keyframes float {\n      0%, 100% { transform: translateY(0); }\n      50% { transform: translateY(-5px); }\n    }\n\n    .hero h1 {\n      font-size: clamp(3rem, 8vw, 5.5rem);\n      font-weight: 800;\n      line-height: 1.05;\n      letter-spacing: -0.03em;\n      margin-bottom: 1.5rem;\n      max-width: 1000px;\n    }\n\n    .gradient-text {\n      background: var(--accent-gradient);\n      -webkit-background-clip: text;\n      -webkit-text-fill-color: transparent;\n      background-clip: text;\n    }\n\n    .hero p {\n      font-size: 1.35rem;\n      color: var(--text-secondary);\n      max-width: 800px;\n      margin-bottom: 2.5rem;\n      line-height: 1.7;\n    }\n\n    .hero-cta {\n      display: flex;\n      gap: 1rem;\n      margin-bottom: 4rem;\n    }\n\n    .stats-row {\n      display: flex;\n      gap: 4rem;\n      padding: 2rem 3rem;\n      background: var(--bg-card);\n      border: 1px solid var(--border);\n      border-radius: 20px;\n      backdrop-filter: blur(10px);\n    }\n\n    .stat {\n      text-align: center;\n    }\n\n    .stat-value {\n      font-family: var(--font-mono);\n      font-size: 2.5rem;\n      font-weight: 700;\n      background: var(--accent-gradient);\n      -webkit-background-clip: text;\n      -webkit-text-fill-color: transparent;\n      background-clip: text;\n    }\n\n    .stat-label {\n      font-size: 0.9rem;\n      color: var(--text-muted);\n      margin-top: 0.25rem;\n    }\n\n    \/* Sections *\/\n    section {\n      padding: 6rem 5%;\n      max-width: 1600px;\n      margin: 0 auto;\n    }\n\n    .section-header {\n      text-align: center;\n      margin-bottom: 4rem;\n    }\n\n    .section-header h2 {\n      font-size: 3rem;\n      font-weight: 700;\n      letter-spacing: -0.02em;\n      margin-bottom: 1rem;\n    }\n\n    .section-header p {\n      font-size: 1.2rem;\n      color: var(--text-secondary);\n      max-width: 600px;\n      margin: 0 auto;\n    }\n\n    \/* Problem\/Solution *\/\n    .problem-solution {\n      display: grid;\n      grid-template-columns: 1fr 1fr;\n      gap: 3rem;\n      margin-top: 3rem;\n    }\n\n    .problem-card, .solution-card {\n      padding: 3rem 3.5rem;\n      border-radius: 20px;\n      border: 1px solid var(--border);\n    }\n\n    .problem-card {\n      background: linear-gradient(135deg, rgba(239, 68, 68, 0.05) 0%, transparent 100%);\n      border-color: rgba(239, 68, 68, 0.2);\n    }\n\n    .solution-card {\n      background: linear-gradient(135deg, rgba(34, 197, 94, 0.05) 0%, transparent 100%);\n      border-color: rgba(34, 197, 94, 0.2);\n    }\n\n    .card-header {\n      display: flex;\n      align-items: center;\n      gap: 1rem;\n      margin-bottom: 1.5rem;\n    }\n\n    .card-header i {\n      font-size: 1.5rem;\n    }\n\n    .problem-card .card-header i { color: var(--red); }\n    .solution-card .card-header i { color: var(--green); }\n\n    .card-header h3 {\n      font-size: 1.5rem;\n      font-weight: 600;\n    }\n\n    .card-list {\n      list-style: none;\n      display: flex;\n      flex-direction: column;\n      gap: 1rem;\n    }\n\n    .card-list li {\n      display: flex;\n      align-items: flex-start;\n      gap: 0.75rem;\n      color: var(--text-secondary);\n      line-height: 1.5;\n    }\n\n    .card-list li i {\n      margin-top: 0.25rem;\n      font-size: 0.75rem;\n    }\n\n    .problem-card .card-list li i { color: var(--red); }\n    .solution-card .card-list li i { color: var(--green); }\n\n    \/* Features Grid *\/\n    .features-grid {\n      display: grid;\n      grid-template-columns: repeat(3, 1fr);\n      gap: 2rem;\n    }\n\n    .feature-card {\n      padding: 2.5rem 3rem;\n      background: var(--bg-card);\n      border: 1px solid var(--border);\n      border-radius: 16px;\n      transition: all 0.3s;\n      position: relative;\n    }\n\n    .feature-card:hover {\n      transform: translateY(-4px);\n      border-color: rgba(59, 130, 246, 0.3);\n      box-shadow: 0 20px 40px rgba(0, 0, 0, 0.3);\n    }\n\n    .feature-card.exclusive {\n      background: linear-gradient(135deg, rgba(59, 130, 246, 0.08) 0%, transparent 100%);\n      border-color: rgba(59, 130, 246, 0.3);\n    }\n\n    .feature-card.exclusive::before {\n      content: 'EXCLUSIVE';\n      position: absolute;\n      top: 1rem;\n      right: 1rem;\n      font-size: 0.65rem;\n      font-weight: 700;\n      padding: 0.25rem 0.5rem;\n      background: var(--accent-gradient);\n      border-radius: 4px;\n      letter-spacing: 0.05em;\n    }\n\n    .feature-icon {\n      width: 48px;\n      height: 48px;\n      background: rgba(59, 130, 246, 0.1);\n      border: 1px solid rgba(59, 130, 246, 0.2);\n      border-radius: 12px;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      font-size: 1.25rem;\n      color: var(--accent-primary);\n      margin-bottom: 1.25rem;\n    }\n\n    .feature-card h3 {\n      font-size: 1.2rem;\n      font-weight: 600;\n      margin-bottom: 0.75rem;\n    }\n\n    .feature-card p {\n      color: var(--text-secondary);\n      font-size: 0.95rem;\n      line-height: 1.6;\n    }\n\n    \/* Comparison Table *\/\n    .comparison-section {\n      background: var(--bg-secondary);\n      border-radius: 24px;\n      padding: 4rem 5rem;\n      margin: 4rem 0;\n    }\n\n    .comparison-table {\n      width: 100%;\n      border-collapse: collapse;\n      margin-top: 2rem;\n    }\n\n    .comparison-table th,\n    .comparison-table td {\n      padding: 1.25rem 1.5rem;\n      text-align: center;\n      border-bottom: 1px solid var(--border);\n    }\n\n    .comparison-table th {\n      font-weight: 600;\n      color: var(--text-muted);\n      font-size: 0.9rem;\n      text-transform: uppercase;\n      letter-spacing: 0.05em;\n    }\n\n    .comparison-table th:first-child,\n    .comparison-table td:first-child {\n      text-align: left;\n      font-weight: 500;\n    }\n\n    .comparison-table td:nth-child(2) {\n      background: rgba(59, 130, 246, 0.08);\n      font-weight: 600;\n    }\n\n    .comparison-table .check { color: var(--green); font-size: 1.25rem; }\n    .comparison-table .cross { color: var(--red); opacity: 0.6; }\n    .comparison-table .partial { color: var(--orange); }\n    .comparison-table .highlight { color: var(--green); font-weight: 600; font-family: var(--font-mono); }\n\n    \/* Benchmark Grid *\/\n    .benchmark-grid {\n      display: grid;\n      grid-template-columns: repeat(2, 1fr);\n      gap: 3rem;\n      margin-top: 3rem;\n    }\n\n    .benchmark-card {\n      background: var(--bg-card);\n      border: 1px solid var(--border);\n      border-radius: 20px;\n      padding: 3rem 3.5rem;\n    }\n\n    .benchmark-card h4 {\n      font-size: 1.1rem;\n      font-weight: 600;\n      margin-bottom: 1.5rem;\n      display: flex;\n      align-items: center;\n      gap: 0.75rem;\n    }\n\n    .benchmark-card h4 i { color: var(--accent-primary); }\n\n    .benchmark-bar {\n      margin-bottom: 1.5rem;\n    }\n\n    .benchmark-bar-header {\n      display: flex;\n      justify-content: space-between;\n      margin-bottom: 0.5rem;\n      font-size: 0.9rem;\n    }\n\n    .benchmark-bar-label { color: var(--text-secondary); }\n    .benchmark-bar-value { font-family: var(--font-mono); font-weight: 600; }\n\n    .benchmark-bar-track {\n      height: 8px;\n      background: var(--bg-tertiary);\n      border-radius: 4px;\n      overflow: hidden;\n    }\n\n    .benchmark-bar-fill {\n      height: 100%;\n      border-radius: 4px;\n      transition: width 1s ease-out;\n    }\n\n    .benchmark-bar-fill.shadow { background: var(--accent-gradient); }\n    .benchmark-bar-fill.smarters { background: var(--orange); }\n    .benchmark-bar-fill.xciptv { background: var(--text-muted); }\n    .benchmark-bar-fill.tivimate { background: var(--red); opacity: 0.6; }\n\n    \/* Pricing Grid *\/\n    .pricing-grid {\n      display: grid;\n      grid-template-columns: repeat(3, 1fr);\n      gap: 2rem;\n      margin-top: 3rem;\n    }\n\n    .pricing-card {\n      background: var(--bg-card);\n      border: 1px solid var(--border);\n      border-radius: 20px;\n      padding: 2.5rem;\n      display: flex;\n      flex-direction: column;\n      position: relative;\n      transition: all 0.3s;\n    }\n\n    .pricing-card:hover {\n      transform: translateY(-4px);\n      box-shadow: 0 20px 40px rgba(0, 0, 0, 0.3);\n    }\n\n    .pricing-card.featured {\n      background: linear-gradient(135deg, rgba(59, 130, 246, 0.1) 0%, rgba(99, 102, 246, 0.05) 100%);\n      border-color: rgba(59, 130, 246, 0.4);\n      transform: scale(1.02);\n    }\n\n    .pricing-badge {\n      position: absolute;\n      top: -12px;\n      left: 50%;\n      transform: translateX(-50%);\n      background: var(--accent-gradient);\n      padding: 0.4rem 1.25rem;\n      border-radius: 100px;\n      font-size: 0.75rem;\n      font-weight: 700;\n      text-transform: uppercase;\n      letter-spacing: 0.05em;\n    }\n\n    .pricing-tier {\n      font-size: 1.1rem;\n      font-weight: 600;\n      color: var(--text-muted);\n      text-transform: uppercase;\n      letter-spacing: 0.1em;\n      margin-bottom: 0.5rem;\n    }\n\n    .pricing-price {\n      display: flex;\n      align-items: baseline;\n      gap: 0.25rem;\n      margin-bottom: 1rem;\n    }\n\n    .price-currency { font-size: 1.5rem; font-weight: 600; color: var(--text-secondary); }\n    .price-amount {\n      font-family: var(--font-mono);\n      font-size: 4rem;\n      font-weight: 700;\n      line-height: 1;\n      background: var(--accent-gradient);\n      -webkit-background-clip: text;\n      -webkit-text-fill-color: transparent;\n      background-clip: text;\n    }\n    .price-period { font-size: 1rem; color: var(--text-muted); }\n\n    .pricing-description {\n      color: var(--text-secondary);\n      font-size: 0.95rem;\n      line-height: 1.5;\n      margin-bottom: 1.5rem;\n    }\n\n    .pricing-limits {\n      display: flex;\n      gap: 1.5rem;\n      padding: 1.25rem;\n      background: var(--bg-tertiary);\n      border-radius: 12px;\n      margin-bottom: 1.5rem;\n    }\n\n    .limit-item {\n      display: flex;\n      flex-direction: column;\n      align-items: center;\n      flex: 1;\n    }\n\n    .limit-value {\n      font-family: var(--font-mono);\n      font-size: 1.75rem;\n      font-weight: 700;\n      color: var(--green);\n    }\n\n    .limit-label {\n      font-size: 0.8rem;\n      color: var(--text-muted);\n      text-align: center;\n    }\n\n    .pricing-features {\n      list-style: none;\n      flex: 1;\n      margin-bottom: 2rem;\n    }\n\n    .pricing-features li {\n      display: flex;\n      align-items: center;\n      gap: 0.75rem;\n      padding: 0.6rem 0;\n      border-bottom: 1px solid var(--border);\n      font-size: 0.9rem;\n    }\n\n    .pricing-features li:last-child { border-bottom: none; }\n    .pricing-features li.included { color: var(--text-secondary); }\n    .pricing-features li.included i { color: var(--green); }\n    .pricing-features li.excluded { color: var(--text-muted); opacity: 0.6; }\n    .pricing-features li.excluded i { color: var(--text-muted); }\n\n    .pricing-btn {\n      width: 100%;\n      justify-content: center;\n      padding: 1rem;\n    }\n\n    \/* CTA Section *\/\n    .cta-section {\n      text-align: center;\n      padding: 6rem 2rem;\n      position: relative;\n    }\n\n    .cta-section::before {\n      content: '';\n      position: absolute;\n      bottom: 0;\n      left: 50%;\n      transform: translateX(-50%);\n      width: 600px;\n      height: 400px;\n      background: radial-gradient(circle, var(--accent-glow) 0%, transparent 70%);\n      filter: blur(100px);\n      opacity: 0.5;\n      pointer-events: none;\n    }\n\n    .cta-section h2 {\n      font-size: 3rem;\n      font-weight: 700;\n      margin-bottom: 1rem;\n    }\n\n    .cta-section p {\n      font-size: 1.2rem;\n      color: var(--text-secondary);\n      margin-bottom: 2rem;\n      max-width: 600px;\n      margin-left: auto;\n      margin-right: auto;\n    }\n\n    .cta-buttons {\n      display: flex;\n      justify-content: center;\n      gap: 1rem;\n    }\n\n    \/* Footer *\/\n    footer {\n      padding: 3rem 2rem;\n      border-top: 1px solid var(--border);\n      text-align: center;\n      color: var(--text-muted);\n      font-size: 0.9rem;\n    }\n\n    \/* Mobile Menu *\/\n    .mobile-menu-btn {\n      display: none;\n      background: transparent;\n      border: 1px solid var(--border);\n      border-radius: 8px;\n      padding: 0.5rem 0.75rem;\n      color: var(--text-primary);\n      font-size: 1.25rem;\n      cursor: pointer;\n    }\n\n    \/* Responsive *\/\n    @media (max-width: 1024px) {\n      .features-grid,\n      .pricing-grid { grid-template-columns: 1fr; max-width: 500px; margin-left: auto; margin-right: auto; }\n      .problem-solution,\n      .benchmark-grid { grid-template-columns: 1fr; }\n      .comparison-section { overflow-x: auto; }\n      .comparison-table { min-width: 700px; }\n    }\n\n    @media (max-width: 768px) {\n      .nav-links, .nav-cta { display: none; }\n      .mobile-menu-btn { display: block; }\n      section { padding: 3.5rem 1.25rem; }\n      .hero { padding: 6rem 1.25rem 3rem; min-height: auto; }\n      .hero h1 { font-size: 2.2rem; }\n      .hero p { font-size: 1.05rem; }\n      .hero-cta { flex-direction: column; width: 100%; }\n      .hero-cta .btn { width: 100%; justify-content: center; }\n      .stats-row { flex-direction: column; gap: 1.5rem; padding: 1.5rem; }\n      .stat-value { font-size: 2rem; }\n      .section-header h2 { font-size: 2rem; }\n      .comparison-section { padding: 1.5rem 1rem; }\n      .cta-buttons { flex-direction: column; }\n      .cta-buttons .btn { width: 100%; justify-content: center; }\n    }\n\n    \/* ============ Showcase Feature Blocks (DVR, Shadow Panel pairing, Portal) ============ *\/\n    .showcase-feature {\n      border-radius: 24px;\n      padding: 4rem 5rem;\n      margin: 4rem 0;\n      display: grid;\n      grid-template-columns: 1.1fr 1fr;\n      gap: 5rem;\n      align-items: center;\n    }\n    .dvr-showcase {\n      background: linear-gradient(135deg, rgba(168, 85, 247, 0.12) 0%, rgba(139, 92, 246, 0.05) 100%);\n      border: 1px solid rgba(168, 85, 247, 0.35);\n    }\n    .pair-showcase {\n      background: linear-gradient(135deg, rgba(99, 102, 241, 0.1) 0%, rgba(59, 130, 246, 0.05) 100%);\n      border: 1px solid rgba(99, 102, 241, 0.3);\n    }\n    .showcase-content h3 {\n      font-size: 2rem;\n      font-weight: 700;\n      margin-bottom: 1rem;\n      display: flex;\n      align-items: center;\n      gap: 1rem;\n      flex-wrap: wrap;\n    }\n    .showcase-content p {\n      color: var(--text-secondary);\n      font-size: 1.1rem;\n      margin-bottom: 1.5rem;\n      line-height: 1.7;\n    }\n    .showcase-features {\n      display: flex;\n      flex-direction: column;\n      gap: 0.75rem;\n      list-style: none;\n      padding: 0;\n    }\n    .showcase-features li {\n      display: flex;\n      align-items: center;\n      gap: 0.75rem;\n      color: var(--text-secondary);\n    }\n    .dvr-showcase .showcase-features li i { color: #a855f7; }\n    .pair-showcase .showcase-features li i { color: var(--accent-primary); }\n    .showcase-visual {\n      background: var(--bg-tertiary);\n      border-radius: 16px;\n      padding: 1.5rem;\n      font-family: var(--font-mono);\n      font-size: 0.85rem;\n      overflow: hidden;\n    }\n    .showcase-visual pre { color: var(--text-secondary); white-space: pre-wrap; margin: 0; }\n    .showcase-visual .comment { color: var(--text-muted); }\n    .showcase-visual .keyword { color: var(--accent-secondary); }\n    .showcase-visual .string { color: var(--green); }\n    .showcase-visual .number { color: var(--orange); }\n    .showcase-tag {\n      padding: 0.35rem 0.75rem;\n      border-radius: 999px;\n      font-size: 0.78rem;\n      font-weight: 600;\n      letter-spacing: 0.02em;\n    }\n    .dvr-showcase .showcase-tag {\n      background: rgba(168, 85, 247, 0.15);\n      color: #d8b4fe;\n      border: 1px solid rgba(168, 85, 247, 0.3);\n    }\n    .pair-showcase .showcase-tag {\n      background: rgba(99, 102, 241, 0.15);\n      color: #c7d2fe;\n      border: 1px solid rgba(99, 102, 241, 0.3);\n    }\n\n    \/* ============ Portal Showcase (full-width, tile grid + mockup) ============ *\/\n    .portal-showcase {\n      background: linear-gradient(135deg, rgba(16, 185, 129, 0.12) 0%, rgba(6, 182, 212, 0.05) 100%);\n      border: 1px solid rgba(16, 185, 129, 0.3);\n      display: block;\n    }\n    .portal-showcase .showcase-header {\n      text-align: center;\n      max-width: 780px;\n      margin: 0 auto 3rem auto;\n    }\n    .portal-showcase .showcase-header h3 {\n      justify-content: center;\n      font-size: 2.25rem;\n    }\n    .portal-showcase .showcase-header p { font-size: 1.15rem; }\n    .portal-showcase .showcase-tag {\n      background: rgba(16, 185, 129, 0.15);\n      color: #6ee7b7;\n      border: 1px solid rgba(16, 185, 129, 0.35);\n    }\n    .portal-grid {\n      display: grid;\n      grid-template-columns: repeat(3, 1fr);\n      gap: 1.25rem;\n    }\n    .portal-tile {\n      background: rgba(15, 15, 22, 0.65);\n      border: 1px solid rgba(16, 185, 129, 0.2);\n      border-radius: 14px;\n      padding: 1.5rem 1.5rem 1.4rem;\n      transition: all 0.25s ease;\n    }\n    .portal-tile:hover {\n      border-color: rgba(16, 185, 129, 0.45);\n      transform: translateY(-2px);\n    }\n    .portal-tile .tile-icon {\n      width: 40px;\n      height: 40px;\n      border-radius: 10px;\n      background: rgba(16, 185, 129, 0.14);\n      border: 1px solid rgba(16, 185, 129, 0.3);\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      color: #10b981;\n      font-size: 1.1rem;\n      margin-bottom: 0.9rem;\n    }\n    .portal-tile h4 {\n      font-size: 1.05rem;\n      font-weight: 600;\n      margin-bottom: 0.5rem;\n      color: var(--text-primary);\n    }\n    .portal-tile p {\n      color: var(--text-secondary);\n      font-size: 0.9rem;\n      line-height: 1.55;\n    }\n    .portal-tile .tile-detail {\n      margin-top: 0.75rem;\n      padding-top: 0.75rem;\n      border-top: 1px solid rgba(255, 255, 255, 0.05);\n      font-size: 0.8rem;\n      color: var(--text-muted);\n      font-family: var(--font-mono);\n    }\n    \/* Fake mini-dashboard mockup \u00e2\u20ac\u201d illustrates the Device Management page *\/\n    .portal-mockup {\n      margin-top: 2.5rem;\n      background: var(--bg-tertiary);\n      border-radius: 16px;\n      padding: 1.75rem;\n      border: 1px solid rgba(255,255,255,0.05);\n    }\n    .portal-mockup .mock-title {\n      display: flex;\n      align-items: center;\n      gap: 0.6rem;\n      font-size: 0.85rem;\n      color: var(--text-muted);\n      margin-bottom: 1rem;\n    }\n    .portal-mockup .mock-dot {\n      width: 10px;\n      height: 10px;\n      border-radius: 50%;\n      background: #22c55e;\n      box-shadow: 0 0 8px rgba(34,197,94,0.6);\n    }\n    .mock-stats {\n      display: grid;\n      grid-template-columns: repeat(4, 1fr);\n      gap: 0.75rem;\n      margin-bottom: 1.25rem;\n    }\n    .mock-stat {\n      background: rgba(255,255,255,0.02);\n      border: 1px solid rgba(255,255,255,0.05);\n      border-radius: 10px;\n      padding: 0.85rem 1rem;\n    }\n    .mock-stat .label { font-size: 0.7rem; color: var(--text-muted); text-transform: uppercase; letter-spacing: 0.05em; }\n    .mock-stat .value { font-size: 1.4rem; font-weight: 700; color: var(--text-primary); margin-top: 0.25rem; }\n    .mock-stat .value.green { color: #22c55e; }\n    .mock-stat .value.orange { color: #f59e0b; }\n    .mock-row {\n      display: grid;\n      grid-template-columns: auto 1fr auto auto auto;\n      gap: 0.75rem;\n      align-items: center;\n      padding: 0.55rem 0.75rem;\n      background: rgba(255,255,255,0.02);\n      border-radius: 8px;\n      margin-top: 0.4rem;\n      font-size: 0.82rem;\n      color: var(--text-secondary);\n    }\n    .mock-row .online-dot { width: 8px; height: 8px; border-radius: 50%; background: #22c55e; }\n    .mock-row .idle-dot { width: 8px; height: 8px; border-radius: 50%; background: #f59e0b; }\n    .mock-row .device { font-family: var(--font-mono); color: var(--text-primary); }\n    .mock-row .model { color: var(--text-muted); font-size: 0.78rem; }\n    .mock-row .version { font-family: var(--font-mono); color: var(--cyan); font-size: 0.78rem; }\n    .mock-row .lastseen { color: var(--text-muted); font-size: 0.78rem; }\n    .mock-row .action { color: var(--accent-primary); font-size: 0.78rem; font-weight: 600; cursor: default; }\n\n    \/* JUST SHIPPED badge *\/\n    .feature-card.just-shipped { position: relative; }\n    .feature-card.just-shipped::after {\n      content: 'JUST SHIPPED';\n      position: absolute;\n      top: -10px;\n      right: 16px;\n      background: linear-gradient(135deg, #22c55e, #16a34a);\n      color: white;\n      font-size: 0.65rem;\n      font-weight: 700;\n      padding: 0.25rem 0.65rem;\n      border-radius: 999px;\n      letter-spacing: 0.08em;\n      box-shadow: 0 4px 12px rgba(34, 197, 94, 0.3);\n      z-index: 2;\n    }\n\n    @media (max-width: 900px) {\n      .showcase-feature {\n        grid-template-columns: 1fr;\n        gap: 2.5rem;\n        padding: 3rem 2rem;\n      }\n      .portal-grid { grid-template-columns: 1fr; }\n      .mock-stats { grid-template-columns: repeat(2, 1fr); }\n      .mock-row { grid-template-columns: 1fr auto; font-size: 0.75rem; }\n      .mock-row .model, .mock-row .version, .mock-row .lastseen { display: none; }\n    }\n  <\/style>\n<\/head>\n<body>\n  <div class=\"grid-bg\"><\/div>\n\n  <nav>\n    <div class=\"logo\">\n      <div class=\"logo-icon\"><i class=\"fas fa-play\"><\/i><\/div>\n      <span>Shadow Player<\/span>\n    <\/div>\n    <ul class=\"nav-links\">\n      <li><a href=\"#features\">Features<\/a><\/li>\n      <li><a href=\"#comparison\">Compare<\/a><\/li>\n      <li><a href=\"#benchmarks\">Speed<\/a><\/li>\n      <li><a href=\"#pricing\">Pricing<\/a><\/li>\n    <\/ul>\n    <div class=\"nav-cta\">\n      <a href=\"https:\/\/shadowplayer.shadowstack.codes\" class=\"btn btn-primary\">Reseller Portal <i class=\"fas fa-arrow-right\"><\/i><\/a>\n    <\/div>\n    <button class=\"mobile-menu-btn\"><i class=\"fas fa-bars\"><\/i><\/button>\n  <\/nav>\n\n  <!-- Hero -->\n  <section class=\"hero\">\n    <div class=\"badge\">\n      <i class=\"fas fa-bolt\"><\/i>\n      White-Label IPTV App + Full Reseller SaaS Portal\n    <\/div>\n    <h1>\n      Not Just an App.<br>\n      A <span class=\"gradient-text\">Complete SaaS<\/span> for Resellers.\n    <\/h1>\n    <p>\n      A ~10MB Android TV \/ Fire TV \/ Android player your customers will love &mdash; <em>plus<\/em> the full control plane you need to run your business. Web-based APK build farm, live device dashboard, bulk remote commands, error log ingestion, one-line web player deploy, in-app broadcasts, Cloud DVR, and cross-device favorites sync. Pairs with <a href=\"https:\/\/shadowpanel.app\" style=\"color: var(--accent-primary); font-weight: 600;\">Shadow Panel<\/a> for the complete stack.\n    <\/p>\n    <div class=\"hero-cta\">\n      <a href=\"#pricing\" class=\"btn btn-primary\">\n        <i class=\"fas fa-rocket\"><\/i> Start Reselling\n      <\/a>\n      <a href=\"#comparison\" class=\"btn btn-ghost\">\n        <i class=\"fas fa-chart-bar\"><\/i> See Comparison\n      <\/a>\n    <\/div>\n\n    <div class=\"stats-row\">\n      <div class=\"stat\">\n        <div class=\"stat-value\">~10MB<\/div>\n        <div class=\"stat-label\">App Size<\/div>\n      <\/div>\n      <div class=\"stat\">\n        <div class=\"stat-value\">1-Click<\/div>\n        <div class=\"stat-label\">APK Build<\/div>\n      <\/div>\n      <div class=\"stat\">\n        <div class=\"stat-value\">&#x2601;&#xFE0F;<\/div>\n        <div class=\"stat-label\">Cloud DVR<\/div>\n      <\/div>\n      <div class=\"stat\">\n        <div class=\"stat-value\">OTA<\/div>\n        <div class=\"stat-label\">Auto Updates<\/div>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <!-- Problem\/Solution -->\n  <section id=\"why\">\n    <div class=\"section-header\">\n      <h2>Why Your Customers Hate Their Current App<\/h2>\n      <p>The apps they're using were designed a decade ago. Time for something better.<\/p>\n    <\/div>\n\n    <div class=\"problem-solution\">\n      <div class=\"problem-card\">\n        <div class=\"card-header\">\n          <i class=\"fas fa-times-circle\"><\/i>\n          <h3>Other IPTV Players<\/h3>\n        <\/div>\n        <ul class=\"card-list\">\n          <li><i class=\"fas fa-circle\"><\/i> 50-100MB app size fills up cheap TV boxes<\/li>\n          <li><i class=\"fas fa-circle\"><\/i> \"Refresh Playlist\" and \"Update EPG\" buttons everywhere<\/li>\n          <li><i class=\"fas fa-circle\"><\/i> EPG takes 30 seconds to 5 minutes to load<\/li>\n          <li><i class=\"fas fa-circle\"><\/i> Stale data from yesterday's sync<\/li>\n          <li><i class=\"fas fa-circle\"><\/i> Clunky touch-first UI on TV remotes<\/li>\n          <li><i class=\"fas fa-circle\"><\/i> No white-label or per-device fees<\/li>\n        <\/ul>\n      <\/div>\n\n      <div class=\"solution-card\">\n        <div class=\"card-header\">\n          <i class=\"fas fa-check-circle\"><\/i>\n          <h3>Shadow Player<\/h3>\n        <\/div>\n        <ul class=\"card-list\">\n          <li><i class=\"fas fa-check\"><\/i> Cloud DVR - schedule and watch recordings anytime<\/li>\n          <li><i class=\"fas fa-check\"><\/i> Zero refresh buttons - data loads automatically<\/li>\n          <li><i class=\"fas fa-check\"><\/i> Instant EPG - current info every time you open<\/li>\n          <li><i class=\"fas fa-check\"><\/i> Live TV, Movies & Series - complete entertainment<\/li>\n          <li><i class=\"fas fa-check\"><\/i> DirecTV-style interface built for D-pad<\/li>\n          <li><i class=\"fas fa-check\"><\/i> Full white-label with flat monthly pricing<\/li>\n        <\/ul>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <!-- Cloud DVR Showcase \u00e2\u20ac\u201d joint feature with Shadow Panel -->\n  <section>\n    <div class=\"showcase-feature dvr-showcase\">\n      <div class=\"showcase-content\">\n        <h3>\n          <i class=\"fas fa-cloud\" style=\"color: #a855f7; font-size: 2rem;\"><\/i>\n          Cloud DVR with Shared Recordings\n          <span class=\"showcase-tag\">JOINT FEATURE<\/span>\n        <\/h3>\n        <p>\n          Your customers schedule recordings right from the app &mdash; no local storage, no NAS setup, no DVR box. Recordings run on your <a href=\"https:\/\/shadowpanel.app\" style=\"color: var(--accent-primary); font-weight: 600;\">Shadow Panel<\/a> load balancers with <strong>shared recording<\/strong>: 50 users recording the same show, one FFmpeg process runs. Playback streams back through the app like any other channel.\n        <\/p>\n        <ul class=\"showcase-features\">\n          <li><i class=\"fas fa-check\"><\/i> Schedule from EPG grid &mdash; one-tap record<\/li>\n          <li><i class=\"fas fa-check\"><\/i> Shared recordings: N viewers, 1 FFmpeg on LB (massive disk savings)<\/li>\n          <li><i class=\"fas fa-check\"><\/i> EPG auto-labeling at record time (title, episode, air date)<\/li>\n          <li><i class=\"fas fa-check\"><\/i> Records currently-airing programs, not just scheduled future ones<\/li>\n          <li><i class=\"fas fa-check\"><\/i> Per-user storage quotas, enforced server-side<\/li>\n          <li><i class=\"fas fa-check\"><\/i> DeltaSync-replicated playback across secondary mains<\/li>\n          <li><i class=\"fas fa-check\"><\/i> Requires Shadow Panel + Shadow Player together<\/li>\n        <\/ul>\n      <\/div>\n      <div class=\"showcase-visual\">\n<pre><span class=\"comment\">\/\/ Customer taps \"Record\" on EPG entry<\/span>\n<span class=\"keyword\">POST<\/span> \/dvr\/schedule\n  { channel_id: <span class=\"number\">1076<\/span>,\n    epg_id: <span class=\"string\">\"ep_8321\"<\/span>,\n    start: <span class=\"string\">\"2026-04-23T20:00Z\"<\/span> }\n\n<span class=\"comment\">\/\/ 15s scheduler tick \u00e2\u2020\u2019 FFmpeg on LB<\/span>\n  \u00e2\u2020\u2019 recording begins at air time\n  \u00e2\u2020\u2019 title + episode auto-labeled\n  \u00e2\u2020\u2019 shared with <span class=\"number\">47<\/span> other viewers\n     recording the same show\n     (one FFmpeg, not <span class=\"number\">48<\/span>)\n\n<span class=\"comment\">\/\/ Playback = just another stream<\/span>\n<span class=\"keyword\">GET<\/span> \/dvr\/play\/<span class=\"number\">R12345<\/span>.ts\n  \u00e2\u2020\u2019 streams through LB like a channel\n  \u00e2\u2020\u2019 scrubbing, pause, resume<\/pre>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <!-- Shadow Panel Pairing Showcase -->\n  <section>\n    <div class=\"showcase-feature pair-showcase\">\n      <div class=\"showcase-content\">\n        <h3>\n          <i class=\"fas fa-link\" style=\"color: var(--accent-primary); font-size: 2rem;\"><\/i>\n          Built for Shadow Panel\n          <span class=\"showcase-tag\">BETTER TOGETHER<\/span>\n        <\/h3>\n        <p>\n          Shadow Player works great with any Xtream-compatible panel &mdash; but it was designed to pair with <a href=\"https:\/\/shadowpanel.app\" style=\"color: var(--accent-primary); font-weight: 600;\">Shadow Panel<\/a>. When both run together, your customers get features no other player + panel combo can deliver.\n        <\/p>\n        <ul class=\"showcase-features\">\n          <li><i class=\"fas fa-check\"><\/i> <strong>Cloud DVR<\/strong> &mdash; scheduler on the panel, playback in the app<\/li>\n          <li><i class=\"fas fa-check\"><\/i> <strong>Cloud Favorites Sync<\/strong> &mdash; favorites follow the user across devices<\/li>\n          <li><i class=\"fas fa-check\"><\/i> <strong>Bulk EPG API<\/strong> &mdash; instant EPG via Shadow API, no refresh cycles<\/li>\n          <li><i class=\"fas fa-check\"><\/i> <strong>24\/7 Virtual Channels<\/strong> with current-position metadata<\/li>\n          <li><i class=\"fas fa-check\"><\/i> <strong>Episode-level series metadata<\/strong>, not season-only<\/li>\n          <li><i class=\"fas fa-check\"><\/i> <strong>Custom EPG stream titles<\/strong> preserved end-to-end<\/li>\n          <li><i class=\"fas fa-check\"><\/i> Works with Xtream-only panels too &mdash; you don't have to use Shadow Panel<\/li>\n        <\/ul>\n        <div style=\"margin-top: 1.5rem;\">\n          <a href=\"https:\/\/shadowpanel.app\" class=\"btn btn-primary\" style=\"text-decoration: none;\">\n            <i class=\"fas fa-external-link-alt\"><\/i> Explore Shadow Panel\n          <\/a>\n        <\/div>\n      <\/div>\n      <div class=\"showcase-visual\">\n<pre><span class=\"comment\">\/\/ Shadow API \u00e2\u20ac\u201d what the app calls<\/span>\n<span class=\"keyword\">GET<\/span> \/shadow\/channels_bulk\n  \u00e2\u2020\u2019 live + 24\/7 channels in one request\n  \u00e2\u2020\u2019 current EPG per channel\n  \u00e2\u2020\u2019 <span class=\"number\">50<\/span> upcoming programs per channel\n  \u00e2\u2020\u2019 poster \/ logo URLs (cached)\n  \u00e2\u2020\u2019 synced favorites list\n\n<span class=\"comment\">\/\/ DVR \u00e2\u20ac\u201d panel handles the heavy lifting<\/span>\n<span class=\"keyword\">POST<\/span> \/dvr\/schedule     \u00e2\u2020\u2019 record\n<span class=\"keyword\">GET<\/span>  \/dvr\/recordings   \u00e2\u2020\u2019 list\n<span class=\"keyword\">GET<\/span>  \/dvr\/play\/<span class=\"string\">\"id\"<\/span>    \u00e2\u2020\u2019 playback\n\n<span class=\"comment\">\/\/ Favorites \u00e2\u20ac\u201d sync from phone \u00e2\u2020\u2019 TV in ~2s<\/span>\n<span class=\"keyword\">POST<\/span> \/shadow\/favorites\n  { type: <span class=\"string\">\"channel\"<\/span>, id: <span class=\"number\">1076<\/span> }<\/pre>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <!-- Reseller Portal Showcase \u00e2\u20ac\u201d full SaaS platform -->\n  <section>\n    <div class=\"showcase-feature portal-showcase\">\n      <div class=\"showcase-header\">\n        <h3>\n          <i class=\"fas fa-gauge-high\" style=\"color: #10b981; font-size: 2rem;\"><\/i>\n          Your Own Reseller Portal\n          <span class=\"showcase-tag\">FULL SAAS<\/span>\n        <\/h3>\n        <p>\n          This isn't just an app &mdash; it's a full SaaS control plane. Log in to your portal and build custom-branded APKs, monitor every device, send bulk commands, push settings, watch error reports roll in, and deploy a companion web player in one command. Everything operators used to need five separate tools for, in one place.\n        <\/p>\n      <\/div>\n\n      <div class=\"portal-grid\">\n        <div class=\"portal-tile\">\n          <div class=\"tile-icon\"><i class=\"fas fa-hammer\"><\/i><\/div>\n          <h4>APK Build Farm<\/h4>\n          <p>Pick your app name, colors (primary + accent), logo, splash image, and branch. Click Build. Signed APK ready in 10&ndash;15 minutes, versioned and downloadable from the portal.<\/p>\n          <div class=\"tile-detail\">main \/ beta branches &middot; build history &middot; stuck-build recovery<\/div>\n        <\/div>\n        <div class=\"portal-tile\">\n          <div class=\"tile-icon\"><i class=\"fas fa-mobile-screen-button\"><\/i><\/div>\n          <h4>Device Management<\/h4>\n          <p>Live dashboard of every installation: online status, model (Fire TV, NVIDIA Shield, etc.), app version, IP, last seen. Filter by online-only or version. Search by device or IP.<\/p>\n          <div class=\"tile-detail\">Total &middot; Online Now &middot; Recent (10min) &middot; Active (24h)<\/div>\n        <\/div>\n        <div class=\"portal-tile\">\n          <div class=\"tile-icon\"><i class=\"fas fa-bolt-lightning\"><\/i><\/div>\n          <h4>Remote Commands<\/h4>\n          <p>Send messages, clear cache, force updates, restart, kill the app, or wipe data &mdash; per-device or in bulk across hundreds of devices with one click. Changes land in seconds.<\/p>\n          <div class=\"tile-detail\">message &middot; clear_cache &middot; restart &middot; force_update &middot; terminate &middot; wipe<\/div>\n        <\/div>\n        <div class=\"portal-tile\">\n          <div class=\"tile-icon\"><i class=\"fas fa-triangle-exclamation\"><\/i><\/div>\n          <h4>Error Log Monitoring<\/h4>\n          <p>Your customers' devices report playback errors straight to the portal. Filter by type, drill into stream URL + device + recovery status. Know about problems before they call.<\/p>\n          <div class=\"tile-detail\">STUCK_PLAYER &middot; PLAYBACK_FAILED &middot; NUCLEAR_RECOVERY<\/div>\n        <\/div>\n        <div class=\"portal-tile\">\n          <div class=\"tile-icon\"><i class=\"fas fa-sliders\"><\/i><\/div>\n          <h4>Push Player Settings<\/h4>\n          <p>Change buffer size, EPG refresh, player options &mdash; per device or to every device at once. No app update needed. Settings land on next heartbeat.<\/p>\n          <div class=\"tile-detail\">bulk settings &middot; per-device settings &middot; heartbeat-driven<\/div>\n        <\/div>\n        <div class=\"portal-tile\">\n          <div class=\"tile-icon\"><i class=\"fas fa-globe\"><\/i><\/div>\n          <h4>One-Line Web Player Deploy<\/h4>\n          <p>Have a VPS? Paste one command and your branded web player is live. Portal tracks its health, stats, and lets you redeploy or push new branding without SSH'ing in again.<\/p>\n          <div class=\"tile-detail\">curl installer &middot; node heartbeat &middot; push-branding &middot; redeploy<\/div>\n        <\/div>\n        <div class=\"portal-tile\">\n          <div class=\"tile-icon\"><i class=\"fas fa-tower-broadcast\"><\/i><\/div>\n          <h4>Broadcast Messages<\/h4>\n          <p>Announce maintenance, upsell a new tier, or push an urgent notice. Broadcasts land as in-app messages across every active device &mdash; or a targeted subset.<\/p>\n          <div class=\"tile-detail\">all devices &middot; targeted &middot; scheduled<\/div>\n        <\/div>\n        <div class=\"portal-tile\">\n          <div class=\"tile-icon\"><i class=\"fas fa-network-wired\"><\/i><\/div>\n          <h4>Custom DNS &amp; Reporter<\/h4>\n          <p>Point your branded app at your own domains. Manage multiple DNS entries per tier from the portal, plus configure the reporter server URL for device error ingestion.<\/p>\n          <div class=\"tile-detail\">1 \/ 5 \/ unlimited DNS entries by tier<\/div>\n        <\/div>\n        <div class=\"portal-tile\">\n          <div class=\"tile-icon\"><i class=\"fas fa-tags\"><\/i><\/div>\n          <h4>Branch &amp; Version Control<\/h4>\n          <p>Master version bump, per-client version pinning, main\/beta branch selection at build time. Roll out updates gradually &mdash; test on beta, promote to main when proven.<\/p>\n          <div class=\"tile-detail\">master version &middot; per-client pin &middot; auto-update flag<\/div>\n        <\/div>\n      <\/div>\n\n      <!-- Illustrative mini dashboard (pure CSS, not a screenshot) -->\n      <div class=\"portal-mockup\">\n        <div class=\"mock-title\">\n          <span class=\"mock-dot\"><\/span>\n          Portal &rsaquo; Device Management &rsaquo; Live\n        <\/div>\n        <div class=\"mock-stats\">\n          <div class=\"mock-stat\"><div class=\"label\">Total Devices<\/div><div class=\"value\">1,247<\/div><\/div>\n          <div class=\"mock-stat\"><div class=\"label\">Online Now<\/div><div class=\"value green\">318<\/div><\/div>\n          <div class=\"mock-stat\"><div class=\"label\">Recent (10min)<\/div><div class=\"value orange\">57<\/div><\/div>\n          <div class=\"mock-stat\"><div class=\"label\">Active (24h)<\/div><div class=\"value\">892<\/div><\/div>\n        <\/div>\n        <div class=\"mock-row\">\n          <span class=\"online-dot\"><\/span>\n          <div><div class=\"device\">F65375E9&hellip;<\/div><div class=\"model\">Amazon Fire TV Stick 4K<\/div><\/div>\n          <div class=\"version\">2.0.128<\/div>\n          <div class=\"lastseen\">just now<\/div>\n          <div class=\"action\">Send Cmd &rsaquo;<\/div>\n        <\/div>\n        <div class=\"mock-row\">\n          <span class=\"online-dot\"><\/span>\n          <div><div class=\"device\">8C24B853&hellip;<\/div><div class=\"model\">NVIDIA Shield TV Pro<\/div><\/div>\n          <div class=\"version\">2.0.128<\/div>\n          <div class=\"lastseen\">2m ago<\/div>\n          <div class=\"action\">Send Cmd &rsaquo;<\/div>\n        <\/div>\n        <div class=\"mock-row\">\n          <span class=\"idle-dot\"><\/span>\n          <div><div class=\"device\">14725013&hellip;<\/div><div class=\"model\">Xiaomi Mi TV Stick<\/div><\/div>\n          <div class=\"version\">2.0.127<\/div>\n          <div class=\"lastseen\">9m ago<\/div>\n          <div class=\"action\">Send Cmd &rsaquo;<\/div>\n        <\/div>\n        <div class=\"mock-row\">\n          <span class=\"online-dot\"><\/span>\n          <div><div class=\"device\">10ADE7D9&hellip;<\/div><div class=\"model\">Chromecast with Google TV<\/div><\/div>\n          <div class=\"version\">2.0.128<\/div>\n          <div class=\"lastseen\">just now<\/div>\n          <div class=\"action\">Send Cmd &rsaquo;<\/div>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <!-- Features -->\n  <section id=\"features\">\n    <div class=\"section-header\">\n      <h2>Features That Set Us Apart<\/h2>\n      <p>Everything resellers need. Nothing your customers don't.<\/p>\n    <\/div>\n\n    <div class=\"features-grid\">\n      <div class=\"feature-card exclusive just-shipped\">\n        <div class=\"feature-icon\"><i class=\"fas fa-hammer\"><\/i><\/div>\n        <h3>APK Build Farm in the Portal<\/h3>\n        <p>Web-based APK builder with color pickers for primary + accent, logo\/splash upload, main\/beta branch selector, version bumping. Signed APK lands in 10&ndash;15 minutes. Full build history with re-download and stuck-build recovery.<\/p>\n      <\/div>\n\n      <div class=\"feature-card exclusive just-shipped\">\n        <div class=\"feature-icon\"><i class=\"fas fa-bolt-lightning\"><\/i><\/div>\n        <h3>Bulk Remote Commands<\/h3>\n        <p>Pick any subset of devices (or select all), choose from 7 actions &mdash; message, clear cache, restart, force update, kill, wipe, push player settings &mdash; click Apply. Hundreds of devices updated in seconds.<\/p>\n      <\/div>\n\n      <div class=\"feature-card exclusive just-shipped\">\n        <div class=\"feature-icon\"><i class=\"fas fa-gauge-high\"><\/i><\/div>\n        <h3>Live Device Dashboard<\/h3>\n        <p>Every installation at a glance: Total, Online Now, Recent (10min), Active (24h). Per-device rows show model (Fire TV, Shield, etc.), version, IP, last seen. Filter by version or online-only. Search by device or IP.<\/p>\n      <\/div>\n\n      <div class=\"feature-card exclusive just-shipped\">\n        <div class=\"feature-icon\"><i class=\"fas fa-triangle-exclamation\"><\/i><\/div>\n        <h3>Device Error Logs<\/h3>\n        <p>Devices phone home with playback errors. Filter by type (STUCK_PLAYER, PLAYBACK_FAILED, NUCLEAR_RECOVERY), see stream URL + device + recovery status. Spot provider issues before your customers call.<\/p>\n      <\/div>\n\n      <div class=\"feature-card exclusive just-shipped\">\n        <div class=\"feature-icon\"><i class=\"fas fa-sliders\"><\/i><\/div>\n        <h3>Push Player Settings<\/h3>\n        <p>Buffer sizes, EPG refresh intervals, playback options &mdash; change them per device or across your whole fleet. Settings land on the next device heartbeat. No app update required.<\/p>\n      <\/div>\n\n      <div class=\"feature-card exclusive just-shipped\">\n        <div class=\"feature-icon\"><i class=\"fas fa-globe\"><\/i><\/div>\n        <h3>One-Line Web Player Deploy<\/h3>\n        <p>Have a VPS? Paste one curl command and your branded web player is live. Portal monitors its heartbeat, shows 24h stats, and lets you redeploy or push new branding without touching the server again.<\/p>\n      <\/div>\n\n      <div class=\"feature-card exclusive just-shipped\">\n        <div class=\"feature-icon\"><i class=\"fas fa-tower-broadcast\"><\/i><\/div>\n        <h3>In-App Broadcasts<\/h3>\n        <p>Announce maintenance, promote a new tier, or push an urgent notice. Broadcasts land as in-app messages across every active device (or a targeted subset). Compose, send, track delivery.<\/p>\n      <\/div>\n\n      <div class=\"feature-card exclusive just-shipped\">\n        <div class=\"feature-icon\"><i class=\"fas fa-code-branch\"><\/i><\/div>\n        <h3>Main \/ Beta Branches<\/h3>\n        <p>Build against beta to test cutting-edge features on a handful of devices. Build against main for the stable release every customer gets. Never ship a regression to your whole fleet again.<\/p>\n      <\/div>\n\n      <div class=\"feature-card exclusive just-shipped\">\n        <div class=\"feature-icon\"><i class=\"fas fa-tags\"><\/i><\/div>\n        <h3>Master Version Control<\/h3>\n        <p>Bump the master version to push updates to every client. Pin specific clients to a prior version if they can't upgrade yet. Auto-update flag controls whether devices prompt or apply silently.<\/p>\n      <\/div>\n\n      <div class=\"feature-card exclusive just-shipped\">\n        <div class=\"feature-icon\"><i class=\"fas fa-network-wired\"><\/i><\/div>\n        <h3>Custom DNS Management<\/h3>\n        <p>Point your branded app at your own domains &mdash; 1 entry on Starter, 5 on Professional, unlimited on Enterprise. Configure the reporter server URL for centralized error ingestion.<\/p>\n      <\/div>\n\n      <div class=\"feature-card exclusive just-shipped\">\n        <div class=\"feature-icon\"><i class=\"fas fa-sync\"><\/i><\/div>\n        <h3>Cloud Favorites Sync<\/h3>\n        <p>Favorites follow the viewer, not the device. Fire TV in the living room, phone in the kitchen, tablet in bed &mdash; same favorites, synced in seconds via Shadow Panel.<\/p>\n      <\/div>\n\n      <div class=\"feature-card exclusive just-shipped\">\n        <div class=\"feature-icon\"><i class=\"fas fa-heart-pulse\"><\/i><\/div>\n        <h3>Proven Freeze Recovery<\/h3>\n        <p>ExoPlayer dropping to IDLE? Position stalling? Shadow Player detects both, triggers a clean full reset, and reloads. Exponential backoff on errors (1s &rarr; 10s, 6 retries), based on Google's official ExoPlayer best practices.<\/p>\n      <\/div>\n\n      <div class=\"feature-card exclusive\">\n        <div class=\"feature-icon\"><i class=\"fas fa-bolt\"><\/i><\/div>\n        <h3>Instant EPG Loading<\/h3>\n        <p>EPG data streams on-demand. No downloading, no parsing, no waiting. Open a category and see current program info instantly.<\/p>\n      <\/div>\n\n      <div class=\"feature-card exclusive\">\n        <div class=\"feature-icon\"><i class=\"fas fa-circle-dot\"><\/i><\/div>\n        <h3>Cloud DVR<\/h3>\n        <p>Schedule recordings from the EPG. Watch anytime. Manage storage from the app. Your customers get true DVR without hardware.<\/p>\n      <\/div>\n\n      <div class=\"feature-card exclusive\">\n        <div class=\"feature-icon\"><i class=\"fas fa-sync-alt\"><\/i><\/div>\n        <h3>No Refresh Required<\/h3>\n        <p>Forget \"Refresh Playlist\" and \"Update EPG\" buttons. Shadow Player fetches fresh data automatically every time.<\/p>\n      <\/div>\n\n      <div class=\"feature-card\">\n        <div class=\"feature-icon\"><i class=\"fas fa-tv\"><\/i><\/div>\n        <h3>Classic Satellite UI<\/h3>\n        <p>DirecTV-style grid EPG with channel numbers and lightning-fast D-pad navigation. Your customers already know how to use it.<\/p>\n      <\/div>\n\n      <div class=\"feature-card\">\n        <div class=\"feature-icon\"><i class=\"fas fa-download\"><\/i><\/div>\n        <h3>OTA Updates<\/h3>\n        <p>Push updates to all your customers instantly from your portal. No sideloading, no support tickets. One click updates everyone.<\/p>\n      <\/div>\n\n      <div class=\"feature-card\">\n        <div class=\"feature-icon\"><i class=\"fas fa-palette\"><\/i><\/div>\n        <h3>Full White-Label<\/h3>\n        <p>Your logo, your colors, your app name. Custom package ID for Play Store. Your customers see your brand, not ours.<\/p>\n      <\/div>\n\n      <div class=\"feature-card\">\n        <div class=\"feature-icon\"><i class=\"fas fa-mobile-alt\"><\/i><\/div>\n        <h3>Device Management<\/h3>\n        <p>See all active installations. Send messages. Push updates. Remotely manage every device running your app.<\/p>\n      <\/div>\n\n      <div class=\"feature-card\">\n        <div class=\"feature-icon\"><i class=\"fas fa-terminal\"><\/i><\/div>\n        <h3>Remote Commands<\/h3>\n        <p>Terminate sessions, clear cache, force updates - all from your reseller portal. Total control over deployed apps.<\/p>\n      <\/div>\n\n      <div class=\"feature-card\">\n        <div class=\"feature-icon\"><i class=\"fas fa-globe\"><\/i><\/div>\n        <h3>Web Player<\/h3>\n        <p>Browser-based viewing for customers who can't install apps. Same great experience, no installation required.<\/p>\n      <\/div>\n\n      <div class=\"feature-card\">\n        <div class=\"feature-icon\"><i class=\"fas fa-film\"><\/i><\/div>\n        <h3>Movies & Series<\/h3>\n        <p>Full VOD library with poster art, descriptions, and episode browsing. Movies and TV shows alongside live channels.<\/p>\n      <\/div>\n\n      <div class=\"feature-card\">\n        <div class=\"feature-icon\"><i class=\"fas fa-search\"><\/i><\/div>\n        <h3>Universal Search<\/h3>\n        <p>Find anything instantly. Search across Live TV, Movies, and Series with real-time results as you type.<\/p>\n      <\/div>\n\n      <div class=\"feature-card\">\n        <div class=\"feature-icon\"><i class=\"fas fa-closed-captioning\"><\/i><\/div>\n        <h3>Audio & Subtitles<\/h3>\n        <p>Multiple audio tracks and closed captions. Switch languages on the fly. Accessibility built in.<\/p>\n      <\/div>\n\n      <div class=\"feature-card\">\n        <div class=\"feature-icon\"><i class=\"fas fa-heart\"><\/i><\/div>\n        <h3>Favorites<\/h3>\n        <p>Save favorite channels, movies, and series. Quick access to what your customers watch most.<\/p>\n      <\/div>\n\n      <div class=\"feature-card\">\n        <div class=\"feature-icon\"><i class=\"fas fa-shield-alt\"><\/i><\/div>\n        <h3>Smart Recovery<\/h3>\n        <p>Automatic freeze detection and recovery. Streams that drop reconnect instantly. No manual intervention needed.<\/p>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <!-- Comparison -->\n  <section id=\"comparison\">\n    <div class=\"comparison-section\">\n      <div class=\"section-header\">\n        <h2>Shadow Player vs. The Competition<\/h2>\n        <p>See why resellers are switching from apps that haven't innovated in years.<\/p>\n      <\/div>\n\n      <table class=\"comparison-table\">\n        <thead>\n          <tr>\n            <th>Feature<\/th>\n            <th>Shadow Player<\/th>\n            <th>IPTV Smarters<\/th>\n            <th>XCIPTV<\/th>\n            <th>TiviMate<\/th>\n          <\/tr>\n        <\/thead>\n        <tbody>\n          <tr>\n            <td><strong>Web-based APK Build Farm (custom branding)<\/strong><\/td>\n            <td><i class=\"fas fa-check check\"><\/i><\/td>\n            <td><i class=\"fas fa-times cross\"><\/i><\/td>\n            <td><i class=\"fas fa-times cross\"><\/i><\/td>\n            <td><i class=\"fas fa-times cross\"><\/i><\/td>\n          <\/tr>\n          <tr>\n            <td><strong>Live Device Dashboard (online\/version\/IP)<\/strong><\/td>\n            <td><i class=\"fas fa-check check\"><\/i><\/td>\n            <td><i class=\"fas fa-times cross\"><\/i><\/td>\n            <td><i class=\"fas fa-times cross\"><\/i><\/td>\n            <td><i class=\"fas fa-times cross\"><\/i><\/td>\n          <\/tr>\n          <tr>\n            <td><strong>Bulk Remote Commands (restart\/wipe\/update)<\/strong><\/td>\n            <td><i class=\"fas fa-check check\"><\/i><\/td>\n            <td><i class=\"fas fa-times cross\"><\/i><\/td>\n            <td><i class=\"fas fa-times cross\"><\/i><\/td>\n            <td><i class=\"fas fa-times cross\"><\/i><\/td>\n          <\/tr>\n          <tr>\n            <td><strong>Device Error Log Ingestion<\/strong><\/td>\n            <td><i class=\"fas fa-check check\"><\/i><\/td>\n            <td><i class=\"fas fa-times cross\"><\/i><\/td>\n            <td><i class=\"fas fa-times cross\"><\/i><\/td>\n            <td><i class=\"fas fa-times cross\"><\/i><\/td>\n          <\/tr>\n          <tr>\n            <td><strong>Push Player Settings (bulk \/ per-device)<\/strong><\/td>\n            <td><i class=\"fas fa-check check\"><\/i><\/td>\n            <td><i class=\"fas fa-times cross\"><\/i><\/td>\n            <td><i class=\"fas fa-times cross\"><\/i><\/td>\n            <td><i class=\"fas fa-times cross\"><\/i><\/td>\n          <\/tr>\n          <tr>\n            <td><strong>One-Line Web Player Deploy<\/strong><\/td>\n            <td><i class=\"fas fa-check check\"><\/i><\/td>\n            <td><i class=\"fas fa-times cross\"><\/i><\/td>\n            <td><i class=\"fas fa-times cross\"><\/i><\/td>\n            <td><i class=\"fas fa-times cross\"><\/i><\/td>\n          <\/tr>\n          <tr>\n            <td><strong>In-App Broadcasts<\/strong><\/td>\n            <td><i class=\"fas fa-check check\"><\/i><\/td>\n            <td><i class=\"fas fa-times cross\"><\/i><\/td>\n            <td><i class=\"fas fa-times cross\"><\/i><\/td>\n            <td><i class=\"fas fa-times cross\"><\/i><\/td>\n          <\/tr>\n          <tr>\n            <td><strong>Main \/ Beta Branch Management<\/strong><\/td>\n            <td><i class=\"fas fa-check check\"><\/i><\/td>\n            <td><i class=\"fas fa-times cross\"><\/i><\/td>\n            <td><i class=\"fas fa-times cross\"><\/i><\/td>\n            <td><i class=\"fas fa-times cross\"><\/i><\/td>\n          <\/tr>\n          <tr>\n            <td><strong>Cross-Device Cloud Favorites Sync<\/strong><\/td>\n            <td><i class=\"fas fa-check check\"><\/i><\/td>\n            <td><i class=\"fas fa-times cross\"><\/i><\/td>\n            <td><i class=\"fas fa-times cross\"><\/i><\/td>\n            <td><i class=\"fas fa-times cross\"><\/i><\/td>\n          <\/tr>\n          <tr>\n            <td>App Size<\/td>\n            <td><span class=\"highlight\">~10 MB<\/span><\/td>\n            <td>~50 MB<\/td>\n            <td>~35 MB<\/td>\n            <td>~25 MB<\/td>\n          <\/tr>\n          <tr>\n            <td><strong>Cloud DVR (scheduler + playback)<\/strong><\/td>\n            <td><i class=\"fas fa-check check\"><\/i> <span class=\"highlight\">Shared recordings<\/span><\/td>\n            <td><i class=\"fas fa-times cross\"><\/i><\/td>\n            <td><i class=\"fas fa-times cross\"><\/i><\/td>\n            <td><i class=\"fas fa-times cross\"><\/i><\/td>\n          <\/tr>\n          <tr>\n            <td><strong>Instant EPG Loading<\/strong><\/td>\n            <td><i class=\"fas fa-check check\"><\/i><\/td>\n            <td><i class=\"fas fa-times cross\"><\/i><\/td>\n            <td><i class=\"fas fa-times cross\"><\/i><\/td>\n            <td><i class=\"fas fa-times cross\"><\/i><\/td>\n          <\/tr>\n          <tr>\n            <td><strong>No Refresh Required<\/strong><\/td>\n            <td><i class=\"fas fa-check check\"><\/i><\/td>\n            <td><i class=\"fas fa-times cross\"><\/i><\/td>\n            <td><i class=\"fas fa-times cross\"><\/i><\/td>\n            <td><i class=\"fas fa-times cross\"><\/i><\/td>\n          <\/tr>\n          <tr>\n            <td>OTA Updates<\/td>\n            <td><i class=\"fas fa-check check\"><\/i><\/td>\n            <td><i class=\"fas fa-times cross\"><\/i><\/td>\n            <td><i class=\"fas fa-times cross\"><\/i><\/td>\n            <td><span class=\"partial\">Premium only<\/span><\/td>\n          <\/tr>\n          <tr>\n            <td>Full White-Label<\/td>\n            <td><i class=\"fas fa-check check\"><\/i><\/td>\n            <td><span class=\"partial\">Partial<\/span><\/td>\n            <td><span class=\"partial\">Partial<\/span><\/td>\n            <td><i class=\"fas fa-times cross\"><\/i><\/td>\n          <\/tr>\n          <tr>\n            <td>Custom Package ID<\/td>\n            <td><i class=\"fas fa-check check\"><\/i><\/td>\n            <td><i class=\"fas fa-times cross\"><\/i><\/td>\n            <td><i class=\"fas fa-times cross\"><\/i><\/td>\n            <td><i class=\"fas fa-times cross\"><\/i><\/td>\n          <\/tr>\n          <tr>\n            <td>Device Management<\/td>\n            <td><i class=\"fas fa-check check\"><\/i><\/td>\n            <td><i class=\"fas fa-times cross\"><\/i><\/td>\n            <td><i class=\"fas fa-times cross\"><\/i><\/td>\n            <td><i class=\"fas fa-times cross\"><\/i><\/td>\n          <\/tr>\n          <tr>\n            <td>Remote Commands<\/td>\n            <td><i class=\"fas fa-check check\"><\/i><\/td>\n            <td><i class=\"fas fa-times cross\"><\/i><\/td>\n            <td><i class=\"fas fa-times cross\"><\/i><\/td>\n            <td><i class=\"fas fa-times cross\"><\/i><\/td>\n          <\/tr>\n          <tr>\n            <td>Smart Freeze Recovery<\/td>\n            <td><i class=\"fas fa-check check\"><\/i><\/td>\n            <td><i class=\"fas fa-times cross\"><\/i><\/td>\n            <td><i class=\"fas fa-times cross\"><\/i><\/td>\n            <td><i class=\"fas fa-times cross\"><\/i><\/td>\n          <\/tr>\n          <tr>\n            <td>Movies & Series VOD<\/td>\n            <td><i class=\"fas fa-check check\"><\/i><\/td>\n            <td><i class=\"fas fa-check check\"><\/i><\/td>\n            <td><i class=\"fas fa-check check\"><\/i><\/td>\n            <td><i class=\"fas fa-check check\"><\/i><\/td>\n          <\/tr>\n          <tr>\n            <td>Audio Track Selection<\/td>\n            <td><i class=\"fas fa-check check\"><\/i><\/td>\n            <td><i class=\"fas fa-check check\"><\/i><\/td>\n            <td><i class=\"fas fa-check check\"><\/i><\/td>\n            <td><i class=\"fas fa-check check\"><\/i><\/td>\n          <\/tr>\n          <tr>\n            <td>D-Pad Optimized<\/td>\n            <td><span class=\"highlight\">Excellent<\/span><\/td>\n            <td>Mediocre<\/td>\n            <td>Good<\/td>\n            <td>Good<\/td>\n          <\/tr>\n          <tr>\n            <td>Pricing Model<\/td>\n            <td><span class=\"highlight\">Flat Monthly<\/span><\/td>\n            <td>Per-device fees<\/td>\n            <td>Per-device fees<\/td>\n            <td>End-user pays<\/td>\n          <\/tr>\n        <\/tbody>\n      <\/table>\n    <\/div>\n  <\/section>\n\n  <!-- Benchmarks -->\n  <section id=\"benchmarks\">\n    <div class=\"section-header\">\n      <h2>Feel the Speed Difference<\/h2>\n      <p>Real tests. Real numbers. No marketing fluff.<\/p>\n    <\/div>\n\n    <div class=\"benchmark-grid\">\n      <div class=\"benchmark-card\">\n        <h4><i class=\"fas fa-clock\"><\/i> EPG Load Time<\/h4>\n        <p style=\"color: var(--text-muted); font-size: 0.85rem; margin-bottom: 1.5rem;\">\n          Time from opening category to seeing program info\n        <\/p>\n        <div class=\"benchmark-bar\">\n          <div class=\"benchmark-bar-header\">\n            <span class=\"benchmark-bar-label\">Shadow Player<\/span>\n            <span class=\"benchmark-bar-value\" style=\"color: var(--green);\">Instant<\/span>\n          <\/div>\n          <div class=\"benchmark-bar-track\">\n            <div class=\"benchmark-bar-fill shadow\" style=\"width: 100%;\"><\/div>\n          <\/div>\n        <\/div>\n        <div class=\"benchmark-bar\">\n          <div class=\"benchmark-bar-header\">\n            <span class=\"benchmark-bar-label\">TiviMate<\/span>\n            <span class=\"benchmark-bar-value\">30-60 seconds<\/span>\n          <\/div>\n          <div class=\"benchmark-bar-track\">\n            <div class=\"benchmark-bar-fill tivimate\" style=\"width: 30%;\"><\/div>\n          <\/div>\n        <\/div>\n        <div class=\"benchmark-bar\">\n          <div class=\"benchmark-bar-header\">\n            <span class=\"benchmark-bar-label\">XCIPTV<\/span>\n            <span class=\"benchmark-bar-value\">1-3 minutes<\/span>\n          <\/div>\n          <div class=\"benchmark-bar-track\">\n            <div class=\"benchmark-bar-fill xciptv\" style=\"width: 15%;\"><\/div>\n          <\/div>\n        <\/div>\n        <div class=\"benchmark-bar\">\n          <div class=\"benchmark-bar-header\">\n            <span class=\"benchmark-bar-label\">IPTV Smarters<\/span>\n            <span class=\"benchmark-bar-value\" style=\"color: var(--red);\">2-5 minutes<\/span>\n          <\/div>\n          <div class=\"benchmark-bar-track\">\n            <div class=\"benchmark-bar-fill smarters\" style=\"width: 10%;\"><\/div>\n          <\/div>\n        <\/div>\n      <\/div>\n\n      <div class=\"benchmark-card\">\n        <h4><i class=\"fas fa-hdd\"><\/i> App Size Comparison<\/h4>\n        <p style=\"color: var(--text-muted); font-size: 0.85rem; margin-bottom: 1.5rem;\">\n          Installed size on Android TV devices\n        <\/p>\n        <div class=\"benchmark-bar\">\n          <div class=\"benchmark-bar-header\">\n            <span class=\"benchmark-bar-label\">Shadow Player<\/span>\n            <span class=\"benchmark-bar-value\" style=\"color: var(--green);\">~10 MB<\/span>\n          <\/div>\n          <div class=\"benchmark-bar-track\">\n            <div class=\"benchmark-bar-fill shadow\" style=\"width: 20%;\"><\/div>\n          <\/div>\n        <\/div>\n        <div class=\"benchmark-bar\">\n          <div class=\"benchmark-bar-header\">\n            <span class=\"benchmark-bar-label\">TiviMate<\/span>\n            <span class=\"benchmark-bar-value\">25 MB<\/span>\n          <\/div>\n          <div class=\"benchmark-bar-track\">\n            <div class=\"benchmark-bar-fill tivimate\" style=\"width: 50%;\"><\/div>\n          <\/div>\n        <\/div>\n        <div class=\"benchmark-bar\">\n          <div class=\"benchmark-bar-header\">\n            <span class=\"benchmark-bar-label\">XCIPTV<\/span>\n            <span class=\"benchmark-bar-value\">35 MB<\/span>\n          <\/div>\n          <div class=\"benchmark-bar-track\">\n            <div class=\"benchmark-bar-fill xciptv\" style=\"width: 70%;\"><\/div>\n          <\/div>\n        <\/div>\n        <div class=\"benchmark-bar\">\n          <div class=\"benchmark-bar-header\">\n            <span class=\"benchmark-bar-label\">IPTV Smarters<\/span>\n            <span class=\"benchmark-bar-value\" style=\"color: var(--red);\">50 MB<\/span>\n          <\/div>\n          <div class=\"benchmark-bar-track\">\n            <div class=\"benchmark-bar-fill smarters\" style=\"width: 100%;\"><\/div>\n          <\/div>\n        <\/div>\n      <\/div>\n\n      <div class=\"benchmark-card\">\n        <h4><i class=\"fas fa-gamepad\"><\/i> Channel Navigation Speed<\/h4>\n        <p style=\"color: var(--text-muted); font-size: 0.85rem; margin-bottom: 1.5rem;\">\n          D-pad responsiveness in channel lists\n        <\/p>\n        <div class=\"benchmark-bar\">\n          <div class=\"benchmark-bar-header\">\n            <span class=\"benchmark-bar-label\">Shadow Player<\/span>\n            <span class=\"benchmark-bar-value\" style=\"color: var(--green);\">Lightning<\/span>\n          <\/div>\n          <div class=\"benchmark-bar-track\">\n            <div class=\"benchmark-bar-fill shadow\" style=\"width: 100%;\"><\/div>\n          <\/div>\n        <\/div>\n        <div class=\"benchmark-bar\">\n          <div class=\"benchmark-bar-header\">\n            <span class=\"benchmark-bar-label\">TiviMate<\/span>\n            <span class=\"benchmark-bar-value\">Good<\/span>\n          <\/div>\n          <div class=\"benchmark-bar-track\">\n            <div class=\"benchmark-bar-fill tivimate\" style=\"width: 70%;\"><\/div>\n          <\/div>\n        <\/div>\n        <div class=\"benchmark-bar\">\n          <div class=\"benchmark-bar-header\">\n            <span class=\"benchmark-bar-label\">XCIPTV<\/span>\n            <span class=\"benchmark-bar-value\">Decent<\/span>\n          <\/div>\n          <div class=\"benchmark-bar-track\">\n            <div class=\"benchmark-bar-fill xciptv\" style=\"width: 50%;\"><\/div>\n          <\/div>\n        <\/div>\n        <div class=\"benchmark-bar\">\n          <div class=\"benchmark-bar-header\">\n            <span class=\"benchmark-bar-label\">IPTV Smarters<\/span>\n            <span class=\"benchmark-bar-value\">Sluggish<\/span>\n          <\/div>\n          <div class=\"benchmark-bar-track\">\n            <div class=\"benchmark-bar-fill smarters\" style=\"width: 30%;\"><\/div>\n          <\/div>\n        <\/div>\n      <\/div>\n\n      <div class=\"benchmark-card\">\n        <h4><i class=\"fas fa-sync\"><\/i> Data Freshness<\/h4>\n        <p style=\"color: var(--text-muted); font-size: 0.85rem; margin-bottom: 1.5rem;\">\n          How current is the playlist\/EPG data?\n        <\/p>\n        <div class=\"benchmark-bar\">\n          <div class=\"benchmark-bar-header\">\n            <span class=\"benchmark-bar-label\">Shadow Player<\/span>\n            <span class=\"benchmark-bar-value\" style=\"color: var(--green);\">Always Current<\/span>\n          <\/div>\n          <div class=\"benchmark-bar-track\">\n            <div class=\"benchmark-bar-fill shadow\" style=\"width: 100%;\"><\/div>\n          <\/div>\n        <\/div>\n        <div class=\"benchmark-bar\">\n          <div class=\"benchmark-bar-header\">\n            <span class=\"benchmark-bar-label\">Others<\/span>\n            <span class=\"benchmark-bar-value\">Last Refresh<\/span>\n          <\/div>\n          <div class=\"benchmark-bar-track\">\n            <div class=\"benchmark-bar-fill xciptv\" style=\"width: 40%;\"><\/div>\n          <\/div>\n        <\/div>\n        <p style=\"color: var(--text-muted); font-size: 0.85rem; margin-top: 1.5rem;\">\n          <i class=\"fas fa-info-circle\"><\/i> Other apps show data from when you last hit \"Refresh.\" Shadow Player always shows live data.\n        <\/p>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <!-- Pricing -->\n  <section id=\"pricing\">\n    <div class=\"section-header\">\n      <h2>Simple, Predictable Pricing<\/h2>\n      <p>No per-device fees. No surprises. Scale profitably.<\/p>\n    <\/div>\n\n    <div class=\"pricing-grid\">\n      <div class=\"pricing-card\">\n        <div class=\"pricing-tier\">Starter<\/div>\n        <div class=\"pricing-price\">\n          <span class=\"price-currency\">$<\/span>\n          <span class=\"price-amount\">25<\/span>\n          <span class=\"price-period\">\/mo<\/span>\n        <\/div>\n        <p class=\"pricing-description\">Perfect for new resellers getting started.<\/p>\n\n        <div class=\"pricing-limits\">\n          <div class=\"limit-item\">\n            <span class=\"limit-value\">250<\/span>\n            <span class=\"limit-label\">Active Devices<\/span>\n          <\/div>\n          <div class=\"limit-item\">\n            <span class=\"limit-value\">2<\/span>\n            <span class=\"limit-label\">Builds\/Month<\/span>\n          <\/div>\n        <\/div>\n\n        <ul class=\"pricing-features\">\n          <li class=\"included\"><i class=\"fas fa-check\"><\/i> Full white-label branding<\/li>\n          <li class=\"included\"><i class=\"fas fa-check\"><\/i> Device management<\/li>\n          <li class=\"included\"><i class=\"fas fa-check\"><\/i> Remote commands<\/li>\n          <li class=\"included\"><i class=\"fas fa-check\"><\/i> OTA updates<\/li>\n          <li class=\"included\"><i class=\"fas fa-check\"><\/i> 1 DNS entry<\/li>\n          <li class=\"excluded\"><i class=\"fas fa-times\"><\/i> Web player<\/li>\n          <li class=\"excluded\"><i class=\"fas fa-times\"><\/i> Custom package ID<\/li>\n        <\/ul>\n\n        <a href=\"https:\/\/portal.shadowplayer.tv\" class=\"btn btn-ghost pricing-btn\">Get Started<\/a>\n      <\/div>\n\n      <div class=\"pricing-card featured\">\n        <div class=\"pricing-badge\">Most Popular<\/div>\n        <div class=\"pricing-tier\">Professional<\/div>\n        <div class=\"pricing-price\">\n          <span class=\"price-currency\">$<\/span>\n          <span class=\"price-amount\">75<\/span>\n          <span class=\"price-period\">\/mo<\/span>\n        <\/div>\n        <p class=\"pricing-description\">For growing resellers ready to scale.<\/p>\n\n        <div class=\"pricing-limits\">\n          <div class=\"limit-item\">\n            <span class=\"limit-value\">1,250<\/span>\n            <span class=\"limit-label\">Active Devices<\/span>\n          <\/div>\n          <div class=\"limit-item\">\n            <span class=\"limit-value\">8<\/span>\n            <span class=\"limit-label\">Builds\/Month<\/span>\n          <\/div>\n        <\/div>\n\n        <ul class=\"pricing-features\">\n          <li class=\"included\"><i class=\"fas fa-check\"><\/i> Everything in Starter<\/li>\n          <li class=\"included\"><i class=\"fas fa-check\"><\/i> Web player included<\/li>\n          <li class=\"included\"><i class=\"fas fa-check\"><\/i> Custom package ID<\/li>\n          <li class=\"included\"><i class=\"fas fa-check\"><\/i> 5 DNS entries<\/li>\n          <li class=\"included\"><i class=\"fas fa-check\"><\/i> Priority support<\/li>\n        <\/ul>\n\n        <a href=\"https:\/\/portal.shadowplayer.tv\" class=\"btn btn-primary pricing-btn\">Get Started<\/a>\n      <\/div>\n\n      <div class=\"pricing-card\">\n        <div class=\"pricing-tier\">Enterprise<\/div>\n        <div class=\"pricing-price\">\n          <span class=\"price-currency\">$<\/span>\n          <span class=\"price-amount\">199<\/span>\n          <span class=\"price-period\">\/mo<\/span>\n        <\/div>\n        <p class=\"pricing-description\">For established resellers at scale.<\/p>\n\n        <div class=\"pricing-limits\">\n          <div class=\"limit-item\">\n            <span class=\"limit-value\">&#8734;<\/span>\n            <span class=\"limit-label\">Unlimited Devices<\/span>\n          <\/div>\n          <div class=\"limit-item\">\n            <span class=\"limit-value\">&#8734;<\/span>\n            <span class=\"limit-label\">Unlimited Builds<\/span>\n          <\/div>\n        <\/div>\n\n        <ul class=\"pricing-features\">\n          <li class=\"included\"><i class=\"fas fa-check\"><\/i> Everything in Professional<\/li>\n          <li class=\"included\"><i class=\"fas fa-check\"><\/i> Unlimited devices<\/li>\n          <li class=\"included\"><i class=\"fas fa-check\"><\/i> Unlimited DNS entries<\/li>\n          <li class=\"included\"><i class=\"fas fa-check\"><\/i> Priority build queue<\/li>\n          <li class=\"included\"><i class=\"fas fa-check\"><\/i> Advanced features<\/li>\n        <\/ul>\n\n        <a href=\"https:\/\/portal.shadowplayer.tv\" class=\"btn btn-ghost pricing-btn\">Contact Sales<\/a>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <!-- CTA -->\n  <section class=\"cta-section\">\n    <h2>Ready to Upgrade Your IPTV Business?<\/h2>\n    <p>\n      Stop losing customers to slow, bloated apps. Give them the fastest IPTV experience on the market.\n    <\/p>\n    <div class=\"cta-buttons\">\n      <a href=\"https:\/\/t.me\/shadowsysop\" class=\"btn btn-primary\" target=\"_blank\">\n        <i class=\"fab fa-telegram\"><\/i> Contact Us\n      <\/a>\n    <\/div>\n  <\/section>\n\n  <footer>\n    <p>&copy; 2026 Shadow Player. The white-label IPTV app + full reseller SaaS. Pairs with <a href=\"https:\/\/shadowpanel.app\" style=\"color: var(--accent-primary);\">Shadow Panel<\/a> for the complete stack.<\/p>\n  <\/footer>\n\n  <script>\n    \/\/ Animate benchmark bars on scroll\n    const observer = new IntersectionObserver((entries) => {\n      entries.forEach(entry => {\n        if (entry.isIntersecting) {\n          const bars = entry.target.querySelectorAll('.benchmark-bar-fill');\n          bars.forEach(bar => {\n            const width = bar.style.width;\n            bar.style.width = '0%';\n            setTimeout(() => { bar.style.width = width; }, 100);\n          });\n        }\n      });\n    }, { threshold: 0.3 });\n\n    document.querySelectorAll('.benchmark-card').forEach(card => observer.observe(card));\n\n    \/\/ Smooth scroll\n    document.querySelectorAll('a[href^=\"#\"]').forEach(anchor => {\n      anchor.addEventListener('click', function(e) {\n        e.preventDefault();\n        const target = document.querySelector(this.getAttribute('href'));\n        if (target) target.scrollIntoView({ behavior: 'smooth', block: 'start' });\n      });\n    });\n  <\/script>\n<script defer src=\"https:\/\/static.cloudflareinsights.com\/beacon.min.js\/vcd15cbe7772f49c399c6a5babf22c1241717689176015\" integrity=\"sha512-ZpsOmlRQV6y907TI0dKBHq9Md29nnaEIPlkf84rnaERnq6zvWvPUqr2ft8M1aS28oN72PdrCzSjY4U6VaAw1EQ==\" data-cf-beacon='{\"version\":\"2024.11.0\",\"token\":\"3ccee8677dfb43548eb8dade19de0f1a\",\"r\":1,\"server_timing\":{\"name\":{\"cfCacheStatus\":true,\"cfEdge\":true,\"cfExtPri\":true,\"cfL4\":true,\"cfOrigin\":true,\"cfSpeedBrain\":true},\"location_startswith\":null}}' crossorigin=\"anonymous\"><\/script>\n<\/body>\n<\/html>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-2ed3f6a e-flex e-con-boxed e-con e-parent\" data-id=\"2ed3f6a\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-a8ef9aa elementor-widget elementor-widget-html\" data-id=\"a8ef9aa\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<style>\n.powered-by, .site-info, .wp-site-blocks footer, footer .wp-block-site-generator, a[href*=\"wordpress.org\"] {\n    display: none !important;\n}\n<\/style>\t\t\t\t<\/div>\n\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":"<p>Shadow Player &#8211; White-Label IPTV App + Full Reseller Portal (APK Builder, Device Management, Cloud DVR) Shadow Player Features Compare Speed Pricing Reseller Portal White-Label IPTV App + Full Reseller SaaS Portal Not Just an App. A Complete SaaS for Resellers. A ~10MB Android TV \/ Fire TV \/ Android player your customers will love [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"footnotes":""},"class_list":["post-12","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.1.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Shadow Player - Shadow Player - The Fastest IPTV Player Ever Built<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/shadowplayer.app\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Shadow Player - Shadow Player - The Fastest IPTV Player Ever Built\" \/>\n<meta property=\"og:description\" content=\"Shadow Player &#8211; White-Label IPTV App + Full Reseller Portal (APK Builder, Device Management, Cloud DVR) Shadow Player Features Compare Speed Pricing Reseller Portal White-Label IPTV App + Full Reseller SaaS Portal Not Just an App. A Complete SaaS for Resellers. A ~10MB Android TV \/ Fire TV \/ Android player your customers will love [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/shadowplayer.app\/\" \/>\n<meta property=\"og:site_name\" content=\"Shadow Player - The Fastest IPTV Player Ever Built\" \/>\n<meta property=\"article:modified_time\" content=\"2026-04-23T23:16:24+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"21 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/shadowplayer.app\/\",\"url\":\"https:\/\/shadowplayer.app\/\",\"name\":\"Shadow Player - Shadow Player - The Fastest IPTV Player Ever Built\",\"isPartOf\":{\"@id\":\"https:\/\/shadowplayer.app\/#website\"},\"datePublished\":\"2026-01-27T00:50:01+00:00\",\"dateModified\":\"2026-04-23T23:16:24+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/shadowplayer.app\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/shadowplayer.app\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/shadowplayer.app\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/shadowplayer.app\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Shadow Player\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/shadowplayer.app\/#website\",\"url\":\"https:\/\/shadowplayer.app\/\",\"name\":\"Shadow Player - The Fastest IPTV Player Ever Built\",\"description\":\"The Last Player You&#039;ll Ever Need\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/shadowplayer.app\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Shadow Player - Shadow Player - The Fastest IPTV Player Ever Built","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/shadowplayer.app\/","og_locale":"en_US","og_type":"article","og_title":"Shadow Player - Shadow Player - The Fastest IPTV Player Ever Built","og_description":"Shadow Player &#8211; White-Label IPTV App + Full Reseller Portal (APK Builder, Device Management, Cloud DVR) Shadow Player Features Compare Speed Pricing Reseller Portal White-Label IPTV App + Full Reseller SaaS Portal Not Just an App. A Complete SaaS for Resellers. A ~10MB Android TV \/ Fire TV \/ Android player your customers will love [&hellip;]","og_url":"https:\/\/shadowplayer.app\/","og_site_name":"Shadow Player - The Fastest IPTV Player Ever Built","article_modified_time":"2026-04-23T23:16:24+00:00","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"21 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/shadowplayer.app\/","url":"https:\/\/shadowplayer.app\/","name":"Shadow Player - Shadow Player - The Fastest IPTV Player Ever Built","isPartOf":{"@id":"https:\/\/shadowplayer.app\/#website"},"datePublished":"2026-01-27T00:50:01+00:00","dateModified":"2026-04-23T23:16:24+00:00","breadcrumb":{"@id":"https:\/\/shadowplayer.app\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/shadowplayer.app\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/shadowplayer.app\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/shadowplayer.app\/"},{"@type":"ListItem","position":2,"name":"Shadow Player"}]},{"@type":"WebSite","@id":"https:\/\/shadowplayer.app\/#website","url":"https:\/\/shadowplayer.app\/","name":"Shadow Player - The Fastest IPTV Player Ever Built","description":"The Last Player You&#039;ll Ever Need","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/shadowplayer.app\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"}]}},"_links":{"self":[{"href":"https:\/\/shadowplayer.app\/index.php?rest_route=\/wp\/v2\/pages\/12","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/shadowplayer.app\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/shadowplayer.app\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/shadowplayer.app\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/shadowplayer.app\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=12"}],"version-history":[{"count":32,"href":"https:\/\/shadowplayer.app\/index.php?rest_route=\/wp\/v2\/pages\/12\/revisions"}],"predecessor-version":[{"id":52,"href":"https:\/\/shadowplayer.app\/index.php?rest_route=\/wp\/v2\/pages\/12\/revisions\/52"}],"wp:attachment":[{"href":"https:\/\/shadowplayer.app\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=12"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}