{"id":9,"date":"2026-08-04T20:29:51","date_gmt":"2026-08-04T20:29:51","guid":{"rendered":"https:\/\/comunidadedosprompts.com.br\/?page_id=9"},"modified":"2026-08-04T22:48:30","modified_gmt":"2026-08-04T22:48:30","slug":"elementor-9","status":"publish","type":"page","link":"https:\/\/comunidadedosprompts.com.br\/","title":{"rendered":"Elementor #9"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"9\" class=\"elementor elementor-9\">\n\t\t\t\t<div class=\"elementor-element elementor-element-235780b e-flex e-con-boxed e-con e-parent\" data-id=\"235780b\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-c831660 elementor-widget elementor-widget-html\" data-id=\"c831660\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!DOCTYPE html>\r\n<html lang=\"pt-BR\">\r\n<head>\r\n  <meta charset=\"UTF-8\" \/>\r\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" \/>\r\n  <meta name=\"theme-color\" content=\"#071421\" \/>\r\n  <title>Comunidade dos Prompts 2.9<\/title>\r\n  <!-- Arquitetura 2.9: estrutura preservada e textos da autentica\u00e7\u00e3o ajustados -->\r\n\r\n  <style>\r\n    \/* =========================================================\r\n       BIBLIOTECA DE PROMPTS \u2014 CSS ISOLADO PARA ELEMENTOR\r\n       Cole este arquivo inteiro dentro de um widget HTML.\r\n       ========================================================= *\/\r\n\r\n    #bp-app,\r\n    #bp-app * {\r\n      box-sizing: border-box;\r\n    }\r\n\r\n    #bp-app {\r\n      --bp-bg: #06111d;\r\n      --bp-bg-soft: #091827;\r\n      --bp-card: #0d1d31;\r\n      --bp-card-2: #10243b;\r\n      --bp-line: rgba(148, 170, 195, .18);\r\n      --bp-text: #f3f8ff;\r\n      --bp-muted: #9eb0c5;\r\n      --bp-cyan: #25d6d0;\r\n      --bp-blue: #45a7ff;\r\n      --bp-purple: #a855f7;\r\n      --bp-pink: #ff3f92;\r\n      --bp-green: #16d77f;\r\n      --bp-danger: #ff6b6b;\r\n      --bp-shadow: 0 18px 60px rgba(0, 0, 0, .30);\r\n      --bp-radius: 24px;\r\n      --bp-radius-sm: 16px;\r\n\r\n      width: 100%;\r\n      min-height: 100vh;\r\n      margin: 0;\r\n      color: var(--bp-text);\r\n      background:\r\n        radial-gradient(circle at 85% 0%, rgba(37, 214, 208, .12), transparent 32%),\r\n        radial-gradient(circle at 12% 12%, rgba(168, 85, 247, .10), transparent 27%),\r\n        var(--bp-bg);\r\n      font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Arial, sans-serif;\r\n      line-height: 1.5;\r\n      overflow-x: hidden;\r\n    }\r\n\r\n    #bp-app button,\r\n    #bp-app select,\r\n    #bp-app input {\r\n      font: inherit;\r\n    }\r\n\r\n    #bp-app button {\r\n      cursor: pointer;\r\n    }\r\n\r\n    #bp-app img,\r\n    #bp-app video {\r\n      display: block;\r\n      max-width: 100%;\r\n    }\r\n\r\n    #bp-app .bp-shell {\r\n      width: min(1480px, calc(100% - 32px));\r\n      margin: 0 auto;\r\n    }\r\n\r\n    #bp-app .bp-topbar {\r\n      border-bottom: 1px solid var(--bp-line);\r\n      background: rgba(5, 15, 27, .86);\r\n      backdrop-filter: blur(16px);\r\n      -webkit-backdrop-filter: blur(16px);\r\n      position: sticky;\r\n      top: 0;\r\n      z-index: 70;\r\n    }\r\n\r\n    #bp-app .bp-topbar-inner {\r\n      min-height: 92px;\r\n      display: flex;\r\n      align-items: center;\r\n      justify-content: space-between;\r\n      gap: 22px;\r\n      padding: 18px 0;\r\n    }\r\n\r\n    #bp-app .bp-brand {\r\n      display: flex;\r\n      align-items: center;\r\n      gap: 15px;\r\n      min-width: 0;\r\n    }\r\n\r\n    #bp-app .bp-logo {\r\n      width: 56px;\r\n      height: 56px;\r\n      flex: 0 0 56px;\r\n      border-radius: 18px;\r\n      display: grid;\r\n      place-items: center;\r\n      color: #03101b;\r\n      font-weight: 900;\r\n      font-size: 22px;\r\n      background: linear-gradient(135deg, var(--bp-cyan), var(--bp-blue));\r\n      box-shadow: 0 12px 34px rgba(37, 214, 208, .24);\r\n    }\r\n\r\n    #bp-app .bp-brand-text {\r\n      min-width: 0;\r\n    }\r\n\r\n    #bp-app .bp-brand-name {\r\n      margin: 0;\r\n      font-size: 22px;\r\n      font-weight: 850;\r\n      letter-spacing: -.02em;\r\n    }\r\n\r\n    #bp-app .bp-brand-subtitle {\r\n      margin: 2px 0 0;\r\n      color: var(--bp-muted);\r\n      font-size: 14px;\r\n    }\r\n\r\n    #bp-app .bp-reset-button {\r\n      border: 1px solid var(--bp-line);\r\n      background: rgba(255, 255, 255, .04);\r\n      color: var(--bp-text);\r\n      border-radius: 14px;\r\n      padding: 11px 15px;\r\n      transition: .2s ease;\r\n      white-space: nowrap;\r\n    }\r\n\r\n    #bp-app .bp-reset-button:hover {\r\n      border-color: rgba(37, 214, 208, .55);\r\n      background: rgba(37, 214, 208, .08);\r\n      transform: translateY(-1px);\r\n    }\r\n\r\n    #bp-app .bp-hero {\r\n      padding: 62px 0 30px;\r\n    }\r\n\r\n    #bp-app .bp-kicker {\r\n      margin: 0 0 10px;\r\n      color: var(--bp-cyan);\r\n      text-transform: uppercase;\r\n      letter-spacing: .14em;\r\n      font-size: 12px;\r\n      font-weight: 850;\r\n    }\r\n\r\n    #bp-app .bp-title {\r\n      margin: 0;\r\n      font-size: clamp(42px, 7vw, 92px);\r\n      line-height: .98;\r\n      letter-spacing: -.055em;\r\n      max-width: 1000px;\r\n    }\r\n\r\n    #bp-app .bp-lead {\r\n      margin: 24px 0 0;\r\n      color: var(--bp-muted);\r\n      font-size: clamp(17px, 2vw, 24px);\r\n      max-width: 980px;\r\n    }\r\n\r\n    \/* R\u00c9GUA DE PROGRESSO *\/\r\n    #bp-app .bp-progress-wrap {\r\n      margin-top: 38px;\r\n      padding: 24px;\r\n      border: 1px solid var(--bp-line);\r\n      border-radius: var(--bp-radius);\r\n      background: linear-gradient(180deg, rgba(18, 40, 67, .88), rgba(10, 25, 43, .92));\r\n      box-shadow: var(--bp-shadow);\r\n    }\r\n\r\n    #bp-app .bp-progress-track {\r\n      display: grid;\r\n      grid-template-columns: repeat(4, minmax(0, 1fr));\r\n      align-items: start;\r\n      gap: 0;\r\n    }\r\n\r\n    #bp-app .bp-step {\r\n      position: relative;\r\n      text-align: center;\r\n      padding: 0 10px;\r\n    }\r\n\r\n    #bp-app .bp-step:not(:last-child)::after {\r\n      content: \"\";\r\n      position: absolute;\r\n      top: 21px;\r\n      left: calc(50% + 25px);\r\n      right: calc(-50% + 25px);\r\n      height: 3px;\r\n      border-radius: 999px;\r\n      background: rgba(255, 255, 255, .10);\r\n      transition: .35s ease;\r\n    }\r\n\r\n    #bp-app .bp-step.is-complete:not(:last-child)::after {\r\n      background: linear-gradient(90deg, var(--bp-cyan), var(--bp-blue));\r\n      box-shadow: 0 0 20px rgba(37, 214, 208, .26);\r\n    }\r\n\r\n    #bp-app .bp-step-dot {\r\n      position: relative;\r\n      z-index: 2;\r\n      width: 44px;\r\n      height: 44px;\r\n      margin: 0 auto 10px;\r\n      border-radius: 50%;\r\n      display: grid;\r\n      place-items: center;\r\n      border: 2px solid rgba(255,255,255,.20);\r\n      background: #0b1a2b;\r\n      color: var(--bp-muted);\r\n      font-weight: 900;\r\n      transition: .25s ease;\r\n    }\r\n\r\n    #bp-app .bp-step.is-active .bp-step-dot {\r\n      border-color: var(--bp-cyan);\r\n      color: var(--bp-cyan);\r\n      box-shadow: 0 0 0 6px rgba(37,214,208,.08), 0 0 28px rgba(37,214,208,.20);\r\n    }\r\n\r\n    #bp-app .bp-step.is-complete .bp-step-dot {\r\n      border-color: transparent;\r\n      background: linear-gradient(135deg, var(--bp-cyan), var(--bp-blue));\r\n      color: #03111d;\r\n    }\r\n\r\n    #bp-app .bp-step-name {\r\n      font-size: 15px;\r\n      font-weight: 800;\r\n    }\r\n\r\n    #bp-app .bp-step-status {\r\n      margin-top: 3px;\r\n      color: var(--bp-muted);\r\n      font-size: 12px;\r\n      min-height: 18px;\r\n    }\r\n\r\n    #bp-app .bp-step.is-complete .bp-step-status {\r\n      color: var(--bp-cyan);\r\n    }\r\n\r\n    \/* FILTROS *\/\r\n    #bp-app .bp-controls {\r\n      padding: 24px 0 8px;\r\n    }\r\n\r\n    #bp-app .bp-controls-grid {\r\n      display: grid;\r\n      grid-template-columns: minmax(220px, 1fr) minmax(220px, 1fr) minmax(240px, 1.25fr);\r\n      gap: 14px;\r\n    }\r\n\r\n    #bp-app .bp-field {\r\n      position: relative;\r\n    }\r\n\r\n    #bp-app .bp-field-label {\r\n      display: block;\r\n      margin: 0 0 8px;\r\n      font-size: 12px;\r\n      color: var(--bp-muted);\r\n      font-weight: 800;\r\n      letter-spacing: .08em;\r\n      text-transform: uppercase;\r\n    }\r\n\r\n    #bp-app .bp-select,\r\n    #bp-app .bp-search {\r\n      width: 100%;\r\n      min-height: 62px;\r\n      border: 1px solid rgba(148,170,195,.22);\r\n      border-radius: 18px;\r\n      background: #091827;\r\n      color: var(--bp-text);\r\n      padding: 0 18px;\r\n      outline: none;\r\n      transition: .2s ease;\r\n    }\r\n\r\n    #bp-app .bp-select {\r\n      appearance: auto;\r\n    }\r\n\r\n    #bp-app .bp-select:focus,\r\n    #bp-app .bp-search:focus {\r\n      border-color: var(--bp-cyan);\r\n      box-shadow: 0 0 0 4px rgba(37,214,208,.08);\r\n    }\r\n\r\n    #bp-app .bp-search::placeholder {\r\n      color: #71849a;\r\n    }\r\n\r\n    #bp-app .bp-helper {\r\n      margin: 16px 0 0;\r\n      display: flex;\r\n      flex-wrap: wrap;\r\n      align-items: center;\r\n      justify-content: space-between;\r\n      gap: 12px;\r\n      color: var(--bp-muted);\r\n      font-size: 14px;\r\n    }\r\n\r\n    #bp-app .bp-selection-summary {\r\n      color: var(--bp-text);\r\n      font-weight: 700;\r\n    }\r\n\r\n    \/* SE\u00c7\u00d5ES *\/\r\n    #bp-app .bp-section {\r\n      padding: 38px 0 16px;\r\n      scroll-margin-top: 120px;\r\n    }\r\n\r\n    #bp-app .bp-section-head {\r\n      display: flex;\r\n      align-items: end;\r\n      justify-content: space-between;\r\n      gap: 20px;\r\n      margin-bottom: 20px;\r\n    }\r\n\r\n    #bp-app .bp-section-title {\r\n      margin: 0;\r\n      font-size: clamp(27px, 4vw, 42px);\r\n      letter-spacing: -.035em;\r\n    }\r\n\r\n    #bp-app .bp-section-copy {\r\n      margin: 6px 0 0;\r\n      color: var(--bp-muted);\r\n      max-width: 740px;\r\n    }\r\n\r\n    #bp-app .bp-count {\r\n      flex: 0 0 auto;\r\n      border: 1px solid var(--bp-line);\r\n      padding: 9px 13px;\r\n      border-radius: 999px;\r\n      color: var(--bp-muted);\r\n      font-size: 13px;\r\n      background: rgba(255,255,255,.03);\r\n    }\r\n\r\n    \/* CARDS *\/\r\n    #bp-app .bp-grid {\r\n      display: grid;\r\n      grid-template-columns: repeat(4, minmax(0, 1fr));\r\n      gap: 20px;\r\n    }\r\n\r\n    #bp-app .bp-card {\r\n      position: relative;\r\n      min-width: 0;\r\n      overflow: hidden;\r\n      border: 1px solid rgba(148,170,195,.15);\r\n      border-radius: 24px;\r\n      background: linear-gradient(180deg, rgba(16,36,59,.98), rgba(10,25,42,.98));\r\n      box-shadow: 0 14px 42px rgba(0,0,0,.22);\r\n      transition: .24s ease;\r\n    }\r\n\r\n    #bp-app .bp-card:hover {\r\n      transform: translateY(-4px);\r\n      border-color: rgba(168,85,247,.55);\r\n      box-shadow: 0 20px 58px rgba(0,0,0,.34), 0 0 0 1px rgba(168,85,247,.15);\r\n    }\r\n\r\n    #bp-app .bp-card.is-selected {\r\n      border-color: var(--bp-cyan);\r\n      box-shadow: 0 0 0 2px rgba(37,214,208,.18), 0 22px 58px rgba(0,0,0,.36);\r\n    }\r\n\r\n    #bp-app .bp-media {\r\n      aspect-ratio: 9 \/ 13;\r\n      position: relative;\r\n      overflow: hidden;\r\n      background:\r\n        radial-gradient(circle at 30% 20%, rgba(69,167,255,.28), transparent 34%),\r\n        linear-gradient(145deg, #18304d, #0c1727);\r\n    }\r\n\r\n    #bp-app .bp-media img,\r\n    #bp-app .bp-media video {\r\n      width: 100%;\r\n      height: 100%;\r\n      object-fit: cover;\r\n    }\r\n\r\n    #bp-app .bp-media::after {\r\n      content: \"\";\r\n      position: absolute;\r\n      inset: auto 0 0;\r\n      height: 34%;\r\n      background: linear-gradient(transparent, rgba(4,12,20,.86));\r\n      pointer-events: none;\r\n    }\r\n\r\n    #bp-app .bp-badges {\r\n      position: absolute;\r\n      top: 14px;\r\n      left: 14px;\r\n      right: 14px;\r\n      z-index: 3;\r\n      display: flex;\r\n      align-items: center;\r\n      gap: 8px;\r\n      flex-wrap: wrap;\r\n    }\r\n\r\n    #bp-app .bp-badge {\r\n      display: inline-flex;\r\n      align-items: center;\r\n      gap: 6px;\r\n      padding: 7px 10px;\r\n      border-radius: 999px;\r\n      font-size: 12px;\r\n      font-weight: 850;\r\n      line-height: 1;\r\n      backdrop-filter: blur(8px);\r\n      -webkit-backdrop-filter: blur(8px);\r\n    }\r\n\r\n    #bp-app .bp-badge-image {\r\n      background: rgba(168,85,247,.88);\r\n      color: #fff;\r\n    }\r\n\r\n    #bp-app .bp-badge-video {\r\n      background: rgba(255,63,146,.90);\r\n      color: #fff;\r\n    }\r\n\r\n    #bp-app .bp-badge-format {\r\n      background: rgba(8,23,38,.78);\r\n      color: #fff;\r\n      border: 1px solid rgba(255,255,255,.16);\r\n    }\r\n\r\n    #bp-app .bp-badge-new {\r\n      background: var(--bp-green);\r\n      color: #04130c;\r\n    }\r\n\r\n    #bp-app .bp-selected-check {\r\n      display: none;\r\n      margin-left: auto;\r\n      background: var(--bp-cyan);\r\n      color: #03101b;\r\n    }\r\n\r\n    #bp-app .bp-card.is-selected .bp-selected-check {\r\n      display: inline-flex;\r\n    }\r\n\r\n    #bp-app .bp-card-body {\r\n      padding: 18px;\r\n    }\r\n\r\n    #bp-app .bp-card-category {\r\n      margin: 0 0 7px;\r\n      color: var(--bp-cyan);\r\n      font-size: 12px;\r\n      font-weight: 850;\r\n      letter-spacing: .07em;\r\n      text-transform: uppercase;\r\n    }\r\n\r\n    #bp-app .bp-card-title {\r\n      margin: 0;\r\n      font-size: 19px;\r\n      line-height: 1.25;\r\n      letter-spacing: -.02em;\r\n    }\r\n\r\n    #bp-app .bp-card-description {\r\n      margin: 9px 0 0;\r\n      color: var(--bp-muted);\r\n      font-size: 14px;\r\n      min-height: 43px;\r\n    }\r\n\r\n    #bp-app .bp-card-actions {\r\n      margin-top: 16px;\r\n      display: grid;\r\n      grid-template-columns: 1fr 1fr;\r\n      gap: 9px;\r\n    }\r\n\r\n    #bp-app .bp-button {\r\n      min-height: 44px;\r\n      border: 0;\r\n      border-radius: 13px;\r\n      padding: 10px 12px;\r\n      font-weight: 820;\r\n      transition: .2s ease;\r\n    }\r\n\r\n    #bp-app .bp-button:hover {\r\n      transform: translateY(-1px);\r\n    }\r\n\r\n    #bp-app .bp-button-primary {\r\n      color: #04131e;\r\n      background: linear-gradient(135deg, var(--bp-cyan), var(--bp-blue));\r\n    }\r\n\r\n    #bp-app .bp-button-secondary {\r\n      color: var(--bp-text);\r\n      background: rgba(255,255,255,.06);\r\n      border: 1px solid rgba(255,255,255,.10);\r\n    }\r\n\r\n    #bp-app .bp-button-secondary:hover {\r\n      background: rgba(255,255,255,.10);\r\n    }\r\n\r\n    #bp-app .bp-button-full {\r\n      grid-column: 1 \/ -1;\r\n    }\r\n\r\n    #bp-app .bp-empty {\r\n      display: none;\r\n      border: 1px dashed rgba(148,170,195,.30);\r\n      border-radius: 22px;\r\n      padding: 38px 20px;\r\n      text-align: center;\r\n      color: var(--bp-muted);\r\n      background: rgba(255,255,255,.025);\r\n    }\r\n\r\n    #bp-app .bp-empty.is-visible {\r\n      display: block;\r\n    }\r\n\r\n    #bp-app .bp-guidance-banner {\r\n      margin-bottom: 20px;\r\n      border: 1px solid rgba(37,214,208,.28);\r\n      border-radius: 18px;\r\n      padding: 15px 17px;\r\n      color: #caeeec;\r\n      background: rgba(37,214,208,.07);\r\n      display: none;\r\n    }\r\n\r\n    #bp-app .bp-guidance-banner.is-visible {\r\n      display: block;\r\n    }\r\n\r\n    \/* MODAL *\/\r\n    #bp-app .bp-modal-backdrop {\r\n      position: fixed;\r\n      inset: 0;\r\n      z-index: 999999;\r\n      display: none;\r\n      align-items: center;\r\n      justify-content: center;\r\n      padding: 18px;\r\n      background: rgba(1,7,13,.78);\r\n      backdrop-filter: blur(12px);\r\n      -webkit-backdrop-filter: blur(12px);\r\n    }\r\n\r\n    #bp-app .bp-modal-backdrop.is-open {\r\n      display: flex !important;\r\n      visibility: visible !important;\r\n      opacity: 1 !important;\r\n    }\r\n\r\n    #bp-app .bp-modal-backdrop.is-open .bp-modal {\r\n      display: block !important;\r\n      visibility: visible !important;\r\n      opacity: 1 !important;\r\n    }\r\n\r\n    #bp-app .bp-modal {\r\n      width: min(920px, 100%);\r\n      max-height: min(88vh, 900px);\r\n      overflow: auto;\r\n      border: 1px solid rgba(148,170,195,.22);\r\n      border-radius: 26px;\r\n      background: #0a1929;\r\n      box-shadow: 0 28px 100px rgba(0,0,0,.55);\r\n    }\r\n\r\n    #bp-app .bp-modal-head {\r\n      position: sticky;\r\n      top: 0;\r\n      z-index: 2;\r\n      display: flex;\r\n      align-items: start;\r\n      justify-content: space-between;\r\n      gap: 16px;\r\n      padding: 20px 22px;\r\n      background: rgba(10,25,41,.94);\r\n      border-bottom: 1px solid var(--bp-line);\r\n      backdrop-filter: blur(14px);\r\n    }\r\n\r\n    #bp-app .bp-modal-title {\r\n      margin: 0;\r\n      font-size: 24px;\r\n      line-height: 1.2;\r\n    }\r\n\r\n    #bp-app .bp-modal-subtitle {\r\n      margin: 5px 0 0;\r\n      color: var(--bp-muted);\r\n      font-size: 14px;\r\n    }\r\n\r\n    #bp-app .bp-modal-close {\r\n      width: 42px;\r\n      height: 42px;\r\n      flex: 0 0 42px;\r\n      border: 1px solid var(--bp-line);\r\n      border-radius: 50%;\r\n      background: rgba(255,255,255,.04);\r\n      color: var(--bp-text);\r\n      font-size: 22px;\r\n    }\r\n\r\n    #bp-app .bp-modal-body {\r\n      padding: 22px;\r\n    }\r\n\r\n    #bp-app .bp-prompt-box {\r\n      position: relative;\r\n      border: 1px solid rgba(148,170,195,.18);\r\n      border-radius: 18px;\r\n      padding: 18px;\r\n      color: #dce9f7;\r\n      background: #06121f;\r\n      font-size: 14px;\r\n      white-space: pre-wrap;\r\n      word-break: break-word;\r\n      max-height: 350px;\r\n      overflow: auto;\r\n    }\r\n\r\n    #bp-app .bp-modal-actions {\r\n      display: flex;\r\n      flex-wrap: wrap;\r\n      gap: 10px;\r\n      margin-top: 16px;\r\n    }\r\n\r\n    #bp-app .bp-modal-actions .bp-button {\r\n      padding-left: 18px;\r\n      padding-right: 18px;\r\n    }\r\n\r\n    #bp-app .bp-instruction-box {\r\n      border: 1px solid rgba(69,167,255,.24);\r\n      background: rgba(69,167,255,.06);\r\n      border-radius: 18px;\r\n      padding: 18px;\r\n    }\r\n\r\n    #bp-app .bp-instruction-box h4 {\r\n      margin: 0 0 10px;\r\n      font-size: 18px;\r\n    }\r\n\r\n    #bp-app .bp-instruction-box p {\r\n      margin: 0 0 10px;\r\n      color: var(--bp-muted);\r\n    }\r\n\r\n    #bp-app .bp-instruction-list {\r\n      margin: 0;\r\n      padding-left: 22px;\r\n      color: #d9e7f6;\r\n    }\r\n\r\n    #bp-app .bp-instruction-list li + li {\r\n      margin-top: 9px;\r\n    }\r\n\r\n    #bp-app .bp-reference-list {\r\n      display: grid;\r\n      gap: 9px;\r\n      margin: 14px 0 0;\r\n    }\r\n\r\n    #bp-app .bp-reference-item {\r\n      display: flex;\r\n      gap: 10px;\r\n      align-items: flex-start;\r\n      border-radius: 13px;\r\n      padding: 11px 12px;\r\n      background: rgba(255,255,255,.045);\r\n    }\r\n\r\n    #bp-app .bp-reference-number {\r\n      width: 25px;\r\n      height: 25px;\r\n      flex: 0 0 25px;\r\n      display: grid;\r\n      place-items: center;\r\n      border-radius: 50%;\r\n      background: var(--bp-cyan);\r\n      color: #03101b;\r\n      font-weight: 900;\r\n      font-size: 12px;\r\n    }\r\n\r\n    #bp-app .bp-toast {\r\n      position: fixed;\r\n      z-index: 1000000;\r\n      left: 50%;\r\n      bottom: 26px;\r\n      transform: translate(-50%, 20px);\r\n      opacity: 0;\r\n      pointer-events: none;\r\n      border-radius: 999px;\r\n      padding: 12px 18px;\r\n      color: #04120d;\r\n      background: var(--bp-green);\r\n      font-weight: 850;\r\n      box-shadow: 0 14px 40px rgba(0,0,0,.34);\r\n      transition: .24s ease;\r\n    }\r\n\r\n    #bp-app .bp-toast.is-visible {\r\n      opacity: 1;\r\n      transform: translate(-50%, 0);\r\n    }\r\n\r\n    #bp-app .bp-footer {\r\n      margin-top: 54px;\r\n      padding: 32px 0 48px;\r\n      border-top: 1px solid var(--bp-line);\r\n      color: var(--bp-muted);\r\n      text-align: center;\r\n      font-size: 13px;\r\n    }\r\n\r\n    @media (max-width: 1180px) {\r\n      #bp-app .bp-grid {\r\n        grid-template-columns: repeat(3, minmax(0, 1fr));\r\n      }\r\n    }\r\n\r\n    @media (max-width: 900px) {\r\n      #bp-app .bp-controls-grid {\r\n        grid-template-columns: 1fr 1fr;\r\n      }\r\n\r\n      #bp-app .bp-field-search {\r\n        grid-column: 1 \/ -1;\r\n      }\r\n\r\n      #bp-app .bp-grid {\r\n        grid-template-columns: repeat(2, minmax(0, 1fr));\r\n      }\r\n\r\n      #bp-app .bp-step-name {\r\n        font-size: 13px;\r\n      }\r\n    }\r\n\r\n    @media (max-width: 640px) {\r\n      #bp-app .bp-shell {\r\n        width: min(100% - 20px, 1480px);\r\n      }\r\n\r\n      #bp-app .bp-topbar-inner {\r\n        min-height: 76px;\r\n      }\r\n\r\n      #bp-app .bp-logo {\r\n        width: 46px;\r\n        height: 46px;\r\n        flex-basis: 46px;\r\n        border-radius: 15px;\r\n        font-size: 18px;\r\n      }\r\n\r\n      #bp-app .bp-brand-name {\r\n        font-size: 17px;\r\n      }\r\n\r\n      #bp-app .bp-brand-subtitle {\r\n        display: none;\r\n      }\r\n\r\n      #bp-app .bp-reset-button {\r\n        padding: 9px 11px;\r\n        font-size: 13px;\r\n      }\r\n\r\n      #bp-app .bp-hero {\r\n        padding-top: 38px;\r\n      }\r\n\r\n      #bp-app .bp-progress-wrap {\r\n        padding: 17px 10px;\r\n      }\r\n\r\n      #bp-app .bp-step {\r\n        padding: 0 3px;\r\n      }\r\n\r\n      #bp-app .bp-step-dot {\r\n        width: 35px;\r\n        height: 35px;\r\n        margin-bottom: 7px;\r\n        font-size: 12px;\r\n      }\r\n\r\n      #bp-app .bp-step:not(:last-child)::after {\r\n        top: 17px;\r\n        left: calc(50% + 19px);\r\n        right: calc(-50% + 19px);\r\n      }\r\n\r\n      #bp-app .bp-step-name {\r\n        font-size: 11px;\r\n      }\r\n\r\n      #bp-app .bp-step-status {\r\n        font-size: 9px;\r\n      }\r\n\r\n      #bp-app .bp-controls-grid {\r\n        grid-template-columns: 1fr;\r\n      }\r\n\r\n      #bp-app .bp-field-search {\r\n        grid-column: auto;\r\n      }\r\n\r\n      #bp-app .bp-section-head {\r\n        align-items: start;\r\n      }\r\n\r\n      #bp-app .bp-grid {\r\n        grid-template-columns: 1fr;\r\n      }\r\n\r\n      #bp-app .bp-media {\r\n        aspect-ratio: 9 \/ 11;\r\n      }\r\n\r\n      #bp-app .bp-modal-body,\r\n      #bp-app .bp-modal-head {\r\n        padding: 17px;\r\n      }\r\n    }\r\n  \r\n    \/* =========================================================\r\n       VERS\u00c3O 11 \u2014 UGC E POV REAIS PARA VESTIDO CASUAL\r\n       ========================================================= *\/\r\n    #bp-app .bp-progress-wrap {\r\n      padding: 20px;\r\n    }\r\n\r\n    #bp-app .bp-progress-toolbar {\r\n      display: flex;\r\n      align-items: center;\r\n      justify-content: space-between;\r\n      gap: 18px;\r\n      margin-bottom: 22px;\r\n      padding-bottom: 16px;\r\n      border-bottom: 1px solid var(--bp-line);\r\n    }\r\n\r\n    #bp-app .bp-progress-toolbar strong {\r\n      display: block;\r\n      font-size: 15px;\r\n    }\r\n\r\n    #bp-app .bp-progress-toolbar span {\r\n      display: block;\r\n      margin-top: 3px;\r\n      color: var(--bp-muted);\r\n      font-size: 13px;\r\n    }\r\n\r\n    #bp-app .bp-progress-actions {\r\n      display: flex;\r\n      gap: 9px;\r\n      flex-wrap: wrap;\r\n      justify-content: flex-end;\r\n    }\r\n\r\n    #bp-app .bp-progress-button {\r\n      min-height: 40px;\r\n      border: 1px solid rgba(37,214,208,.32);\r\n      border-radius: 12px;\r\n      padding: 8px 13px;\r\n      color: var(--bp-text);\r\n      background: rgba(37,214,208,.07);\r\n      font-size: 13px;\r\n      font-weight: 800;\r\n      transition: .2s ease;\r\n    }\r\n\r\n    #bp-app .bp-progress-button:hover {\r\n      background: rgba(37,214,208,.14);\r\n      transform: translateY(-1px);\r\n    }\r\n\r\n    #bp-app .bp-progress-button:disabled {\r\n      opacity: .4;\r\n      cursor: not-allowed;\r\n      transform: none;\r\n    }\r\n\r\n    #bp-app .bp-progress-button-clear {\r\n      border-color: rgba(255,107,107,.30);\r\n      background: rgba(255,107,107,.07);\r\n    }\r\n\r\n    #bp-app .bp-progress-track {\r\n      gap: 14px;\r\n    }\r\n\r\n    #bp-app .bp-step {\r\n      min-width: 0;\r\n      padding: 0 5px;\r\n    }\r\n\r\n    #bp-app .bp-step-select {\r\n      position: relative;\r\n      z-index: 3;\r\n      width: 100%;\r\n      min-height: 48px;\r\n      margin-top: 10px;\r\n      border: 1px solid rgba(148,170,195,.24);\r\n      border-radius: 13px;\r\n      padding: 0 11px;\r\n      color: var(--bp-text);\r\n      background: #081726;\r\n      outline: none;\r\n      font-size: 13px;\r\n      text-overflow: ellipsis;\r\n      transition: .2s ease;\r\n    }\r\n\r\n    #bp-app .bp-step-select:focus {\r\n      border-color: var(--bp-cyan);\r\n      box-shadow: 0 0 0 4px rgba(37,214,208,.08);\r\n    }\r\n\r\n    #bp-app .bp-step-select:disabled {\r\n      opacity: .48;\r\n      cursor: not-allowed;\r\n    }\r\n\r\n    #bp-app .bp-step.is-complete .bp-step-select {\r\n      border-color: rgba(37,214,208,.58);\r\n      background: rgba(37,214,208,.07);\r\n    }\r\n\r\n    #bp-app .bp-next-guidance {\r\n      margin-top: 18px;\r\n      padding: 13px 15px;\r\n      border: 1px solid rgba(69,167,255,.24);\r\n      border-radius: 14px;\r\n      color: #d4eaff;\r\n      background: rgba(69,167,255,.07);\r\n      font-size: 14px;\r\n      text-align: center;\r\n    }\r\n\r\n    #bp-app .bp-search-row {\r\n      display: grid;\r\n      grid-template-columns: minmax(260px, 560px);\r\n      justify-content: end;\r\n    }\r\n\r\n    #bp-app .bp-grid {\r\n      grid-template-columns: repeat(5, minmax(0, 1fr));\r\n      gap: 16px;\r\n    }\r\n\r\n    #bp-app .bp-media {\r\n      aspect-ratio: 4 \/ 5;\r\n    }\r\n\r\n    #bp-app .bp-card-body {\r\n      padding: 14px;\r\n    }\r\n\r\n    #bp-app .bp-card-title {\r\n      font-size: 16px;\r\n    }\r\n\r\n    #bp-app .bp-card-description {\r\n      font-size: 12px;\r\n      min-height: 38px;\r\n    }\r\n\r\n    #bp-app .bp-card-actions {\r\n      gap: 7px;\r\n    }\r\n\r\n    #bp-app .bp-button {\r\n      min-height: 40px;\r\n      padding: 8px 9px;\r\n      font-size: 12px;\r\n    }\r\n\r\n    #bp-app .bp-badge {\r\n      padding: 6px 8px;\r\n      font-size: 10px;\r\n    }\r\n\r\n    #bp-app .bp-guidance-banner {\r\n      font-size: 14px;\r\n      line-height: 1.55;\r\n    }\r\n\r\n    @media (max-width: 1280px) {\r\n      #bp-app .bp-grid {\r\n        grid-template-columns: repeat(4, minmax(0, 1fr));\r\n      }\r\n    }\r\n\r\n    @media (max-width: 1000px) {\r\n      #bp-app .bp-progress-track {\r\n        grid-template-columns: repeat(2, minmax(0, 1fr));\r\n        row-gap: 24px;\r\n      }\r\n\r\n      #bp-app .bp-step:nth-child(2)::after {\r\n        display: none;\r\n      }\r\n\r\n      #bp-app .bp-step:nth-child(3)::before {\r\n        display: none;\r\n      }\r\n\r\n      #bp-app .bp-grid {\r\n        grid-template-columns: repeat(3, minmax(0, 1fr));\r\n      }\r\n    }\r\n\r\n    @media (max-width: 760px) {\r\n      #bp-app .bp-progress-toolbar {\r\n        align-items: flex-start;\r\n        flex-direction: column;\r\n      }\r\n\r\n      #bp-app .bp-progress-actions {\r\n        width: 100%;\r\n      }\r\n\r\n      #bp-app .bp-progress-button {\r\n        flex: 1 1 145px;\r\n      }\r\n\r\n      #bp-app .bp-grid {\r\n        grid-template-columns: repeat(2, minmax(0, 1fr));\r\n      }\r\n\r\n      #bp-app .bp-search-row {\r\n        grid-template-columns: 1fr;\r\n      }\r\n    }\r\n\r\n    @media (max-width: 520px) {\r\n      #bp-app .bp-progress-track {\r\n        grid-template-columns: 1fr;\r\n      }\r\n\r\n      #bp-app .bp-step::after {\r\n        display: none !important;\r\n      }\r\n\r\n      #bp-app .bp-step {\r\n        display: grid;\r\n        grid-template-columns: 40px minmax(0,1fr);\r\n        column-gap: 10px;\r\n        text-align: left;\r\n        align-items: center;\r\n      }\r\n\r\n      #bp-app .bp-step-dot {\r\n        grid-row: 1 \/ 4;\r\n        margin: 0;\r\n      }\r\n\r\n      #bp-app .bp-step-name,\r\n      #bp-app .bp-step-status,\r\n      #bp-app .bp-step-select {\r\n        grid-column: 2;\r\n      }\r\n\r\n      #bp-app .bp-step-select {\r\n        margin-top: 5px;\r\n      }\r\n\r\n      #bp-app .bp-grid {\r\n        grid-template-columns: 1fr;\r\n      }\r\n\r\n      #bp-app .bp-media {\r\n        aspect-ratio: 4 \/ 4.7;\r\n      }\r\n    }\r\n\r\n  \r\n    \/* BLOCO COMPACTO DO PROMPT DENTRO DAS INSTRU\u00c7\u00d5ES *\/\r\n    #bp-app .bp-compact-prompt-wrap {\r\n      margin-top: 14px;\r\n      border: 1px solid rgba(168,85,247,.28);\r\n      border-radius: 18px;\r\n      background: rgba(168,85,247,.055);\r\n      overflow: hidden;\r\n    }\r\n\r\n    #bp-app .bp-compact-prompt-head {\r\n      display: flex;\r\n      align-items: center;\r\n      justify-content: space-between;\r\n      gap: 12px;\r\n      padding: 13px 16px;\r\n      border-bottom: 1px solid rgba(168,85,247,.18);\r\n    }\r\n\r\n    #bp-app .bp-compact-prompt-head strong {\r\n      font-size: 16px;\r\n    }\r\n\r\n    #bp-app .bp-compact-prompt-head span {\r\n      color: var(--bp-muted);\r\n      font-size: 12px;\r\n      white-space: nowrap;\r\n    }\r\n\r\n    #bp-app .bp-compact-prompt {\r\n      max-height: 118px;\r\n      overflow-y: auto;\r\n      padding: 14px 16px;\r\n      color: #dce9f7;\r\n      background: #06121f;\r\n      font-size: 13px;\r\n      line-height: 1.55;\r\n      white-space: pre-wrap;\r\n      word-break: break-word;\r\n      scrollbar-width: thin;\r\n      scrollbar-color: rgba(37,214,208,.65) rgba(255,255,255,.05);\r\n    }\r\n\r\n    #bp-app .bp-compact-prompt::-webkit-scrollbar {\r\n      width: 7px;\r\n    }\r\n\r\n    #bp-app .bp-compact-prompt::-webkit-scrollbar-track {\r\n      background: rgba(255,255,255,.04);\r\n    }\r\n\r\n    #bp-app .bp-compact-prompt::-webkit-scrollbar-thumb {\r\n      background: rgba(37,214,208,.65);\r\n      border-radius: 999px;\r\n    }\r\n\r\n    @media (max-width: 640px) {\r\n      #bp-app .bp-compact-prompt {\r\n        max-height: 105px;\r\n      }\r\n\r\n      #bp-app .bp-compact-prompt-head {\r\n        align-items: flex-start;\r\n        flex-direction: column;\r\n        gap: 3px;\r\n      }\r\n    }\r\n\r\n  \r\n    \/* EXIBI\u00c7\u00c3O PROGRESSIVA DAS ETAPAS *\/\r\n    #bp-app #bpVideosSection {\r\n      display: none;\r\n    }\r\n\r\n    #bp-app #bpVideosSection.is-visible {\r\n      display: block;\r\n    }\r\n\r\n  \r\n    #bp-app .bp-card.is-selected .bp-button[data-action=\"select-image\"] {\r\n      color: #03120c;\r\n      background: var(--bp-green);\r\n      border-color: transparent;\r\n    }\r\n\r\n  \r\n    \/* =========================================================\r\n       VERS\u00c3O 8 \u2014 M\u00cdDIA COMPLETA 9:16, SEM \u00cdCONES SOBREPOSTOS\r\n       ========================================================= *\/\r\n    #bp-app .bp-grid {\r\n      grid-template-columns: repeat(6, minmax(0, 1fr));\r\n      gap: 14px;\r\n    }\r\n\r\n    #bp-app .bp-card {\r\n      border-radius: 18px;\r\n    }\r\n\r\n    #bp-app .bp-media {\r\n      aspect-ratio: 9 \/ 16 !important;\r\n      background: #030a12;\r\n      display: flex;\r\n      align-items: center;\r\n      justify-content: center;\r\n    }\r\n\r\n    #bp-app .bp-media img,\r\n    #bp-app .bp-media video {\r\n      width: 100%;\r\n      height: 100%;\r\n      object-fit: contain !important;\r\n      object-position: center center;\r\n      background: #030a12;\r\n    }\r\n\r\n    #bp-app .bp-media::after {\r\n      display: none !important;\r\n    }\r\n\r\n    #bp-app .bp-badges,\r\n    #bp-app .bp-badge,\r\n    #bp-app .bp-selected-check {\r\n      display: none !important;\r\n    }\r\n\r\n    #bp-app .bp-card-body {\r\n      padding: 12px;\r\n    }\r\n\r\n    #bp-app .bp-card-title {\r\n      font-size: 15px;\r\n    }\r\n\r\n    #bp-app .bp-card-description {\r\n      font-size: 11px;\r\n      min-height: 34px;\r\n    }\r\n\r\n    #bp-app .bp-card-actions {\r\n      margin-top: 12px;\r\n    }\r\n\r\n    #bp-app .bp-button {\r\n      min-height: 38px;\r\n      font-size: 11px;\r\n      padding: 8px;\r\n    }\r\n\r\n    #bp-app .bp-hover-video {\r\n      cursor: pointer;\r\n    }\r\n\r\n    #bp-app .bp-card.is-selected {\r\n      border-color: var(--bp-cyan);\r\n      box-shadow: 0 0 0 2px rgba(37,214,208,.22), 0 18px 46px rgba(0,0,0,.34);\r\n    }\r\n\r\n    @media (max-width: 1380px) {\r\n      #bp-app .bp-grid {\r\n        grid-template-columns: repeat(5, minmax(0, 1fr));\r\n      }\r\n    }\r\n\r\n    @media (max-width: 1120px) {\r\n      #bp-app .bp-grid {\r\n        grid-template-columns: repeat(4, minmax(0, 1fr));\r\n      }\r\n    }\r\n\r\n    @media (max-width: 860px) {\r\n      #bp-app .bp-grid {\r\n        grid-template-columns: repeat(3, minmax(0, 1fr));\r\n      }\r\n    }\r\n\r\n    @media (max-width: 620px) {\r\n      #bp-app .bp-grid {\r\n        grid-template-columns: repeat(2, minmax(0, 1fr));\r\n      }\r\n    }\r\n\r\n    @media (max-width: 430px) {\r\n      #bp-app .bp-grid {\r\n        grid-template-columns: 1fr;\r\n      }\r\n\r\n      #bp-app .bp-card {\r\n        max-width: 340px;\r\n        margin: 0 auto;\r\n      }\r\n    }\r\n\r\n  \r\n    \/* =========================================================\r\n       COPY DA FALA \u2014 PERSONALIZA\u00c7\u00c3O DO DI\u00c1LOGO DO V\u00cdDEO\r\n       ========================================================= *\/\r\n    #bp-app .bp-speech-button {\r\n      grid-column: 1 \/ -1;\r\n      color: #f3f8ff;\r\n      background: rgba(168,85,247,.13);\r\n      border: 1px solid rgba(168,85,247,.36);\r\n    }\r\n\r\n    #bp-app .bp-speech-button:hover {\r\n      background: rgba(168,85,247,.22);\r\n      border-color: rgba(168,85,247,.62);\r\n    }\r\n\r\n    #bp-app .bp-speech-button.has-copy {\r\n      color: #03120c;\r\n      background: var(--bp-green);\r\n      border-color: transparent;\r\n    }\r\n\r\n    #bp-app .bp-speech-field-wrap {\r\n      border: 1px solid rgba(168,85,247,.28);\r\n      border-radius: 18px;\r\n      padding: 16px;\r\n      background: rgba(168,85,247,.055);\r\n    }\r\n\r\n    #bp-app .bp-speech-field-label {\r\n      display: flex;\r\n      align-items: center;\r\n      justify-content: space-between;\r\n      gap: 12px;\r\n      margin-bottom: 10px;\r\n    }\r\n\r\n    #bp-app .bp-speech-field-label strong {\r\n      font-size: 17px;\r\n    }\r\n\r\n    #bp-app .bp-speech-counter {\r\n      color: var(--bp-muted);\r\n      font-size: 12px;\r\n      font-weight: 800;\r\n    }\r\n\r\n    #bp-app .bp-speech-counter.is-near-limit {\r\n      color: #ffd166;\r\n    }\r\n\r\n    #bp-app .bp-speech-counter.is-limit {\r\n      color: var(--bp-danger);\r\n    }\r\n\r\n    #bp-app .bp-speech-textarea {\r\n      width: 100%;\r\n      min-height: 122px;\r\n      resize: vertical;\r\n      border: 1px solid rgba(148,170,195,.22);\r\n      border-radius: 14px;\r\n      padding: 13px 14px;\r\n      color: var(--bp-text);\r\n      background: #06121f;\r\n      outline: none;\r\n      line-height: 1.5;\r\n    }\r\n\r\n    #bp-app .bp-speech-textarea:focus {\r\n      border-color: var(--bp-purple);\r\n      box-shadow: 0 0 0 4px rgba(168,85,247,.10);\r\n    }\r\n\r\n    #bp-app .bp-speech-help {\r\n      margin: 9px 0 0;\r\n      color: var(--bp-muted);\r\n      font-size: 12px;\r\n    }\r\n\r\n    #bp-app .bp-speech-preview {\r\n      margin-top: 14px;\r\n      border: 1px solid rgba(37,214,208,.20);\r\n      border-radius: 14px;\r\n      padding: 13px 14px;\r\n      color: #dce9f7;\r\n      background: rgba(37,214,208,.055);\r\n      font-size: 13px;\r\n      white-space: pre-wrap;\r\n      word-break: break-word;\r\n    }\r\n\r\n    #bp-app .bp-speech-empty-warning {\r\n      display: none;\r\n      margin-top: 10px;\r\n      color: #ffd4d4;\r\n      border: 1px solid rgba(255,107,107,.28);\r\n      border-radius: 12px;\r\n      padding: 10px 12px;\r\n      background: rgba(255,107,107,.07);\r\n      font-size: 12px;\r\n    }\r\n\r\n    #bp-app .bp-speech-empty-warning.is-visible {\r\n      display: block;\r\n    }\r\n\r\n    @media (max-width: 640px) {\r\n      #bp-app .bp-speech-field-label {\r\n        align-items: flex-start;\r\n        flex-direction: column;\r\n        gap: 4px;\r\n      }\r\n    }\r\n\r\n  \r\n    \/* VERS\u00c3O 10 \u2014 FLUXO SIMPLIFICADO DA FALA *\/\r\n    #bp-app .bp-card-actions .bp-speech-button {\r\n      grid-column: auto;\r\n    }\r\n\r\n    #bp-app .bp-speech-field-wrap + .bp-modal-actions {\r\n      display: grid;\r\n      grid-template-columns: 1fr 1fr;\r\n    }\r\n\r\n    #bp-app .bp-speech-field-wrap + .bp-modal-actions .bp-button {\r\n      width: 100%;\r\n    }\r\n\r\n    @media (max-width: 520px) {\r\n      #bp-app .bp-speech-field-wrap + .bp-modal-actions {\r\n        grid-template-columns: 1fr;\r\n      }\r\n    }\r\n\r\n  \r\n\r\n    \/* =========================================================\r\n       GERADOR COMPACTO DE INFLUENCIADORA REALISTA\r\n       Inserido acima da r\u00e9gua sem alterar o fluxo da biblioteca.\r\n       ========================================================= *\/\r\n    #bp-app .bp-influencer-launcher {\r\n      margin-top: 34px;\r\n      border: 1px solid rgba(255, 63, 146, .28);\r\n      border-radius: 24px;\r\n      overflow: hidden;\r\n      background:\r\n        radial-gradient(circle at 92% 20%, rgba(255,63,146,.14), transparent 34%),\r\n        linear-gradient(135deg, rgba(168,85,247,.09), rgba(37,214,208,.045));\r\n      box-shadow: 0 18px 60px rgba(0,0,0,.24);\r\n    }\r\n\r\n    #bp-app .bp-influencer-summary {\r\n      width: 100%;\r\n      border: 0;\r\n      padding: 20px 22px;\r\n      display: flex;\r\n      align-items: center;\r\n      justify-content: space-between;\r\n      gap: 18px;\r\n      color: var(--bp-text);\r\n      background: transparent;\r\n      text-align: left;\r\n    }\r\n\r\n    #bp-app .bp-influencer-summary-main {\r\n      display: flex;\r\n      align-items: center;\r\n      gap: 15px;\r\n      min-width: 0;\r\n    }\r\n\r\n    #bp-app .bp-influencer-icon {\r\n      width: 50px;\r\n      height: 50px;\r\n      flex: 0 0 50px;\r\n      display: grid;\r\n      place-items: center;\r\n      border-radius: 16px;\r\n      color: #fff;\r\n      font-size: 22px;\r\n      background: linear-gradient(135deg, var(--bp-pink), var(--bp-purple));\r\n      box-shadow: 0 12px 30px rgba(255,63,146,.22);\r\n    }\r\n\r\n    #bp-app .bp-influencer-summary strong {\r\n      display: block;\r\n      font-size: 18px;\r\n      line-height: 1.2;\r\n    }\r\n\r\n    #bp-app .bp-influencer-summary small {\r\n      display: block;\r\n      margin-top: 5px;\r\n      color: var(--bp-muted);\r\n      font-size: 13px;\r\n    }\r\n\r\n    #bp-app .bp-influencer-open-label {\r\n      flex: 0 0 auto;\r\n      border: 1px solid rgba(255,63,146,.34);\r\n      border-radius: 13px;\r\n      padding: 10px 14px;\r\n      color: #fff;\r\n      background: rgba(255,63,146,.10);\r\n      font-size: 13px;\r\n      font-weight: 850;\r\n      white-space: nowrap;\r\n    }\r\n\r\n    #bp-app .bp-influencer-panel {\r\n      display: none;\r\n      padding: 0 22px 22px;\r\n      border-top: 1px solid rgba(255,255,255,.07);\r\n    }\r\n\r\n    #bp-app .bp-influencer-launcher.is-open .bp-influencer-panel {\r\n      display: block;\r\n    }\r\n\r\n    #bp-app .bp-influencer-layout {\r\n      display: grid;\r\n      grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);\r\n      gap: 18px;\r\n      padding-top: 20px;\r\n    }\r\n\r\n    #bp-app .bp-influencer-form-card,\r\n    #bp-app .bp-influencer-result-card {\r\n      border: 1px solid rgba(148,170,195,.18);\r\n      border-radius: 20px;\r\n      padding: 18px;\r\n      background: rgba(5,15,27,.58);\r\n      min-width: 0;\r\n    }\r\n\r\n    #bp-app .bp-influencer-card-head {\r\n      display: flex;\r\n      align-items: center;\r\n      justify-content: space-between;\r\n      gap: 12px;\r\n      margin-bottom: 16px;\r\n    }\r\n\r\n    #bp-app .bp-influencer-card-head h3 {\r\n      margin: 0;\r\n      font-size: 17px;\r\n    }\r\n\r\n    #bp-app .bp-influencer-grid {\r\n      display: grid;\r\n      grid-template-columns: repeat(2, minmax(0,1fr));\r\n      gap: 12px;\r\n    }\r\n\r\n    #bp-app .bp-influencer-field-full {\r\n      grid-column: 1 \/ -1;\r\n    }\r\n\r\n    #bp-app .bp-influencer-field label {\r\n      display: block;\r\n      margin-bottom: 6px;\r\n      color: var(--bp-muted);\r\n      font-size: 11px;\r\n      font-weight: 800;\r\n      text-transform: uppercase;\r\n      letter-spacing: .06em;\r\n    }\r\n\r\n    #bp-app .bp-influencer-field select,\r\n    #bp-app .bp-influencer-field input {\r\n      width: 100%;\r\n      min-height: 46px;\r\n      border: 1px solid rgba(148,170,195,.22);\r\n      border-radius: 12px;\r\n      padding: 0 12px;\r\n      color: var(--bp-text);\r\n      background: #081726;\r\n      outline: none;\r\n    }\r\n\r\n    #bp-app .bp-influencer-field select:focus,\r\n    #bp-app .bp-influencer-field input:focus {\r\n      border-color: var(--bp-pink);\r\n      box-shadow: 0 0 0 4px rgba(255,63,146,.08);\r\n    }\r\n\r\n    #bp-app .bp-influencer-generate {\r\n      width: 100%;\r\n      min-height: 50px;\r\n      margin-top: 14px;\r\n      border: 0;\r\n      border-radius: 14px;\r\n      color: #fff;\r\n      font-weight: 900;\r\n      background: linear-gradient(90deg, var(--bp-pink), #d631e8);\r\n      box-shadow: 0 12px 28px rgba(255,63,146,.18);\r\n    }\r\n\r\n    #bp-app .bp-influencer-result {\r\n      min-height: 430px;\r\n      max-height: 540px;\r\n      overflow: auto;\r\n      border: 1px solid rgba(148,170,195,.18);\r\n      border-radius: 14px;\r\n      padding: 16px;\r\n      color: #dce9f7;\r\n      background: #06121f;\r\n      white-space: pre-wrap;\r\n      word-break: break-word;\r\n      font-size: 13px;\r\n      line-height: 1.6;\r\n    }\r\n\r\n    #bp-app .bp-influencer-copy {\r\n      min-height: 40px;\r\n      border: 1px solid rgba(37,214,208,.30);\r\n      border-radius: 12px;\r\n      padding: 8px 13px;\r\n      color: var(--bp-text);\r\n      background: rgba(37,214,208,.08);\r\n      font-weight: 850;\r\n    }\r\n\r\n    #bp-app .bp-influencer-note {\r\n      margin: 12px 0 0;\r\n      color: var(--bp-muted);\r\n      font-size: 12px;\r\n    }\r\n\r\n    @media (max-width: 900px) {\r\n      #bp-app .bp-influencer-layout {\r\n        grid-template-columns: 1fr;\r\n      }\r\n      #bp-app .bp-influencer-result {\r\n        min-height: 300px;\r\n      }\r\n    }\r\n\r\n    @media (max-width: 600px) {\r\n      #bp-app .bp-influencer-summary {\r\n        align-items: flex-start;\r\n        flex-direction: column;\r\n      }\r\n      #bp-app .bp-influencer-open-label {\r\n        width: 100%;\r\n        text-align: center;\r\n      }\r\n      #bp-app .bp-influencer-panel {\r\n        padding: 0 12px 14px;\r\n      }\r\n      #bp-app .bp-influencer-grid {\r\n        grid-template-columns: 1fr;\r\n      }\r\n      #bp-app .bp-influencer-field-full {\r\n        grid-column: auto;\r\n      }\r\n    }\r\n\r\n\r\n    \/* BOT\u00c3O LIMPAR \u2014 adi\u00e7\u00e3o isolada *\/\r\n    #bp-app .bp-influencer-clear {\r\n      min-height: 36px;\r\n      border: 1px solid rgba(255,107,107,.34);\r\n      border-radius: 11px;\r\n      padding: 7px 11px;\r\n      color: #ffd9d9;\r\n      background: rgba(255,107,107,.08);\r\n      font-size: 11px;\r\n      font-weight: 850;\r\n      white-space: nowrap;\r\n      transition: .2s ease;\r\n    }\r\n\r\n    #bp-app .bp-influencer-clear:hover {\r\n      border-color: rgba(255,107,107,.62);\r\n      background: rgba(255,107,107,.15);\r\n    }\r\n\r\n    \/* R\u00e9gua sempre reta em telas maiores. *\/\r\n    @media (min-width: 761px) {\r\n      #bp-app .bp-progress-track {\r\n        grid-template-columns: repeat(4, minmax(0, 1fr));\r\n        row-gap: 0;\r\n      }\r\n      #bp-app .bp-step:nth-child(2)::after { display: block; }\r\n    }\r\n\r\n  \r\n\r\n    \/* =========================================================\r\n       AJUSTE WORDPRESS \/ ELEMENTOR \u2014 LARGURA TOTAL E SEM T\u00cdTULO\r\n       Mant\u00e9m todo o layout interno original da biblioteca.\r\n       ========================================================= *\/\r\n\r\n    \/* Oculta somente o t\u00edtulo externo da p\u00e1gina criado pelo tema\/WordPress. *\/\r\n    .entry-title,\r\n    h1.entry-title,\r\n    .page-title,\r\n    .page-header,\r\n    .elementor-page-title,\r\n    .elementor-widget-theme-page-title,\r\n    .elementor-widget-theme-post-title,\r\n    .wp-block-post-title {\r\n      display: none !important;\r\n    }\r\n\r\n    \/* Remove limites e espa\u00e7amentos do cont\u00eainer externo mais comum do Elementor. *\/\r\n    body.elementor-page main,\r\n    body.elementor-page .site-main,\r\n    body.elementor-page .content-area,\r\n    body.elementor-page .site-content,\r\n    body.elementor-page .entry-content,\r\n    body.elementor-page .elementor-location-single,\r\n    body.elementor-page .elementor,\r\n    body.elementor-page .elementor-section-wrap {\r\n      width: 100% !important;\r\n      max-width: none !important;\r\n      margin-left: 0 !important;\r\n      margin-right: 0 !important;\r\n      padding-left: 0 !important;\r\n      padding-right: 0 !important;\r\n    }\r\n\r\n    \/* Faz a aplica\u00e7\u00e3o escapar de qualquer coluna limitada e ocupar a viewport. *\/\r\n    #bp-app {\r\n      width: 100vw !important;\r\n      max-width: 100vw !important;\r\n      margin-left: calc(50% - 50vw) !important;\r\n      margin-right: calc(50% - 50vw) !important;\r\n    }\r\n\r\n    \/* Aproveita melhor a largura dispon\u00edvel sem alterar a estrutura dos blocos. *\/\r\n    #bp-app .bp-shell {\r\n      width: min(1760px, calc(100% - 40px)) !important;\r\n      max-width: none !important;\r\n    }\r\n\r\n    @media (max-width: 640px) {\r\n      #bp-app .bp-shell {\r\n        width: calc(100% - 20px) !important;\r\n      }\r\n    }\r\n\r\n\r\n\r\n    \/* =========================================================\r\n       WORDPRESS \/ ELEMENTOR \u2014 TELA COMPLETA AT\u00c9 O TOPO\r\n       Remove cabe\u00e7alho, t\u00edtulo externo, faixa branca e espa\u00e7amentos do tema.\r\n       ========================================================= *\/\r\n    html,\r\n    body {\r\n      margin: 0 !important;\r\n      padding: 0 !important;\r\n      width: 100% !important;\r\n      max-width: 100% !important;\r\n      background: #06111d !important;\r\n    }\r\n\r\n    body {\r\n      overflow-x: hidden !important;\r\n    }\r\n\r\n    \/* Cabe\u00e7alhos do tema e do construtor. *\/\r\n    body header.site-header,\r\n    body #masthead,\r\n    body .site-header,\r\n    body .main-header,\r\n    body .header-main,\r\n    body .theme-header,\r\n    body .elementor-location-header,\r\n    body .wp-site-blocks > header,\r\n    body .wp-block-template-part:first-child,\r\n    body .ast-primary-header-bar,\r\n    body .ast-above-header-wrap,\r\n    body .ast-below-header-wrap,\r\n    body .generate-header,\r\n    body .site-branding,\r\n    body .site-title,\r\n    body .site-description {\r\n      display: none !important;\r\n      height: 0 !important;\r\n      min-height: 0 !important;\r\n      margin: 0 !important;\r\n      padding: 0 !important;\r\n      border: 0 !important;\r\n    }\r\n\r\n    \/* T\u00edtulos, breadcrumbs e faixas superiores criadas pelo tema. *\/\r\n    body .entry-header,\r\n    body .page-header,\r\n    body .page-title,\r\n    body .entry-title,\r\n    body h1.entry-title,\r\n    body .elementor-page-title,\r\n    body .elementor-widget-theme-page-title,\r\n    body .elementor-widget-theme-post-title,\r\n    body .wp-block-post-title,\r\n    body .breadcrumbs,\r\n    body .breadcrumb,\r\n    body .rank-math-breadcrumb,\r\n    body .yoast-breadcrumb,\r\n    body .site-content > .container > .row > .content-area > .site-main > article > header,\r\n    body article > header.entry-header {\r\n      display: none !important;\r\n      height: 0 !important;\r\n      min-height: 0 !important;\r\n      margin: 0 !important;\r\n      padding: 0 !important;\r\n      border: 0 !important;\r\n    }\r\n\r\n    \/* Remove limites, fundos brancos e recuos do conte\u00fado do tema. *\/\r\n    body main,\r\n    body #main,\r\n    body #primary,\r\n    body #content,\r\n    body .site-main,\r\n    body .site-content,\r\n    body .content-area,\r\n    body .entry-content,\r\n    body .page-content,\r\n    body article,\r\n    body .hentry,\r\n    body .container,\r\n    body .site-content .container,\r\n    body .elementor-location-single,\r\n    body .elementor,\r\n    body .elementor-section-wrap,\r\n    body .elementor-element,\r\n    body .e-con,\r\n    body .e-con-inner {\r\n      max-width: none !important;\r\n    }\r\n\r\n    body #content,\r\n    body #primary,\r\n    body .site-main,\r\n    body .site-content,\r\n    body .content-area,\r\n    body .entry-content,\r\n    body .page-content,\r\n    body article,\r\n    body .hentry,\r\n    body .elementor-location-single,\r\n    body .elementor,\r\n    body .elementor-section-wrap {\r\n      width: 100% !important;\r\n      margin: 0 !important;\r\n      padding: 0 !important;\r\n      border: 0 !important;\r\n      background: transparent !important;\r\n    }\r\n\r\n    \/* Evita margem superior deixada por temas ou pelo admin bar. *\/\r\n    html {\r\n      margin-top: 0 !important;\r\n    }\r\n\r\n    body.admin-bar {\r\n      margin-top: 0 !important;\r\n    }\r\n\r\n    \/* Oculta a barra administrativa apenas nesta p\u00e1gina para vis\u00e3o integral. *\/\r\n    body.admin-bar #wpadminbar {\r\n      display: none !important;\r\n    }\r\n\r\n    \/* A biblioteca come\u00e7a no primeiro pixel \u00fatil da p\u00e1gina. *\/\r\n    #bp-app {\r\n      position: relative !important;\r\n      top: 0 !important;\r\n      margin-top: 0 !important;\r\n      padding-top: 0 !important;\r\n    }\r\n\r\n\r\n    \/* =========================================================\r\n       GERADOR DE COPIES \u2014 BLOCO COMPACTO E RECOLH\u00cdVEL\r\n       ========================================================= *\/\r\n    #bp-app .bp-copy-launcher {\r\n      margin-top: 18px;\r\n      border: 1px solid rgba(255, 63, 146, .28);\r\n      border-radius: 24px;\r\n      overflow: hidden;\r\n      background:\r\n        radial-gradient(circle at 92% 20%, rgba(255,63,146,.14), transparent 34%),\r\n        linear-gradient(135deg, rgba(168,85,247,.09), rgba(37,214,208,.045));\r\n      box-shadow: 0 18px 60px rgba(0,0,0,.24);\r\n    }\r\n    #bp-app .bp-copy-summary {\r\n      width: 100%; border: 0; padding: 20px 22px; display: flex; align-items: center;\r\n      justify-content: space-between; gap: 18px; color: var(--bp-text); background: transparent; text-align: left;\r\n    }\r\n    #bp-app .bp-copy-summary-main { display:flex; align-items:center; gap:15px; min-width:0; }\r\n    #bp-app .bp-copy-icon {\r\n      width:50px; height:50px; flex:0 0 50px; display:grid; place-items:center; border-radius:16px;\r\n      color:#fff; font-size:22px; background:linear-gradient(135deg,var(--bp-pink),var(--bp-purple));\r\n      box-shadow:0 12px 30px rgba(255,63,146,.22);\r\n    }\r\n    #bp-app .bp-copy-summary strong { display:block; font-size:18px; line-height:1.2; }\r\n    #bp-app .bp-copy-summary small { display:block; margin-top:5px; color:var(--bp-muted); font-size:13px; }\r\n    #bp-app .bp-copy-open-label {\r\n      flex:0 0 auto; border:1px solid rgba(255,63,146,.34); border-radius:13px; padding:10px 14px;\r\n      color:#fff; background:rgba(255,63,146,.10); font-size:13px; font-weight:850; white-space:nowrap;\r\n    }\r\n    #bp-app .bp-copy-panel { display:none; padding:0 22px 22px; border-top:1px solid rgba(255,255,255,.07); }\r\n    #bp-app .bp-copy-launcher.is-open .bp-copy-panel { display:block; }\r\n    #bp-app .bp-copy-layout { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:18px; padding-top:20px; }\r\n    #bp-app .bp-copy-card { border:1px solid rgba(148,170,195,.18); border-radius:20px; padding:18px; background:rgba(5,15,27,.58); min-width:0; }\r\n    #bp-app .bp-copy-card-head { display:flex; align-items:center; justify-content:space-between; gap:12px; margin-bottom:16px; }\r\n    #bp-app .bp-copy-card-head h3 { margin:0; font-size:17px; }\r\n    #bp-app .bp-copy-clear, #bp-app .bp-copy-instructions {\r\n      min-height:36px; border-radius:11px; padding:7px 11px; font-size:11px; font-weight:850; white-space:nowrap;\r\n    }\r\n    #bp-app .bp-copy-clear { border:1px solid rgba(255,107,107,.34); color:#ffd9d9; background:rgba(255,107,107,.08); }\r\n    #bp-app .bp-copy-instructions { border:1px solid rgba(69,167,255,.34); color:#dceeff; background:rgba(69,167,255,.08); }\r\n    #bp-app .bp-copy-label { display:block; margin:0 0 8px; color:var(--bp-muted); font-size:11px; font-weight:850; letter-spacing:.06em; text-transform:uppercase; }\r\n    #bp-app .bp-copy-choice-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:9px; margin-bottom:16px; }\r\n    #bp-app .bp-copy-duration-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:9px; margin-bottom:16px; }\r\n    #bp-app .bp-copy-choice {\r\n      min-height:58px; border:1px solid rgba(148,170,195,.22); border-radius:13px; padding:9px 10px;\r\n      color:var(--bp-text); background:rgba(255,255,255,.035); font-weight:850; transition:.2s ease;\r\n    }\r\n    #bp-app .bp-copy-choice small { display:block; margin-top:2px; color:var(--bp-muted); font-size:10px; font-weight:600; }\r\n    #bp-app .bp-copy-choice.is-selected { border-color:var(--bp-pink); background:rgba(255,63,146,.14); box-shadow:0 0 0 2px rgba(255,63,146,.08); }\r\n    #bp-app .bp-copy-field { margin-top:14px; }\r\n    #bp-app .bp-copy-field-head { display:flex; justify-content:space-between; gap:10px; margin-bottom:7px; }\r\n    #bp-app .bp-copy-field-head strong { font-size:13px; }\r\n    #bp-app .bp-copy-counter { color:var(--bp-muted); font-size:11px; font-weight:800; }\r\n    #bp-app .bp-copy-textarea {\r\n      width:100%; min-height:132px; resize:vertical; border:1px solid rgba(148,170,195,.22); border-radius:14px;\r\n      padding:13px 14px; color:var(--bp-text); background:#06121f; outline:none; line-height:1.5;\r\n    }\r\n    #bp-app .bp-copy-textarea:focus { border-color:var(--bp-pink); box-shadow:0 0 0 4px rgba(255,63,146,.08); }\r\n    #bp-app .bp-copy-generate {\r\n      width:100%; min-height:50px; margin-top:16px; border:0; border-radius:14px; color:#fff; font-weight:900;\r\n      background:linear-gradient(90deg,var(--bp-pink),#d631e8); box-shadow:0 12px 28px rgba(255,63,146,.18);\r\n    }\r\n    #bp-app .bp-copy-result {\r\n      min-height:430px; max-height:560px; overflow:auto; border:1px solid rgba(148,170,195,.18); border-radius:14px;\r\n      padding:16px; color:#dce9f7; background:#06121f; white-space:pre-wrap; word-break:break-word; font-size:13px; line-height:1.6;\r\n    }\r\n    #bp-app .bp-copy-copy {\r\n      min-height:40px; border:1px solid rgba(37,214,208,.30); border-radius:12px; padding:8px 13px;\r\n      color:var(--bp-text); background:rgba(37,214,208,.08); font-weight:850;\r\n    }\r\n    #bp-app .bp-copy-warning { display:none; margin-top:10px; color:#ffd4d4; border:1px solid rgba(255,107,107,.28); border-radius:12px; padding:10px 12px; background:rgba(255,107,107,.07); font-size:12px; }\r\n    #bp-app .bp-copy-warning.is-visible { display:block; }\r\n    @media (max-width:900px){ #bp-app .bp-copy-layout{grid-template-columns:1fr;} #bp-app .bp-copy-result{min-height:300px;} }\r\n    @media (max-width:600px){\r\n      #bp-app .bp-copy-summary{align-items:flex-start;flex-direction:column;} #bp-app .bp-copy-open-label{width:100%;text-align:center;}\r\n      #bp-app .bp-copy-panel{padding:0 12px 14px;} #bp-app .bp-copy-choice-grid,#bp-app .bp-copy-duration-grid{grid-template-columns:1fr;}\r\n      #bp-app .bp-copy-card-head{align-items:flex-start;flex-wrap:wrap;}\r\n    }\r\n\r\n\r\n\r\n    #bp-app .bp-button.is-copied,\r\n    #bp-app .bp-copy-copy.is-copied {\r\n      color: #042415 !important;\r\n      border-color: #33e894 !important;\r\n      background: linear-gradient(135deg, #33e894, #16d77f) !important;\r\n      box-shadow: 0 0 0 4px rgba(22, 215, 127, .16), 0 12px 28px rgba(22, 215, 127, .22) !important;\r\n    }\r\n\r\n\r\n    \/* =========================================================\r\n       OTIMIZA\u00c7\u00c3O DE DESEMPENHO \u2014 M\u00cdDIA SOB DEMANDA\r\n       ========================================================= *\/\r\n    #bp-app .bp-card {\r\n      content-visibility: auto;\r\n      contain-intrinsic-size: 280px 620px;\r\n      contain: layout paint style;\r\n    }\r\n\r\n    #bp-app .bp-hover-video {\r\n      background: #030a12;\r\n    }\r\n\r\n    @media (prefers-reduced-motion: reduce) {\r\n      #bp-app *,\r\n      #bp-app *::before,\r\n      #bp-app *::after {\r\n        scroll-behavior: auto !important;\r\n        animation-duration: .01ms !important;\r\n        animation-iteration-count: 1 !important;\r\n        transition-duration: .01ms !important;\r\n      }\r\n    }\r\n\r\n  \r\n\r\n    \/* =========================================================\r\n       AJUSTES SOLICITADOS \u2014 TOPO LIMPO E FLUXO DE IMAGEM\r\n       ========================================================= *\/\r\n    html, body {\r\n      border-top: 0 !important;\r\n      margin-top: 0 !important;\r\n      padding-top: 0 !important;\r\n    }\r\n\r\n    body > a[href*=\"comunidadedasias.com.br\"],\r\n    body a[href=\"https:\/\/comunidadedasias.com.br\"],\r\n    body a[href=\"https:\/\/comunidadedasias.com.br\/\"],\r\n    body .site-url,\r\n    body .custom-logo-link,\r\n    body .skip-link,\r\n    body .wp-block-site-title,\r\n    body .wp-block-site-logo,\r\n    body .wp-block-navigation,\r\n    body hr:first-of-type {\r\n      display: none !important;\r\n    }\r\n\r\n    #bp-app .bp-image-card-actions {\r\n      grid-template-columns: 1fr 1fr;\r\n    }\r\n\r\n    #bp-app .bp-image-card-actions .bp-button {\r\n      grid-column: auto !important;\r\n    }\r\n\r\n    #bp-app .bp-image-selected-button {\r\n      color: #03120c !important;\r\n      background: var(--bp-green) !important;\r\n      border-color: transparent !important;\r\n      box-shadow: 0 0 0 3px rgba(22, 215, 127, .13) !important;\r\n    }\r\n\r\n    #bp-app .bp-image-instructions-button:disabled {\r\n      opacity: .42;\r\n      cursor: not-allowed;\r\n      transform: none !important;\r\n    }\r\n\r\n    #bp-app .bp-image-instructions-button:not(:disabled) {\r\n      border-color: rgba(37,214,208,.42);\r\n      background: rgba(37,214,208,.08);\r\n    }\r\n\r\n\r\n    #bp-app .bp-video-card-actions {\r\n      grid-template-columns: 1fr 1fr;\r\n    }\r\n\r\n    #bp-app .bp-video-card-actions .bp-button {\r\n      grid-column: auto !important;\r\n    }\r\n\r\n    #bp-app .bp-video-selected-button {\r\n      color: #03120c !important;\r\n      background: var(--bp-green) !important;\r\n      border-color: transparent !important;\r\n      box-shadow: 0 0 0 3px rgba(22, 215, 127, .13) !important;\r\n    }\r\n\r\n    #bp-app .bp-video-instructions-button {\r\n      border-color: rgba(37,214,208,.42);\r\n      background: rgba(37,214,208,.08);\r\n    }\r\n\r\n  \r\n    #bp-app button.is-copied,\r\n    #bp-app .bp-button.is-copied,\r\n    #bp-app .bp-copy-copy.is-copied,\r\n    #bp-app .bp-influencer-copy.is-copied {\r\n      color: #042415 !important;\r\n      border-color: #33e894 !important;\r\n      background: linear-gradient(135deg, #33e894, #16d77f) !important;\r\n      box-shadow: 0 0 0 4px rgba(22, 215, 127, .16), 0 12px 28px rgba(22, 215, 127, .22) !important;\r\n    }\r\n\r\n  \r\n    \/* =========================================================\r\n       CORRE\u00c7\u00c3O DOS MENUS SELECT \u2014 FUNDO E TEXTO SEMPRE VIS\u00cdVEIS\r\n       Evita op\u00e7\u00f5es brancas\/invis\u00edveis ao reabrir os seletores.\r\n       ========================================================= *\/\r\n    #bp-app select {\r\n      color-scheme: dark;\r\n      background-color: #081726 !important;\r\n      color: #f3f8ff !important;\r\n    }\r\n\r\n    #bp-app select option,\r\n    #bp-app select optgroup {\r\n      background-color: #081726 !important;\r\n      color: #f3f8ff !important;\r\n    }\r\n\r\n    #bp-app select option:checked {\r\n      background: #1457b8 !important;\r\n      color: #ffffff !important;\r\n    }\r\n\r\n    #bp-app select option:disabled {\r\n      color: #71849a !important;\r\n      background-color: #081726 !important;\r\n    }\r\n\r\n    #bp-app .bp-step-select,\r\n    #bp-app .bp-select,\r\n    #bp-app .bp-influencer-field select {\r\n      color-scheme: dark;\r\n    }\r\n\r\n    #bp-app .bp-step-select option,\r\n    #bp-app .bp-select option,\r\n    #bp-app .bp-influencer-field select option {\r\n      background: #081726 !important;\r\n      color: #f3f8ff !important;\r\n    }\r\n\r\n  \r\n    \/* =========================================================\r\n       AUTENTICA\u00c7\u00c3O \u2014 CAMADA DE ACESSO ANTES DA APLICA\u00c7\u00c3O\r\n       IMPORTANTE: ocultar o conte\u00fado no navegador \u00e9 apenas prote\u00e7\u00e3o\r\n       visual. Toda autoriza\u00e7\u00e3o real deve ocorrer no Make\/backend.\r\n       ========================================================= *\/\r\n\r\n    [hidden] {\r\n      display: none !important;\r\n    }\r\n\r\n    #bp-auth-screen,\r\n    #bp-auth-screen * {\r\n      box-sizing: border-box;\r\n    }\r\n\r\n    #bp-auth-screen {\r\n      --auth-bg: #06111d;\r\n      --auth-card: rgba(10, 25, 43, .94);\r\n      --auth-line: rgba(148, 170, 195, .20);\r\n      --auth-text: #f3f8ff;\r\n      --auth-muted: #9eb0c5;\r\n      --auth-cyan: #25d6d0;\r\n      --auth-blue: #45a7ff;\r\n      --auth-danger: #ff6b6b;\r\n      --auth-success: #16d77f;\r\n\r\n      position: fixed;\r\n      inset: 0;\r\n      z-index: 2147483000;\r\n      min-height: 100dvh;\r\n      overflow-y: auto;\r\n      display: grid;\r\n      place-items: center;\r\n      padding: 24px;\r\n      color: var(--auth-text);\r\n      background:\r\n        radial-gradient(circle at 82% 5%, rgba(37, 214, 208, .16), transparent 34%),\r\n        radial-gradient(circle at 12% 15%, rgba(168, 85, 247, .14), transparent 30%),\r\n        var(--auth-bg);\r\n      font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Arial, sans-serif;\r\n    }\r\n\r\n    #bp-auth-screen.is-hidden {\r\n      display: none !important;\r\n    }\r\n\r\n    \/* CORRE\u00c7\u00c3O WORDPRESS\/ELEMENTOR: mant\u00e9m o login preso \u00e0 janela inteira.\r\n       Alguns cont\u00eaineres do Elementor usam transform\/overflow e fazem um\r\n       elemento fixed ficar cortado. Estas regras neutralizam esse efeito. *\/\r\n    body.bp-auth-active {\r\n      overflow: hidden !important;\r\n    }\r\n\r\n    #bp-auth-screen {\r\n      top: 0 !important;\r\n      right: 0 !important;\r\n      bottom: 0 !important;\r\n      left: 0 !important;\r\n      width: 100vw !important;\r\n      max-width: none !important;\r\n      height: 100vh !important;\r\n      height: 100dvh !important;\r\n      margin: 0 !important;\r\n      transform: none !important;\r\n      contain: none !important;\r\n      isolation: isolate;\r\n    }\r\n\r\n    #bp-auth-screen .bp-auth-card {\r\n      width: min(460px, 100%);\r\n      border: 1px solid var(--auth-line);\r\n      border-radius: 28px;\r\n      padding: clamp(24px, 5vw, 38px);\r\n      background: var(--auth-card);\r\n      box-shadow: 0 30px 100px rgba(0, 0, 0, .52);\r\n      backdrop-filter: blur(18px);\r\n      -webkit-backdrop-filter: blur(18px);\r\n    }\r\n\r\n    #bp-auth-screen .bp-auth-brand {\r\n      display: flex;\r\n      align-items: center;\r\n      gap: 14px;\r\n      margin-bottom: 28px;\r\n    }\r\n\r\n    #bp-auth-screen .bp-auth-logo {\r\n      width: 56px;\r\n      height: 56px;\r\n      flex: 0 0 56px;\r\n      border-radius: 18px;\r\n      display: grid;\r\n      place-items: center;\r\n      color: #03101b;\r\n      font-size: 21px;\r\n      font-weight: 950;\r\n      background: linear-gradient(135deg, var(--auth-cyan), var(--auth-blue));\r\n      box-shadow: 0 12px 34px rgba(37, 214, 208, .24);\r\n    }\r\n\r\n    #bp-auth-screen .bp-auth-brand strong {\r\n      display: block;\r\n      font-size: 18px;\r\n      letter-spacing: -.02em;\r\n    }\r\n\r\n    #bp-auth-screen .bp-auth-brand span {\r\n      display: block;\r\n      margin-top: 3px;\r\n      color: var(--auth-muted);\r\n      font-size: 12px;\r\n    }\r\n\r\n    #bp-auth-screen .bp-auth-title {\r\n      margin: 0;\r\n      font-size: clamp(30px, 7vw, 42px);\r\n      line-height: 1.05;\r\n      letter-spacing: -.045em;\r\n    }\r\n\r\n    #bp-auth-screen .bp-auth-description {\r\n      margin: 13px 0 25px;\r\n      color: var(--auth-muted);\r\n      line-height: 1.6;\r\n      font-size: 14px;\r\n    }\r\n\r\n    #bp-auth-screen .bp-auth-field {\r\n      display: block;\r\n      margin-top: 16px;\r\n    }\r\n\r\n    #bp-auth-screen .bp-auth-label {\r\n      display: block;\r\n      margin-bottom: 7px;\r\n      color: #dce9f7;\r\n      font-size: 12px;\r\n      font-weight: 850;\r\n      letter-spacing: .05em;\r\n      text-transform: uppercase;\r\n    }\r\n\r\n    #bp-auth-screen .bp-auth-input-wrap {\r\n      position: relative;\r\n    }\r\n\r\n    #bp-auth-screen .bp-auth-input {\r\n      width: 100%;\r\n      min-height: 54px;\r\n      border: 1px solid rgba(148, 170, 195, .24);\r\n      border-radius: 15px;\r\n      padding: 0 15px;\r\n      color: var(--auth-text);\r\n      background: #081726;\r\n      outline: none;\r\n      transition: .2s ease;\r\n    }\r\n\r\n    #bp-auth-screen .bp-auth-input.has-toggle {\r\n      padding-right: 58px;\r\n    }\r\n\r\n    #bp-auth-screen .bp-auth-input:focus {\r\n      border-color: var(--auth-cyan);\r\n      box-shadow: 0 0 0 4px rgba(37, 214, 208, .09);\r\n    }\r\n\r\n    #bp-auth-screen .bp-auth-input::placeholder {\r\n      color: #71849a;\r\n    }\r\n\r\n    #bp-auth-screen .bp-auth-password-toggle {\r\n      position: absolute;\r\n      top: 50%;\r\n      right: 7px;\r\n      transform: translateY(-50%);\r\n      min-width: 44px;\r\n      min-height: 40px;\r\n      border: 0;\r\n      border-radius: 11px;\r\n      color: var(--auth-muted);\r\n      background: rgba(255,255,255,.05);\r\n      cursor: pointer;\r\n      font-weight: 850;\r\n    }\r\n\r\n    #bp-auth-screen .bp-auth-options {\r\n      margin: 18px 0;\r\n      display: flex;\r\n      align-items: center;\r\n      justify-content: space-between;\r\n      gap: 14px;\r\n    }\r\n\r\n    #bp-auth-screen .bp-auth-remember {\r\n      display: inline-flex;\r\n      align-items: center;\r\n      gap: 9px;\r\n      color: var(--auth-muted);\r\n      font-size: 13px;\r\n      cursor: pointer;\r\n      user-select: none;\r\n    }\r\n\r\n    #bp-auth-screen .bp-auth-remember input {\r\n      width: 17px;\r\n      height: 17px;\r\n      accent-color: var(--auth-cyan);\r\n    }\r\n\r\n    #bp-auth-screen .bp-auth-submit {\r\n      width: 100%;\r\n      min-height: 54px;\r\n      border: 0;\r\n      border-radius: 15px;\r\n      color: #03111d;\r\n      background: linear-gradient(135deg, var(--auth-cyan), var(--auth-blue));\r\n      font-weight: 950;\r\n      cursor: pointer;\r\n      transition: .2s ease;\r\n      box-shadow: 0 14px 34px rgba(37, 214, 208, .18);\r\n    }\r\n\r\n    #bp-auth-screen .bp-auth-submit:hover:not(:disabled) {\r\n      transform: translateY(-1px);\r\n      box-shadow: 0 18px 40px rgba(37, 214, 208, .25);\r\n    }\r\n\r\n    #bp-auth-screen .bp-auth-submit:disabled {\r\n      opacity: .62;\r\n      cursor: wait;\r\n    }\r\n\r\n    #bp-auth-screen .bp-auth-submit-content {\r\n      display: inline-flex;\r\n      align-items: center;\r\n      justify-content: center;\r\n      gap: 10px;\r\n    }\r\n\r\n    #bp-auth-screen .bp-auth-spinner {\r\n      width: 18px;\r\n      height: 18px;\r\n      display: none;\r\n      border: 2px solid rgba(3, 17, 29, .28);\r\n      border-top-color: #03111d;\r\n      border-radius: 50%;\r\n      animation: bpAuthSpin .75s linear infinite;\r\n    }\r\n\r\n    #bp-auth-screen.is-loading .bp-auth-spinner {\r\n      display: inline-block;\r\n    }\r\n\r\n    @keyframes bpAuthSpin {\r\n      to { transform: rotate(360deg); }\r\n    }\r\n\r\n    #bp-auth-screen .bp-auth-message {\r\n      min-height: 20px;\r\n      margin-top: 15px;\r\n      border-radius: 12px;\r\n      padding: 0;\r\n      font-size: 13px;\r\n      line-height: 1.45;\r\n    }\r\n\r\n    #bp-auth-screen .bp-auth-message:not(:empty) {\r\n      padding: 11px 12px;\r\n      border: 1px solid var(--auth-line);\r\n      background: rgba(255,255,255,.035);\r\n    }\r\n\r\n    #bp-auth-screen .bp-auth-message.is-error {\r\n      color: #ffd4d4;\r\n      border-color: rgba(255, 107, 107, .30);\r\n      background: rgba(255, 107, 107, .08);\r\n    }\r\n\r\n    #bp-auth-screen .bp-auth-message.is-success {\r\n      color: #caffe2;\r\n      border-color: rgba(22, 215, 127, .30);\r\n      background: rgba(22, 215, 127, .08);\r\n    }\r\n\r\n    #bp-auth-screen .bp-auth-message.is-info {\r\n      color: #d4eaff;\r\n      border-color: rgba(69, 167, 255, .28);\r\n      background: rgba(69, 167, 255, .07);\r\n    }\r\n\r\n    #bp-auth-screen .bp-auth-exclusive {\r\n      margin: 22px 0 0;\r\n      padding-top: 18px;\r\n      border-top: 1px solid var(--auth-line);\r\n      color: var(--auth-muted);\r\n      font-size: 12px;\r\n      text-align: center;\r\n      line-height: 1.5;\r\n    }\r\n\r\n    #bp-app .bp-topbar-actions {\r\n      display: flex;\r\n      align-items: center;\r\n      justify-content: flex-end;\r\n      gap: 10px;\r\n      flex-wrap: wrap;\r\n    }\r\n\r\n    #bp-app .bp-auth-user {\r\n      display: none;\r\n      color: var(--bp-muted);\r\n      font-size: 12px;\r\n      text-align: right;\r\n      max-width: 220px;\r\n    }\r\n\r\n    #bp-app .bp-auth-user strong {\r\n      display: block;\r\n      color: var(--bp-text);\r\n      font-size: 13px;\r\n      overflow: hidden;\r\n      text-overflow: ellipsis;\r\n      white-space: nowrap;\r\n    }\r\n\r\n    #bp-app .bp-logout-button {\r\n      border: 1px solid rgba(255,107,107,.32);\r\n      background: rgba(255,107,107,.07);\r\n      color: #ffd9d9;\r\n      border-radius: 14px;\r\n      padding: 11px 15px;\r\n      transition: .2s ease;\r\n      white-space: nowrap;\r\n    }\r\n\r\n    #bp-app .bp-logout-button:hover {\r\n      border-color: rgba(255,107,107,.58);\r\n      background: rgba(255,107,107,.13);\r\n      transform: translateY(-1px);\r\n    }\r\n\r\n    @media (max-width: 640px) {\r\n      #bp-auth-screen {\r\n        padding: 14px;\r\n        align-items: start;\r\n      }\r\n\r\n      #bp-auth-screen .bp-auth-card {\r\n        margin-top: 24px;\r\n        border-radius: 22px;\r\n      }\r\n\r\n      #bp-app .bp-auth-user {\r\n        display: none !important;\r\n      }\r\n\r\n      #bp-app .bp-topbar-actions {\r\n        gap: 7px;\r\n      }\r\n\r\n      #bp-app .bp-logout-button,\r\n      #bp-app .bp-reset-button {\r\n        padding: 9px 10px;\r\n        font-size: 12px;\r\n      }\r\n    }\r\n\r\n  \r\n\r\n    \/* =========================================================\r\n       CORRE\u00c7\u00c3O DEFINITIVA DO MODAL NO WORDPRESS \/ ELEMENTOR\r\n       O modal \u00e9 movido para o body para n\u00e3o ser cortado por\r\n       transform, overflow ou contain dos cont\u00eaineres do Elementor.\r\n       ========================================================= *\/\r\n    body.bp-modal-open {\r\n      overflow: hidden !important;\r\n    }\r\n\r\n    body > #bpModalBackdrop {\r\n      --bp-bg: #06111d;\r\n      --bp-bg-soft: #091827;\r\n      --bp-card: #0d1d31;\r\n      --bp-card-2: #10243b;\r\n      --bp-line: rgba(148, 170, 195, .18);\r\n      --bp-text: #f3f8ff;\r\n      --bp-muted: #9eb0c5;\r\n      --bp-cyan: #25d6d0;\r\n      --bp-blue: #45a7ff;\r\n      --bp-purple: #a855f7;\r\n      --bp-pink: #ff3f92;\r\n      --bp-green: #16d77f;\r\n      --bp-danger: #ff6b6b;\r\n      box-sizing: border-box;\r\n      position: fixed !important;\r\n      inset: 0 !important;\r\n      width: 100vw !important;\r\n      height: 100vh !important;\r\n      height: 100dvh !important;\r\n      margin: 0 !important;\r\n      padding: 18px !important;\r\n      z-index: 2147483001 !important;\r\n      display: none;\r\n      align-items: center;\r\n      justify-content: center;\r\n      overflow: hidden !important;\r\n      color: var(--bp-text);\r\n      background: rgba(1,7,13,.82);\r\n      backdrop-filter: blur(12px);\r\n      -webkit-backdrop-filter: blur(12px);\r\n      font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Arial, sans-serif;\r\n      line-height: 1.5;\r\n      transform: none !important;\r\n      contain: none !important;\r\n      isolation: isolate;\r\n    }\r\n\r\n    body > #bpModalBackdrop.is-open {\r\n      display: flex !important;\r\n      visibility: visible !important;\r\n      opacity: 1 !important;\r\n    }\r\n\r\n    body > #bpModalBackdrop,\r\n    body > #bpModalBackdrop * { box-sizing: border-box; }\r\n\r\n    body > #bpModalBackdrop .bp-modal {\r\n      display: block !important;\r\n      visibility: visible !important;\r\n      opacity: 1 !important;\r\n      position: relative !important;\r\n      width: min(920px, calc(100vw - 36px)) !important;\r\n      max-width: 920px !important;\r\n      max-height: calc(100dvh - 36px) !important;\r\n      margin: 0 !important;\r\n      overflow: auto !important;\r\n      border: 1px solid rgba(148,170,195,.22);\r\n      border-radius: 26px;\r\n      background: #0a1929;\r\n      box-shadow: 0 28px 100px rgba(0,0,0,.62);\r\n      transform: none !important;\r\n      contain: none !important;\r\n    }\r\n\r\n    body > #bpModalBackdrop .bp-modal-head {\r\n      position: sticky;\r\n      top: 0;\r\n      z-index: 5;\r\n      display: flex;\r\n      align-items: flex-start;\r\n      justify-content: space-between;\r\n      gap: 16px;\r\n      padding: 20px 22px;\r\n      background: rgba(10,25,41,.97);\r\n      border-bottom: 1px solid var(--bp-line);\r\n      backdrop-filter: blur(14px);\r\n      -webkit-backdrop-filter: blur(14px);\r\n    }\r\n\r\n    body > #bpModalBackdrop .bp-modal-title { margin: 0; font-size: 24px; line-height: 1.2; color: var(--bp-text); }\r\n    body > #bpModalBackdrop .bp-modal-subtitle { margin: 5px 0 0; color: var(--bp-muted); font-size: 14px; }\r\n    body > #bpModalBackdrop .bp-modal-close {\r\n      width: 42px; height: 42px; flex: 0 0 42px; border: 1px solid var(--bp-line); border-radius: 50%;\r\n      background: rgba(255,255,255,.04); color: var(--bp-text); font-size: 22px; cursor: pointer;\r\n    }\r\n    body > #bpModalBackdrop .bp-modal-body { padding: 22px; }\r\n\r\n    body > #bpModalBackdrop .bp-instruction-box {\r\n      border: 1px solid rgba(69,167,255,.24); background: rgba(69,167,255,.06);\r\n      border-radius: 18px; padding: 18px; color: var(--bp-text);\r\n    }\r\n    body > #bpModalBackdrop .bp-instruction-box h4 { margin: 0 0 10px; font-size: 18px; }\r\n    body > #bpModalBackdrop .bp-instruction-box p { margin: 0 0 10px; color: var(--bp-muted); }\r\n    body > #bpModalBackdrop .bp-instruction-list { margin: 0; padding-left: 22px; color: #d9e7f6; }\r\n    body > #bpModalBackdrop .bp-instruction-list li + li { margin-top: 9px; }\r\n    body > #bpModalBackdrop .bp-reference-list { display: grid; gap: 9px; margin: 14px 0 0; }\r\n    body > #bpModalBackdrop .bp-reference-item {\r\n      display: flex; gap: 10px; align-items: flex-start; border-radius: 13px; padding: 11px 12px;\r\n      background: rgba(255,255,255,.045); color: #d9e7f6;\r\n    }\r\n    body > #bpModalBackdrop .bp-reference-number {\r\n      width: 25px; height: 25px; flex: 0 0 25px; display: grid; place-items: center; border-radius: 50%;\r\n      background: var(--bp-cyan); color: #03101b; font-weight: 900; font-size: 12px;\r\n    }\r\n\r\n    body > #bpModalBackdrop .bp-compact-prompt-wrap {\r\n      margin-top: 14px; border: 1px solid rgba(168,85,247,.28); border-radius: 18px;\r\n      background: rgba(168,85,247,.055); overflow: hidden;\r\n    }\r\n    body > #bpModalBackdrop .bp-compact-prompt-head {\r\n      display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 13px 16px;\r\n      border-bottom: 1px solid rgba(168,85,247,.18);\r\n    }\r\n    body > #bpModalBackdrop .bp-compact-prompt-head strong { font-size: 16px; }\r\n    body > #bpModalBackdrop .bp-compact-prompt-head span { color: var(--bp-muted); font-size: 12px; white-space: nowrap; }\r\n    body > #bpModalBackdrop .bp-compact-prompt,\r\n    body > #bpModalBackdrop .bp-prompt-box {\r\n      max-height: 300px; overflow: auto; padding: 14px 16px; color: #dce9f7; background: #06121f;\r\n      font-size: 13px; line-height: 1.55; white-space: pre-wrap; word-break: break-word;\r\n      scrollbar-width: thin; scrollbar-color: rgba(37,214,208,.65) rgba(255,255,255,.05);\r\n    }\r\n\r\n    body > #bpModalBackdrop .bp-modal-actions { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 16px; }\r\n    body > #bpModalBackdrop .bp-button {\r\n      min-height: 44px; border: 0; border-radius: 13px; padding: 10px 18px; font-weight: 820;\r\n      transition: .2s ease; cursor: pointer; font: inherit;\r\n    }\r\n    body > #bpModalBackdrop .bp-button-primary { color: #04131e; background: linear-gradient(135deg,var(--bp-cyan),var(--bp-blue)); }\r\n    body > #bpModalBackdrop .bp-button-secondary { color: var(--bp-text); background: rgba(255,255,255,.06); border: 1px solid rgba(255,255,255,.10); }\r\n    body > #bpModalBackdrop .bp-speech-button { color: #f3f8ff; background: rgba(168,85,247,.13); border: 1px solid rgba(168,85,247,.36); }\r\n    body > #bpModalBackdrop .bp-speech-button.has-copy { color: #03120c; background: var(--bp-green); border-color: transparent; }\r\n\r\n    body > #bpModalBackdrop .bp-speech-field-wrap {\r\n      border: 1px solid rgba(168,85,247,.28); border-radius: 18px; padding: 16px; background: rgba(168,85,247,.055);\r\n    }\r\n    body > #bpModalBackdrop .bp-speech-field-label { display:flex; align-items:center; justify-content:space-between; gap:12px; margin-bottom:10px; }\r\n    body > #bpModalBackdrop .bp-speech-counter { color: var(--bp-muted); font-size: 12px; font-weight: 800; }\r\n    body > #bpModalBackdrop .bp-speech-textarea {\r\n      width:100%; min-height:122px; resize:vertical; border:1px solid rgba(148,170,195,.22); border-radius:14px;\r\n      padding:13px 14px; color:var(--bp-text); background:#06121f; outline:none; line-height:1.5; font:inherit;\r\n    }\r\n    body > #bpModalBackdrop .bp-speech-preview {\r\n      margin-top:14px; border:1px solid rgba(37,214,208,.20); border-radius:14px; padding:13px 14px;\r\n      color:#dce9f7; background:rgba(37,214,208,.055); font-size:13px; white-space:pre-wrap; word-break:break-word;\r\n    }\r\n    body > #bpModalBackdrop .bp-speech-help { margin:9px 0 0; color:var(--bp-muted); font-size:12px; }\r\n    body > #bpModalBackdrop .bp-speech-empty-warning { display:none; margin-top:10px; color:#ffd4d4; border:1px solid rgba(255,107,107,.28); border-radius:12px; padding:10px 12px; background:rgba(255,107,107,.07); font-size:12px; }\r\n    body > #bpModalBackdrop .bp-speech-empty-warning.is-visible { display:block; }\r\n\r\n    body > #bpModalBackdrop button.is-copied,\r\n    body > #bpModalBackdrop .bp-button.is-copied {\r\n      color:#042415 !important; border-color:#33e894 !important;\r\n      background:linear-gradient(135deg,#33e894,#16d77f) !important;\r\n      box-shadow:0 0 0 4px rgba(22,215,127,.16),0 12px 28px rgba(22,215,127,.22) !important;\r\n    }\r\n\r\n    @media (max-width: 640px) {\r\n      body > #bpModalBackdrop { padding: 10px !important; align-items: center; }\r\n      body > #bpModalBackdrop .bp-modal { width: calc(100vw - 20px) !important; max-height: calc(100dvh - 20px) !important; border-radius: 20px; }\r\n      body > #bpModalBackdrop .bp-modal-body,\r\n      body > #bpModalBackdrop .bp-modal-head { padding: 16px; }\r\n      body > #bpModalBackdrop .bp-compact-prompt { max-height: 220px; }\r\n      body > #bpModalBackdrop .bp-compact-prompt-head { align-items:flex-start; flex-direction:column; gap:3px; }\r\n      body > #bpModalBackdrop .bp-compact-prompt-head span { white-space: normal; }\r\n      body > #bpModalBackdrop .bp-modal-actions { display:grid; grid-template-columns:1fr; }\r\n      body > #bpModalBackdrop .bp-modal-actions .bp-button { width:100%; }\r\n    }\r\n\r\n  <\/style>\r\n<\/head>\r\n\r\n<body>\r\n\r\n<!-- =========================================================\r\n     TELA DE AUTENTICA\u00c7\u00c3O\r\n     A aplica\u00e7\u00e3o protegida permanece oculta at\u00e9 uma sess\u00e3o v\u00e1lida.\r\n     ========================================================= -->\r\n<section id=\"bp-auth-screen\" aria-label=\"Acesso \u00e0 Comunidade\">\r\n  <div class=\"bp-auth-card\">\r\n    <div class=\"bp-auth-brand\">\r\n      <div class=\"bp-auth-logo\" aria-hidden=\"true\">IA<\/div>\r\n      <div>\r\n        <strong>Comunidade dos Prompts<\/strong>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <h1 class=\"bp-auth-title\">Acesso \u00e0 Comunidade dos Prompts<\/h1>\r\n    <p class=\"bp-auth-description\">\r\n      Entre com seu e-mail e senha.\r\n    <\/p>\r\n\r\n    <form id=\"bp-auth-form\" novalidate>\r\n      <label class=\"bp-auth-field\" for=\"bp-auth-email\">\r\n        <span class=\"bp-auth-label\">E-mail<\/span>\r\n        <input\r\n          class=\"bp-auth-input\"\r\n          id=\"bp-auth-email\"\r\n          name=\"email\"\r\n          type=\"email\"\r\n          inputmode=\"email\"\r\n          autocomplete=\"username\"\r\n          maxlength=\"254\"\r\n          placeholder=\"seuemail@exemplo.com\"\r\n          required\r\n        \/>\r\n      <\/label>\r\n\r\n      <label class=\"bp-auth-field\" for=\"bp-auth-password\">\r\n        <span class=\"bp-auth-label\">Senha<\/span>\r\n        <span class=\"bp-auth-input-wrap\">\r\n          <input\r\n            class=\"bp-auth-input has-toggle\"\r\n            id=\"bp-auth-password\"\r\n            name=\"password\"\r\n            type=\"password\"\r\n            autocomplete=\"current-password\"\r\n            maxlength=\"200\"\r\n            placeholder=\"Digite sua senha\"\r\n            required\r\n          \/>\r\n          <button\r\n            class=\"bp-auth-password-toggle\"\r\n            id=\"bp-auth-password-toggle\"\r\n            type=\"button\"\r\n            aria-label=\"Mostrar senha\"\r\n            aria-pressed=\"false\"\r\n          >Ver<\/button>\r\n        <\/span>\r\n      <\/label>\r\n\r\n      <div class=\"bp-auth-options\">\r\n        <label class=\"bp-auth-remember\">\r\n          <input id=\"bp-auth-remember\" type=\"checkbox\" \/>\r\n          <span>Manter conectado<\/span>\r\n        <\/label>\r\n      <\/div>\r\n\r\n      <button class=\"bp-auth-submit\" id=\"bp-auth-submit\" type=\"submit\">\r\n        <span class=\"bp-auth-submit-content\">\r\n          <span class=\"bp-auth-spinner\" aria-hidden=\"true\"><\/span>\r\n          <span id=\"bp-auth-submit-label\">Entrar<\/span>\r\n        <\/span>\r\n      <\/button>\r\n\r\n      <div\r\n        class=\"bp-auth-message\"\r\n        id=\"bp-auth-message\"\r\n        role=\"status\"\r\n        aria-live=\"polite\"\r\n      ><\/div>\r\n    <\/form>\r\n\r\n    <p class=\"bp-auth-exclusive\">\r\n      Acesso exclusivo para membros autorizados. Suas credenciais s\u00e3o\r\n      validadas pelo sistema antes da libera\u00e7\u00e3o da aplica\u00e7\u00e3o.\r\n    <\/p>\r\n  <\/div>\r\n<\/section>\r\n\r\n<div id=\"bp-protected-application\" hidden>\r\n<div id=\"bp-app\">\r\n  <header class=\"bp-topbar\">\r\n    <div class=\"bp-shell bp-topbar-inner\">\r\n      <div class=\"bp-brand\">\r\n        <div class=\"bp-logo\" aria-hidden=\"true\">IA<\/div>\r\n        <div class=\"bp-brand-text\">\r\n          <p class=\"bp-brand-name\">Comunidade dos Prompts<\/p>\r\n          <p class=\"bp-brand-subtitle\">Biblioteca de imagens e v\u00eddeos para TikTok Shop e Shopee V\u00eddeos<\/p>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <div class=\"bp-topbar-actions\">\r\n        <div class=\"bp-auth-user\" id=\"bp-auth-user\" aria-live=\"polite\">\r\n          <strong id=\"bp-auth-user-name\">Membro<\/strong>\r\n          <span id=\"bp-auth-user-expiration\"><\/span>\r\n        <\/div>\r\n\r\n        <button class=\"bp-reset-button\" id=\"bpResetButton\" type=\"button\">\r\n          Limpar e recome\u00e7ar\r\n        <\/button>\r\n\r\n        <button class=\"bp-logout-button\" id=\"bp-logout-button\" type=\"button\">\r\n          Sair\r\n        <\/button>\r\n      <\/div>\r\n    <\/div>\r\n  <\/header>\r\n\r\n  <main>\r\n    <section class=\"bp-hero\">\r\n      <div class=\"bp-shell\">\r\n        <p class=\"bp-kicker\">Biblioteca exclusiva<\/p>\r\n        <h1 class=\"bp-title\">Comunidade dos Prompts<\/h1>\r\n        <p class=\"bp-lead\">\r\n          Escolha uma categoria, selecione o formato, encontre uma imagem de refer\u00eancia\r\n          e copie o prompt de v\u00eddeo compat\u00edvel com o resultado escolhido.\r\n        <\/p>\r\n\r\n\r\n\r\n        <!-- GERADOR DE INFLUENCIADORA: compacto e recolhido por padr\u00e3o -->\r\n        <section class=\"bp-influencer-launcher\" id=\"bpInfluencerLauncher\" aria-label=\"Gerador de influenciadora realista\">\r\n          <button class=\"bp-influencer-summary\" id=\"bpInfluencerToggle\" type=\"button\" aria-expanded=\"false\">\r\n            <span class=\"bp-influencer-summary-main\">\r\n              <span class=\"bp-influencer-icon\" aria-hidden=\"true\">\u2726<\/span>\r\n              <span>\r\n                <strong>Crie sua Influenciadora Realista<\/strong>\r\n                <small>Personalize apar\u00eancia, cabelo, corpo, maquiagem, enquadramento e ambiente.<\/small>\r\n              <\/span>\r\n            <\/span>\r\n            <span class=\"bp-influencer-open-label\" id=\"bpInfluencerOpenLabel\">Abrir gerador \u2193<\/span>\r\n          <\/button>\r\n\r\n          <div class=\"bp-influencer-panel\" id=\"bpInfluencerPanel\">\r\n            <div class=\"bp-influencer-layout\">\r\n              <div class=\"bp-influencer-form-card\">\r\n                <div class=\"bp-influencer-card-head\">\r\n                  <h3>Configura\u00e7\u00f5es da influenciadora<\/h3>\r\n                  <button class=\"bp-influencer-clear\" id=\"bpInfluencerClear\" type=\"button\">\u21bb Limpar sele\u00e7\u00f5es<\/button>\r\n                <\/div>\r\n\r\n                <div class=\"bp-influencer-grid\">\r\n                  <div class=\"bp-influencer-field\">\r\n                    <label for=\"bpInfGender\">G\u00eanero<\/label>\r\n                    <select id=\"bpInfGender\"><option value=\"\" selected>Selecione<\/option><option>Feminino<\/option><option>Masculino<\/option><\/select>\r\n                  <\/div>\r\n                  <div class=\"bp-influencer-field\">\r\n                    <label for=\"bpInfAge\">Faixa et\u00e1ria<\/label>\r\n                    <select id=\"bpInfAge\"><option value=\"\" selected>Selecione<\/option><option>18\u201320 anos<\/option><option>20\u201325 anos<\/option><option>25\u201335 anos<\/option><option>35\u201345 anos<\/option><option>45\u201355 anos<\/option><option>55\u201365 anos<\/option><option>65+ anos<\/option><\/select>\r\n                  <\/div>\r\n                  <div class=\"bp-influencer-field\">\r\n                    <label for=\"bpInfNationality\">Arqu\u00e9tipo facial<\/label>\r\n                    <select id=\"bpInfNationality\"><option value=\"\" selected>Selecione<\/option><option>Brasileiro<\/option><option>Latino<\/option><option>Europeu<\/option><option>Mediterr\u00e2neo<\/option><option>Norte-Americano<\/option><option>Africano<\/option><option>\u00c1rabe<\/option><option>Indiano<\/option><option>Chin\u00eas<\/option><option>Japon\u00eas<\/option><option>Coreano<\/option><option>Sudeste Asi\u00e1tico<\/option><\/select>\r\n                  <\/div>\r\n                  <div class=\"bp-influencer-field\">\r\n                    <label for=\"bpInfSkin\">Tom de pele<\/label>\r\n                    <select id=\"bpInfSkin\"><option value=\"\" selected>Selecione<\/option><option>Muito clara (porcelana)<\/option><option>Clara<\/option><option>Clara amorenada<\/option><option>Albina<\/option><option>Morena clara (oliva)<\/option><option>Morena (caramelo)<\/option><option>Morena escura<\/option><option>Negra clara<\/option><option>Negra<\/option><option>Negra profunda (\u00e9bano)<\/option><\/select>\r\n                  <\/div>\r\n                  <div class=\"bp-influencer-field\">\r\n                    <label for=\"bpInfHairColor\">Cor do cabelo<\/label>\r\n                    <select id=\"bpInfHairColor\"><option value=\"\" selected>Selecione<\/option><option>Preto<\/option><option>Castanho escuro<\/option><option>Castanho<\/option><option>Castanho claro<\/option><option>Loiro escuro<\/option><option>Loiro<\/option><option>Loiro platinado<\/option><option>Ruivo<\/option><option>Ruivo acobreado<\/option><option>Branco<\/option><option>Cinza\/Prateado<\/option><\/select>\r\n                  <\/div>\r\n                  <div class=\"bp-influencer-field\">\r\n                    <label for=\"bpInfHairStyle\">Estilo do cabelo<\/label>\r\n                    <select id=\"bpInfHairStyle\"><option value=\"\" selected>Selecione<\/option><option>Liso<\/option><option>Ondulado<\/option><option>Beach Waves<\/option><option>Cacheado<\/option><option>Cacheado volumoso<\/option><option>Crespo<\/option><option>Black Power<\/option><option>Box Braids<\/option><option>Tran\u00e7as<\/option><option>Coque<\/option><option>Rabo de Cavalo<\/option><option>Semi preso<\/option><\/select>\r\n                  <\/div>\r\n                  <div class=\"bp-influencer-field\">\r\n                    <label for=\"bpInfHairLength\">Comprimento do cabelo<\/label>\r\n                    <select id=\"bpInfHairLength\"><option value=\"\" selected>Selecione<\/option><option>Curto<\/option><option>M\u00e9dio<\/option><option>Longo<\/option><\/select>\r\n                  <\/div>\r\n                  <div class=\"bp-influencer-field\">\r\n                    <label for=\"bpInfEyes\">Cor dos olhos<\/label>\r\n                    <select id=\"bpInfEyes\"><option value=\"\" selected>Selecione<\/option><option>Castanho escuro<\/option><option>Castanho<\/option><option>Castanho claro<\/option><option>Mel\/Avel\u00e3<\/option><option>\u00c2mbar<\/option><option>Verde<\/option><option>Azul<\/option><option>Cinza<\/option><option>Preto<\/option><\/select>\r\n                  <\/div>\r\n                  <div class=\"bp-influencer-field\">\r\n                    <label for=\"bpInfBody\">Estilo do corpo<\/label>\r\n                    <select id=\"bpInfBody\"><option value=\"\" selected>Selecione<\/option><option>Magro<\/option><option>M\u00e9dio<\/option><option>Fitness<\/option><option>Atl\u00e9tico<\/option><option>Curvil\u00edneo<\/option><option>Plus Size<\/option><\/select>\r\n                  <\/div>\r\n                  <div class=\"bp-influencer-field\">\r\n                    <label for=\"bpInfSize\">Manequim Brasil<\/label>\r\n                    <select id=\"bpInfSize\"><option value=\"\" selected>Selecione<\/option><option>34<\/option><option>36<\/option><option>38<\/option><option>40<\/option><option>42<\/option><option>44<\/option><option>46<\/option><option>48<\/option><option>50<\/option><option>52<\/option><option>54<\/option><option>56<\/option><\/select>\r\n                  <\/div>\r\n                  <div class=\"bp-influencer-field\">\r\n                    <label for=\"bpInfMakeup\">Maquiagem<\/label>\r\n                    <select id=\"bpInfMakeup\"><option value=\"\" selected>Selecione<\/option><option>Natural<\/option><option>Sem maquiagem<\/option><option>Leve e sofisticada<\/option><option>Glamourosa<\/option><option>Noiva<\/option><option>Editorial<\/option><option>Luxo<\/option><option>Coreana<\/option><option>Clean Girl<\/option><option>Passarela<\/option><option>Noturna<\/option><option>Corporativa<\/option><option>Praia<\/option><option>Personalizado<\/option><\/select>\r\n                  <\/div>\r\n                  <div class=\"bp-influencer-field\">\r\n                    <label for=\"bpInfFraming\">Enquadramento<\/label>\r\n                    <select id=\"bpInfFraming\"><option value=\"\" selected>Selecione<\/option><option>Close-Up (Rosto)<\/option><option>Meio-Corpo<\/option><option>Corpo Inteiro<\/option><\/select>\r\n                  <\/div>\r\n                  <div class=\"bp-influencer-field bp-influencer-field-full\">\r\n                    <label for=\"bpInfEnvironment\">Ambiente<\/label>\r\n                    <select id=\"bpInfEnvironment\"><option value=\"\" selected>Selecione<\/option><option>Est\u00fadio Branco<\/option><option>Est\u00fadio Cinza<\/option><option>Est\u00fadio Fashion<\/option><option>Est\u00fadio de Luxo<\/option><option>Sala de Estar Moderna<\/option><option>Sala de Estar de Luxo<\/option><option>Quarto<\/option><option>Closet<\/option><option>Escrit\u00f3rio Moderno<\/option><option>Escrit\u00f3rio Corporativo<\/option><option>Cafeteria<\/option><option>Shopping Center<\/option><option>\u00d3tica<\/option><option>Loja de Roupas<\/option><option>Est\u00fadio de Maquiagem<\/option><option>Sal\u00e3o de Beleza<\/option><option>Feira de Rua<\/option><option>Academia<\/option><option>Praia<\/option><option>Parque<\/option><option>Rua Urbana<\/option><option>Restaurante<\/option><option>Cozinha<\/option><option>Sagu\u00e3o de Hotel<\/option><option>Quarto de Hotel<\/option><option>Rooftop<\/option><option>Jardim Externo<\/option><option>Personalizado<\/option><\/select>\r\n                  <\/div>\r\n                <\/div>\r\n\r\n                <button class=\"bp-influencer-generate\" id=\"bpInfluencerGenerate\" type=\"button\">\u2726 Gerar prompt da influenciadora<\/button>\r\n                <p class=\"bp-influencer-note\">Use sempre uma imagem de refer\u00eancia. Ela servir\u00e1 apenas como inspira\u00e7\u00e3o est\u00e9tica; o prompt exige uma identidade facial nova e original.<\/p>\r\n              <\/div>\r\n\r\n              <div class=\"bp-influencer-result-card\">\r\n                <div class=\"bp-influencer-card-head\">\r\n                  <h3>Resultado<\/h3>\r\n                  <button class=\"bp-influencer-copy\" id=\"bpInfluencerCopy\" type=\"button\">Copiar<\/button>\r\n                <\/div>\r\n                <div class=\"bp-influencer-result\" id=\"bpInfluencerResult\">Escolha as caracter\u00edsticas e clique em \u201cGerar prompt da influenciadora\u201d.<\/div>\r\n              <\/div>\r\n            <\/div>\r\n          <\/div>\r\n        <\/section>\r\n\r\n        <!-- GERADOR DE COPIES: compacto e recolhido por padr\u00e3o -->\r\n        <section class=\"bp-copy-launcher\" id=\"bpCopyLauncher\" aria-label=\"Gerador de copies\">\r\n          <button class=\"bp-copy-summary\" id=\"bpCopyToggle\" type=\"button\" aria-expanded=\"false\">\r\n            <span class=\"bp-copy-summary-main\">\r\n              <span class=\"bp-copy-icon\" aria-hidden=\"true\">\u2726<\/span>\r\n              <span>\r\n                <strong>Gerador de Copies<\/strong>\r\n                <small>Crie cinco copies para TikTok Shop com estilo, dura\u00e7\u00e3o e refer\u00eancias do seu produto.<\/small>\r\n              <\/span>\r\n            <\/span>\r\n            <span class=\"bp-copy-open-label\" id=\"bpCopyOpenLabel\">Abrir gerador \u2193<\/span>\r\n          <\/button>\r\n\r\n          <div class=\"bp-copy-panel\" id=\"bpCopyPanel\">\r\n            <div class=\"bp-copy-layout\">\r\n              <div class=\"bp-copy-card\">\r\n                <div class=\"bp-copy-card-head\">\r\n                  <h3>Configura\u00e7\u00f5es da copy<\/h3>\r\n                  <div style=\"display:flex;gap:8px;flex-wrap:wrap;\">\r\n                    <button class=\"bp-copy-instructions\" id=\"bpCopyInstructions\" type=\"button\">\u24d8 Instru\u00e7\u00f5es<\/button>\r\n                    <button class=\"bp-copy-clear\" id=\"bpCopyClear\" type=\"button\">\u21bb Limpar sele\u00e7\u00f5es<\/button>\r\n                  <\/div>\r\n                <\/div>\r\n\r\n                <span class=\"bp-copy-label\">Estilo da copy<\/span>\r\n                <div class=\"bp-copy-choice-grid\" role=\"group\" aria-label=\"Estilo da copy\">\r\n                  <button class=\"bp-copy-choice\" type=\"button\" data-copy-style=\"Copy Padr\u00e3o\">Copy Padr\u00e3o<small>Persuasiva e direta<\/small><\/button>\r\n                  <button class=\"bp-copy-choice\" type=\"button\" data-copy-style=\"Copy Humanizada\">Copy Humanizada<small>Estilo UGC, conversado<\/small><\/button>\r\n                <\/div>\r\n\r\n                <span class=\"bp-copy-label\">Dura\u00e7\u00e3o da copy<\/span>\r\n                <div class=\"bp-copy-duration-grid\" role=\"group\" aria-label=\"Dura\u00e7\u00e3o da copy\">\r\n                  <button class=\"bp-copy-choice\" type=\"button\" data-copy-duration=\"8\">8s<\/button>\r\n                  <button class=\"bp-copy-choice\" type=\"button\" data-copy-duration=\"16\">16s<\/button>\r\n                  <button class=\"bp-copy-choice\" type=\"button\" data-copy-duration=\"24\">24s<\/button>\r\n                <\/div>\r\n\r\n                <div class=\"bp-copy-field\">\r\n                  <div class=\"bp-copy-field-head\"><strong>Descri\u00e7\u00e3o t\u00e9cnica do produto (opcional)<\/strong><span class=\"bp-copy-counter\" id=\"bpCopyTechnicalCounter\">0\/400<\/span><\/div>\r\n                  <textarea class=\"bp-copy-textarea\" id=\"bpCopyTechnical\" maxlength=\"400\" placeholder=\"Informe nome, material, medidas, fun\u00e7\u00f5es, conte\u00fado da embalagem e benef\u00edcios comprov\u00e1veis.\"><\/textarea>\r\n                <\/div>\r\n\r\n                <div class=\"bp-copy-field\">\r\n                  <div class=\"bp-copy-field-head\"><strong>Copy campe\u00e3 (opcional)<\/strong><span class=\"bp-copy-counter\" id=\"bpCopyChampionCounter\">0\/400<\/span><\/div>\r\n                  <textarea class=\"bp-copy-textarea\" id=\"bpCopyChampion\" maxlength=\"400\" placeholder=\"Cole uma copy de refer\u00eancia. Ela ser\u00e1 usada apenas para modelar estrat\u00e9gia, ritmo e abordagem, sem copiar frases.\"><\/textarea>\r\n                <\/div>\r\n\r\n                <div class=\"bp-copy-warning\" id=\"bpCopyWarning\">Selecione o estilo e a dura\u00e7\u00e3o antes de gerar o prompt.<\/div>\r\n                <button class=\"bp-copy-generate\" id=\"bpCopyGenerate\" type=\"button\">\u2726 Gerar prompt de copies<\/button>\r\n              <\/div>\r\n\r\n              <div class=\"bp-copy-card\">\r\n                <div class=\"bp-copy-card-head\">\r\n                  <h3>Resultado<\/h3>\r\n                  <button class=\"bp-copy-copy\" id=\"bpCopyCopy\" type=\"button\">Copiar<\/button>\r\n                <\/div>\r\n                <div class=\"bp-copy-result\" id=\"bpCopyResult\">Selecione o estilo e a dura\u00e7\u00e3o, preencha os campos opcionais e clique em \u201cGerar prompt de copies\u201d.<\/div>\r\n              <\/div>\r\n            <\/div>\r\n          <\/div>\r\n        <\/section>\r\n\r\n        <div class=\"bp-progress-wrap\" aria-label=\"Filtros e progresso da sele\u00e7\u00e3o\">\r\n          <div class=\"bp-progress-toolbar\">\r\n            <div>\r\n              <strong>Escolha seguindo as 4 etapas<\/strong>\r\n              <span>A r\u00e9gua abaixo filtra todo o conte\u00fado da biblioteca.<\/span>\r\n            <\/div>\r\n            <div class=\"bp-progress-actions\">\r\n              <button class=\"bp-progress-button\" id=\"bpBackButton\" type=\"button\">\u2190 Voltar uma etapa<\/button>\r\n              <button class=\"bp-progress-button bp-progress-button-clear\" id=\"bpFlowResetButton\" type=\"button\">\u21bb Limpar sele\u00e7\u00e3o<\/button>\r\n            <\/div>\r\n          <\/div>\r\n\r\n          <div class=\"bp-progress-track\">\r\n            <div class=\"bp-step is-active\" data-step=\"category\">\r\n              <div class=\"bp-step-dot\">1<\/div>\r\n              <div class=\"bp-step-name\">Categoria<\/div>\r\n              <div class=\"bp-step-status\">Escolha uma categoria<\/div>\r\n              <select class=\"bp-step-select\" id=\"bpCategorySelect\" aria-label=\"Selecionar categoria\">\r\n                <option value=\"all\">Todas as categorias<\/option>\r\n              <\/select>\r\n            <\/div>\r\n\r\n            <div class=\"bp-step\" data-step=\"format\">\r\n              <div class=\"bp-step-dot\">2<\/div>\r\n              <div class=\"bp-step-name\">Formato<\/div>\r\n              <div class=\"bp-step-status\">UGC ou POV<\/div>\r\n              <select class=\"bp-step-select\" id=\"bpFormatSelect\" aria-label=\"Selecionar formato\">\r\n                <option value=\"all\">Todos os formatos<\/option>\r\n                <option value=\"UGC\">UGC<\/option>\r\n                <option value=\"POV\">POV<\/option>\r\n              <\/select>\r\n            <\/div>\r\n\r\n            <div class=\"bp-step\" data-step=\"image\">\r\n              <div class=\"bp-step-dot\">3<\/div>\r\n              <div class=\"bp-step-name\">Imagem<\/div>\r\n              <div class=\"bp-step-status\">Escolha uma descri\u00e7\u00e3o<\/div>\r\n              <select class=\"bp-step-select\" id=\"bpImageSelect\" aria-label=\"Selecionar prompt de imagem\" disabled>\r\n                <option value=\"\">Primeiro escolha categoria e formato<\/option>\r\n              <\/select>\r\n            <\/div>\r\n\r\n            <div class=\"bp-step\" data-step=\"video\">\r\n              <div class=\"bp-step-dot\">4<\/div>\r\n              <div class=\"bp-step-name\">V\u00eddeo<\/div>\r\n              <div class=\"bp-step-status\">Escolha o movimento<\/div>\r\n              <select class=\"bp-step-select\" id=\"bpVideoSelect\" aria-label=\"Selecionar prompt de v\u00eddeo\" disabled>\r\n                <option value=\"\">Primeiro escolha uma imagem<\/option>\r\n              <\/select>\r\n            <\/div>\r\n          <\/div>\r\n\r\n          <div class=\"bp-next-guidance\" id=\"bpNextGuidance\">\r\n            Comece escolhendo uma categoria. Depois avance para formato, imagem e v\u00eddeo.\r\n          <\/div>\r\n        <\/div>\r\n      <\/div>\r\n    <\/section>\r\n\r\n    <section class=\"bp-controls\">\r\n      <div class=\"bp-shell\">\r\n        <div class=\"bp-search-row\">\r\n          <label class=\"bp-field bp-field-search\">\r\n            <span class=\"bp-field-label\">Busca complementar<\/span>\r\n            <input\r\n              class=\"bp-search\"\r\n              id=\"bpSearchInput\"\r\n              type=\"search\"\r\n              placeholder=\"Ex.: vestido, suplemento, cal\u00e7ado...\"\r\n              autocomplete=\"off\"\r\n            \/>\r\n          <\/label>\r\n        <\/div>\r\n\r\n        <div class=\"bp-helper\">\r\n          <span>Sem sele\u00e7\u00e3o, todos os prompts de imagem e v\u00eddeo permanecem vis\u00edveis.<\/span>\r\n          <span class=\"bp-selection-summary\" id=\"bpSelectionSummary\">\r\n            Nenhuma sele\u00e7\u00e3o conclu\u00edda.\r\n          <\/span>\r\n        <\/div>\r\n      <\/div>\r\n    <\/section>\r\n\r\n    <section class=\"bp-section is-visible\" id=\"bpVideosSection\">\r\n      <div class=\"bp-shell\">\r\n        <div class=\"bp-section-head\">\r\n          <div>\r\n            <h2 class=\"bp-section-title\">Prompts de v\u00eddeo<\/h2>\r\n            <p class=\"bp-section-copy\">\r\n              Veja primeiro os resultados em v\u00eddeo. Passe o mouse sobre cada conte\u00fado para reproduzir em loop. Cada v\u00eddeo mant\u00e9m rela\u00e7\u00e3o 1:1 com sua imagem de mesmo nome.\r\n            <\/p>\r\n          <\/div>\r\n          <div class=\"bp-count\" id=\"bpVideoCount\">0 v\u00eddeos<\/div>\r\n        <\/div>\r\n\r\n        <div class=\"bp-guidance-banner\" id=\"bpVideoGuidance\">\r\n          <strong>V\u00eddeo 1:1:<\/strong> este prompt de v\u00eddeo tem o mesmo nome e est\u00e1 vinculado exclusivamente \u00e0 imagem selecionada. Use sua imagem final como refer\u00eancia no VEO 3.\r\n        <\/div>\r\n\r\n        <div class=\"bp-grid\" id=\"bpVideoGrid\"><\/div>\r\n\r\n        <div class=\"bp-empty\" id=\"bpVideoEmpty\">\r\n          Nenhum v\u00eddeo foi encontrado para a sele\u00e7\u00e3o realizada.\r\n        <\/div>\r\n      <\/div>\r\n    <\/section>\r\n\r\n    <section class=\"bp-section\" id=\"bpImagesSection\">\r\n      <div class=\"bp-shell\">\r\n        <div class=\"bp-section-head\">\r\n          <div>\r\n            <h2 class=\"bp-section-title\">Prompts de imagem<\/h2>\r\n            <p class=\"bp-section-copy\">\r\n              Escolha um estilo na etapa 3, copie o prompt e gere a imagem. Depois volte e clique em \u201cSelecionar imagem\u201d para vincular o v\u00eddeo de mesmo nome.\r\n            <\/p>\r\n          <\/div>\r\n          <div class=\"bp-count\" id=\"bpImageCount\">0 imagens<\/div>\r\n        <\/div>\r\n\r\n        <div class=\"bp-grid\" id=\"bpImageGrid\"><\/div>\r\n\r\n        <div class=\"bp-empty\" id=\"bpImageEmpty\">\r\n          Nenhuma imagem foi encontrada com os filtros selecionados.\r\n        <\/div>\r\n      <\/div>\r\n    <\/section>\r\n\r\n    <footer class=\"bp-footer\">\r\n      <div class=\"bp-shell\">\r\n        Comunidade dos Prompts\r\n      <\/div>\r\n    <\/footer>\r\n  <\/main>\r\n\r\n  <!-- MODAL -->\r\n  <div class=\"bp-modal-backdrop\" id=\"bpModalBackdrop\" role=\"dialog\" aria-modal=\"true\" aria-hidden=\"true\">\r\n    <div class=\"bp-modal\">\r\n      <div class=\"bp-modal-head\">\r\n        <div>\r\n          <h3 class=\"bp-modal-title\" id=\"bpModalTitle\">Conte\u00fado<\/h3>\r\n          <p class=\"bp-modal-subtitle\" id=\"bpModalSubtitle\"><\/p>\r\n        <\/div>\r\n        <button class=\"bp-modal-close\" id=\"bpModalClose\" type=\"button\" aria-label=\"Fechar\">\u00d7<\/button>\r\n      <\/div>\r\n\r\n      <div class=\"bp-modal-body\" id=\"bpModalBody\"><\/div>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <div class=\"bp-toast\" id=\"bpToast\">Prompt copiado!<\/div>\r\n<\/div>\r\n<\/div><!-- \/#bp-protected-application -->\r\n\r\n\r\n<script>\r\n\/* ============================================================\r\n   AUTENTICA\u00c7\u00c3O VIA MAKE\r\n   ============================================================\r\n\r\n   LOCAL EXATO PARA INSERIR O WEBHOOK:\r\n   substitua o texto abaixo pela URL HTTPS do webhook do Make.\r\n\r\n   Exemplo:\r\n   const AUTH_WEBHOOK_URL = \"https:\/\/hook.us1.make.com\/SEU_WEBHOOK\";\r\n\r\n   SEGURAN\u00c7A:\r\n   - Este JavaScript controla sess\u00e3o e interface no navegador.\r\n   - O navegador N\u00c3O \u00e9 uma fonte confi\u00e1vel de autoriza\u00e7\u00e3o.\r\n   - E-mail, senha, produto, status e datas devem ser obrigatoriamente\r\n     validados no Make ou em um backend.\r\n   - N\u00e3o coloque segredos, credenciais do Google ou tokens administrativos\r\n     neste arquivo.\r\n   ============================================================ *\/\r\n(function () {\r\n  \"use strict\";\r\n\r\n  const AUTH_WEBHOOK_URL = \"https:\/\/login-comunidade-prompts.wlabancaveo3new1.workers.dev\/\";\r\n  const APPLICATION_SLUG = \"comunidade-prompts\";\r\n  const EXPECTED_PRODUCT = \"Comunidade dos Prompts\";\r\n\r\n  const DEFAULT_SESSION_SECONDS = 12 * 60 * 60; \/\/ 12 horas\r\n  const REMEMBER_MAX_SECONDS = 7 * 24 * 60 * 60; \/\/ 7 dias\r\n  const REQUEST_TIMEOUT_MS = 15000;\r\n\r\n  \/*\r\n    MODO DE TESTES:\r\n    o bloqueio por tentativas consecutivas est\u00e1 temporariamente desativado.\r\n    Quando os testes terminarem, altere para false para reativar a prote\u00e7\u00e3o.\r\n  *\/\r\n  const DISABLE_LOGIN_RATE_LIMIT_FOR_TESTS = true;\r\n\r\n  const MAX_FAILED_ATTEMPTS = 5;\r\n  const LOCK_DURATION_MS = 15 * 60 * 1000;\r\n\r\n  const SESSION_KEY = \"bp_auth_session_v1\";\r\n  const RATE_LIMIT_KEY = \"bp_auth_rate_limit_v1\";\r\n\r\n  const authScreen = document.getElementById(\"bp-auth-screen\");\r\n  const protectedApplication = document.getElementById(\"bp-protected-application\");\r\n  const authForm = document.getElementById(\"bp-auth-form\");\r\n  const emailInput = document.getElementById(\"bp-auth-email\");\r\n  const passwordInput = document.getElementById(\"bp-auth-password\");\r\n  const passwordToggle = document.getElementById(\"bp-auth-password-toggle\");\r\n  const rememberInput = document.getElementById(\"bp-auth-remember\");\r\n  const submitButton = document.getElementById(\"bp-auth-submit\");\r\n  const submitLabel = document.getElementById(\"bp-auth-submit-label\");\r\n  const messageBox = document.getElementById(\"bp-auth-message\");\r\n  const logoutButton = document.getElementById(\"bp-logout-button\");\r\n  const userBox = document.getElementById(\"bp-auth-user\");\r\n  const userName = document.getElementById(\"bp-auth-user-name\");\r\n  const userExpiration = document.getElementById(\"bp-auth-user-expiration\");\r\n\r\n  \/*\r\n    O Elementor pode envolver o widget HTML em cont\u00eaineres com transform ou\r\n    overflow. Nessa situa\u00e7\u00e3o, position: fixed deixa de usar a janela inteira\r\n    e a tela de login aparece cortada. Movemos apenas a camada de autentica\u00e7\u00e3o\r\n    para o body; a estrutura visual e todo o restante da aplica\u00e7\u00e3o permanecem\r\n    exatamente iguais.\r\n  *\/\r\n  if (authScreen && authScreen.parentElement !== document.body) {\r\n    document.body.appendChild(authScreen);\r\n  }\r\n\r\n  let isAuthenticating = false;\r\n\r\n  if (DISABLE_LOGIN_RATE_LIMIT_FOR_TESTS) {\r\n    try {\r\n      localStorage.removeItem(RATE_LIMIT_KEY);\r\n    } catch (error) {}\r\n  }\r\n\r\n  function safeParse(value, fallback = null) {\r\n    try {\r\n      return JSON.parse(value);\r\n    } catch (error) {\r\n      return fallback;\r\n    }\r\n  }\r\n\r\n  function normalizeEmail(value) {\r\n    return String(value || \"\").trim().toLowerCase();\r\n  }\r\n\r\n  function isValidEmail(value) {\r\n    return \/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$\/.test(value);\r\n  }\r\n\r\n  function getRateLimitState() {\r\n    const parsed = safeParse(localStorage.getItem(RATE_LIMIT_KEY), {});\r\n    return {\r\n      attempts: Number(parsed?.attempts || 0),\r\n      lockedUntil: Number(parsed?.lockedUntil || 0)\r\n    };\r\n  }\r\n\r\n  function saveRateLimitState(state) {\r\n    try {\r\n      localStorage.setItem(RATE_LIMIT_KEY, JSON.stringify(state));\r\n    } catch (error) {}\r\n  }\r\n\r\n  function clearRateLimitState() {\r\n    try {\r\n      localStorage.removeItem(RATE_LIMIT_KEY);\r\n    } catch (error) {}\r\n  }\r\n\r\n  function getRemainingLockMs() {\r\n    if (DISABLE_LOGIN_RATE_LIMIT_FOR_TESTS) {\r\n      clearRateLimitState();\r\n      return 0;\r\n    }\r\n\r\n    const state = getRateLimitState();\r\n    const remaining = state.lockedUntil - Date.now();\r\n\r\n    if (remaining <= 0 && state.lockedUntil) {\r\n      clearRateLimitState();\r\n      return 0;\r\n    }\r\n\r\n    return Math.max(0, remaining);\r\n  }\r\n\r\n  function registerFailedAttempt() {\r\n    if (DISABLE_LOGIN_RATE_LIMIT_FOR_TESTS) {\r\n      clearRateLimitState();\r\n      return;\r\n    }\r\n\r\n    const current = getRateLimitState();\r\n    const attempts = current.attempts + 1;\r\n\r\n    if (attempts >= MAX_FAILED_ATTEMPTS) {\r\n      saveRateLimitState({\r\n        attempts,\r\n        lockedUntil: Date.now() + LOCK_DURATION_MS\r\n      });\r\n      return;\r\n    }\r\n\r\n    saveRateLimitState({\r\n      attempts,\r\n      lockedUntil: 0\r\n    });\r\n  }\r\n\r\n  function formatRemainingTime(milliseconds) {\r\n    const totalSeconds = Math.ceil(milliseconds \/ 1000);\r\n    const minutes = Math.floor(totalSeconds \/ 60);\r\n    const seconds = totalSeconds % 60;\r\n\r\n    if (minutes > 0) {\r\n      return `${minutes} min ${seconds.toString().padStart(2, \"0\")} s`;\r\n    }\r\n\r\n    return `${seconds} s`;\r\n  }\r\n\r\n  function showAuthMessage(message, type = \"info\") {\r\n    if (!messageBox) return;\r\n\r\n    messageBox.textContent = String(message || \"\");\r\n    messageBox.classList.remove(\"is-error\", \"is-success\", \"is-info\");\r\n\r\n    if (message) {\r\n      messageBox.classList.add(`is-${type}`);\r\n    }\r\n  }\r\n\r\n  function setLoadingState(isLoading) {\r\n    isAuthenticating = Boolean(isLoading);\r\n\r\n    authScreen?.classList.toggle(\"is-loading\", isAuthenticating);\r\n\r\n    if (submitButton) submitButton.disabled = isAuthenticating;\r\n    if (emailInput) emailInput.disabled = isAuthenticating;\r\n    if (passwordInput) passwordInput.disabled = isAuthenticating;\r\n    if (rememberInput) rememberInput.disabled = isAuthenticating;\r\n    if (passwordToggle) passwordToggle.disabled = isAuthenticating;\r\n\r\n    if (submitLabel) {\r\n      submitLabel.textContent = isAuthenticating ? \"Validando acesso...\" : \"Entrar\";\r\n    }\r\n  }\r\n\r\n  function getStoredSession() {\r\n    const sessionSession = safeParse(sessionStorage.getItem(SESSION_KEY));\r\n    const persistentSession = safeParse(localStorage.getItem(SESSION_KEY));\r\n\r\n    if (sessionSession) {\r\n      return { session: sessionSession, storage: sessionStorage };\r\n    }\r\n\r\n    if (persistentSession) {\r\n      return { session: persistentSession, storage: localStorage };\r\n    }\r\n\r\n    return null;\r\n  }\r\n\r\n  function clearStoredSessions() {\r\n    try { sessionStorage.removeItem(SESSION_KEY); } catch (error) {}\r\n    try { localStorage.removeItem(SESSION_KEY); } catch (error) {}\r\n  }\r\n\r\n  function validateSession(session) {\r\n    if (!session || typeof session !== \"object\") return false;\r\n\r\n    const now = Date.now();\r\n    const expiresAt = Number(session.expiresAt || 0);\r\n\r\n    if (!session.token || !expiresAt || expiresAt <= now) return false;\r\n    if (session.application !== APPLICATION_SLUG) return false;\r\n    if (String(session.product || \"\").trim() !== EXPECTED_PRODUCT) return false;\r\n\r\n    return true;\r\n  }\r\n\r\n  function updateUserInterface(session) {\r\n    if (!session) return;\r\n\r\n    if (userName) {\r\n      userName.textContent = session.name || session.email || \"Membro autorizado\";\r\n    }\r\n\r\n    if (userExpiration) {\r\n      userExpiration.textContent = session.expirationDate\r\n        ? `Acesso at\u00e9 ${session.expirationDate}`\r\n        : \"\";\r\n    }\r\n\r\n    if (userBox) userBox.style.display = \"block\";\r\n  }\r\n\r\n  function showLoginScreen(message = \"\") {\r\n    if (protectedApplication) protectedApplication.hidden = true;\r\n\r\n    if (authScreen) {\r\n      authScreen.classList.remove(\"is-hidden\");\r\n      authScreen.removeAttribute(\"aria-hidden\");\r\n    }\r\n\r\n    document.documentElement.style.overflow = \"hidden\";\r\n    document.body.classList.add(\"bp-auth-active\");\r\n\r\n    if (message) showAuthMessage(message, \"info\");\r\n\r\n    window.setTimeout(() => {\r\n      try { emailInput?.focus(); } catch (error) {}\r\n    }, 50);\r\n  }\r\n\r\n  function showProtectedApplication(session) {\r\n    if (authScreen) {\r\n      authScreen.classList.add(\"is-hidden\");\r\n      authScreen.setAttribute(\"aria-hidden\", \"true\");\r\n    }\r\n\r\n    if (protectedApplication) protectedApplication.hidden = false;\r\n\r\n    document.documentElement.style.overflow = \"\";\r\n    document.body.classList.remove(\"bp-auth-active\");\r\n    updateUserInterface(session);\r\n  }\r\n\r\n  function createUserSession(authResponse, rememberConnected) {\r\n    const responseExpiresIn = Number(authResponse?.expiresIn || DEFAULT_SESSION_SECONDS);\r\n    const requestedMaximum = rememberConnected\r\n      ? REMEMBER_MAX_SECONDS\r\n      : DEFAULT_SESSION_SECONDS;\r\n\r\n    \/*\r\n      O navegador nunca amplia o prazo enviado pelo backend.\r\n      Ele usa sempre o menor valor entre:\r\n      - expiresIn retornado pelo Make, quando existir;\r\n      - 12 horas sem \"Manter conectado\";\r\n      - 7 dias com \"Manter conectado\".\r\n    *\/\r\n    const effectiveSeconds = Math.max(\r\n      60,\r\n      Math.min(responseExpiresIn, requestedMaximum)\r\n    );\r\n\r\n    const user = authResponse?.user || {};\r\n\r\n    \/*\r\n      O Make confirma a autoriza\u00e7\u00e3o, mas n\u00e3o devolve senha, token ou produto.\r\n      A senha j\u00e1 foi validada no filtro da rota autorizada.\r\n      O identificador abaixo \u00e9 apenas um marcador local de sess\u00e3o do navegador.\r\n    *\/\r\n    const localSessionToken =\r\n      String(authResponse?.token || \"\").trim() ||\r\n      (\r\n        globalThis.crypto &&\r\n        typeof globalThis.crypto.randomUUID === \"function\"\r\n          ? globalThis.crypto.randomUUID()\r\n          : `${Date.now()}-${Math.random().toString(36).slice(2)}`\r\n      );\r\n\r\n    const session = {\r\n      token: localSessionToken,\r\n      expiresAt: Date.now() + (effectiveSeconds * 1000),\r\n      application: APPLICATION_SLUG,\r\n      userId: String(user.id || \"\"),\r\n      name: String(user.name || \"\"),\r\n      email: normalizeEmail(user.email || \"\"),\r\n      product: String(user.product || EXPECTED_PRODUCT),\r\n      expirationDate: String(user.expirationDate || \"\")\r\n    };\r\n\r\n    clearStoredSessions();\r\n\r\n    const selectedStorage = rememberConnected ? localStorage : sessionStorage;\r\n    selectedStorage.setItem(SESSION_KEY, JSON.stringify(session));\r\n\r\n    return session;\r\n  }\r\n\r\n  function checkExistingSession() {\r\n    const stored = getStoredSession();\r\n\r\n    if (!stored || !validateSession(stored.session)) {\r\n      clearStoredSessions();\r\n      showLoginScreen();\r\n      return false;\r\n    }\r\n\r\n    showProtectedApplication(stored.session);\r\n    return true;\r\n  }\r\n\r\n  async function authenticateUser(email, password) {\r\n    if (!AUTH_WEBHOOK_URL || AUTH_WEBHOOK_URL === \"INSERIR_URL_DO_WEBHOOK_AQUI\") {\r\n      throw new Error(\"WEBHOOK_NOT_CONFIGURED\");\r\n    }\r\n\r\n    if (location.protocol !== \"https:\" && location.hostname !== \"localhost\") {\r\n      throw new Error(\"HTTPS_REQUIRED\");\r\n    }\r\n\r\n    const controller = new AbortController();\r\n    const timeoutId = window.setTimeout(() => controller.abort(), REQUEST_TIMEOUT_MS);\r\n\r\n    const payload = {\r\n      email,\r\n      password,\r\n      application: APPLICATION_SLUG,\r\n      timestamp: new Date().toISOString()\r\n    };\r\n\r\n    try {\r\n      const response = await fetch(AUTH_WEBHOOK_URL, {\r\n        method: \"POST\",\r\n        mode: \"cors\",\r\n        cache: \"no-store\",\r\n        credentials: \"omit\",\r\n        redirect: \"error\",\r\n        referrerPolicy: \"no-referrer\",\r\n        headers: {\r\n          \"Content-Type\": \"application\/json\",\r\n          \"Accept\": \"application\/json\"\r\n        },\r\n        body: JSON.stringify(payload),\r\n        signal: controller.signal\r\n      });\r\n\r\n      if (!response.ok) {\r\n        throw new Error(`HTTP_${response.status}`);\r\n      }\r\n\r\n      let data;\r\n\r\n      try {\r\n        data = await response.json();\r\n      } catch (error) {\r\n        throw new Error(\"INVALID_JSON\");\r\n      }\r\n\r\n      if (!data || typeof data !== \"object\") {\r\n        throw new Error(\"INVALID_RESPONSE\");\r\n      }\r\n\r\n      return data;\r\n    } finally {\r\n      window.clearTimeout(timeoutId);\r\n    }\r\n  }\r\n\r\n  async function handleLoginSubmit(event) {\r\n    event.preventDefault();\r\n\r\n    if (isAuthenticating) return;\r\n\r\n    const remainingLockMs = getRemainingLockMs();\r\n\r\n    if (remainingLockMs > 0) {\r\n      showAuthMessage(\r\n        `Muitas tentativas consecutivas. Tente novamente em ${formatRemainingTime(remainingLockMs)}.`,\r\n        \"error\"\r\n      );\r\n      return;\r\n    }\r\n\r\n    const email = normalizeEmail(emailInput?.value);\r\n    const password = String(passwordInput?.value || \"\");\r\n\r\n    if (!email || !password) {\r\n      showAuthMessage(\"Preencha o e-mail e a senha para continuar.\", \"error\");\r\n      return;\r\n    }\r\n\r\n    if (!isValidEmail(email)) {\r\n      showAuthMessage(\"Informe um e-mail v\u00e1lido.\", \"error\");\r\n      return;\r\n    }\r\n\r\n    if (emailInput) emailInput.value = email;\r\n\r\n    setLoadingState(true);\r\n    showAuthMessage(\"Validando suas informa\u00e7\u00f5es...\", \"info\");\r\n\r\n    try {\r\n      const authResponse = await authenticateUser(email, password);\r\n\r\n      \/*\r\n        A autoriza\u00e7\u00e3o vem do Make ap\u00f3s:\r\n        1. encontrar o e-mail na planilha;\r\n        2. comparar a senha recebida com senha (D);\r\n        3. confirmar status (F) = Ativo.\r\n\r\n        O Webhook Response atual devolve success, authorized e user.\r\n        Portanto, token e produto n\u00e3o s\u00e3o exigidos na resposta.\r\n      *\/\r\n      const authorized =\r\n        authResponse.success === true &&\r\n        authResponse.authorized === true &&\r\n        authResponse.user &&\r\n        typeof authResponse.user === \"object\" &&\r\n        String(authResponse.user.id || \"\").trim().length > 0 &&\r\n        normalizeEmail(authResponse.user.email || \"\") === email;\r\n\r\n      if (!authorized) {\r\n        registerFailedAttempt();\r\n\r\n        const remainingAfterFailure = getRemainingLockMs();\r\n\r\n        showAuthMessage(\r\n          remainingAfterFailure > 0\r\n            ? `Muitas tentativas consecutivas. Tente novamente em ${formatRemainingTime(remainingAfterFailure)}.`\r\n            : \"E-mail, senha ou permiss\u00e3o inv\u00e1lidos.\",\r\n          \"error\"\r\n        );\r\n\r\n        if (passwordInput) {\r\n          passwordInput.value = \"\";\r\n          passwordInput.focus();\r\n        }\r\n\r\n        return;\r\n      }\r\n\r\n      clearRateLimitState();\r\n\r\n      const session = createUserSession(\r\n        authResponse,\r\n        Boolean(rememberInput?.checked)\r\n      );\r\n\r\n      if (!validateSession(session)) {\r\n        clearStoredSessions();\r\n        throw new Error(\"INVALID_SESSION\");\r\n      }\r\n\r\n      if (passwordInput) passwordInput.value = \"\";\r\n\r\n      showAuthMessage(\"Acesso autorizado.\", \"success\");\r\n\r\n      window.setTimeout(() => {\r\n        showProtectedApplication(session);\r\n      }, 250);\r\n    } catch (error) {\r\n      const code = String(error?.message || \"\");\r\n\r\n      if (error?.name === \"AbortError\") {\r\n        showAuthMessage(\r\n          \"A valida\u00e7\u00e3o demorou mais que o esperado. Verifique sua conex\u00e3o e tente novamente.\",\r\n          \"error\"\r\n        );\r\n      } else if (code === \"WEBHOOK_NOT_CONFIGURED\") {\r\n        showAuthMessage(\r\n          \"O webhook de autentica\u00e7\u00e3o ainda n\u00e3o foi configurado nesta p\u00e1gina.\",\r\n          \"error\"\r\n        );\r\n      } else if (code === \"HTTPS_REQUIRED\") {\r\n        showAuthMessage(\r\n          \"Esta p\u00e1gina precisa ser publicada com HTTPS para realizar o login.\",\r\n          \"error\"\r\n        );\r\n      } else if (code === \"INVALID_JSON\" || code === \"INVALID_RESPONSE\" || code === \"INVALID_SESSION\") {\r\n        showAuthMessage(\r\n          \"O servidor retornou uma resposta inv\u00e1lida. Tente novamente mais tarde.\",\r\n          \"error\"\r\n        );\r\n      } else {\r\n        showAuthMessage(\r\n          \"N\u00e3o foi poss\u00edvel validar o acesso. Verifique sua conex\u00e3o e tente novamente.\",\r\n          \"error\"\r\n        );\r\n      }\r\n    } finally {\r\n      setLoadingState(false);\r\n    }\r\n  }\r\n\r\n  function logoutUser() {\r\n    clearStoredSessions();\r\n\r\n    if (passwordInput) passwordInput.value = \"\";\r\n    if (rememberInput) rememberInput.checked = false;\r\n    if (userBox) userBox.style.display = \"none\";\r\n\r\n    showLoginScreen(\"Sua sess\u00e3o foi encerrada.\");\r\n  }\r\n\r\n  authForm?.addEventListener(\"submit\", handleLoginSubmit);\r\n\r\n  passwordToggle?.addEventListener(\"click\", () => {\r\n    if (!passwordInput) return;\r\n\r\n    const showing = passwordInput.type === \"text\";\r\n    passwordInput.type = showing ? \"password\" : \"text\";\r\n    passwordToggle.textContent = showing ? \"Ver\" : \"Ocultar\";\r\n    passwordToggle.setAttribute(\"aria-label\", showing ? \"Mostrar senha\" : \"Ocultar senha\");\r\n    passwordToggle.setAttribute(\"aria-pressed\", String(!showing));\r\n  });\r\n\r\n  logoutButton?.addEventListener(\"click\", logoutUser);\r\n\r\n  \/*\r\n    Verifica\u00e7\u00e3o peri\u00f3dica local da validade da sess\u00e3o.\r\n    Isso n\u00e3o substitui revoga\u00e7\u00e3o centralizada. Para revogar imediatamente\r\n    uma sess\u00e3o j\u00e1 aberta, crie no Make\/backend um endpoint de valida\u00e7\u00e3o de\r\n    token e consulte-o periodicamente.\r\n  *\/\r\n  window.setInterval(() => {\r\n    const stored = getStoredSession();\r\n\r\n    if (!stored || !validateSession(stored.session)) {\r\n      if (!protectedApplication?.hidden) {\r\n        logoutUser();\r\n        showAuthMessage(\"Sua sess\u00e3o expirou. Entre novamente.\", \"info\");\r\n      }\r\n    }\r\n  }, 60 * 1000);\r\n\r\n  window.checkExistingSession = checkExistingSession;\r\n  window.showLoginScreen = showLoginScreen;\r\n  window.showProtectedApplication = showProtectedApplication;\r\n  window.authenticateUser = authenticateUser;\r\n  window.createUserSession = createUserSession;\r\n  window.validateSession = validateSession;\r\n  window.logoutUser = logoutUser;\r\n  window.showAuthMessage = showAuthMessage;\r\n  window.setLoadingState = setLoadingState;\r\n\r\n  checkExistingSession();\r\n})();\r\n<\/script>\r\n\r\n<script>\r\n(function () {\r\n  \"use strict\";\r\n\r\n  \/* Remove somente elementos externos que aparecem antes da aplica\u00e7\u00e3o.\r\n     IMPORTANTE: preserva explicitamente a tela de autentica\u00e7\u00e3o. *\/\r\n  (function cleanExternalPageTop() {\r\n    const app = document.getElementById(\"bp-app\");\r\n    const authScreen = document.getElementById(\"bp-auth-screen\");\r\n    const protectedApplication = document.getElementById(\"bp-protected-application\");\r\n\r\n    if (!app) return;\r\n\r\n    let current = app;\r\n\r\n    while (current && current !== document.body) {\r\n      let sibling = current.previousElementSibling;\r\n\r\n      while (sibling) {\r\n        const previous = sibling.previousElementSibling;\r\n\r\n        const mustPreserve =\r\n          sibling === authScreen ||\r\n          sibling === protectedApplication ||\r\n          sibling.id === \"bp-auth-screen\" ||\r\n          sibling.id === \"bp-protected-application\";\r\n\r\n        if (!mustPreserve) {\r\n          sibling.style.setProperty(\"display\", \"none\", \"important\");\r\n        }\r\n\r\n        sibling = previous;\r\n      }\r\n\r\n      const parent = current.parentElement;\r\n\r\n      if (parent && parent !== document.body) {\r\n        parent.style.setProperty(\"margin-top\", \"0\", \"important\");\r\n        parent.style.setProperty(\"padding-top\", \"0\", \"important\");\r\n        parent.style.setProperty(\"border-top\", \"0\", \"important\");\r\n      }\r\n\r\n      current = parent;\r\n    }\r\n\r\n    \/* Garante que nenhuma regra anterior tenha ocultado o login. *\/\r\n    if (authScreen && !authScreen.classList.contains(\"is-hidden\")) {\r\n      authScreen.style.removeProperty(\"display\");\r\n      authScreen.hidden = false;\r\n    }\r\n\r\n    document.documentElement.style.setProperty(\"margin-top\", \"0\", \"important\");\r\n    document.body.style.setProperty(\"margin-top\", \"0\", \"important\");\r\n    document.body.style.setProperty(\"padding-top\", \"0\", \"important\");\r\n  })();\r\n\r\n  \/* =========================================================\r\n     \u00c1REA DE CADASTRO\r\n     Substitua imageUrl, videoUrl e prompts pelos seus conte\u00fados.\r\n     ========================================================= *\/\r\n\r\n  \/* ARQUITETURA 2.0 \u2014 dados compactos e quatro prompts universais *\/\r\n  const UNIVERSAL_PROMPTS=Object.freeze({\"POV_IMAGE\":\"# UNIVERSAL ULTRA-PHOTOREALISTIC POV IMAGE PROMPT\\n\\n## Mandatory Reference\\n\\nReference Image 1: Product (Required)\\n\\nThe uploaded product reference is the only valid visual source of truth.\\n\\nDo not generate the image if the reference is missing, unclear, incomplete, low quality, or\\ninaccessible.\\n\\n---\\n\\n# MAIN OBJECTIVE\\n\\nCreate an ultra-photorealistic vertical image (9:16) captured entirely from a genuine first-person\\n(POV) perspective.\\n\\nThe image must portray a real Brazilian consumer or affiliate creator naturally interacting with\\nthe exact referenced product.\\n\\nAutomatically identify the product category and generate the most natural, useful and physically\\nbelievable interaction.\\n\\nExamples include:\\n\\n- Holding\\n- Opening\\n- Wearing\\n- Applying\\n- Testing\\n- Preparing\\n- Organizing\\n- Assembling\\n- Operating\\n- Examining\\n- Using\\n\\nThe final result must look exactly like an authentic frame captured naturally for TikTok Shop\\nBrazil or Shopee Video.\\n\\nIt must never resemble:\\n\\n- CGI\\n\\f- 3D render\\n- AI artwork\\n- Illustration\\n- Product catalog\\n- Advertising campaign\\n- Studio photography\\n\\n---\\n\\n# ABSOLUTE PRODUCT FIDELITY\\n\\nReproduce the product exactly as shown in the reference.\\n\\nPreserve without modification:\\n\\n- Model\\n- Version\\n- Shape\\n- Size\\n- Scale\\n- Proportions\\n- Colors\\n- Materials\\n- Surface finish\\n- Texture\\n- Fabric\\n- Stitching\\n- Labels\\n- Logos\\n- Packaging\\n- Typography\\n- Patterns\\n- Accessories\\n- Manufacturing details\\n- Visible imperfections\\n\\nNever redesign, improve, recolor, resize, stylize, simplify or invent any detail.\\n\\nDo not create logos, labels, text or accessories that do not exist in the reference.\\n\\nIf any detail is unclear, preserve only what can be reasonably inferred.\\n\\n---\\n\\f# FIRST PERSON POV\\n\\nThe camera always represents the user's own eyes or a naturally held smartphone.\\n\\nShow only body parts necessary for the interaction:\\n\\n- Hands\\n- Fingers\\n- Wrists\\n- Forearms\\n- Legs\\n- Feet\\n- Lap\\n\\nNever show:\\n\\n- A full influencer\\n- Third-person view\\n- Selfie composition\\n- Floating camera\\n- Impossible viewpoints\\n\\nThe product must always remain the visual priority.\\n\\nAutomatically choose the most appropriate perspective:\\n\\n- Over-the-hands\\n- Standing POV\\n- Sitting POV\\n- Tabletop POV\\n- Product near camera\\n- Wearing POV\\n- Operating POV\\n- Opening POV\\n\\n---\\n\\n# NATURAL PRODUCT INTERACTION\\n\\nChoose the interaction that best matches the product's intended purpose.\\n\\nRespect:\\n\\n- Weight\\n\\f- Scale\\n- Ergonomics\\n- Materials\\n- Construction\\n- Real functionality\\n\\nNever invent features, benefits or capabilities.\\n\\n---\\n\\n# HANDS & HUMAN ANATOMY\\n\\nGenerate anatomically perfect hands.\\n\\nRequirements:\\n\\n- Five fingers\\n- Correct thumbs\\n- Realistic nails\\n- Proper wrists\\n- Correct joints\\n- Natural grip\\n- Accurate pressure\\n- Skin pores\\n- Fine wrinkles\\n- Subtle imperfections\\n\\nNever generate:\\n\\n- Extra fingers\\n- Missing fingers\\n- Fused fingers\\n- Broken anatomy\\n- Floating hands\\n- Impossible grips\\n\\n---\\n\\n# PHYSICAL REALISM\\n\\nRespect real-world physics.\\n\\nInclude:\\n\\f- Gravity\\n- Weight distribution\\n- Contact shadows\\n- Proper perspective\\n- Surface interaction\\n- Fabric folds\\n- Material stiffness\\n- Natural reflections\\n- Refraction\\n- Transparency\\n\\nNothing may float, clip, stretch or bend unnaturally.\\n\\n---\\n\\n# ENVIRONMENT\\n\\nAutomatically create the most believable everyday Brazilian environment.\\n\\nExamples:\\n\\n- Bedroom\\n- Kitchen\\n- Living room\\n- Bathroom\\n- Laundry\\n- Office\\n- Store\\n- Boutique\\n- Gym\\n- Workshop\\n- Garage\\n- Garden\\n- Balcony\\n- Car\\n- Restaurant\\n\\nThe environment must feel authentic, lived-in and functional.\\n\\nAvoid:\\n\\n- Luxury sets\\n- Empty studios\\n- Fantasy environments\\n\\f- Advertising stages\\n\\n---\\n\\n# COMPOSITION\\n\\nThe product must be the clear visual subject.\\n\\nUse natural framing.\\n\\nPrefer close-up or medium close-up whenever appropriate.\\n\\nAvoid cutting off important product details.\\n\\nThe image should feel like a real person naturally paused while recording.\\n\\n---\\n\\n# PROFESSIONAL LIGHTING\\n\\nUse realistic lighting physically consistent with the environment.\\n\\nPreferred lighting:\\n\\n- Large window daylight\\n- Soft indirect daylight\\n- Overcast daylight\\n- Morning sunlight\\n- Late afternoon sunlight\\n- Golden hour (when appropriate)\\n- Household lighting\\n- Retail lighting\\n- Office lighting\\n\\nLighting must include:\\n\\n- Physically accurate global illumination\\n- Soft bounce light\\n- Natural ambient occlusion\\n- Correct color bleeding\\n- Realistic reflections\\n- Natural highlight roll-off\\n- Soft contact shadows\\n- Neutral white balance\\n\\f- True-to-life colors\\n- Balanced exposure\\n- High dynamic range\\n- Natural contrast\\n\\nMaterials must react realistically to light.\\n\\nAvoid:\\n\\n- Artificial glow\\n- Excessive HDR\\n- Neon contamination\\n- Studio glamour lighting\\n- Heavy bloom\\n- Burned highlights\\n- Crushed shadows\\n- Unrealistic lens flare\\n\\n---\\n\\n# CAMERA & OPTICS\\n\\nSimulate the image quality of a premium modern smartphone while preserving the optical\\nrealism of professional cameras.\\n\\nReference quality inspired by:\\n\\n- Sony A1 II\\n- Sony A7R V\\n- Canon EOS R5 Mark II\\n- Nikon Z8\\n- Leica SL3\\n- Hasselblad X2D 100C\\n\\nLens behavior inspired by:\\n\\n- Sony 35mm f\/1.4 GM\\n- Sony 50mm f\/1.2 GM\\n- Canon RF 50mm f\/1.2L\\n- Leica Summilux 35mm\\n- Sigma 35mm Art\\n\\nOptical characteristics:\\n\\f- Natural perspective\\n- Extremely high micro-contrast\\n- Accurate edge sharpness\\n- Realistic optical depth\\n- Smooth focus transition\\n- Minimal distortion\\n- Authentic lens rendering\\n- Natural falloff\\n- Subtle depth of field\\n- Realistic autofocus\\n\\nThe final result should resemble a premium smartphone photo benefiting from world-class optics\\nrather than a cinematic production.\\n\\n---\\n\\n# ULTRA PHOTOREALISTIC RENDERING\\n\\nGenerate an image visually indistinguishable from a real RAW photograph.\\n\\nUse rendering characteristics equivalent to:\\n\\n- Physically Based Rendering (PBR)\\n- Global Illumination\\n- Physically accurate light transport\\n- Spectral color response\\n- Realistic BRDF material behavior\\n- Subsurface scattering where appropriate\\n- Accurate reflections\\n- Natural refraction\\n- Realistic translucency\\n\\nEvery visible material must contain genuine micro-detail.\\n\\nExamples:\\n\\nSkin\\n\\n- Pores\\n- Fine hairs\\n- Natural oil variation\\n- Tiny wrinkles\\n\\nFabric\\n\\f- Individual fibers\\n- Stitching\\n- Natural folds\\n- Fabric tension\\n\\nLeather\\n\\n- Grain\\n- Creases\\n- Wear marks\\n\\nMetal\\n\\n- Fine scratches\\n- Brushed finish\\n- Fingerprints\\n\\nPlastic\\n\\n- Injection texture\\n- Micro scratches\\n\\nGlass\\n\\n- Dust particles\\n- Accurate reflections\\n- True transparency\\n\\nWood\\n\\n- Natural grain\\n- Surface pores\\n\\nAvoid:\\n\\n- Plastic skin\\n- Wax effect\\n- AI artifacts\\n- Texture repetition\\n- Oversmoothing\\n- Over-sharpening\\n- Painterly appearance\\n- Fake materials\\n\\f---\\n\\n# SMARTPHONE AESTHETIC\\n\\nThe image must genuinely resemble a premium smartphone capture.\\n\\nInclude:\\n\\n- Natural autofocus\\n- Slight handheld imperfections\\n- Realistic sensor grain\\n- Authentic exposure\\n- True smartphone perspective\\n- Natural dynamic range\\n- Accurate colors\\n\\nAvoid:\\n\\n- Cinematic look\\n- Artificial bokeh\\n- Heavy retouching\\n- Extreme sharpening\\n- Advertising perfection\\n\\n---\\n\\n# COMMERCIAL CLARITY\\n\\nThe viewer must immediately understand:\\n\\n1. What the product is.\\n2. How it is used.\\n3. Its material.\\n4. Its approximate size.\\n5. Its real-life context.\\n\\nNever include:\\n\\n- Prices\\n- Discounts\\n- Promotional text\\n- Watermarks\\n- Captions\\n\\f- Interface elements\\n- Medical claims\\n- Performance claims\\n- Before-and-after comparisons\\n\\nDo not add any logo or text that is not already present on the product.\\n\\n---\\n\\n# FINAL OUTPUT\\n\\nGenerate one ultra-photorealistic vertical image (9:16) with an authentic 8K appearance.\\n\\nPrioritize:\\n\\n- Absolute product fidelity\\n- Perfect anatomy\\n- Accurate physics\\n- Natural lighting\\n- Professional optical realism\\n- Ultra-detailed textures\\n- Physically accurate materials\\n- Genuine first-person POV\\n- Authentic premium smartphone aesthetics\\n\\nThe final image must be visually indistinguishable from a real photograph captured naturally by\\na Brazilian consumer or affiliate creator for TikTok Shop Brazil or Shopee Video.\",\"POV_VIDEO\":\"# ULTRA-REALISTIC UNIVERSAL POV PRODUCT VIDEO PROMPT\\n\\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\nMANDATORY REFERENCE\\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\nReference Image 1: Product Image (Required)\\n\\nUse the uploaded product image as the ONLY source of truth.\\n\\nIf the reference image is missing, blurry, incomplete, or inaccessible, do not generate the video.\\n\\nPreserve the product exactly as shown, including:\\n\\n\u2022 Shape\\n\u2022 Dimensions\\n\u2022 Scale\\n\u2022 Colors\\n\u2022 Materials\\n\u2022 Textures\\n\u2022 Surface finish\\n\u2022 Labels\\n\u2022 Logos\\n\u2022 Packaging\\n\u2022 Small visual details\\n\\nNever redesign, stylize, reinterpret, enhance, or replace the product.\\n\\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\nMAIN OBJECTIVE\\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\nCreate an ultra-photorealistic vertical video (9:16) that looks completely indistinguishable from\\nauthentic footage recorded by a real Brazilian person using a premium smartphone while\\nnaturally demonstrating the product for TikTok Shop or Shopee Videos.\\n\\nThe final result must resemble genuine User Generated Content (UGC), casual, spontaneous,\\ntrustworthy and highly realistic.\\n\\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\nFIRST PERSON POV\\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\nThe camera always represents the viewer's own eyes.\\n\\fMaintain a true first-person perspective throughout the entire video.\\n\\nShow ONLY:\\n\\n\u2022 Natural hands\\n\u2022 The product\\n\\nNever show:\\n\\n\u2022 Face\\n\u2022 Eyes\\n\u2022 Body\\n\u2022 Operator reflections\\n\u2022 Mirrors revealing the camera operator\\n\\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\nPRODUCT DEMONSTRATION\\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\nThe hands naturally interact with the product according to its category.\\n\\nPossible actions include:\\n\\n\u2022 Holding\\n\u2022 Rotating\\n\u2022 Turning\\n\u2022 Opening\\n\u2022 Closing\\n\u2022 Pressing\\n\u2022 Sliding\\n\u2022 Folding\\n\u2022 Stretching\\n\u2022 Touching\\n\u2022 Pointing\\n\u2022 Demonstrating important details\\n\u2022 Showing textures\\n\u2022 Showing accessories\\n\u2022 Demonstrating natural use\\n\\nMovements must feel relaxed, spontaneous and unscripted.\\n\\nNever exaggerate gestures.\\n\\fThe interaction should look exactly like a real customer naturally recording the product.\\n\\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\nCAMERA MOVEMENT\\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\nSimulate genuine handheld smartphone recording.\\n\\nInclude:\\n\\n\u2022 Natural handheld movement\\n\u2022 Subtle micro-shakes\\n\u2022 Small breathing motion\\n\u2022 Tiny framing corrections\\n\u2022 Smooth autofocus adjustments\\n\u2022 Slight focus breathing\\n\u2022 Close-up movements\\n\u2022 Natural hand repositioning\\n\\nAvoid:\\n\\n\u2022 Cinematic camera moves\\n\u2022 Dolly shots\\n\u2022 Crane shots\\n\u2022 Fast pans\\n\u2022 Artificial stabilization\\n\u2022 Unrealistic zoom\\n\u2022 Fast rotations\\n\u2022 Sudden camera movements\\n\\nThe camera should always feel handheld.\\n\\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\nLIGHTING\\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\nUse physically accurate lighting.\\n\\nPreferred lighting:\\n\\n\u2022 Soft natural daylight\\n\u2022 Large window light\\n\u2022 Bright indirect sunlight\\n\u2022 Large diffused softbox\\n\\f\u2022 Neutral white LED lighting (5000K\u20135600K)\\n\\nLighting must produce:\\n\\n\u2022 Soft realistic shadows\\n\u2022 Contact shadows\\n\u2022 Smooth highlight roll-off\\n\u2022 Balanced exposure\\n\u2022 High dynamic range\\n\u2022 Realistic reflections\\n\u2022 Accurate white balance\\n\u2022 True product colors\\n\u2022 Natural skin tones\\n\\nAvoid:\\n\\n\u2022 Colored lights\\n\u2022 Artificial HDR\\n\u2022 Excessive contrast\\n\u2022 Burned highlights\\n\u2022 Crushed blacks\\n\u2022 Neon lighting\\n\u2022 Unrealistic glow\\n\u2022 Oversaturation\\n\\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\nCAMERA & OPTICS\\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\nSimulate the image quality of premium flagship smartphones and professional full-frame\\ncameras.\\n\\nPreferred camera references:\\n\\n\u2022 Apple iPhone 16 Pro\\n\u2022 Apple iPhone 15 Pro\\n\u2022 Sony A7R V\\n\u2022 Sony FX3\\n\u2022 Canon EOS R5 Mark II\\n\u2022 Nikon Z8\\n\\nPreferred lens references:\\n\\n\u2022 24mm f\/1.8\\n\\f\u2022 35mm f\/1.4\\n\u2022 50mm f\/1.8\\n\u2022 85mm f\/1.8 Macro\\n\\nOptical characteristics:\\n\\n\u2022 Natural autofocus\\n\u2022 Smooth focus transitions\\n\u2022 Optical depth of field\\n\u2022 Slight lens breathing\\n\u2022 Realistic lens rendering\\n\u2022 Natural foreground separation\\n\u2022 Soft background blur\\n\u2022 Authentic optical compression\\n\\nAvoid:\\n\\n\u2022 Fake blur\\n\u2022 Artificial bokeh\\n\u2022 Over sharpening\\n\u2022 Unrealistic depth of field\\n\u2022 Edge halos\\n\\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\nTEXTURE REALISM\\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\nRender every visible surface with maximum realism.\\n\\nPreserve:\\n\\n\u2022 Natural skin pores\\n\u2022 Fingerprints\\n\u2022 Fine skin texture\\n\u2022 Fabric weave\\n\u2022 Plastic texture\\n\u2022 Metal reflections\\n\u2022 Glass transparency\\n\u2022 Rubber finish\\n\u2022 Wood grain\\n\u2022 Printed labels\\n\u2022 Surface imperfections\\n\u2022 Small scratches\\n\u2022 Dust particles when naturally present\\n\\fAll materials must react to light exactly as they do in the real world.\\n\\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\nRENDER QUALITY\\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\nGenerate the highest possible photorealistic quality.\\n\\nRequirements:\\n\\n\u2022 Ultra-high detail\\n\u2022 Physically Based Rendering (PBR)\\n\u2022 Physically accurate Global Illumination\\n\u2022 Ray-traced reflections\\n\u2022 Ray-traced ambient occlusion\\n\u2022 Realistic indirect lighting\\n\u2022 Natural micro-contrast\\n\u2022 Extremely sharp textures\\n\u2022 Accurate material roughness\\n\u2022 Clean edge definition\\n\u2022 Realistic subsurface scattering on skin\\n\u2022 Correct interaction physics\\n\u2022 Accurate object weight\\n\u2022 High texture fidelity\\n\u2022 Production-quality rendering\\n\\nAvoid:\\n\\n\u2022 AI artifacts\\n\u2022 Texture smearing\\n\u2022 Ghosting\\n\u2022 Geometry distortion\\n\u2022 Floating objects\\n\u2022 Duplicate fingers\\n\u2022 Broken anatomy\\n\u2022 Unrealistic reflections\\n\\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\nCOLOR SCIENCE\\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\nProfessional color reproduction.\\n\\fMaintain:\\n\\n\u2022 Neutral color grading\\n\u2022 True-to-life colors\\n\u2022 Accurate product colors\\n\u2022 Natural skin tones\\n\u2022 Balanced saturation\\n\u2022 Soft contrast\\n\u2022 Clean whites\\n\u2022 Deep natural blacks\\n\\nNever use:\\n\\n\u2022 Cinematic LUTs\\n\u2022 Orange & teal grading\\n\u2022 Vintage filters\\n\u2022 Beauty filters\\n\u2022 Stylized color grading\\n\u2022 Artificial enhancements\\n\\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\nENVIRONMENT\\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\nUse a believable indoor environment.\\n\\nExamples:\\n\\n\u2022 Kitchen\\n\u2022 Living room\\n\u2022 Bedroom\\n\u2022 Home office\\n\u2022 Wooden table\\n\u2022 Neutral countertop\\n\\nThe environment must be clean, organized and realistic.\\n\\nThe background should never distract from the product.\\n\\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\nPRODUCT ACCURACY\\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\nThe product must remain identical to the uploaded reference.\\n\\fNever modify:\\n\\n\u2022 Shape\\n\u2022 Size\\n\u2022 Scale\\n\u2022 Color\\n\u2022 Materials\\n\u2022 Texture\\n\u2022 Labels\\n\u2022 Logos\\n\u2022 Finish\\n\u2022 Packaging\\n\\nNever invent any features that are not visible in the reference.\\n\\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\nSPEECH\\n\\nVideo narration:\\n\\n[PASTE THE SCRIPT HERE]\\n\\nRequirements:\\n\\n\u2022 Portuguese (Brazil) only\\n\u2022 Friendly\\n\u2022 Natural\\n\u2022 Conversational\\n\u2022 Spontaneous\\n\u2022 Clear pronunciation\\n\u2022 Sounds like a real customer\\n\\nNever sound like:\\n\\n\u2022 A television commercial\\n\u2022 A forced advertisement\\n\u2022 An exaggerated sales pitch\\n\\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\nSTRICT RULES\\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\nDo NOT add:\\n\\f\u2022 Subtitles\\n\u2022 Captions\\n\u2022 On-screen text\\n\u2022 Logos\\n\u2022 Watermarks\\n\u2022 User interface\\n\u2022 Buttons\\n\u2022 Timers\\n\u2022 Graphics\\n\u2022 Icons\\n\u2022 Borders\\n\u2022 Decorative elements\\n\u2022 Visual effects\\n\\nNever show:\\n\\n\u2022 Face\\n\u2022 Eyes\\n\u2022 Body\\n\u2022 Camera operator\\n\u2022 Reflections revealing the operator\\n\\nNever:\\n\\n\u2022 Distort the product\\n\u2022 Replace the product\\n\u2022 Stylize the product\\n\u2022 Change proportions\\n\u2022 Change colors\\n\u2022 Invent new details\\n\\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\nFINAL OUTPUT\\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\nProduce an ultra-photorealistic vertical video (9:16) visually indistinguishable from authentic\\nfootage captured by a real person using a premium smartphone or professional full-frame\\ncamera.\\n\\nThe final result must exhibit:\\n\\n\u2022 Maximum photorealism\\n\u2022 Premium optical quality\\n\\f\u2022 Natural handheld movement\\n\u2022 Realistic lighting\\n\u2022 True material rendering\\n\u2022 Extremely sharp textures\\n\u2022 Accurate physics\\n\u2022 Professional color science\\n\u2022 Zero visible AI artifacts\\n\u2022 Zero anatomical errors\\n\u2022 Zero texture defects\\n\u2022 Zero rendering glitches\\n\\nThe finished video must look like authentic UGC content created for TikTok Shop or Shopee\\nVideos and be immediately ready for editing in CapCut.\",\"UGC_IMAGE\":\"# UNIVERSAL ULTRA-REALISTIC UGC IMAGE PROMPT\\n\\n## Mandatory References (Required Order)\\n1. Influencer reference image.\\n2. Product reference image.\\n\\nBoth references are mandatory and must be provided in the exact order. Do not generate the\\nimage if either reference is missing, unclear, inaccessible, or in the wrong order.\\n\\n---\\n\\n## Objective\\n\\nCreate an ultra-photorealistic vertical UGC (User Generated Content) image in a 9:16 aspect\\nratio that is visually indistinguishable from a real smartphone photograph captured by a Brazilian\\ncontent creator for TikTok Shop Brazil or Shopee Video.\\n\\nThe influencer must naturally wear, hold, demonstrate, test, apply, assemble, organize, or use\\nthe exact referenced product in the most believable way for its category.\\n\\nThe result must look like authentic user-generated content, never like CGI, digital art, stock\\nphotography, studio advertising, or AI-generated imagery.\\n\\n---\\n\\n## Influencer Identity\\n\\nReference Image 1 is the only valid source for the influencer.\\n\\nPreserve exactly:\\n\\n- Face\\n- Facial proportions\\n- Apparent age\\n- Skin tone\\n- Natural skin texture\\n- Eyes\\n- Eyebrows\\n- Eyelashes\\n- Nose\\n- Lips\\n- Teeth\\n- Jawline\\n- Ears\\n\\f- Hairstyle\\n- Hair color\\n- Hair texture\\n- Individual hair strands\\n- Body proportions\\n- Body type\\n- Natural expression\\n- Distinctive characteristics\\n\\nDo not beautify, stylize, reshape, rejuvenate, age, replace, or reinterpret the influencer.\\n\\nMaintain realistic pores, expression lines, peach fuzz, natural lips, authentic skin transitions and\\neye moisture.\\n\\nAvoid plastic skin, wax appearance, AI artifacts, excessive smoothing, beauty filters, doll-like\\nfaces and artificial symmetry.\\n\\n---\\n\\n## Product Fidelity\\n\\nReference Image 2 is the only source of truth.\\n\\nPreserve exactly:\\n\\n- Category\\n- Model\\n- Version\\n- Dimensions\\n- Scale\\n- Shape\\n- Colors\\n- Materials\\n- Texture\\n- Fabric\\n- Finish\\n- Packaging\\n- Logos\\n- Labels\\n- Existing typography\\n- Accessories\\n- Stitching\\n- Construction\\n- Surface details\\n\\fNever redesign, recolor, resize, improve, repair, stylize or invent any detail.\\n\\nDo not add labels, logos, text or accessories that are not present in the reference.\\n\\n---\\n\\n## Natural Interaction\\n\\nAutomatically choose the most believable interaction according to the product category.\\n\\nThe influencer must interact naturally while respecting:\\n\\n- Weight\\n- Scale\\n- Function\\n- Materials\\n- Construction\\n\\nThe product must appear comfortable, believable and correctly handled.\\n\\nNever invent features or benefits.\\n\\n---\\n\\n## Composition\\n\\nChoose the framing that best showcases the product:\\n\\n- Medium shot\\n- Medium close-up\\n- Full body\\n- Product-focused composition\\n\\nThe product must remain:\\n\\n- Fully visible\\n- Correctly scaled\\n- Immediately recognizable\\n- Never obstructed\\n\\nExpressions, posture and gestures must feel spontaneous and relaxed.\\n\\nAvoid catalog poses or exaggerated commercial expressions.\\n\\f---\\n\\n## Environment\\n\\nAutomatically generate the most realistic Brazilian environment for the product.\\n\\nExamples:\\n\\n- Bedroom\\n- Living room\\n- Kitchen\\n- Bathroom\\n- Office\\n- Store\\n- Boutique\\n- Gym\\n- Garden\\n- Balcony\\n- Garage\\n- Workshop\\n- Outdoor area\\n\\nThe environment must look natural, lived-in and functional without distracting from the product.\\n\\n---\\n\\n## Human Anatomy\\n\\nGenerate anatomically perfect:\\n\\n- Face\\n- Neck\\n- Arms\\n- Hands\\n- Five fingers per visible hand\\n- Fingernails\\n- Legs\\n- Feet\\n\\nHands must grip the product naturally.\\n\\nAvoid:\\n\\f- Extra fingers\\n- Missing fingers\\n- Broken anatomy\\n- Floating limbs\\n- Impossible poses\\n- AI hand artifacts\\n\\n---\\n\\n## Physical Realism\\n\\nRespect real-world physics.\\n\\nMaintain:\\n\\n- Gravity\\n- Weight distribution\\n- Correct perspective\\n- Contact shadows\\n- Fabric tension\\n- Natural wrinkles\\n- Material flexibility\\n- Accurate reflections\\n- Glass refraction\\n- Surface interaction\\n- Product-body interaction\\n\\nNothing should float or intersect incorrectly.\\n\\n---\\n\\n## Lighting\\n\\nUse physically accurate natural lighting.\\n\\nPreferred lighting:\\n\\n- Soft daylight through windows\\n- Bright cloudy daylight\\n- Golden hour sunlight\\n- Natural indoor ambient lighting\\n- Soft bounced light\\n\\nMaintain:\\n\\f- Global illumination\\n- Correct light direction\\n- Neutral white balance\\n- Natural exposure\\n- Soft shadows\\n- Contact shadows\\n- Accurate highlights\\n- Natural reflections\\n- Wide dynamic range\\n- Realistic color reproduction\\n\\nAvoid:\\n\\n- Flash\\n- Neon lighting\\n- Artificial glow\\n- Heavy HDR\\n- Crushed shadows\\n- Burned highlights\\n- Oversaturated colors\\n\\n---\\n\\n## Camera & Lens\\n\\nSimulate a genuine photo captured using a flagship smartphone or professional mirrorless\\ncamera.\\n\\nReference quality:\\n\\n- iPhone 16 Pro\\n- Samsung Galaxy S25 Ultra\\n- Google Pixel 10 Pro\\n- Sony A7R V\\n- Canon EOS R5 Mark II\\n- Nikon Z8\\n\\nLens simulation:\\n\\n- 24mm\\n- 35mm\\n- 50mm\\n\\fCharacteristics:\\n\\n- Natural perspective\\n- Minimal distortion\\n- Fast autofocus\\n- High microcontrast\\n- Edge-to-edge sharpness\\n- Slight natural depth of field\\n- Subtle optical imperfections\\n\\nAvoid excessive cinematic blur or unrealistic bokeh.\\n\\n---\\n\\n## Rendering & Texture Quality\\n\\nMaximum photorealism.\\n\\nRender using physically accurate materials with:\\n\\n- Physically Based Rendering (PBR)\\n- Ray-traced reflections\\n- Ray-traced shadows\\n- Global illumination\\n- Film-quality rendering\\n- Natural color science\\n- Accurate material response\\n- High dynamic range\\n- Ultra-realistic microcontrast\\n\\nPreserve extremely fine details:\\n\\n- Skin pores\\n- Peach fuzz\\n- Individual hair strands\\n- Eyelashes\\n- Fabric fibers\\n- Stitching\\n- Natural wrinkles\\n- Metallic finishes\\n- Plastic microtexture\\n- Wood grain\\n- Glass reflections\\n- Surface imperfections\\n\\fAvoid:\\n\\n- CGI appearance\\n- Plastic materials\\n- Wax skin\\n- AI texture artifacts\\n- Watercolor effect\\n- Oversharpening\\n- Low-resolution textures\\n\\n---\\n\\n## Smartphone UGC Aesthetic\\n\\nThe final image must genuinely feel captured by a real Brazilian creator using a premium\\nsmartphone.\\n\\nMaintain:\\n\\n- Natural framing\\n- Real autofocus\\n- Slight handheld imperfections\\n- Real smartphone HDR\\n- Natural exposure variation\\n- Authentic sensor texture\\n- Genuine everyday realism\\n\\nNever look like:\\n\\n- Studio photography\\n- Fashion campaign\\n- Commercial advertising\\n- CGI\\n- AI-generated artwork\\n\\n---\\n\\n## Restrictions\\n\\nDo not add:\\n\\n- Text\\n- Captions\\n\\f- Watermarks\\n- Prices\\n- Discounts\\n- Promotional elements\\n- Medical claims\\n- Before\/after comparisons\\n- Interface elements\\n- Logos not present on the product\\n\\n---\\n\\n## Final Output\\n\\nGenerate one ultra-photorealistic vertical **9:16** image with an **8K-quality appearance**.\\n\\nPrioritize:\\n\\n- Absolute influencer fidelity\\n- Absolute product fidelity\\n- Perfect human anatomy\\n- Physically accurate lighting\\n- Realistic optics\\n- Authentic skin microtexture\\n- Premium material rendering\\n- Natural Brazilian environments\\n- Smartphone UGC realism\\n- Professional image quality\\n\\nThe final result must be visually indistinguishable from a genuine photograph captured by a real\\nBrazilian content creator naturally presenting the exact uploaded product for TikTok Shop Brazil\\nor Shopee Video.\",\"UGC_VIDEO\":\"# UNIVERSAL IMAGE-TO-VIDEO PROMPT (UGC)\\n\\n## MANDATORY REFERENCE\\n\\n**Reference Image 1:** The uploaded frame (mandatory).\\n\\nUse the uploaded image as the only visual source of truth. Preserve the influencer's identity,\\nfacial features, hairstyle, skin tone, body proportions, clothing, product, environment, camera\\nangle, composition, lighting direction, colors, and overall scene exactly as shown.\\n\\nDo not generate the video if the reference image is missing, unclear, or inaccessible.\\n\\n---\\n\\n# MAIN OBJECTIVE\\n\\nCreate an ultra-photorealistic vertical video (9:16) that naturally brings the reference image to\\nlife.\\n\\nThe animation must feel like a genuine smartphone recording captured by a real person,\\nmaintaining perfect continuity between every frame.\\n\\nThe final result must be visually indistinguishable from authentic User Generated Content\\n(UGC).\\n\\n---\\n\\n# IDENTITY PRESERVATION\\n\\nMaintain exactly:\\n\\n- Face\\n- Hairstyle\\n- Hair color\\n- Skin tone\\n- Body proportions\\n- Facial features\\n- Age\\n- Clothing\\n- Accessories\\n- Makeup\\n- Expression style\\n\\nNever alter or reinterpret the influencer's appearance.\\n\\f---\\n\\n# PRODUCT PRESERVATION\\n\\nMaintain the product exactly as shown.\\n\\nPreserve:\\n\\n- Size\\n- Scale\\n- Shape\\n- Geometry\\n- Materials\\n- Texture\\n- Labels\\n- Logos\\n- Colors\\n- Surface finish\\n- Reflections\\n- Transparency\\n- Details\\n\\nNever invent features or deform the product.\\n\\n---\\n\\n# VISUAL REALISM\\n\\nEverything must appear physically real.\\n\\nSkin:\\n\\n- Natural pores\\n- Fine facial hair\\n- Subsurface scattering\\n- Slight skin imperfections\\n- Natural oils\\n- Soft realistic highlights\\n- Realistic shadow transitions\\n\\nHair:\\n\\n- Individual strands\\n\\f- Fine flyaway hairs\\n- Natural volume\\n- Correct translucency\\n- Physically accurate movement\\n\\nEyes:\\n\\n- Realistic moisture\\n- Natural reflections\\n- Correct iris detail\\n- Natural blinking\\n\\nClothing:\\n\\n- High-frequency fabric weave\\n- Realistic wrinkles\\n- Compression folds\\n- Natural stretching\\n- Correct fabric weight\\n- Accurate fiber reflections\\n\\nEnvironment:\\n\\n- Realistic materials\\n- Natural reflections\\n- Correct contact shadows\\n- Accurate depth perception\\n- Natural atmospheric perspective\\n\\n---\\n\\n# LIGHTING, CAMERA & RENDER QUALITY\\n\\nThe video must be visually indistinguishable from footage captured using a flagship smartphone\\nor a professional full-frame cinema camera.\\n\\n## Lighting\\n\\nUse physically accurate lighting simulation.\\n\\nInclude:\\n\\n- Physically Based Rendering (PBR)\\n- Ray-traced Global Illumination\\n\\f- Ray-traced Reflections\\n- Ambient Occlusion\\n- Natural indirect bounce light\\n- Inverse-square light falloff\\n- Physically correct shadow softness\\n- Realistic skin specular highlights\\n- Wide dynamic range\\n- Natural color science\\n- Accurate white balance\\n- Soft environmental reflections\\n- Stable exposure throughout the video\\n\\nPreferred lighting:\\n\\n- Soft window light\\n- Natural daylight\\n- Golden hour when appropriate\\n- Diffused overcast daylight\\n- Soft practical indoor lighting\\n\\nAvoid:\\n\\n- Artificial HDR\\n- Oversaturation\\n- Heavy bloom\\n- Unrealistic lens flare\\n- Overexposure\\n- Crushed blacks\\n- Plastic lighting\\n\\n---\\n\\n# CAMERA SIMULATION\\n\\nSimulate footage captured using one of these cameras:\\n\\n- Sony A7R V\\n- Sony FX3\\n- Sony FX6\\n- Canon EOS R5 Mark II\\n- Canon C70\\n- Nikon Z8\\n- RED V-Raptor\\n- ARRI Alexa Mini LF\\n\\f- Blackmagic Cinema Camera 6K Full Frame\\n\\nThe video must retain the spontaneous feel of a premium smartphone recording while benefiting\\nfrom the optical realism of these professional systems.\\n\\n---\\n\\n# LENS SIMULATION\\n\\nSimulate premium optics such as:\\n\\n- Sony G Master\\n- Canon RF L\\n- Sigma Art\\n- Leica Summilux\\n- Leica APO-Summicron\\n- Zeiss Otus\\n\\nPreferred focal lengths:\\n\\n- 24mm\\n- 35mm\\n- 50mm\\n- 85mm\\n\\nSimulated aperture:\\n\\n- f\/1.4\\n- f\/1.8\\n- f\/2.0\\n- f\/2.8\\n\\nProduce:\\n\\n- Natural optical bokeh\\n- Smooth depth transition\\n- Accurate edge sharpness\\n- Slight natural lens breathing\\n- Realistic optical imperfections\\n\\n---\\n\\n# CAMERA MOVEMENT\\n\\fCamera movement must feel entirely human.\\n\\nInclude:\\n\\n- Gentle handheld stabilization\\n- Small natural micro-shakes\\n- Slow push-in when appropriate\\n- Slight parallax\\n- Natural breathing movement\\n- Small framing corrections\\n\\nAvoid:\\n\\n- Static shots\\n- Robotic stabilization\\n- Aggressive zoom\\n- Fast pans\\n- Whip movements\\n- Cinematic camera moves\\n- Artificial transitions\\n\\n---\\n\\n# INFLUENCER BEHAVIOR\\n\\nThe influencer behaves exactly like a real content creator.\\n\\nInclude:\\n\\n- Relaxed posture\\n- Natural breathing\\n- Soft blinking\\n- Small head movements\\n- Authentic smile\\n- Genuine eye contact\\n- Natural facial expressions\\n- Comfortable hand gestures\\n- Realistic body language\\n\\nAvoid:\\n\\n- Overacting\\n- Sales exaggeration\\n- Robotic movement\\n\\f- Artificial expressions\\n\\n---\\n\\n# PRODUCT INTERACTION\\n\\nThe influencer interacts naturally with the product.\\n\\nMaintain:\\n\\n- Correct grip\\n- Realistic finger pressure\\n- Natural object weight\\n- Accurate movement\\n- Correct contact shadows\\n\\nNever:\\n\\n- Stretch\\n- Deform\\n- Change scale\\n- Invent product features\\n\\n---\\n\\n# SPEECH\\n\\nInfluencer Script:\\n\\n[PASTE THE INFLUENCER'S SCRIPT HERE]\\n\\nRequirements:\\n\\n- Portuguese only\\n- Native Brazilian speech\\n- Soft S\u00e3o Paulo influencer accent\\n- Natural rhythm\\n- Friendly tone\\n- Confident delivery\\n- Conversational pacing\\n- Perfect lip synchronization\\n\\n---\\n\\f# RENDER QUALITY\\n\\nRender at maximum realism.\\n\\nRequirements:\\n\\n- Ultra-photorealistic rendering\\n- Native ultra-high-resolution appearance\\n- Extremely high texture fidelity\\n- Film-quality temporal consistency\\n- Physically Based Rendering (PBR)\\n- Ray-traced Global Illumination\\n- Ray-traced Reflections\\n- High-quality anti-aliasing\\n- Stable exposure\\n- Stable white balance\\n- Stable colors\\n- Crisp details\\n- Natural micro-contrast\\n- Accurate skin rendering\\n- High-frequency texture detail\\n- Realistic translucency\\n- Clean edges\\n- Excellent dynamic range\\n\\nEvery visible material must preserve realistic micro-details.\\n\\n---\\n\\n# FINAL STYLE\\n\\nThe finished video must feel like:\\n\\n- Authentic UGC\\n- Genuine TikTok or Instagram Reel\\n- Real influencer content\\n- Casual smartphone recording\\n- Human\\n- Natural\\n- Modern\\n- Believable\\n\\nIt must never resemble an advertisement, CGI animation, or AI-generated content.\\n\\f---\\n\\n# NEGATIVE PROMPT\\n\\nDo NOT generate:\\n\\n- Watermarks\\n- Logos\\n- Text\\n- Captions\\n- Subtitles\\n- Graphics\\n- Branding\\n- UI elements\\n- Timers\\n- Stickers\\n- Borders\\n- Filters\\n- Artificial sharpening\\n- Plastic skin\\n- Beauty filters\\n- Oversaturation\\n- HDR artifacts\\n- Flickering\\n- Ghosting\\n- Motion interpolation artifacts\\n- Texture crawling\\n- Shimmering\\n- Banding\\n- Compression artifacts\\n- Noise\\n- Low resolution\\n- Frame warping\\n- Facial distortion\\n- Extra fingers\\n- Extra limbs\\n- Incorrect anatomy\\n- Product deformation\\n- AI hallucinations\\n- Unrealistic physics\\n- Cartoon appearance\\n- Stylized rendering\\n\\n---\\n\\f# OUTPUT\\n\\nGenerate an ultra-photorealistic 9:16 vertical UGC video with seamless continuity from the\\nreference image, preserving the influencer, product, environment, composition, and lighting\\nexactly as provided. The result must be visually indistinguishable from a real video recorded by\\na person using a premium smartphone or professional camera, with maximum realism, natural\\nmotion, physically accurate lighting, high-fidelity textures, and flawless image quality.\"});\r\n  const CATEGORY_ROWS=[[\"Roupas femininas e roupas \u00edntimas femininas\",\"roupas-femininas\",\"Vestido Casual\",\"Vestido no Cabide\",\"roupa feminina ou roupa \u00edntima feminina\"],[\"Acess\u00f3rios de moda\",\"acessorios-moda\",\"Usando Acess\u00f3rio\",\"Detalhes do Acess\u00f3rio\",\"acess\u00f3rio de moda\"],[\"Esportes e atividades ao ar livre\",\"esportes-ar-livre\",\"Produto em Uso\",\"Uso Esportivo\",\"produto esportivo ou para atividade ao ar livre\"],[\"T\u00eaxteis e m\u00f3veis\",\"texteis-moveis\",\"Mostrando Tecido\",\"Textura do Tecido\",\"produto t\u00eaxtil ou item para ambientes\"],[\"Beleza e cuidados pessoais\",\"beleza-cuidados\",\"Aplicando Produto\",\"Rotina de Beleza\",\"produto de beleza ou cuidado pessoal\"],[\"Telefones e eletr\u00f4nicos\",\"telefones-eletronicos\",\"Testando Dispositivo\",\"Uso do Aparelho\",\"telefone ou produto eletr\u00f4nico\"],[\"Suprimentos para animais de estima\u00e7\u00e3o\",\"suprimentos-pets\",\"Produto para Pet\",\"Uso com Pet\",\"produto para animal de estima\u00e7\u00e3o\"],[\"Brinquedos e passatempos\",\"brinquedos-passatempos\",\"Brincando com Produto\",\"Brincadeira em A\u00e7\u00e3o\",\"brinquedo ou produto de passatempo\"],[\"Alimentos e bebidas\",\"alimentos-bebidas\",\"Provando Produto\",\"Produto Servido\",\"alimento ou bebida\"],[\"Beb\u00ea e maternidade\",\"bebe-maternidade\",\"Produto Materno\",\"Uso com Beb\u00ea\",\"produto para beb\u00ea ou maternidade\"],[\"Sa\u00fade\",\"saude\",\"Rotina Saud\u00e1vel\",\"Produto em Uso\",\"produto da categoria de sa\u00fade\"],[\"Roupas masculinas e roupas \u00edntimas masculinas\",\"roupas-masculinas\",\"Provando Roupa\",\"Detalhes da Pe\u00e7a\",\"roupa masculina ou roupa \u00edntima masculina\"],[\"Colecion\u00e1veis\",\"colecionaveis\",\"Mostrando Cole\u00e7\u00e3o\",\"Item Colecion\u00e1vel\",\"item colecion\u00e1vel\"],[\"Malas e bolsas\",\"malas-bolsas\",\"Usando Bolsa\",\"Detalhes da Bolsa\",\"mala ou bolsa\"],[\"Suprimentos dom\u00e9sticos\",\"suprimentos-domesticos\",\"Solu\u00e7\u00e3o Dom\u00e9stica\",\"Uso em Casa\",\"suprimento dom\u00e9stico\"],[\"Utens\u00edlios de cozinha\",\"utensilios-cozinha\",\"Utens\u00edlio em Uso\",\"Preparo na Cozinha\",\"utens\u00edlio de cozinha\"],[\"M\u00f3veis\",\"moveis\",\"Mostrando M\u00f3vel\",\"Detalhes do M\u00f3vel\",\"m\u00f3vel\"],[\"Ferramentas e hardware\",\"ferramentas-hardware\",\"Testando Ferramenta\",\"Ferramenta em Uso\",\"ferramenta ou item de hardware\"],[\"Produtos virtuais\",\"produtos-virtuais\",\"Solu\u00e7\u00e3o Digital\",\"Uso Digital\",\"produto virtual ou interface digital\"],[\"Reformas residenciais\",\"reformas-residenciais\",\"Antes e Depois\",\"Reforma em A\u00e7\u00e3o\",\"produto ou solu\u00e7\u00e3o para reforma residencial\"],[\"Eletrodom\u00e9sticos\",\"eletrodomesticos\",\"Testando Eletrodom\u00e9stico\",\"Aparelho em Uso\",\"eletrodom\u00e9stico\"],[\"Joias, acess\u00f3rios e derivados\",\"joias-acessorios\",\"Usando Joia\",\"Detalhes da Joia\",\"joia ou acess\u00f3rio\"],[\"Automotivo e moto\",\"automotivo-moto\",\"Acess\u00f3rio Automotivo\",\"Uso no Ve\u00edculo\",\"produto automotivo ou para moto\"],[\"Livros, revistas e \u00e1udios\",\"livros-revistas-audios\",\"Mostrando Livro\",\"Leitura em M\u00e3os\",\"livro, revista ou produto de \u00e1udio\"],[\"Sapatos\",\"sapatos\",\"Cal\u00e7ando Sapato\",\"Detalhes do Sapato\",\"sapato\"],[\"Moda para crian\u00e7as\",\"moda-criancas\",\"Look Infantil\",\"Detalhes Infantis\",\"pe\u00e7a de moda infantil\"],[\"Computadores e equipamentos de escrit\u00f3rio\",\"computadores-escritorio\",\"Testando Equipamento\",\"Uso no Escrit\u00f3rio\",\"computador ou equipamento de escrit\u00f3rio\"]];\r\n  const categoryConfigs=CATEGORY_ROWS.map(([category,slug,ugc,pov,product])=>({category,slug,ugc,pov,product}));\r\n  const categories=categoryConfigs.map(x=>x.category);\r\n  const MEDIA_ROWS=[[0,\"UGC\",\"UGC - Vestido Casual\",\"Vestido Casual em composi\u00e7\u00e3o UGC, conforme o conte\u00fado validado da biblioteca.\",\"V\u00eddeo UGC correspondente ao mesmo conte\u00fado e t\u00edtulo da imagem selecionada.\",\"https:\/\/comunidadedasias.b-cdn.net\/Biblioteca%20de%20prompts\/ROUPAS%20FEMININAS%20E%20ROUPAS%20INTIMAS%20FEMININAS\/VESTIDOS%20FEMININOS\/VESTIDOS%20CASUAIS\/UGC\/IMAGEM\/IMAGEM_UGC_VESTIDO_CASUAL.jpeg\",\"https:\/\/comunidadedasias.b-cdn.net\/Biblioteca%20de%20prompts\/ROUPAS%20FEMININAS%20E%20ROUPAS%20INTIMAS%20FEMININAS\/VESTIDOS%20FEMININOS\/VESTIDOS%20CASUAIS\/UGC\/VIDEO\/UGC_VIDEO_VESTIDO_CASUAL.mp4\",[\"Imagem da influenciadora\",\"Imagem de refer\u00eancia do produto: Vestidos Casuais\"],true],[0,\"POV\",\"POV - Vestido Casual no Cabide\",\"Vestido Casual no Cabide em composi\u00e7\u00e3o POV, conforme o conte\u00fado validado da biblioteca.\",\"V\u00eddeo POV correspondente ao mesmo conte\u00fado e t\u00edtulo da imagem selecionada.\",\"https:\/\/comunidadedasias.b-cdn.net\/Biblioteca%20de%20prompts\/ROUPAS%20FEMININAS%20E%20ROUPAS%20INTIMAS%20FEMININAS\/VESTIDOS%20FEMININOS\/VESTIDOS%20CASUAIS\/POV\/IMAGEM\/POV_IMAGEM_VESTIDO_CASUAL.jpeg\",\"https:\/\/comunidadedasias.b-cdn.net\/Biblioteca%20de%20prompts\/ROUPAS%20FEMININAS%20E%20ROUPAS%20INTIMAS%20FEMININAS\/VESTIDOS%20FEMININOS\/VESTIDOS%20CASUAIS\/POV\/VIDEO\/POV_VIDEO_VESTIDO_CASUAL_NO_CABIDE.mp4\",[\"Imagem de refer\u00eancia do produto: Vestidos Casuais\"],true],[1,\"UGC\",\"UGC - \u00d3culos de Sol na \u00d3tica\",\"\u00d3culos de Sol na \u00d3tica em composi\u00e7\u00e3o UGC, conforme o conte\u00fado validado da biblioteca.\",\"V\u00eddeo UGC correspondente ao mesmo conte\u00fado e t\u00edtulo da imagem selecionada.\",\"https:\/\/comunidadedasias.b-cdn.net\/Biblioteca%20de%20prompts\/ACESSORIOS%20DE%20MODA\/OCULOS\/OCULOS%20DE%20SOL\/UGC\/IMAGEM\/UGC_IMAGEM_OCULOS_DE_SOL_MULHER_NA_%C3%93TICA.jpeg\",\"https:\/\/comunidadedasias.b-cdn.net\/Biblioteca%20de%20prompts\/ACESSORIOS%20DE%20MODA\/OCULOS\/OCULOS%20DE%20SOL\/UGC\/VIDEO\/UGC_VIDEO_OCULOS_DE_SOL_MULHER%20NA%20%C3%93TICA.mp4\",[\"Imagem da influenciadora\",\"Imagem de refer\u00eancia do produto: Oculos De Sol\"],true],[1,\"POV\",\"POV - \u00d3culos de Sol na \u00d3tica\",\"\u00d3culos de Sol na \u00d3tica em composi\u00e7\u00e3o POV, conforme o conte\u00fado validado da biblioteca.\",\"V\u00eddeo POV correspondente ao mesmo conte\u00fado e t\u00edtulo da imagem selecionada.\",\"https:\/\/comunidadedasias.b-cdn.net\/Biblioteca%20de%20prompts\/ACESSORIOS%20DE%20MODA\/OCULOS\/OCULOS%20DE%20SOL\/POV\/IMAGEM\/POV_IMAGEM_OCULOS_DE_SOL_MULHER_NA_OTICA.jpeg\",\"https:\/\/comunidadedasias.b-cdn.net\/Biblioteca%20de%20prompts\/ACESSORIOS%20DE%20MODA\/OCULOS\/OCULOS%20DE%20SOL\/POV\/VIDEO\/POV_VIDEO_OCULOS_DE_SOL_MULHER_NA_OTICA.mp4\",[\"Imagem de refer\u00eancia do produto: Oculos De Sol\"],true],[2,\"UGC\",\"UGC - Legging na Academia\",\"Legging na Academia em composi\u00e7\u00e3o UGC, conforme o conte\u00fado validado da biblioteca.\",\"V\u00eddeo UGC correspondente ao mesmo conte\u00fado e t\u00edtulo da imagem selecionada.\",\"https:\/\/comunidadedasias.b-cdn.net\/Biblioteca%20de%20prompts\/ESPORTES%20E%20ATIVIDADES%20AO%20AR%20LIVRE\/ROUPAS%20ESPORTIVAS%20E%20PARA%20ATIVIDADES%20AO%20AR%20LIVRE\/LEGGINGS%20ESPORTIVOS\/UGC\/IMAGEM\/UGC_IMAGEM_LEGGINGS_ESPORTIVOS_MULHER_NA_OTICA.jpeg\",\"https:\/\/comunidadedasias.b-cdn.net\/Biblioteca%20de%20prompts\/ESPORTES%20E%20ATIVIDADES%20AO%20AR%20LIVRE\/ROUPAS%20ESPORTIVAS%20E%20PARA%20ATIVIDADES%20AO%20AR%20LIVRE\/LEGGINGS%20ESPORTIVOS\/UGC\/VIDEO\/UGC_VIDEO_LEGGINGS_ESPORTIVOS_GAROTA_NA_ACADEMIA.mp4\",[\"Imagem da influenciadora\",\"Imagem de refer\u00eancia do produto: Leggings Esportivos\"],true],[2,\"POV\",\"POV - Legging no Cabide\",\"Legging no Cabide em composi\u00e7\u00e3o POV, conforme o conte\u00fado validado da biblioteca.\",\"V\u00eddeo POV correspondente ao mesmo conte\u00fado e t\u00edtulo da imagem selecionada.\",\"https:\/\/comunidadedasias.b-cdn.net\/Biblioteca%20de%20prompts\/ESPORTES%20E%20ATIVIDADES%20AO%20AR%20LIVRE\/ROUPAS%20ESPORTIVAS%20E%20PARA%20ATIVIDADES%20AO%20AR%20LIVRE\/LEGGINGS%20ESPORTIVOS\/POV\/IMAGEM\/POV_IMAGEM_LEGGINGS_ESPORTIVOS_APRESENTANDO_NO_CABIDE_QUARTO.jpeg\",\"https:\/\/comunidadedasias.b-cdn.net\/Biblioteca%20de%20prompts\/ESPORTES%20E%20ATIVIDADES%20AO%20AR%20LIVRE\/ROUPAS%20ESPORTIVAS%20E%20PARA%20ATIVIDADES%20AO%20AR%20LIVRE\/LEGGINGS%20ESPORTIVOS\/POV\/VIDEO\/UGC_VIDEO_LEGGINGS_ESPORTIVOS_APRESENTANDO_NO_CABIDE_QUARTO.mp4\",[\"Imagem de refer\u00eancia do produto: Leggings Esportivos\"],true],[3,\"UGC\",\"UGC - Coberdrom\",\"Coberdrom em composi\u00e7\u00e3o UGC, conforme o conte\u00fado validado da biblioteca.\",\"V\u00eddeo UGC correspondente ao mesmo conte\u00fado e t\u00edtulo da imagem selecionada.\",\"https:\/\/comunidadedasias.b-cdn.net\/Biblioteca%20de%20prompts\/TEXTEIS%20E%20MOVEIS\/ROUPAS%20DE%20CAMA\/EDREDONS\/UGC\/IMAGEM\/UGC_IMAGEM_ROUPA_DE_CAMA_MULHER_COM_COBERDROM.jpeg\",\"https:\/\/comunidadedasias.b-cdn.net\/Biblioteca%20de%20prompts\/TEXTEIS%20E%20MOVEIS\/ROUPAS%20DE%20CAMA\/EDREDONS\/UGC\/VIDEO\/UGC_VIDEO_ROUPA_DE_CAMA_COM_COBERDROM.mp4\",[\"Imagem da influenciadora\",\"Imagem de refer\u00eancia do produto: Edredons\"],true],[3,\"POV\",\"POV - Coberdrom no Quarto\",\"Coberdrom no Quarto em composi\u00e7\u00e3o POV, conforme o conte\u00fado validado da biblioteca.\",\"V\u00eddeo POV correspondente ao mesmo conte\u00fado e t\u00edtulo da imagem selecionada.\",\"https:\/\/comunidadedasias.b-cdn.net\/Biblioteca%20de%20prompts\/TEXTEIS%20E%20MOVEIS\/ROUPAS%20DE%20CAMA\/EDREDONS\/POV\/IMAGEM\/POV_IMAGEM_ROUPA_DE_CAMA_COBERDROM_QUARTO.jpeg\",\"https:\/\/comunidadedasias.b-cdn.net\/Biblioteca%20de%20prompts\/TEXTEIS%20E%20MOVEIS\/ROUPAS%20DE%20CAMA\/EDREDONS\/POV\/VIDEO\/POV_VIDEO_ROUPA%20DE%20CAMA_COBERDROM_QUARTO.mp4\",[\"Imagem de refer\u00eancia do produto: Edredons\"],true],[4,\"UGC\",\"UGC - Kit Body Splash\",\"Kit Body Splash em composi\u00e7\u00e3o UGC, conforme o conte\u00fado validado da biblioteca.\",\"V\u00eddeo UGC correspondente ao mesmo conte\u00fado e t\u00edtulo da imagem selecionada.\",\"https:\/\/comunidadedasias.b-cdn.net\/Biblioteca%20de%20prompts\/BELEZA%20E%20CUIDADOS%20PESSOAIS\/FRAGANCE\/KITS%20DE%20PERFUME\/UGC\/IMAGEM\/UGC_IMAGEM_FRAGANCE_GAROTA_COM_KIT_BODYSPLASH%20(1).jpeg\",\"https:\/\/comunidadedasias.b-cdn.net\/Biblioteca%20de%20prompts\/BELEZA%20E%20CUIDADOS%20PESSOAIS\/FRAGANCE\/KITS%20DE%20PERFUME\/UGC\/VIDEO\/UGC_VIDEO_FRAGANCE_GAROTA_COM_KIT_BODYSPLASH.mp4\",[\"Imagem da influenciadora\",\"Imagem de refer\u00eancia do produto: Kits De Perfume\"],true],[4,\"POV\",\"POV - Kit Body Splash\",\"Kit Body Splash em composi\u00e7\u00e3o POV, conforme o conte\u00fado validado da biblioteca.\",\"V\u00eddeo POV correspondente ao mesmo conte\u00fado e t\u00edtulo da imagem selecionada.\",\"https:\/\/comunidadedasias.b-cdn.net\/Biblioteca%20de%20prompts\/BELEZA%20E%20CUIDADOS%20PESSOAIS\/FRAGANCE\/KITS%20DE%20PERFUME\/POV\/IMAGEM\/POV_IMAGEM_FRAGANCE_APRESENTANDO_KIT_BODYSPLASH%20(2).jpeg\",\"https:\/\/comunidadedasias.b-cdn.net\/Biblioteca%20de%20prompts\/BELEZA%20E%20CUIDADOS%20PESSOAIS\/FRAGANCE\/KITS%20DE%20PERFUME\/POV\/VIDEO\/POV_VIDEO_FRAGANCE_APRESENTANDO_KIT_BODYSPLASH%20(1).mp4\",[\"Imagem de refer\u00eancia do produto: Kits De Perfume\"],true],[5,\"UGC\",\"UGC - Smartwatch\",\"Smartwatch em composi\u00e7\u00e3o UGC, conforme o conte\u00fado validado da biblioteca.\",\"V\u00eddeo UGC correspondente ao mesmo conte\u00fado e t\u00edtulo da imagem selecionada.\",\"https:\/\/comunidadedasias.b-cdn.net\/Biblioteca%20de%20prompts\/TELEFONES%20E%20ELETRONICOS\/DISPOSITIVOS%20INTELIGENTES%20E%20VESTIVEIS\/SMART%20%20WATCHES\/UGC\/IMAGEM\/UGC_IMAGEM_SMARTWATCHES_MULHER_COM_REL%C3%93GIO.jpeg\",\"https:\/\/comunidadedasias.b-cdn.net\/Biblioteca%20de%20prompts\/TELEFONES%20E%20ELETRONICOS\/DISPOSITIVOS%20INTELIGENTES%20E%20VESTIVEIS\/SMART%20%20WATCHES\/UGC\/VIDEO\/UGC_VIDEO_SMARTWATCHES_MULHER_COM_REL%C3%93GIO.mp4\",[\"Imagem da influenciadora\",\"Imagem de refer\u00eancia do produto: Smart Watches\"],true],[5,\"POV\",\"POV - Smartwatch\",\"Smartwatch em composi\u00e7\u00e3o POV, conforme o conte\u00fado validado da biblioteca.\",\"V\u00eddeo POV correspondente ao mesmo conte\u00fado e t\u00edtulo da imagem selecionada.\",\"https:\/\/comunidadedasias.b-cdn.net\/Biblioteca%20de%20prompts\/TELEFONES%20E%20ELETRONICOS\/DISPOSITIVOS%20INTELIGENTES%20E%20VESTIVEIS\/SMART%20%20WATCHES\/POV\/IMAGEM\/POV_IMAGEM_SMARTWATCHER_MULHER_COM_REL%C3%93GIO.jpeg\",\"https:\/\/comunidadedasias.b-cdn.net\/Biblioteca%20de%20prompts\/TELEFONES%20E%20ELETRONICOS\/DISPOSITIVOS%20INTELIGENTES%20E%20VESTIVEIS\/SMART%20%20WATCHES\/POV\/VIDEO\/POV_VIDEO_SMARTWATCHER_MULHER_COM_REL%C3%93GIO.mp4\",[\"Imagem de refer\u00eancia do produto: Smart Watches\"],true],[6,\"UGC\",\"UGC - Coleira para Pet\",\"Coleira para Pet em composi\u00e7\u00e3o UGC, conforme o conte\u00fado validado da biblioteca.\",\"V\u00eddeo UGC correspondente ao mesmo conte\u00fado e t\u00edtulo da imagem selecionada.\",\"https:\/\/comunidadedasias.b-cdn.net\/Biblioteca%20de%20prompts\/SUPRIMENTOS%20PARA%20ANIMAIS%20DE%20ESTIMACAO\/ACESSORIOS%20PARA%20CAES%20E%20GATOS\/COLEIRAS%2C%20PEITORAIS%20E%20GUIAS\/UGC\/IMAGEM\/UGC_IMAGEM_COLEIRA_PET.jpeg\",\"https:\/\/comunidadedasias.b-cdn.net\/Biblioteca%20de%20prompts\/SUPRIMENTOS%20PARA%20ANIMAIS%20DE%20ESTIMACAO\/ACESSORIOS%20PARA%20CAES%20E%20GATOS\/COLEIRAS%2C%20PEITORAIS%20E%20GUIAS\/UGC\/VIDEO\/UGC_VIDEO_COLEIRA_PET.mp4\",[\"Imagem da influenciadora\",\"Imagem de refer\u00eancia do produto: Coleiras, Peitorais E Guias\"],true],[6,\"POV\",\"POV - Coleira para Pet\",\"Coleira para Pet em composi\u00e7\u00e3o POV, conforme o conte\u00fado validado da biblioteca.\",\"V\u00eddeo POV correspondente ao mesmo conte\u00fado e t\u00edtulo da imagem selecionada.\",\"https:\/\/comunidadedasias.b-cdn.net\/Biblioteca%20de%20prompts\/SUPRIMENTOS%20PARA%20ANIMAIS%20DE%20ESTIMACAO\/ACESSORIOS%20PARA%20CAES%20E%20GATOS\/COLEIRAS%2C%20PEITORAIS%20E%20GUIAS\/POV\/IMAGEM\/POV_IMAGEM_COLEIRA_PET.jpeg\",\"https:\/\/comunidadedasias.b-cdn.net\/Biblioteca%20de%20prompts\/SUPRIMENTOS%20PARA%20ANIMAIS%20DE%20ESTIMACAO\/ACESSORIOS%20PARA%20CAES%20E%20GATOS\/COLEIRAS%2C%20PEITORAIS%20E%20GUIAS\/POV\/VIDEO\/POV_VIDEO_COLEIRA_PET.mp4\",[\"Imagem de refer\u00eancia do produto: Coleiras, Peitorais E Guias\"],true],[7,\"UGC\",\"UGC - Carrinhos de Brinquedo\",\"Carrinhos de Brinquedo em composi\u00e7\u00e3o UGC, conforme o conte\u00fado validado da biblioteca.\",\"V\u00eddeo UGC correspondente ao mesmo conte\u00fado e t\u00edtulo da imagem selecionada.\",\"https:\/\/comunidadedasias.b-cdn.net\/Biblioteca%20de%20prompts\/BRINQUEDOS%20E%20PASSATEMPOS\/BRINQUEDOS%20CLASSICOS%20E%20INOVADORES\/MODELOS%20E%20VEICULOS%20DE%20BRINQUEDO\/UGC\/IMAGEM\/UGC_IMAGEM_BRINQUEDOS_CLASSICOS_CARRINHOS_DE_BRINQUEDO.jpeg\",\"https:\/\/comunidadedasias.b-cdn.net\/Biblioteca%20de%20prompts\/BRINQUEDOS%20E%20PASSATEMPOS\/BRINQUEDOS%20CLASSICOS%20E%20INOVADORES\/MODELOS%20E%20VEICULOS%20DE%20BRINQUEDO\/UGC\/VIDEO\/UGC_VIDEO_BRINQUEDOS_CLASSICOS_CARRINHOS_DE_BRINQUEDO.mp4\",[\"Imagem da influenciadora\",\"Imagem de refer\u00eancia do produto: Modelos E Veiculos De Brinquedo\"],true],[7,\"POV\",\"POV - Carrinhos de Brinquedo\",\"Carrinhos de Brinquedo em composi\u00e7\u00e3o POV, conforme o conte\u00fado validado da biblioteca.\",\"V\u00eddeo POV correspondente ao mesmo conte\u00fado e t\u00edtulo da imagem selecionada.\",\"https:\/\/comunidadedasias.b-cdn.net\/Biblioteca%20de%20prompts\/BRINQUEDOS%20E%20PASSATEMPOS\/BRINQUEDOS%20CLASSICOS%20E%20INOVADORES\/MODELOS%20E%20VEICULOS%20DE%20BRINQUEDO\/POV\/IMAGEM\/POV_IMAGEM_BRINQUEDOS_CLASSICOS_CARRINHOS_DE_BRINQUEDO.jpeg\",\"https:\/\/comunidadedasias.b-cdn.net\/Biblioteca%20de%20prompts\/BRINQUEDOS%20E%20PASSATEMPOS\/BRINQUEDOS%20CLASSICOS%20E%20INOVADORES\/MODELOS%20E%20VEICULOS%20DE%20BRINQUEDO\/POV\/VIDEO\/POV_VIDEO_BRINQUEDOS_CLASSICOS_CARRINHOS_DE_BRINQUEDO.mp4\",[\"Imagem de refer\u00eancia do produto: Modelos E Veiculos De Brinquedo\"],true],[8,\"UGC\",\"UGC - Caf\u00e9 Especial\",\"Caf\u00e9 Especial em composi\u00e7\u00e3o UGC, conforme o conte\u00fado validado da biblioteca.\",\"V\u00eddeo UGC correspondente ao mesmo conte\u00fado e t\u00edtulo da imagem selecionada.\",\"https:\/\/comunidadedasias.b-cdn.net\/Biblioteca%20de%20prompts\/ALIMENTOS%20E%20BEBIDAS\/BEBIDAS\/CAFE\/UGC\/IMAGEM\/UGC_IMAGEM_BEBIDAS_CAFE_ESPECIAL.jpeg\",\"https:\/\/comunidadedasias.b-cdn.net\/Biblioteca%20de%20prompts\/ALIMENTOS%20E%20BEBIDAS\/BEBIDAS\/CAFE\/UGC\/VIDEO\/UGC_VIDEO_BEBIDAS_CAFE_ESPECIAL.mp4\",[\"Imagem da influenciadora\",\"Imagem de refer\u00eancia do produto: Cafe\"],true],[8,\"POV\",\"POV - Caf\u00e9 Especial\",\"Caf\u00e9 Especial em composi\u00e7\u00e3o POV, conforme o conte\u00fado validado da biblioteca.\",\"V\u00eddeo POV correspondente ao mesmo conte\u00fado e t\u00edtulo da imagem selecionada.\",\"https:\/\/comunidadedasias.b-cdn.net\/Biblioteca%20de%20prompts\/ALIMENTOS%20E%20BEBIDAS\/BEBIDAS\/CAFE\/POV\/IMAGEM\/UGC_MAGEM_BEBIDAS_CAFE_ESPECIAL.jpeg\",\"https:\/\/comunidadedasias.b-cdn.net\/Biblioteca%20de%20prompts\/ALIMENTOS%20E%20BEBIDAS\/BEBIDAS\/CAFE\/POV\/VIDEO\/POV_VIDEO_BEBIDAS_CAFE_ESPECIAL.mp4\",[\"Imagem de refer\u00eancia do produto: Cafe\"],true],[9,\"UGC\",\"UGC - Kit Moletom para Beb\u00ea\",\"Kit Moletom para Beb\u00ea em composi\u00e7\u00e3o UGC, conforme o conte\u00fado validado da biblioteca.\",\"V\u00eddeo UGC correspondente ao mesmo conte\u00fado e t\u00edtulo da imagem selecionada.\",\"https:\/\/comunidadedasias.b-cdn.net\/Biblioteca%20de%20prompts\/BEBE%20E%20MATERNIDADE\/ROUPAS%20E%20SAPATOS%20PARA%20BEBES\/MOLETONS%20E%20ROUPAS%20ESPORTIVAS\/UGC\/IMAGEM\/UGC_IMAGEM_ROUPAS_E_SAPATOS_PARA_BEBES_KIT_MOLETON.jpeg\",\"https:\/\/comunidadedasias.b-cdn.net\/Biblioteca%20de%20prompts\/BEBE%20E%20MATERNIDADE\/ROUPAS%20E%20SAPATOS%20PARA%20BEBES\/MOLETONS%20E%20ROUPAS%20ESPORTIVAS\/UGC\/VIDEO\/POV_VIDEO_ROUPAS_E_SAPATOS_PARA_BEBES_KIT_MOLETON.mp4\",[\"Imagem da influenciadora\",\"Imagem de refer\u00eancia do produto: Moletons E Roupas Esportivas\"],true],[9,\"POV\",\"POV - Kit Moletom para Beb\u00ea\",\"Kit Moletom para Beb\u00ea em composi\u00e7\u00e3o POV, conforme o conte\u00fado validado da biblioteca.\",\"V\u00eddeo POV correspondente ao mesmo conte\u00fado e t\u00edtulo da imagem selecionada.\",\"https:\/\/comunidadedasias.b-cdn.net\/Biblioteca%20de%20prompts\/BEBE%20E%20MATERNIDADE\/ROUPAS%20E%20SAPATOS%20PARA%20BEBES\/MOLETONS%20E%20ROUPAS%20ESPORTIVAS\/POV\/IMAGEM\/POV_IMAGEM_ROUPAS_E_SAPATOS_PARA_BEBES_KIT_MOLETON.jpeg\",\"https:\/\/comunidadedasias.b-cdn.net\/Biblioteca%20de%20prompts\/BEBE%20E%20MATERNIDADE\/ROUPAS%20E%20SAPATOS%20PARA%20BEBES\/MOLETONS%20E%20ROUPAS%20ESPORTIVAS\/POV\/VIDEO\/POV_PROMPT_VIDEO_ROUPAS_E_SAPATOS_PARA_BEBES_KIT_MOLETON.mp4\",[\"Imagem de refer\u00eancia do produto: Moletons E Roupas Esportivas\"],true],[10,\"UGC\",\"UGC - Rotina Saud\u00e1vel\",\"Influenciadora apresentando um produto de sa\u00fade em uma rotina natural e realista.\",\"Influenciadora apresentando um produto de sa\u00fade com movimentos naturais e fala personalizada.\",\"https:\/\/comunidadedasias.com.br\/wp-content\/uploads\/2026\/07\/ugc-IMAGEM-Rotina-Saudavel-categoria-saude-scaled.jpeg\",\"https:\/\/comunidadedasias.com.br\/wp-content\/uploads\/2026\/07\/ugc-VIDEO-Rotina-Saudavel-categoria-saud.mp4\",[\"Imagem da influenciadora\",\"Imagem do produto da categoria Sa\u00fade\"],true],[10,\"POV\",\"POV - Produto em Uso\",\"Prompt de imagem POV para sa\u00fade.\",\"Prompt de v\u00eddeo correspondente ao estilo POV - Produto em Uso.\",\"data:image\/svg+xml;charset=UTF-8,%0A%20%20%20%20%20%20%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22900%22%20height%3D%221125%22%20viewBox%3D%220%200%20900%201125%22%3E%0A%20%20%20%20%20%20%20%20%3Cdefs%3E%0A%20%20%20%20%20%20%20%20%20%20%3ClinearGradient%20id%3D%22bg%22%20x1%3D%220%22%20y1%3D%220%22%20x2%3D%221%22%20y2%3D%221%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cstop%20offset%3D%220%25%22%20stop-color%3D%22%23142a43%22%2F%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cstop%20offset%3D%22100%25%22%20stop-color%3D%22%23071421%22%2F%3E%0A%20%20%20%20%20%20%20%20%20%20%3C%2FlinearGradient%3E%0A%20%20%20%20%20%20%20%20%20%20%3CradialGradient%20id%3D%22glow%22%20cx%3D%2275%25%22%20cy%3D%2218%25%22%20r%3D%2265%25%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cstop%20offset%3D%220%25%22%20stop-color%3D%22%23a855f7%22%20stop-opacity%3D%22.42%22%2F%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cstop%20offset%3D%22100%25%22%20stop-color%3D%22%23a855f7%22%20stop-opacity%3D%220%22%2F%3E%0A%20%20%20%20%20%20%20%20%20%20%3C%2FradialGradient%3E%0A%20%20%20%20%20%20%20%20%3C%2Fdefs%3E%0A%20%20%20%20%20%20%20%20%3Crect%20width%3D%22900%22%20height%3D%221125%22%20fill%3D%22url(%23bg)%22%2F%3E%0A%20%20%20%20%20%20%20%20%3Crect%20width%3D%22900%22%20height%3D%221125%22%20fill%3D%22url(%23glow)%22%2F%3E%0A%20%20%20%20%20%20%20%20%3Ccircle%20cx%3D%22450%22%20cy%3D%22420%22%20r%3D%22190%22%20fill%3D%22%23a855f7%22%20fill-opacity%3D%22.12%22%20stroke%3D%22%23a855f7%22%20stroke-opacity%3D%22.42%22%20stroke-width%3D%224%22%2F%3E%0A%20%20%20%20%20%20%20%20%3Crect%20x%3D%22285%22%20y%3D%22255%22%20width%3D%22330%22%20height%3D%22330%22%20rx%3D%2252%22%20fill%3D%22%230b1b2d%22%20stroke%3D%22%23a855f7%22%20stroke-opacity%3D%22.55%22%20stroke-width%3D%224%22%2F%3E%0A%20%20%20%20%20%20%20%20%3Ctext%20x%3D%22450%22%20y%3D%22425%22%20text-anchor%3D%22middle%22%20font-family%3D%22Arial%2C%20sans-serif%22%20font-size%3D%2292%22%20font-weight%3D%22700%22%20fill%3D%22%23a855f7%22%3EPOV%3C%2Ftext%3E%0A%20%20%20%20%20%20%20%20%3Ctext%20x%3D%22450%22%20y%3D%22690%22%20text-anchor%3D%22middle%22%20font-family%3D%22Arial%2C%20sans-serif%22%20font-size%3D%2238%22%20font-weight%3D%22700%22%20fill%3D%22%23f3f8ff%22%3EPOV%20-%20Produto%20em%20Uso%3C%2Ftext%3E%0A%20%20%20%20%20%20%20%20%3CforeignObject%20x%3D%22110%22%20y%3D%22745%22%20width%3D%22680%22%20height%3D%22170%22%3E%0A%20%20%20%20%20%20%20%20%20%20%3Cdiv%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxhtml%22%20style%3D%22font-family%3AArial%2Csans-serif%3Bcolor%3A%239eb0c5%3Bfont-size%3A28px%3Bline-height%3A1.35%3Btext-align%3Acenter%3B%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20Sa%C3%BAde%0A%20%20%20%20%20%20%20%20%20%20%3C%2Fdiv%3E%0A%20%20%20%20%20%20%20%20%3C%2FforeignObject%3E%0A%20%20%20%20%20%20%20%20%3Ctext%20x%3D%22450%22%20y%3D%221030%22%20text-anchor%3D%22middle%22%20font-family%3D%22Arial%2C%20sans-serif%22%20font-size%3D%2224%22%20fill%3D%22%237890aa%22%3EImagem%20demonstrativa%20%E2%80%94%20substitua%20pelo%20seu%20link%3C%2Ftext%3E%0A%20%20%20%20%20%20%3C%2Fsvg%3E\",\"\",[\"Imagem de refer\u00eancia do produto: produto da categoria de sa\u00fade\"],false],[11,\"UGC\",\"UGC - Provando Roupa\",\"Prompt de imagem UGC para roupas masculinas e roupas \u00edntimas masculinas.\",\"Prompt de v\u00eddeo correspondente ao estilo UGC - Provando Roupa.\",\"data:image\/svg+xml;charset=UTF-8,%0A%20%20%20%20%20%20%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22900%22%20height%3D%221125%22%20viewBox%3D%220%200%20900%201125%22%3E%0A%20%20%20%20%20%20%20%20%3Cdefs%3E%0A%20%20%20%20%20%20%20%20%20%20%3ClinearGradient%20id%3D%22bg%22%20x1%3D%220%22%20y1%3D%220%22%20x2%3D%221%22%20y2%3D%221%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cstop%20offset%3D%220%25%22%20stop-color%3D%22%23142a43%22%2F%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cstop%20offset%3D%22100%25%22%20stop-color%3D%22%23071421%22%2F%3E%0A%20%20%20%20%20%20%20%20%20%20%3C%2FlinearGradient%3E%0A%20%20%20%20%20%20%20%20%20%20%3CradialGradient%20id%3D%22glow%22%20cx%3D%2275%25%22%20cy%3D%2218%25%22%20r%3D%2265%25%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cstop%20offset%3D%220%25%22%20stop-color%3D%22%2325d6d0%22%20stop-opacity%3D%22.42%22%2F%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cstop%20offset%3D%22100%25%22%20stop-color%3D%22%2325d6d0%22%20stop-opacity%3D%220%22%2F%3E%0A%20%20%20%20%20%20%20%20%20%20%3C%2FradialGradient%3E%0A%20%20%20%20%20%20%20%20%3C%2Fdefs%3E%0A%20%20%20%20%20%20%20%20%3Crect%20width%3D%22900%22%20height%3D%221125%22%20fill%3D%22url(%23bg)%22%2F%3E%0A%20%20%20%20%20%20%20%20%3Crect%20width%3D%22900%22%20height%3D%221125%22%20fill%3D%22url(%23glow)%22%2F%3E%0A%20%20%20%20%20%20%20%20%3Ccircle%20cx%3D%22450%22%20cy%3D%22420%22%20r%3D%22190%22%20fill%3D%22%2325d6d0%22%20fill-opacity%3D%22.12%22%20stroke%3D%22%2325d6d0%22%20stroke-opacity%3D%22.42%22%20stroke-width%3D%224%22%2F%3E%0A%20%20%20%20%20%20%20%20%3Crect%20x%3D%22285%22%20y%3D%22255%22%20width%3D%22330%22%20height%3D%22330%22%20rx%3D%2252%22%20fill%3D%22%230b1b2d%22%20stroke%3D%22%2325d6d0%22%20stroke-opacity%3D%22.55%22%20stroke-width%3D%224%22%2F%3E%0A%20%20%20%20%20%20%20%20%3Ctext%20x%3D%22450%22%20y%3D%22425%22%20text-anchor%3D%22middle%22%20font-family%3D%22Arial%2C%20sans-serif%22%20font-size%3D%2292%22%20font-weight%3D%22700%22%20fill%3D%22%2325d6d0%22%3EUGC%3C%2Ftext%3E%0A%20%20%20%20%20%20%20%20%3Ctext%20x%3D%22450%22%20y%3D%22690%22%20text-anchor%3D%22middle%22%20font-family%3D%22Arial%2C%20sans-serif%22%20font-size%3D%2238%22%20font-weight%3D%22700%22%20fill%3D%22%23f3f8ff%22%3EUGC%20-%20Provando%20Roupa%3C%2Ftext%3E%0A%20%20%20%20%20%20%20%20%3CforeignObject%20x%3D%22110%22%20y%3D%22745%22%20width%3D%22680%22%20height%3D%22170%22%3E%0A%20%20%20%20%20%20%20%20%20%20%3Cdiv%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxhtml%22%20style%3D%22font-family%3AArial%2Csans-serif%3Bcolor%3A%239eb0c5%3Bfont-size%3A28px%3Bline-height%3A1.35%3Btext-align%3Acenter%3B%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20Roupas%20masculinas%20e%20roupas%20%C3%ADntimas%20masculinas%0A%20%20%20%20%20%20%20%20%20%20%3C%2Fdiv%3E%0A%20%20%20%20%20%20%20%20%3C%2FforeignObject%3E%0A%20%20%20%20%20%20%20%20%3Ctext%20x%3D%22450%22%20y%3D%221030%22%20text-anchor%3D%22middle%22%20font-family%3D%22Arial%2C%20sans-serif%22%20font-size%3D%2224%22%20fill%3D%22%237890aa%22%3EImagem%20demonstrativa%20%E2%80%94%20substitua%20pelo%20seu%20link%3C%2Ftext%3E%0A%20%20%20%20%20%20%3C%2Fsvg%3E\",\"\",[\"Imagem da influenciadora\",\"Imagem de refer\u00eancia do produto: roupa masculina ou roupa \u00edntima masculina\"],false],[11,\"POV\",\"POV - Detalhes da Pe\u00e7a\",\"Prompt de imagem POV para roupas masculinas e roupas \u00edntimas masculinas.\",\"Prompt de v\u00eddeo correspondente ao estilo POV - Detalhes da Pe\u00e7a.\",\"data:image\/svg+xml;charset=UTF-8,%0A%20%20%20%20%20%20%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22900%22%20height%3D%221125%22%20viewBox%3D%220%200%20900%201125%22%3E%0A%20%20%20%20%20%20%20%20%3Cdefs%3E%0A%20%20%20%20%20%20%20%20%20%20%3ClinearGradient%20id%3D%22bg%22%20x1%3D%220%22%20y1%3D%220%22%20x2%3D%221%22%20y2%3D%221%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cstop%20offset%3D%220%25%22%20stop-color%3D%22%23142a43%22%2F%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cstop%20offset%3D%22100%25%22%20stop-color%3D%22%23071421%22%2F%3E%0A%20%20%20%20%20%20%20%20%20%20%3C%2FlinearGradient%3E%0A%20%20%20%20%20%20%20%20%20%20%3CradialGradient%20id%3D%22glow%22%20cx%3D%2275%25%22%20cy%3D%2218%25%22%20r%3D%2265%25%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cstop%20offset%3D%220%25%22%20stop-color%3D%22%23a855f7%22%20stop-opacity%3D%22.42%22%2F%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cstop%20offset%3D%22100%25%22%20stop-color%3D%22%23a855f7%22%20stop-opacity%3D%220%22%2F%3E%0A%20%20%20%20%20%20%20%20%20%20%3C%2FradialGradient%3E%0A%20%20%20%20%20%20%20%20%3C%2Fdefs%3E%0A%20%20%20%20%20%20%20%20%3Crect%20width%3D%22900%22%20height%3D%221125%22%20fill%3D%22url(%23bg)%22%2F%3E%0A%20%20%20%20%20%20%20%20%3Crect%20width%3D%22900%22%20height%3D%221125%22%20fill%3D%22url(%23glow)%22%2F%3E%0A%20%20%20%20%20%20%20%20%3Ccircle%20cx%3D%22450%22%20cy%3D%22420%22%20r%3D%22190%22%20fill%3D%22%23a855f7%22%20fill-opacity%3D%22.12%22%20stroke%3D%22%23a855f7%22%20stroke-opacity%3D%22.42%22%20stroke-width%3D%224%22%2F%3E%0A%20%20%20%20%20%20%20%20%3Crect%20x%3D%22285%22%20y%3D%22255%22%20width%3D%22330%22%20height%3D%22330%22%20rx%3D%2252%22%20fill%3D%22%230b1b2d%22%20stroke%3D%22%23a855f7%22%20stroke-opacity%3D%22.55%22%20stroke-width%3D%224%22%2F%3E%0A%20%20%20%20%20%20%20%20%3Ctext%20x%3D%22450%22%20y%3D%22425%22%20text-anchor%3D%22middle%22%20font-family%3D%22Arial%2C%20sans-serif%22%20font-size%3D%2292%22%20font-weight%3D%22700%22%20fill%3D%22%23a855f7%22%3EPOV%3C%2Ftext%3E%0A%20%20%20%20%20%20%20%20%3Ctext%20x%3D%22450%22%20y%3D%22690%22%20text-anchor%3D%22middle%22%20font-family%3D%22Arial%2C%20sans-serif%22%20font-size%3D%2238%22%20font-weight%3D%22700%22%20fill%3D%22%23f3f8ff%22%3EPOV%20-%20Detalhes%20da%20Pe%C3%A7a%3C%2Ftext%3E%0A%20%20%20%20%20%20%20%20%3CforeignObject%20x%3D%22110%22%20y%3D%22745%22%20width%3D%22680%22%20height%3D%22170%22%3E%0A%20%20%20%20%20%20%20%20%20%20%3Cdiv%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxhtml%22%20style%3D%22font-family%3AArial%2Csans-serif%3Bcolor%3A%239eb0c5%3Bfont-size%3A28px%3Bline-height%3A1.35%3Btext-align%3Acenter%3B%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20Roupas%20masculinas%20e%20roupas%20%C3%ADntimas%20masculinas%0A%20%20%20%20%20%20%20%20%20%20%3C%2Fdiv%3E%0A%20%20%20%20%20%20%20%20%3C%2FforeignObject%3E%0A%20%20%20%20%20%20%20%20%3Ctext%20x%3D%22450%22%20y%3D%221030%22%20text-anchor%3D%22middle%22%20font-family%3D%22Arial%2C%20sans-serif%22%20font-size%3D%2224%22%20fill%3D%22%237890aa%22%3EImagem%20demonstrativa%20%E2%80%94%20substitua%20pelo%20seu%20link%3C%2Ftext%3E%0A%20%20%20%20%20%20%3C%2Fsvg%3E\",\"\",[\"Imagem de refer\u00eancia do produto: roupa masculina ou roupa \u00edntima masculina\"],false],[12,\"UGC\",\"UGC - Mostrando Cole\u00e7\u00e3o\",\"Prompt de imagem UGC para colecion\u00e1veis.\",\"Prompt de v\u00eddeo correspondente ao estilo UGC - Mostrando Cole\u00e7\u00e3o.\",\"data:image\/svg+xml;charset=UTF-8,%0A%20%20%20%20%20%20%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22900%22%20height%3D%221125%22%20viewBox%3D%220%200%20900%201125%22%3E%0A%20%20%20%20%20%20%20%20%3Cdefs%3E%0A%20%20%20%20%20%20%20%20%20%20%3ClinearGradient%20id%3D%22bg%22%20x1%3D%220%22%20y1%3D%220%22%20x2%3D%221%22%20y2%3D%221%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cstop%20offset%3D%220%25%22%20stop-color%3D%22%23142a43%22%2F%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cstop%20offset%3D%22100%25%22%20stop-color%3D%22%23071421%22%2F%3E%0A%20%20%20%20%20%20%20%20%20%20%3C%2FlinearGradient%3E%0A%20%20%20%20%20%20%20%20%20%20%3CradialGradient%20id%3D%22glow%22%20cx%3D%2275%25%22%20cy%3D%2218%25%22%20r%3D%2265%25%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cstop%20offset%3D%220%25%22%20stop-color%3D%22%2325d6d0%22%20stop-opacity%3D%22.42%22%2F%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cstop%20offset%3D%22100%25%22%20stop-color%3D%22%2325d6d0%22%20stop-opacity%3D%220%22%2F%3E%0A%20%20%20%20%20%20%20%20%20%20%3C%2FradialGradient%3E%0A%20%20%20%20%20%20%20%20%3C%2Fdefs%3E%0A%20%20%20%20%20%20%20%20%3Crect%20width%3D%22900%22%20height%3D%221125%22%20fill%3D%22url(%23bg)%22%2F%3E%0A%20%20%20%20%20%20%20%20%3Crect%20width%3D%22900%22%20height%3D%221125%22%20fill%3D%22url(%23glow)%22%2F%3E%0A%20%20%20%20%20%20%20%20%3Ccircle%20cx%3D%22450%22%20cy%3D%22420%22%20r%3D%22190%22%20fill%3D%22%2325d6d0%22%20fill-opacity%3D%22.12%22%20stroke%3D%22%2325d6d0%22%20stroke-opacity%3D%22.42%22%20stroke-width%3D%224%22%2F%3E%0A%20%20%20%20%20%20%20%20%3Crect%20x%3D%22285%22%20y%3D%22255%22%20width%3D%22330%22%20height%3D%22330%22%20rx%3D%2252%22%20fill%3D%22%230b1b2d%22%20stroke%3D%22%2325d6d0%22%20stroke-opacity%3D%22.55%22%20stroke-width%3D%224%22%2F%3E%0A%20%20%20%20%20%20%20%20%3Ctext%20x%3D%22450%22%20y%3D%22425%22%20text-anchor%3D%22middle%22%20font-family%3D%22Arial%2C%20sans-serif%22%20font-size%3D%2292%22%20font-weight%3D%22700%22%20fill%3D%22%2325d6d0%22%3EUGC%3C%2Ftext%3E%0A%20%20%20%20%20%20%20%20%3Ctext%20x%3D%22450%22%20y%3D%22690%22%20text-anchor%3D%22middle%22%20font-family%3D%22Arial%2C%20sans-serif%22%20font-size%3D%2238%22%20font-weight%3D%22700%22%20fill%3D%22%23f3f8ff%22%3EUGC%20-%20Mostrando%20Cole%C3%A7%C3%A3o%3C%2Ftext%3E%0A%20%20%20%20%20%20%20%20%3CforeignObject%20x%3D%22110%22%20y%3D%22745%22%20width%3D%22680%22%20height%3D%22170%22%3E%0A%20%20%20%20%20%20%20%20%20%20%3Cdiv%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxhtml%22%20style%3D%22font-family%3AArial%2Csans-serif%3Bcolor%3A%239eb0c5%3Bfont-size%3A28px%3Bline-height%3A1.35%3Btext-align%3Acenter%3B%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20Colecion%C3%A1veis%0A%20%20%20%20%20%20%20%20%20%20%3C%2Fdiv%3E%0A%20%20%20%20%20%20%20%20%3C%2FforeignObject%3E%0A%20%20%20%20%20%20%20%20%3Ctext%20x%3D%22450%22%20y%3D%221030%22%20text-anchor%3D%22middle%22%20font-family%3D%22Arial%2C%20sans-serif%22%20font-size%3D%2224%22%20fill%3D%22%237890aa%22%3EImagem%20demonstrativa%20%E2%80%94%20substitua%20pelo%20seu%20link%3C%2Ftext%3E%0A%20%20%20%20%20%20%3C%2Fsvg%3E\",\"\",[\"Imagem da influenciadora\",\"Imagem de refer\u00eancia do produto: item colecion\u00e1vel\"],false],[12,\"POV\",\"POV - Item Colecion\u00e1vel\",\"Prompt de imagem POV para colecion\u00e1veis.\",\"Prompt de v\u00eddeo correspondente ao estilo POV - Item Colecion\u00e1vel.\",\"data:image\/svg+xml;charset=UTF-8,%0A%20%20%20%20%20%20%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22900%22%20height%3D%221125%22%20viewBox%3D%220%200%20900%201125%22%3E%0A%20%20%20%20%20%20%20%20%3Cdefs%3E%0A%20%20%20%20%20%20%20%20%20%20%3ClinearGradient%20id%3D%22bg%22%20x1%3D%220%22%20y1%3D%220%22%20x2%3D%221%22%20y2%3D%221%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cstop%20offset%3D%220%25%22%20stop-color%3D%22%23142a43%22%2F%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cstop%20offset%3D%22100%25%22%20stop-color%3D%22%23071421%22%2F%3E%0A%20%20%20%20%20%20%20%20%20%20%3C%2FlinearGradient%3E%0A%20%20%20%20%20%20%20%20%20%20%3CradialGradient%20id%3D%22glow%22%20cx%3D%2275%25%22%20cy%3D%2218%25%22%20r%3D%2265%25%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cstop%20offset%3D%220%25%22%20stop-color%3D%22%23a855f7%22%20stop-opacity%3D%22.42%22%2F%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cstop%20offset%3D%22100%25%22%20stop-color%3D%22%23a855f7%22%20stop-opacity%3D%220%22%2F%3E%0A%20%20%20%20%20%20%20%20%20%20%3C%2FradialGradient%3E%0A%20%20%20%20%20%20%20%20%3C%2Fdefs%3E%0A%20%20%20%20%20%20%20%20%3Crect%20width%3D%22900%22%20height%3D%221125%22%20fill%3D%22url(%23bg)%22%2F%3E%0A%20%20%20%20%20%20%20%20%3Crect%20width%3D%22900%22%20height%3D%221125%22%20fill%3D%22url(%23glow)%22%2F%3E%0A%20%20%20%20%20%20%20%20%3Ccircle%20cx%3D%22450%22%20cy%3D%22420%22%20r%3D%22190%22%20fill%3D%22%23a855f7%22%20fill-opacity%3D%22.12%22%20stroke%3D%22%23a855f7%22%20stroke-opacity%3D%22.42%22%20stroke-width%3D%224%22%2F%3E%0A%20%20%20%20%20%20%20%20%3Crect%20x%3D%22285%22%20y%3D%22255%22%20width%3D%22330%22%20height%3D%22330%22%20rx%3D%2252%22%20fill%3D%22%230b1b2d%22%20stroke%3D%22%23a855f7%22%20stroke-opacity%3D%22.55%22%20stroke-width%3D%224%22%2F%3E%0A%20%20%20%20%20%20%20%20%3Ctext%20x%3D%22450%22%20y%3D%22425%22%20text-anchor%3D%22middle%22%20font-family%3D%22Arial%2C%20sans-serif%22%20font-size%3D%2292%22%20font-weight%3D%22700%22%20fill%3D%22%23a855f7%22%3EPOV%3C%2Ftext%3E%0A%20%20%20%20%20%20%20%20%3Ctext%20x%3D%22450%22%20y%3D%22690%22%20text-anchor%3D%22middle%22%20font-family%3D%22Arial%2C%20sans-serif%22%20font-size%3D%2238%22%20font-weight%3D%22700%22%20fill%3D%22%23f3f8ff%22%3EPOV%20-%20Item%20Colecion%C3%A1vel%3C%2Ftext%3E%0A%20%20%20%20%20%20%20%20%3CforeignObject%20x%3D%22110%22%20y%3D%22745%22%20width%3D%22680%22%20height%3D%22170%22%3E%0A%20%20%20%20%20%20%20%20%20%20%3Cdiv%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxhtml%22%20style%3D%22font-family%3AArial%2Csans-serif%3Bcolor%3A%239eb0c5%3Bfont-size%3A28px%3Bline-height%3A1.35%3Btext-align%3Acenter%3B%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20Colecion%C3%A1veis%0A%20%20%20%20%20%20%20%20%20%20%3C%2Fdiv%3E%0A%20%20%20%20%20%20%20%20%3C%2FforeignObject%3E%0A%20%20%20%20%20%20%20%20%3Ctext%20x%3D%22450%22%20y%3D%221030%22%20text-anchor%3D%22middle%22%20font-family%3D%22Arial%2C%20sans-serif%22%20font-size%3D%2224%22%20fill%3D%22%237890aa%22%3EImagem%20demonstrativa%20%E2%80%94%20substitua%20pelo%20seu%20link%3C%2Ftext%3E%0A%20%20%20%20%20%20%3C%2Fsvg%3E\",\"\",[\"Imagem de refer\u00eancia do produto: item colecion\u00e1vel\"],false],[13,\"UGC\",\"UGC - Bolsa Feminina\",\"Bolsa Feminina em composi\u00e7\u00e3o UGC, conforme o conte\u00fado validado da biblioteca.\",\"V\u00eddeo UGC correspondente ao mesmo conte\u00fado e t\u00edtulo da imagem selecionada.\",\"https:\/\/comunidadedasias.b-cdn.net\/Biblioteca%20de%20prompts\/MALAS%20E%20BOLSAS\/BOLSA%20PARA%20MULHERES\/BOLSAS\/UGC\/IMAGEM\/UGC_IMAGEM_MALAS_E_BOL%C3%87AS_BOL%C3%87AS.png\",\"https:\/\/comunidadedasias.b-cdn.net\/Biblioteca%20de%20prompts\/MALAS%20E%20BOLSAS\/BOLSA%20PARA%20MULHERES\/BOLSAS\/UGC\/VIDEO\/UGC_VIDEO_MALAS_E_BOL%C3%87AS_BOL%C3%87AS.mp4\",[\"Imagem da influenciadora\",\"Imagem de refer\u00eancia do produto: Bolsas\"],true],[13,\"POV\",\"POV - Bolsa Feminina\",\"Bolsa Feminina em composi\u00e7\u00e3o POV, conforme o conte\u00fado validado da biblioteca.\",\"V\u00eddeo POV correspondente ao mesmo conte\u00fado e t\u00edtulo da imagem selecionada.\",\"https:\/\/comunidadedasias.b-cdn.net\/Biblioteca%20de%20prompts\/MALAS%20E%20BOLSAS\/BOLSA%20PARA%20MULHERES\/BOLSAS\/POV\/IMAGEM\/POV_IMAGEM_MALAS_E_BOL%C3%87AS_BOL%C3%87AS.png\",\"https:\/\/comunidadedasias.b-cdn.net\/Biblioteca%20de%20prompts\/MALAS%20E%20BOLSAS\/BOLSA%20PARA%20MULHERES\/BOLSAS\/POV\/VIDEO\/POV_VIDEO_MALAS_E_BOL%C3%87AS_BOL%C3%87AS.mp4\",[\"Imagem de refer\u00eancia do produto: Bolsas\"],true],[14,\"UGC\",\"UGC - Alvejante\",\"Alvejante em composi\u00e7\u00e3o UGC, conforme o conte\u00fado validado da biblioteca.\",\"V\u00eddeo UGC correspondente ao mesmo conte\u00fado e t\u00edtulo da imagem selecionada.\",\"https:\/\/comunidadedasias.b-cdn.net\/Biblioteca%20de%20prompts\/SUPRIMENTOS%20DOMESTICOS\/SUPRIMENTOS%20PARA%20CUIDADOS%20DOMESTICOS\/PRODUTOS%20DE%20LIMPEZA%20DOMESTICOS\/UGC\/IMAGEM\/UGC_IMAGEM_PRODUTOS_DE_LIMPEZA_ALVEJANTE.PNG\",\"https:\/\/comunidadedasias.b-cdn.net\/Biblioteca%20de%20prompts\/SUPRIMENTOS%20DOMESTICOS\/SUPRIMENTOS%20PARA%20CUIDADOS%20DOMESTICOS\/PRODUTOS%20DE%20LIMPEZA%20DOMESTICOS\/UGC\/VIDEO\/UGC_VIDEO_PRODUTOS_DE_LIMPEZA_ALVEJANTE.mp4\",[\"Imagem da influenciadora\",\"Imagem de refer\u00eancia do produto: Produtos De Limpeza Domesticos\"],true],[14,\"POV\",\"POV - Alvejante\",\"Alvejante em composi\u00e7\u00e3o POV, conforme o conte\u00fado validado da biblioteca.\",\"V\u00eddeo POV correspondente ao mesmo conte\u00fado e t\u00edtulo da imagem selecionada.\",\"https:\/\/comunidadedasias.b-cdn.net\/Biblioteca%20de%20prompts\/SUPRIMENTOS%20DOMESTICOS\/SUPRIMENTOS%20PARA%20CUIDADOS%20DOMESTICOS\/PRODUTOS%20DE%20LIMPEZA%20DOMESTICOS\/POV\/IMAGEM\/UGC_IMAGEM_PRODUTOS_DE_LIMPEZA_ALVEJANTE.PNG\",\"https:\/\/comunidadedasias.b-cdn.net\/Biblioteca%20de%20prompts\/SUPRIMENTOS%20DOMESTICOS\/SUPRIMENTOS%20PARA%20CUIDADOS%20DOMESTICOS\/PRODUTOS%20DE%20LIMPEZA%20DOMESTICOS\/POV\/VIDEO\/POV_VIDEO_PRODUTOS_DE_LIMPEZA_ALVEJANTE.MOV\",[\"Imagem de refer\u00eancia do produto: Produtos De Limpeza Domesticos\"],true],[15,\"UGC\",\"UGC - Kit de Panelas\",\"Kit de Panelas em composi\u00e7\u00e3o UGC, conforme o conte\u00fado validado da biblioteca.\",\"V\u00eddeo UGC correspondente ao mesmo conte\u00fado e t\u00edtulo da imagem selecionada.\",\"https:\/\/comunidadedasias.b-cdn.net\/Biblioteca%20de%20prompts\/UTENSILIOS%20DE%20COZINHA\/CONJUNTOS%20DE%20PANELA\/UGC\/IMAGEM\/UGC_IMAGEM_UTENSILIO%20DE%20COZINHA_KIT_PANELA.PNG\",\"https:\/\/comunidadedasias.b-cdn.net\/Biblioteca%20de%20prompts\/UTENSILIOS%20DE%20COZINHA\/CONJUNTOS%20DE%20PANELA\/UGC\/VIDEO\/UGC_VIDEO_UTENSILIO%20DE%20COZINHA_KIT_PANELA.mp4\",[\"Imagem da influenciadora\",\"Imagem de refer\u00eancia do produto: Conjuntos De Panela\"],true],[15,\"POV\",\"POV - Kit de Panelas\",\"Kit de Panelas em composi\u00e7\u00e3o POV, conforme o conte\u00fado validado da biblioteca.\",\"V\u00eddeo POV correspondente ao mesmo conte\u00fado e t\u00edtulo da imagem selecionada.\",\"https:\/\/comunidadedasias.b-cdn.net\/Biblioteca%20de%20prompts\/UTENSILIOS%20DE%20COZINHA\/CONJUNTOS%20DE%20PANELA\/POV\/IMAGEM\/POV_IMAGEM_UTENSILIO%20DE%20COZINHA_KIT_PANELA.PNG\",\"https:\/\/comunidadedasias.b-cdn.net\/Biblioteca%20de%20prompts\/UTENSILIOS%20DE%20COZINHA\/CONJUNTOS%20DE%20PANELA\/POV\/VIDEO\/POV_VIDEO_UTENSILIO%20DE%20COZINHA_KIT_PANELA.mp4\",[\"Imagem de refer\u00eancia do produto: Conjuntos De Panela\"],true],[16,\"UGC\",\"UGC - Cadeira\",\"Cadeira em composi\u00e7\u00e3o UGC, conforme o conte\u00fado validado da biblioteca.\",\"V\u00eddeo UGC correspondente ao mesmo conte\u00fado e t\u00edtulo da imagem selecionada.\",\"https:\/\/comunidadedasias.b-cdn.net\/Biblioteca%20de%20prompts\/MOVEIS\/CADEIRAS\/UGC\/IMAGEM\/UGC_IMAGEM_MOVEIS_CADEIRAS.PNG\",\"https:\/\/comunidadedasias.b-cdn.net\/Biblioteca%20de%20prompts\/MOVEIS\/CADEIRAS\/UGC\/VIDEO\/UGC_VIDEO_MOVEIS_CADEIRAS.mp4\",[\"Imagem da influenciadora\",\"Imagem de refer\u00eancia do produto: Cadeiras\"],true],[16,\"POV\",\"POV - Cadeira\",\"Cadeira em composi\u00e7\u00e3o POV, conforme o conte\u00fado validado da biblioteca.\",\"V\u00eddeo POV correspondente ao mesmo conte\u00fado e t\u00edtulo da imagem selecionada.\",\"https:\/\/comunidadedasias.b-cdn.net\/Biblioteca%20de%20prompts\/MOVEIS\/CADEIRAS\/POV\/IMAGEM\/POV_IMAGEM_MOVEIS_CADEIRAS.PNG\",\"https:\/\/comunidadedasias.b-cdn.net\/Biblioteca%20de%20prompts\/MOVEIS\/CADEIRAS\/POV\/VIDEO\/POV_VIDEO_MOVEIS_CADEIRAS.mp4\",[\"Imagem de refer\u00eancia do produto: Cadeiras\"],true],[17,\"UGC\",\"UGC - Parafusadeira\",\"Parafusadeira em composi\u00e7\u00e3o UGC, conforme o conte\u00fado validado da biblioteca.\",\"V\u00eddeo UGC correspondente ao mesmo conte\u00fado e t\u00edtulo da imagem selecionada.\",\"https:\/\/comunidadedasias.b-cdn.net\/Biblioteca%20de%20prompts\/FERRAMENTAS%20E%20HARDWARE\/FERRAMENTAS%20ELETRICAS\/UGC\/IMAGEM\/UGC_IMAGEM_FERRAMENTAS_HARDWARE_PARAFUSADEIRA.PNG\",\"https:\/\/comunidadedasias.b-cdn.net\/Biblioteca%20de%20prompts\/FERRAMENTAS%20E%20HARDWARE\/FERRAMENTAS%20ELETRICAS\/UGC\/VIDEO\/UGC_VIDEO_FERRAMENTAS_HARDWARE_PARAFUSADEIRA.mp4\",[\"Imagem da influenciadora\",\"Imagem de refer\u00eancia do produto: Ferramentas Eletricas\"],true],[17,\"POV\",\"POV - Parafusadeira\",\"Parafusadeira em composi\u00e7\u00e3o POV, conforme o conte\u00fado validado da biblioteca.\",\"V\u00eddeo POV correspondente ao mesmo conte\u00fado e t\u00edtulo da imagem selecionada.\",\"https:\/\/comunidadedasias.b-cdn.net\/Biblioteca%20de%20prompts\/FERRAMENTAS%20E%20HARDWARE\/FERRAMENTAS%20ELETRICAS\/POV\/IMAGEM\/POV_IMAGEM_FERRAMENTAS_HARDWARE_PARAFUSADEIRA.PNG\",\"https:\/\/comunidadedasias.b-cdn.net\/Biblioteca%20de%20prompts\/FERRAMENTAS%20E%20HARDWARE\/FERRAMENTAS%20ELETRICAS\/POV\/VIDEO\/POV_VIDEO_FERRAMENTAS_HARDWARE_PARAFUSADEIRA.mp4\",[\"Imagem de refer\u00eancia do produto: Ferramentas Eletricas\"],true],[18,\"UGC\",\"UGC - Solu\u00e7\u00e3o Digital\",\"Prompt de imagem UGC para produtos virtuais.\",\"Prompt de v\u00eddeo correspondente ao estilo UGC - Solu\u00e7\u00e3o Digital.\",\"data:image\/svg+xml;charset=UTF-8,%0A%20%20%20%20%20%20%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22900%22%20height%3D%221125%22%20viewBox%3D%220%200%20900%201125%22%3E%0A%20%20%20%20%20%20%20%20%3Cdefs%3E%0A%20%20%20%20%20%20%20%20%20%20%3ClinearGradient%20id%3D%22bg%22%20x1%3D%220%22%20y1%3D%220%22%20x2%3D%221%22%20y2%3D%221%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cstop%20offset%3D%220%25%22%20stop-color%3D%22%23142a43%22%2F%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cstop%20offset%3D%22100%25%22%20stop-color%3D%22%23071421%22%2F%3E%0A%20%20%20%20%20%20%20%20%20%20%3C%2FlinearGradient%3E%0A%20%20%20%20%20%20%20%20%20%20%3CradialGradient%20id%3D%22glow%22%20cx%3D%2275%25%22%20cy%3D%2218%25%22%20r%3D%2265%25%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cstop%20offset%3D%220%25%22%20stop-color%3D%22%2325d6d0%22%20stop-opacity%3D%22.42%22%2F%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cstop%20offset%3D%22100%25%22%20stop-color%3D%22%2325d6d0%22%20stop-opacity%3D%220%22%2F%3E%0A%20%20%20%20%20%20%20%20%20%20%3C%2FradialGradient%3E%0A%20%20%20%20%20%20%20%20%3C%2Fdefs%3E%0A%20%20%20%20%20%20%20%20%3Crect%20width%3D%22900%22%20height%3D%221125%22%20fill%3D%22url(%23bg)%22%2F%3E%0A%20%20%20%20%20%20%20%20%3Crect%20width%3D%22900%22%20height%3D%221125%22%20fill%3D%22url(%23glow)%22%2F%3E%0A%20%20%20%20%20%20%20%20%3Ccircle%20cx%3D%22450%22%20cy%3D%22420%22%20r%3D%22190%22%20fill%3D%22%2325d6d0%22%20fill-opacity%3D%22.12%22%20stroke%3D%22%2325d6d0%22%20stroke-opacity%3D%22.42%22%20stroke-width%3D%224%22%2F%3E%0A%20%20%20%20%20%20%20%20%3Crect%20x%3D%22285%22%20y%3D%22255%22%20width%3D%22330%22%20height%3D%22330%22%20rx%3D%2252%22%20fill%3D%22%230b1b2d%22%20stroke%3D%22%2325d6d0%22%20stroke-opacity%3D%22.55%22%20stroke-width%3D%224%22%2F%3E%0A%20%20%20%20%20%20%20%20%3Ctext%20x%3D%22450%22%20y%3D%22425%22%20text-anchor%3D%22middle%22%20font-family%3D%22Arial%2C%20sans-serif%22%20font-size%3D%2292%22%20font-weight%3D%22700%22%20fill%3D%22%2325d6d0%22%3EUGC%3C%2Ftext%3E%0A%20%20%20%20%20%20%20%20%3Ctext%20x%3D%22450%22%20y%3D%22690%22%20text-anchor%3D%22middle%22%20font-family%3D%22Arial%2C%20sans-serif%22%20font-size%3D%2238%22%20font-weight%3D%22700%22%20fill%3D%22%23f3f8ff%22%3EUGC%20-%20Solu%C3%A7%C3%A3o%20Digital%3C%2Ftext%3E%0A%20%20%20%20%20%20%20%20%3CforeignObject%20x%3D%22110%22%20y%3D%22745%22%20width%3D%22680%22%20height%3D%22170%22%3E%0A%20%20%20%20%20%20%20%20%20%20%3Cdiv%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxhtml%22%20style%3D%22font-family%3AArial%2Csans-serif%3Bcolor%3A%239eb0c5%3Bfont-size%3A28px%3Bline-height%3A1.35%3Btext-align%3Acenter%3B%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20Produtos%20virtuais%0A%20%20%20%20%20%20%20%20%20%20%3C%2Fdiv%3E%0A%20%20%20%20%20%20%20%20%3C%2FforeignObject%3E%0A%20%20%20%20%20%20%20%20%3Ctext%20x%3D%22450%22%20y%3D%221030%22%20text-anchor%3D%22middle%22%20font-family%3D%22Arial%2C%20sans-serif%22%20font-size%3D%2224%22%20fill%3D%22%237890aa%22%3EImagem%20demonstrativa%20%E2%80%94%20substitua%20pelo%20seu%20link%3C%2Ftext%3E%0A%20%20%20%20%20%20%3C%2Fsvg%3E\",\"\",[\"Imagem da influenciadora\",\"Imagem de refer\u00eancia do produto: produto virtual ou interface digital\"],false],[18,\"POV\",\"POV - Uso Digital\",\"Prompt de imagem POV para produtos virtuais.\",\"Prompt de v\u00eddeo correspondente ao estilo POV - Uso Digital.\",\"data:image\/svg+xml;charset=UTF-8,%0A%20%20%20%20%20%20%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22900%22%20height%3D%221125%22%20viewBox%3D%220%200%20900%201125%22%3E%0A%20%20%20%20%20%20%20%20%3Cdefs%3E%0A%20%20%20%20%20%20%20%20%20%20%3ClinearGradient%20id%3D%22bg%22%20x1%3D%220%22%20y1%3D%220%22%20x2%3D%221%22%20y2%3D%221%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cstop%20offset%3D%220%25%22%20stop-color%3D%22%23142a43%22%2F%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cstop%20offset%3D%22100%25%22%20stop-color%3D%22%23071421%22%2F%3E%0A%20%20%20%20%20%20%20%20%20%20%3C%2FlinearGradient%3E%0A%20%20%20%20%20%20%20%20%20%20%3CradialGradient%20id%3D%22glow%22%20cx%3D%2275%25%22%20cy%3D%2218%25%22%20r%3D%2265%25%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cstop%20offset%3D%220%25%22%20stop-color%3D%22%23a855f7%22%20stop-opacity%3D%22.42%22%2F%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cstop%20offset%3D%22100%25%22%20stop-color%3D%22%23a855f7%22%20stop-opacity%3D%220%22%2F%3E%0A%20%20%20%20%20%20%20%20%20%20%3C%2FradialGradient%3E%0A%20%20%20%20%20%20%20%20%3C%2Fdefs%3E%0A%20%20%20%20%20%20%20%20%3Crect%20width%3D%22900%22%20height%3D%221125%22%20fill%3D%22url(%23bg)%22%2F%3E%0A%20%20%20%20%20%20%20%20%3Crect%20width%3D%22900%22%20height%3D%221125%22%20fill%3D%22url(%23glow)%22%2F%3E%0A%20%20%20%20%20%20%20%20%3Ccircle%20cx%3D%22450%22%20cy%3D%22420%22%20r%3D%22190%22%20fill%3D%22%23a855f7%22%20fill-opacity%3D%22.12%22%20stroke%3D%22%23a855f7%22%20stroke-opacity%3D%22.42%22%20stroke-width%3D%224%22%2F%3E%0A%20%20%20%20%20%20%20%20%3Crect%20x%3D%22285%22%20y%3D%22255%22%20width%3D%22330%22%20height%3D%22330%22%20rx%3D%2252%22%20fill%3D%22%230b1b2d%22%20stroke%3D%22%23a855f7%22%20stroke-opacity%3D%22.55%22%20stroke-width%3D%224%22%2F%3E%0A%20%20%20%20%20%20%20%20%3Ctext%20x%3D%22450%22%20y%3D%22425%22%20text-anchor%3D%22middle%22%20font-family%3D%22Arial%2C%20sans-serif%22%20font-size%3D%2292%22%20font-weight%3D%22700%22%20fill%3D%22%23a855f7%22%3EPOV%3C%2Ftext%3E%0A%20%20%20%20%20%20%20%20%3Ctext%20x%3D%22450%22%20y%3D%22690%22%20text-anchor%3D%22middle%22%20font-family%3D%22Arial%2C%20sans-serif%22%20font-size%3D%2238%22%20font-weight%3D%22700%22%20fill%3D%22%23f3f8ff%22%3EPOV%20-%20Uso%20Digital%3C%2Ftext%3E%0A%20%20%20%20%20%20%20%20%3CforeignObject%20x%3D%22110%22%20y%3D%22745%22%20width%3D%22680%22%20height%3D%22170%22%3E%0A%20%20%20%20%20%20%20%20%20%20%3Cdiv%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxhtml%22%20style%3D%22font-family%3AArial%2Csans-serif%3Bcolor%3A%239eb0c5%3Bfont-size%3A28px%3Bline-height%3A1.35%3Btext-align%3Acenter%3B%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20Produtos%20virtuais%0A%20%20%20%20%20%20%20%20%20%20%3C%2Fdiv%3E%0A%20%20%20%20%20%20%20%20%3C%2FforeignObject%3E%0A%20%20%20%20%20%20%20%20%3Ctext%20x%3D%22450%22%20y%3D%221030%22%20text-anchor%3D%22middle%22%20font-family%3D%22Arial%2C%20sans-serif%22%20font-size%3D%2224%22%20fill%3D%22%237890aa%22%3EImagem%20demonstrativa%20%E2%80%94%20substitua%20pelo%20seu%20link%3C%2Ftext%3E%0A%20%20%20%20%20%20%3C%2Fsvg%3E\",\"\",[\"Imagem de refer\u00eancia do produto: produto virtual ou interface digital\"],false],[19,\"UGC\",\"UGC - Papel Adesivo de Parede\",\"Papel Adesivo de Parede em composi\u00e7\u00e3o UGC, conforme o conte\u00fado validado da biblioteca.\",\"V\u00eddeo UGC correspondente ao mesmo conte\u00fado e t\u00edtulo da imagem selecionada.\",\"https:\/\/comunidadedasias.b-cdn.net\/Biblioteca%20de%20prompts\/REFORMAS%20RESIDENCIAIS\/MATERIAIS%20DE%20CONSTRU%C3%87%C3%83O\/PAPEL%20DE%20PAREDE%20E%20ACABAMENTO%20DE%20PAREDE\/UGC\/IMAGEM\/UGC_IMAGEM_REFORMA_RESIDENCIAIS_PAPEL_ADESIVO.PNG\",\"https:\/\/comunidadedasias.b-cdn.net\/Biblioteca%20de%20prompts\/REFORMAS%20RESIDENCIAIS\/MATERIAIS%20DE%20CONSTRU%C3%87%C3%83O\/PAPEL%20DE%20PAREDE%20E%20ACABAMENTO%20DE%20PAREDE\/UGC\/VIDEO\/UGC_VIDEO_REFORMA_RESIDENCIAIS_PAPEL_ADESIVO.mp4\",[\"Imagem da influenciadora\",\"Imagem de refer\u00eancia do produto: Papel De Parede E Acabamento De Parede\"],true],[19,\"POV\",\"POV - Papel Adesivo de Parede\",\"Papel Adesivo de Parede em composi\u00e7\u00e3o POV, conforme o conte\u00fado validado da biblioteca.\",\"V\u00eddeo POV correspondente ao mesmo conte\u00fado e t\u00edtulo da imagem selecionada.\",\"https:\/\/comunidadedasias.b-cdn.net\/Biblioteca%20de%20prompts\/REFORMAS%20RESIDENCIAIS\/MATERIAIS%20DE%20CONSTRU%C3%87%C3%83O\/PAPEL%20DE%20PAREDE%20E%20ACABAMENTO%20DE%20PAREDE\/POV\/IMAGEM\/POV_IMAGEM_REFORMA_RESIDENCIAIS_PAPEL_ADESIVO.PNG\",\"https:\/\/comunidadedasias.b-cdn.net\/Biblioteca%20de%20prompts\/REFORMAS%20RESIDENCIAIS\/MATERIAIS%20DE%20CONSTRU%C3%87%C3%83O\/PAPEL%20DE%20PAREDE%20E%20ACABAMENTO%20DE%20PAREDE\/POV\/VIDEO\/POV_VIDEO_REFORMA_RESIDENCIAIS_PAPEL_ADESIVO.mp4\",[\"Imagem de refer\u00eancia do produto: Papel De Parede E Acabamento De Parede\"],true],[20,\"UGC\",\"UGC - Air Fryer\",\"Air Fryer em composi\u00e7\u00e3o UGC, conforme o conte\u00fado validado da biblioteca.\",\"V\u00eddeo UGC correspondente ao mesmo conte\u00fado e t\u00edtulo da imagem selecionada.\",\"https:\/\/comunidadedasias.b-cdn.net\/Biblioteca%20de%20prompts\/ELETRODOMESTICOS\/FRITADEIRAS\/UGC\/IMAGEM\/UGC_IMAGEM_ELETRODOMESTICO_FRITADEIRAS_AIR_FRYER.PNG\",\"https:\/\/comunidadedasias.b-cdn.net\/Biblioteca%20de%20prompts\/ELETRODOMESTICOS\/FRITADEIRAS\/UGC\/VIDEO\/UGC_VIDEO_ELETRODOMESTICO_FRITADEIRAS_AIR_FRYER.mp4\",[\"Imagem da influenciadora\",\"Imagem de refer\u00eancia do produto: Fritadeiras\"],true],[20,\"POV\",\"POV - Air Fryer\",\"Air Fryer em composi\u00e7\u00e3o POV, conforme o conte\u00fado validado da biblioteca.\",\"V\u00eddeo POV correspondente ao mesmo conte\u00fado e t\u00edtulo da imagem selecionada.\",\"https:\/\/comunidadedasias.b-cdn.net\/Biblioteca%20de%20prompts\/ELETRODOMESTICOS\/FRITADEIRAS\/POV\/IMAGEM\/POV_IMAGEM_ELETRODOMESTICO_FRITADEIRAS_AIR_FRYER.PNG\",\"https:\/\/comunidadedasias.b-cdn.net\/Biblioteca%20de%20prompts\/ELETRODOMESTICOS\/FRITADEIRAS\/POV\/VIDEO\/POV_VIDEO_ELETRODOMESTICO_FRITADEIRAS_AIR_FRYER.mp4\",[\"Imagem de refer\u00eancia do produto: Fritadeiras\"],true],[21,\"UGC\",\"UGC - Kit Rel\u00f3gio e Pingente\",\"Kit Rel\u00f3gio e Pingente em composi\u00e7\u00e3o UGC, conforme o conte\u00fado validado da biblioteca.\",\"V\u00eddeo UGC correspondente ao mesmo conte\u00fado e t\u00edtulo da imagem selecionada.\",\"https:\/\/comunidadedasias.b-cdn.net\/Biblioteca%20de%20prompts\/JOIAS%2C%20ACESSORIOS%20E%20DERIVADOS\/COLARES%20E%20PINGENTES%20DE%20PRATA\/KIT%20RELOGIO%20E%20PINGENTE\/UGC\/IMAGEM\/UGC_IMAGEM_JOIAS_ACESSORIOS_DERIVADOS_KIT_RELOGIO.PNG\",\"https:\/\/comunidadedasias.b-cdn.net\/Biblioteca%20de%20prompts\/JOIAS%2C%20ACESSORIOS%20E%20DERIVADOS\/COLARES%20E%20PINGENTES%20DE%20PRATA\/KIT%20RELOGIO%20E%20PINGENTE\/UGC\/VIDEO\/UGC_VIDEO_JOIAS_ACESSORIOS_DERIVADOS_KIT_RELOGIO.mp4\",[\"Imagem da influenciadora\",\"Imagem de refer\u00eancia do produto: Kit Relogio E Pingente\"],true],[21,\"POV\",\"POV - Kit Rel\u00f3gio e Pingente\",\"Kit Rel\u00f3gio e Pingente em composi\u00e7\u00e3o POV, conforme o conte\u00fado validado da biblioteca.\",\"V\u00eddeo POV correspondente ao mesmo conte\u00fado e t\u00edtulo da imagem selecionada.\",\"https:\/\/comunidadedasias.b-cdn.net\/Biblioteca%20de%20prompts\/JOIAS%2C%20ACESSORIOS%20E%20DERIVADOS\/COLARES%20E%20PINGENTES%20DE%20PRATA\/KIT%20RELOGIO%20E%20PINGENTE\/POV\/IMAGEM\/POV_IMAGEM_JOIAS_ACESSORIOS_DERIVADOS_KIT_RELOGIO.PNG\",\"https:\/\/comunidadedasias.b-cdn.net\/Biblioteca%20de%20prompts\/JOIAS%2C%20ACESSORIOS%20E%20DERIVADOS\/COLARES%20E%20PINGENTES%20DE%20PRATA\/KIT%20RELOGIO%20E%20PINGENTE\/POV\/VIDEO\/POV_VIDEO_JOIAS_ACESSORIOS_DERIVADOS_KIT_RELOGIO.mp4\",[\"Imagem de refer\u00eancia do produto: Kit Relogio E Pingente\"],true],[22,\"UGC\",\"UGC - Testador de Bateria Automotiva\",\"Testador de Bateria Automotiva em composi\u00e7\u00e3o UGC, conforme o conte\u00fado validado da biblioteca.\",\"V\u00eddeo UGC correspondente ao mesmo conte\u00fado e t\u00edtulo da imagem selecionada.\",\"https:\/\/comunidadedasias.b-cdn.net\/Biblioteca%20de%20prompts\/AUTOMOTIVO%20E%20MOTO\/FERRAMENTAS%20DE%20REPARO%20DE%20VEICULO\/FERRAMENTAS%20DE%20REPARO%20E%20MONTAGEM%20DE%20PNEUS\/UGC\/IMAGEM\/UGC_IMAGEM_AUTOMOTIVO_MOTO_TESTADOR_DE_BATERIA_AUTOMOTIVA.PNG\",\"https:\/\/comunidadedasias.b-cdn.net\/Biblioteca%20de%20prompts\/AUTOMOTIVO%20E%20MOTO\/FERRAMENTAS%20DE%20REPARO%20DE%20VEICULO\/FERRAMENTAS%20DE%20REPARO%20E%20MONTAGEM%20DE%20PNEUS\/UGC\/VIDEO\/UGC_VIDEO_AUTOMOTIVO_MOTO_TESTADOR_DE_BATERIA_AUTOMOTIVA.mp4\",[\"Imagem da influenciadora\",\"Imagem de refer\u00eancia do produto: Ferramentas De Reparo E Montagem De Pneus\"],true],[22,\"POV\",\"POV - Testador de Bateria Automotiva\",\"Testador de Bateria Automotiva em composi\u00e7\u00e3o POV, conforme o conte\u00fado validado da biblioteca.\",\"V\u00eddeo POV correspondente ao mesmo conte\u00fado e t\u00edtulo da imagem selecionada.\",\"https:\/\/comunidadedasias.b-cdn.net\/Biblioteca%20de%20prompts\/AUTOMOTIVO%20E%20MOTO\/FERRAMENTAS%20DE%20REPARO%20DE%20VEICULO\/FERRAMENTAS%20DE%20REPARO%20E%20MONTAGEM%20DE%20PNEUS\/POV\/IMAGEM\/POV_IMAGEM_AUTOMOTIVO_MOTO_TESTADOR_DE_BATERIA_AUTOMOTIVA.PNG\",\"https:\/\/comunidadedasias.b-cdn.net\/Biblioteca%20de%20prompts\/AUTOMOTIVO%20E%20MOTO\/FERRAMENTAS%20DE%20REPARO%20DE%20VEICULO\/FERRAMENTAS%20DE%20REPARO%20E%20MONTAGEM%20DE%20PNEUS\/POV\/VIDEO\/POV_VIDEO_AUTOMOTIVO_MOTO_TESTADOR_DE_BATERIA_AUTOMOTIVA.mp4\",[\"Imagem de refer\u00eancia do produto: Ferramentas De Reparo E Montagem De Pneus\"],true],[23,\"UGC\",\"UGC - Livro\",\"Livro em composi\u00e7\u00e3o UGC, conforme o conte\u00fado validado da biblioteca.\",\"V\u00eddeo UGC correspondente ao mesmo conte\u00fado e t\u00edtulo da imagem selecionada.\",\"https:\/\/comunidadedasias.b-cdn.net\/Biblioteca%20de%20prompts\/LIVROS%2C%20REVISTAS%20E%20AUDIOS\/LIVROS\/UGC\/IMAGEM\/UGC_IMAGEM_LIVROS_REVISTA_AUDIO_LIVRO.PNG\",\"https:\/\/comunidadedasias.b-cdn.net\/Biblioteca%20de%20prompts\/LIVROS%2C%20REVISTAS%20E%20AUDIOS\/LIVROS\/UGC\/VIDEO\/UGC_VIDEO_LIVROS_REVISTA_AUDIO_LIVRO.mp4\",[\"Imagem da influenciadora\",\"Imagem de refer\u00eancia do produto: Livros\"],true],[23,\"POV\",\"POV - Livro\",\"Livro em composi\u00e7\u00e3o POV, conforme o conte\u00fado validado da biblioteca.\",\"V\u00eddeo POV correspondente ao mesmo conte\u00fado e t\u00edtulo da imagem selecionada.\",\"https:\/\/comunidadedasias.b-cdn.net\/Biblioteca%20de%20prompts\/LIVROS%2C%20REVISTAS%20E%20AUDIOS\/LIVROS\/POV\/IMAGEM\/POV_IMAGEM_LIVROS_REVISTA_AUDIO_LIVRO.PNG\",\"https:\/\/comunidadedasias.b-cdn.net\/Biblioteca%20de%20prompts\/LIVROS%2C%20REVISTAS%20E%20AUDIOS\/LIVROS\/POV\/VIDEO\/POV_VIDEO_LIVROS_REVISTA_AUDIO_LIVRO.mp4\",[\"Imagem de refer\u00eancia do produto: Livros\"],true],[24,\"UGC\",\"UGC - T\u00eanis Feminino\",\"T\u00eanis Feminino em composi\u00e7\u00e3o UGC, conforme o conte\u00fado validado da biblioteca.\",\"V\u00eddeo UGC correspondente ao mesmo conte\u00fado e t\u00edtulo da imagem selecionada.\",\"https:\/\/comunidadedasias.b-cdn.net\/Biblioteca%20de%20prompts\/SAPATOS\/SAPATOS%20FEMININOS\/TENIS\/UGC\/IMAGEM\/UGC_IMAGEM_SAPATOS_TENIS.PNG\",\"https:\/\/comunidadedasias.b-cdn.net\/Biblioteca%20de%20prompts\/SAPATOS\/SAPATOS%20FEMININOS\/TENIS\/UGC\/VIDEO\/UGC_VIDEO_SAPATOS_TENIS.mp4\",[\"Imagem da influenciadora\",\"Imagem de refer\u00eancia do produto: Tenis\"],true],[24,\"POV\",\"POV - T\u00eanis Feminino\",\"T\u00eanis Feminino em composi\u00e7\u00e3o POV, conforme o conte\u00fado validado da biblioteca.\",\"V\u00eddeo POV correspondente ao mesmo conte\u00fado e t\u00edtulo da imagem selecionada.\",\"https:\/\/comunidadedasias.b-cdn.net\/Biblioteca%20de%20prompts\/SAPATOS\/SAPATOS%20FEMININOS\/TENIS\/POV\/IMAGEM\/POV_IMAGEM_SAPATOS_TENIS.PNG\",\"https:\/\/comunidadedasias.b-cdn.net\/Biblioteca%20de%20prompts\/SAPATOS\/SAPATOS%20FEMININOS\/TENIS\/POV\/VIDEO\/POV_VIDEO_SAPATOS_TENIS.mp4\",[\"Imagem de refer\u00eancia do produto: Tenis\"],true],[25,\"UGC\",\"UGC - Kit Blusa e Bermuda Infantil\",\"Kit Blusa e Bermuda Infantil em composi\u00e7\u00e3o UGC, conforme o conte\u00fado validado da biblioteca.\",\"V\u00eddeo UGC correspondente ao mesmo conte\u00fado e t\u00edtulo da imagem selecionada.\",\"https:\/\/comunidadedasias.b-cdn.net\/Biblioteca%20de%20prompts\/MODA%20PARA%20CRIANCAS\/ROUPAS%20PARA%20MENINOS\/UGC\/IMAGEM\/UGC_IMAGEM_MODA_PARA_CRIAN%C3%87A_KIT_BLUSA_BERMUDA.PNG\",\"https:\/\/comunidadedasias.b-cdn.net\/Biblioteca%20de%20prompts\/MODA%20PARA%20CRIANCAS\/ROUPAS%20PARA%20MENINOS\/UGC\/VIDEO\/UGC_VIDEO_MODA_PARA_CRIAN%C3%87A_KIT_BLUSA_BERMUDA.mp4\",[\"Imagem da influenciadora\",\"Imagem de refer\u00eancia do produto: Roupas Para Meninos\"],true],[25,\"POV\",\"POV - Kit Blusa e Bermuda Infantil\",\"Kit Blusa e Bermuda Infantil em composi\u00e7\u00e3o POV, conforme o conte\u00fado validado da biblioteca.\",\"V\u00eddeo POV correspondente ao mesmo conte\u00fado e t\u00edtulo da imagem selecionada.\",\"https:\/\/comunidadedasias.b-cdn.net\/Biblioteca%20de%20prompts\/MODA%20PARA%20CRIANCAS\/ROUPAS%20PARA%20MENINOS\/POV\/IMAGEM\/POV_IMAGEM_MODA_PARA_CRIAN%C3%87A_KIT_BLUSA_BERMUDA.PNG\",\"https:\/\/comunidadedasias.b-cdn.net\/Biblioteca%20de%20prompts\/MODA%20PARA%20CRIANCAS\/ROUPAS%20PARA%20MENINOS\/POV\/VIDEO\/POV_VIDEO_MODA_PARA_CRIAN%C3%87A_KIT_BLUSA_BERMUDA.mp4\",[\"Imagem de refer\u00eancia do produto: Roupas Para Meninos\"],true],[26,\"UGC\",\"UGC - Testando Equipamento\",\"Prompt de imagem UGC para computadores e equipamentos de escrit\u00f3rio.\",\"Prompt de v\u00eddeo correspondente ao estilo UGC - Testando Equipamento.\",\"data:image\/svg+xml;charset=UTF-8,%0A%20%20%20%20%20%20%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22900%22%20height%3D%221125%22%20viewBox%3D%220%200%20900%201125%22%3E%0A%20%20%20%20%20%20%20%20%3Cdefs%3E%0A%20%20%20%20%20%20%20%20%20%20%3ClinearGradient%20id%3D%22bg%22%20x1%3D%220%22%20y1%3D%220%22%20x2%3D%221%22%20y2%3D%221%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cstop%20offset%3D%220%25%22%20stop-color%3D%22%23142a43%22%2F%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cstop%20offset%3D%22100%25%22%20stop-color%3D%22%23071421%22%2F%3E%0A%20%20%20%20%20%20%20%20%20%20%3C%2FlinearGradient%3E%0A%20%20%20%20%20%20%20%20%20%20%3CradialGradient%20id%3D%22glow%22%20cx%3D%2275%25%22%20cy%3D%2218%25%22%20r%3D%2265%25%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cstop%20offset%3D%220%25%22%20stop-color%3D%22%2325d6d0%22%20stop-opacity%3D%22.42%22%2F%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cstop%20offset%3D%22100%25%22%20stop-color%3D%22%2325d6d0%22%20stop-opacity%3D%220%22%2F%3E%0A%20%20%20%20%20%20%20%20%20%20%3C%2FradialGradient%3E%0A%20%20%20%20%20%20%20%20%3C%2Fdefs%3E%0A%20%20%20%20%20%20%20%20%3Crect%20width%3D%22900%22%20height%3D%221125%22%20fill%3D%22url(%23bg)%22%2F%3E%0A%20%20%20%20%20%20%20%20%3Crect%20width%3D%22900%22%20height%3D%221125%22%20fill%3D%22url(%23glow)%22%2F%3E%0A%20%20%20%20%20%20%20%20%3Ccircle%20cx%3D%22450%22%20cy%3D%22420%22%20r%3D%22190%22%20fill%3D%22%2325d6d0%22%20fill-opacity%3D%22.12%22%20stroke%3D%22%2325d6d0%22%20stroke-opacity%3D%22.42%22%20stroke-width%3D%224%22%2F%3E%0A%20%20%20%20%20%20%20%20%3Crect%20x%3D%22285%22%20y%3D%22255%22%20width%3D%22330%22%20height%3D%22330%22%20rx%3D%2252%22%20fill%3D%22%230b1b2d%22%20stroke%3D%22%2325d6d0%22%20stroke-opacity%3D%22.55%22%20stroke-width%3D%224%22%2F%3E%0A%20%20%20%20%20%20%20%20%3Ctext%20x%3D%22450%22%20y%3D%22425%22%20text-anchor%3D%22middle%22%20font-family%3D%22Arial%2C%20sans-serif%22%20font-size%3D%2292%22%20font-weight%3D%22700%22%20fill%3D%22%2325d6d0%22%3EUGC%3C%2Ftext%3E%0A%20%20%20%20%20%20%20%20%3Ctext%20x%3D%22450%22%20y%3D%22690%22%20text-anchor%3D%22middle%22%20font-family%3D%22Arial%2C%20sans-serif%22%20font-size%3D%2238%22%20font-weight%3D%22700%22%20fill%3D%22%23f3f8ff%22%3EUGC%20-%20Testando%20Equipamento%3C%2Ftext%3E%0A%20%20%20%20%20%20%20%20%3CforeignObject%20x%3D%22110%22%20y%3D%22745%22%20width%3D%22680%22%20height%3D%22170%22%3E%0A%20%20%20%20%20%20%20%20%20%20%3Cdiv%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxhtml%22%20style%3D%22font-family%3AArial%2Csans-serif%3Bcolor%3A%239eb0c5%3Bfont-size%3A28px%3Bline-height%3A1.35%3Btext-align%3Acenter%3B%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20Computadores%20e%20equipamentos%20de%20escrit%C3%B3rio%0A%20%20%20%20%20%20%20%20%20%20%3C%2Fdiv%3E%0A%20%20%20%20%20%20%20%20%3C%2FforeignObject%3E%0A%20%20%20%20%20%20%20%20%3Ctext%20x%3D%22450%22%20y%3D%221030%22%20text-anchor%3D%22middle%22%20font-family%3D%22Arial%2C%20sans-serif%22%20font-size%3D%2224%22%20fill%3D%22%237890aa%22%3EImagem%20demonstrativa%20%E2%80%94%20substitua%20pelo%20seu%20link%3C%2Ftext%3E%0A%20%20%20%20%20%20%3C%2Fsvg%3E\",\"\",[\"Imagem da influenciadora\",\"Imagem de refer\u00eancia do produto: computador ou equipamento de escrit\u00f3rio\"],false],[26,\"POV\",\"POV - Uso no Escrit\u00f3rio\",\"Prompt de imagem POV para computadores e equipamentos de escrit\u00f3rio.\",\"Prompt de v\u00eddeo correspondente ao estilo POV - Uso no Escrit\u00f3rio.\",\"data:image\/svg+xml;charset=UTF-8,%0A%20%20%20%20%20%20%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22900%22%20height%3D%221125%22%20viewBox%3D%220%200%20900%201125%22%3E%0A%20%20%20%20%20%20%20%20%3Cdefs%3E%0A%20%20%20%20%20%20%20%20%20%20%3ClinearGradient%20id%3D%22bg%22%20x1%3D%220%22%20y1%3D%220%22%20x2%3D%221%22%20y2%3D%221%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cstop%20offset%3D%220%25%22%20stop-color%3D%22%23142a43%22%2F%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cstop%20offset%3D%22100%25%22%20stop-color%3D%22%23071421%22%2F%3E%0A%20%20%20%20%20%20%20%20%20%20%3C%2FlinearGradient%3E%0A%20%20%20%20%20%20%20%20%20%20%3CradialGradient%20id%3D%22glow%22%20cx%3D%2275%25%22%20cy%3D%2218%25%22%20r%3D%2265%25%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cstop%20offset%3D%220%25%22%20stop-color%3D%22%23a855f7%22%20stop-opacity%3D%22.42%22%2F%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cstop%20offset%3D%22100%25%22%20stop-color%3D%22%23a855f7%22%20stop-opacity%3D%220%22%2F%3E%0A%20%20%20%20%20%20%20%20%20%20%3C%2FradialGradient%3E%0A%20%20%20%20%20%20%20%20%3C%2Fdefs%3E%0A%20%20%20%20%20%20%20%20%3Crect%20width%3D%22900%22%20height%3D%221125%22%20fill%3D%22url(%23bg)%22%2F%3E%0A%20%20%20%20%20%20%20%20%3Crect%20width%3D%22900%22%20height%3D%221125%22%20fill%3D%22url(%23glow)%22%2F%3E%0A%20%20%20%20%20%20%20%20%3Ccircle%20cx%3D%22450%22%20cy%3D%22420%22%20r%3D%22190%22%20fill%3D%22%23a855f7%22%20fill-opacity%3D%22.12%22%20stroke%3D%22%23a855f7%22%20stroke-opacity%3D%22.42%22%20stroke-width%3D%224%22%2F%3E%0A%20%20%20%20%20%20%20%20%3Crect%20x%3D%22285%22%20y%3D%22255%22%20width%3D%22330%22%20height%3D%22330%22%20rx%3D%2252%22%20fill%3D%22%230b1b2d%22%20stroke%3D%22%23a855f7%22%20stroke-opacity%3D%22.55%22%20stroke-width%3D%224%22%2F%3E%0A%20%20%20%20%20%20%20%20%3Ctext%20x%3D%22450%22%20y%3D%22425%22%20text-anchor%3D%22middle%22%20font-family%3D%22Arial%2C%20sans-serif%22%20font-size%3D%2292%22%20font-weight%3D%22700%22%20fill%3D%22%23a855f7%22%3EPOV%3C%2Ftext%3E%0A%20%20%20%20%20%20%20%20%3Ctext%20x%3D%22450%22%20y%3D%22690%22%20text-anchor%3D%22middle%22%20font-family%3D%22Arial%2C%20sans-serif%22%20font-size%3D%2238%22%20font-weight%3D%22700%22%20fill%3D%22%23f3f8ff%22%3EPOV%20-%20Uso%20no%20Escrit%C3%B3rio%3C%2Ftext%3E%0A%20%20%20%20%20%20%20%20%3CforeignObject%20x%3D%22110%22%20y%3D%22745%22%20width%3D%22680%22%20height%3D%22170%22%3E%0A%20%20%20%20%20%20%20%20%20%20%3Cdiv%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxhtml%22%20style%3D%22font-family%3AArial%2Csans-serif%3Bcolor%3A%239eb0c5%3Bfont-size%3A28px%3Bline-height%3A1.35%3Btext-align%3Acenter%3B%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20Computadores%20e%20equipamentos%20de%20escrit%C3%B3rio%0A%20%20%20%20%20%20%20%20%20%20%3C%2Fdiv%3E%0A%20%20%20%20%20%20%20%20%3C%2FforeignObject%3E%0A%20%20%20%20%20%20%20%20%3Ctext%20x%3D%22450%22%20y%3D%221030%22%20text-anchor%3D%22middle%22%20font-family%3D%22Arial%2C%20sans-serif%22%20font-size%3D%2224%22%20fill%3D%22%237890aa%22%3EImagem%20demonstrativa%20%E2%80%94%20substitua%20pelo%20seu%20link%3C%2Ftext%3E%0A%20%20%20%20%20%20%3C%2Fsvg%3E\",\"\",[\"Imagem de refer\u00eancia do produto: computador ou equipamento de escrit\u00f3rio\"],false]];\r\n  const imagePrompts=[];\r\n  const videoPrompts=[];\r\n  MEDIA_ROWS.forEach(([categoryIndex,format,title,imageDescription,videoDescription,imageUrl,videoUrl,references,isNew])=>{\r\n    const config=categoryConfigs[categoryIndex];\r\n    const suffix=`${config.slug}-${format.toLowerCase()}`;\r\n    const imageId=`img-${suffix}`;\r\n    imagePrompts.push({id:imageId,title,category:config.category,format,description:imageDescription,imageUrl,isNew,references});\r\n    videoPrompts.push({id:`vid-${suffix}`,relatedImage:imageId,title,category:config.category,format,description:videoDescription,posterUrl:imageUrl,videoUrl,isNew});\r\n  });\r\n\r\n  function makePlaceholder(category,title,format){\r\n    const accent=format===\"UGC\"?\"#25d6d0\":\"#a855f7\";\r\n    const clean=value=>String(value).replace(\/[&<>]\/g,ch=>({\"&\":\"&amp;\",\"<\":\"&lt;\",\">\":\"&gt;\"}[ch]));\r\n    const svg=`<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"900\" height=\"1125\" viewBox=\"0 0 900 1125\"><defs><linearGradient id=\"g\" x1=\"0\" y1=\"0\" x2=\"1\" y2=\"1\"><stop stop-color=\"#142a43\"\/><stop offset=\"1\" stop-color=\"#071421\"\/><\/linearGradient><\/defs><rect width=\"900\" height=\"1125\" fill=\"url(#g)\"\/><circle cx=\"450\" cy=\"420\" r=\"190\" fill=\"${accent}\" fill-opacity=\".12\"\/><text x=\"450\" y=\"440\" text-anchor=\"middle\" font-family=\"Arial\" font-size=\"92\" font-weight=\"700\" fill=\"${accent}\">${clean(format)}<\/text><text x=\"450\" y=\"690\" text-anchor=\"middle\" font-family=\"Arial\" font-size=\"38\" font-weight=\"700\" fill=\"#f3f8ff\">${clean(title)}<\/text><text x=\"450\" y=\"770\" text-anchor=\"middle\" font-family=\"Arial\" font-size=\"24\" fill=\"#9eb0c5\">${clean(category)}<\/text><\/svg>`;\r\n    return \"data:image\/svg+xml;charset=UTF-8,\"+encodeURIComponent(svg);\r\n  }\r\n\r\n  \/* =========================================================\r\n     FIM DA \u00c1REA DE CADASTRO\r\n     ========================================================= *\/\r\n\r\n  \/* ARMAZENAMENTO SEGURO \u2014 evita que bloqueios do navegador ou dados corrompidos parem toda a p\u00e1gina *\/\r\n  const safeStorage = {\r\n    get(key, fallback = \"\") {\r\n      try {\r\n        const value = window.localStorage.getItem(key);\r\n        return value === null ? fallback : value;\r\n      } catch (error) {\r\n        return fallback;\r\n      }\r\n    },\r\n    set(key, value) {\r\n      try {\r\n        window.localStorage.setItem(key, value);\r\n      } catch (error) {}\r\n    },\r\n    remove(key) {\r\n      try {\r\n        window.localStorage.removeItem(key);\r\n      } catch (error) {}\r\n    }\r\n  };\r\n\r\n  function readStoredObject(key) {\r\n    try {\r\n      const parsed = JSON.parse(safeStorage.get(key, \"{}\"));\r\n      return parsed && typeof parsed === \"object\" && !Array.isArray(parsed) ? parsed : {};\r\n    } catch (error) {\r\n      safeStorage.remove(key);\r\n      return {};\r\n    }\r\n  }\r\n\r\n  \/* Sempre inicia a p\u00e1gina limpa, como se o usu\u00e1rio tivesse clicado\r\n     em \u201cLimpar e recome\u00e7ar\u201d. *\/\r\n  safeStorage.remove(\"bp_selected_image\");\r\n  safeStorage.remove(\"bp_selected_video\");\r\n\r\n  const state = {\r\n    category: \"all\",\r\n    format: \"all\",\r\n    search: \"\",\r\n    chosenImageId: \"\",\r\n    selectedImageId: \"\",\r\n    selectedVideoId: \"\"\r\n  };\r\n\r\n\r\n\r\n  \/* Os quatro prompts universais acima substituem todos os prompts individuais. *\/\r\n\r\n  const speechCopies = readStoredObject(\"bp_speech_copies\");\r\n\r\n  function normalizePromptText(value) {\r\n    return String(value || \"\")\r\n      .replace(\/\\f\/g, \"\\n\")\r\n      .replace(\/\\r\\n?\/g, \"\\n\")\r\n      .replace(\/[ \\t]+\\n\/g, \"\\n\")\r\n      .replace(\/\\n{4,}\/g, \"\\n\\n\\n\")\r\n      .trim();\r\n  }\r\n\r\n  function getUniversalPrompt(item, type) {\r\n    const format = String(item?.format || \"\").toUpperCase();\r\n    const mediaType = String(type || \"\").toLowerCase();\r\n\r\n    const key =\r\n      format === \"UGC\" && mediaType === \"image\" ? \"UGC_IMAGE\" :\r\n      format === \"POV\" && mediaType === \"image\" ? \"POV_IMAGE\" :\r\n      format === \"UGC\" && mediaType === \"video\" ? \"UGC_VIDEO\" :\r\n      format === \"POV\" && mediaType === \"video\" ? \"POV_VIDEO\" :\r\n      \"\";\r\n\r\n    const basePrompt = key ? UNIVERSAL_PROMPTS[key] : \"\";\r\n    if (!basePrompt) return \"\";\r\n\r\n    const context = [\r\n      \"\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\",\r\n      \"SELECTED CONTENT CONTEXT\",\r\n      \"\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\",\r\n      `Category: ${item.category || \"Not specified\"}`,\r\n      `Content format: ${format || \"Not specified\"}`,\r\n      `Selected content: ${item.title || \"Not specified\"}`,\r\n      \"\",\r\n      \"Apply the universal instructions above specifically to this selected category and content.\",\r\n      \"Do not change, invent or replace any visible characteristic of the uploaded reference.\"\r\n    ].join(\"\\n\");\r\n\r\n    return normalizePromptText(`${basePrompt}\\n\\n${context}`);\r\n  }\r\n\r\n  function getSpeechCopy(videoId) {\r\n    return String(speechCopies[videoId] || \"\").slice(0, 141);\r\n  }\r\n\r\n  function saveSpeechCopy(videoId, value) {\r\n    const cleanValue = String(value || \"\").slice(0, 141);\r\n    if (cleanValue) speechCopies[videoId] = cleanValue;\r\n    else delete speechCopies[videoId];\r\n\r\n    safeStorage.set(\"bp_speech_copies\", JSON.stringify(speechCopies));\r\n    return cleanValue;\r\n  }\r\n\r\n  function buildPersonalizedVideoPrompt(item) {\r\n    const basePrompt = getUniversalPrompt(item, \"video\");\r\n    const speech = getSpeechCopy(item.id);\r\n    if (!speech) return basePrompt;\r\n\r\n    const escapedSpeech = speech.replace(\/\\\\\/g, \"\\\\\\\\\").replace(\/\"\/g, '\\\\\"');\r\n    const replacement = `Influencer Script:\r\n${escapedSpeech}`;\r\n\r\n    if (\/Influencer Script:\\s*\\[PASTE THE INFLUENCER(?:'S|\u2019S) SCRIPT HERE\\]\/i.test(basePrompt)) {\r\n      return basePrompt.replace(\/Influencer Script:\\s*\\[PASTE THE INFLUENCER(?:'S|\u2019S) SCRIPT HERE\\]\/i, replacement);\r\n    }\r\n    if (\/Video narration:\\s*\\[PASTE THE SCRIPT HERE\\]\/i.test(basePrompt)) {\r\n      return basePrompt.replace(\/Video narration:\\s*\\[PASTE THE SCRIPT HERE\\]\/i, `Video narration:\r\n${escapedSpeech}`);\r\n    }\r\n    if (\/\\[PASTE THE SCRIPT HERE\\]\/i.test(basePrompt)) {\r\n      return basePrompt.replace(\/\\[PASTE THE SCRIPT HERE\\]\/i, escapedSpeech);\r\n    }\r\n    return normalizePromptText(`${basePrompt}\r\n\r\n${replacement}`);\r\n  }\r\n\r\n  const els = {\r\n    categorySelect: document.getElementById(\"bpCategorySelect\"),\r\n    formatSelect: document.getElementById(\"bpFormatSelect\"),\r\n    imageSelect: document.getElementById(\"bpImageSelect\"),\r\n    videoSelect: document.getElementById(\"bpVideoSelect\"),\r\n    backButton: document.getElementById(\"bpBackButton\"),\r\n    flowResetButton: document.getElementById(\"bpFlowResetButton\"),\r\n    nextGuidance: document.getElementById(\"bpNextGuidance\"),\r\n    searchInput: document.getElementById(\"bpSearchInput\"),\r\n    imageGrid: document.getElementById(\"bpImageGrid\"),\r\n    videoGrid: document.getElementById(\"bpVideoGrid\"),\r\n    videosSection: document.getElementById(\"bpVideosSection\"),\r\n    imageCount: document.getElementById(\"bpImageCount\"),\r\n    videoCount: document.getElementById(\"bpVideoCount\"),\r\n    imageEmpty: document.getElementById(\"bpImageEmpty\"),\r\n    videoEmpty: document.getElementById(\"bpVideoEmpty\"),\r\n    videoGuidance: document.getElementById(\"bpVideoGuidance\"),\r\n    selectionSummary: document.getElementById(\"bpSelectionSummary\"),\r\n    resetButton: document.getElementById(\"bpResetButton\"),\r\n    modalBackdrop: document.getElementById(\"bpModalBackdrop\"),\r\n    modalTitle: document.getElementById(\"bpModalTitle\"),\r\n    modalSubtitle: document.getElementById(\"bpModalSubtitle\"),\r\n    modalBody: document.getElementById(\"bpModalBody\"),\r\n    modalClose: document.getElementById(\"bpModalClose\"),\r\n    toast: document.getElementById(\"bpToast\")\r\n  };\r\n\r\n  \/* Portal do modal: retira somente a janela de instru\u00e7\u00f5es de dentro dos\r\n     cont\u00eaineres transformados do Elementor. O conte\u00fado e os IDs permanecem\r\n     os mesmos, mas o modal passa a usar a viewport real do navegador. *\/\r\n  if (els.modalBackdrop && els.modalBackdrop.parentElement !== document.body) {\r\n    document.body.appendChild(els.modalBackdrop);\r\n  }\r\n\r\n  function escapeHtml(value) {\r\n    return String(value ?? \"\")\r\n      .replace(\/&\/g, \"&amp;\")\r\n      .replace(\/<\/g, \"&lt;\")\r\n      .replace(\/>\/g, \"&gt;\")\r\n      .replace(\/\"\/g, \"&quot;\")\r\n      .replace(\/'\/g, \"&#039;\");\r\n  }\r\n\r\n  function normalize(value) {\r\n    return String(value || \"\")\r\n      .normalize(\"NFD\")\r\n      .replace(\/[\\u0300-\\u036f]\/g, \"\")\r\n      .toLowerCase();\r\n  }\r\n\r\n  function hasPublishedContent(category) {\r\n    const hasRealImage = imagePrompts.some(item =>\r\n      item.category === category &&\r\n      item.imageUrl &&\r\n      !String(item.imageUrl).startsWith(\"data:image\")\r\n    );\r\n\r\n    const hasRealVideo = videoPrompts.some(item =>\r\n      item.category === category &&\r\n      Boolean(String(item.videoUrl || \"\").trim())\r\n    );\r\n\r\n    return hasRealImage || hasRealVideo;\r\n  }\r\n\r\n  function populateCategories() {\r\n    const availableCategories = categories.filter(category => hasPublishedContent(category));\r\n\r\n    availableCategories.forEach(category => {\r\n      const option = document.createElement(\"option\");\r\n      option.value = category;\r\n      option.textContent = category;\r\n      els.categorySelect.appendChild(option);\r\n    });\r\n  }\r\n\r\n  function sortPublishedImagesFirst(items) {\r\n    return items\r\n      .map((item, index) => ({\r\n        item,\r\n        index,\r\n        published: Boolean(item.imageUrl) && !String(item.imageUrl).startsWith(\"data:image\")\r\n      }))\r\n      .sort((a, b) => Number(b.published) - Number(a.published) || a.index - b.index)\r\n      .map(entry => entry.item);\r\n  }\r\n\r\n  function sortPublishedVideosFirst(items) {\r\n    return items\r\n      .map((item, index) => ({\r\n        item,\r\n        index,\r\n        published: Boolean(String(item.videoUrl || \"\").trim())\r\n      }))\r\n      .sort((a, b) => Number(b.published) - Number(a.published) || a.index - b.index)\r\n      .map(entry => entry.item);\r\n  }\r\n\r\n  function getBaseFilteredImages() {\r\n    return imagePrompts.filter(item => {\r\n      const publishedMatch = Boolean(item.imageUrl) && !String(item.imageUrl).startsWith(\"data:image\");\r\n      const categoryMatch = state.category === \"all\" || item.category === state.category;\r\n      const formatMatch = state.format === \"all\" || item.format === state.format;\r\n      const haystack = normalize(`${item.title} ${item.category} ${item.format} ${item.description}`);\r\n      const searchMatch = !state.search || haystack.includes(normalize(state.search));\r\n      return publishedMatch && categoryMatch && formatMatch && searchMatch;\r\n    });\r\n  }\r\n\r\n  function getFilteredImages() {\r\n    const base = sortPublishedImagesFirst(getBaseFilteredImages());\r\n    const imageIdToShow = state.chosenImageId || state.selectedImageId;\r\n\r\n    return imageIdToShow\r\n      ? base.filter(item => item.id === imageIdToShow)\r\n      : base;\r\n  }\r\n\r\n  function getBaseFilteredVideos() {\r\n    return videoPrompts.filter(item => {\r\n      const publishedMatch = Boolean(String(item.videoUrl || \"\").trim());\r\n      const relationMatch = state.selectedImageId ? item.relatedImage === state.selectedImageId : true;\r\n      const categoryMatch = state.category === \"all\" || item.category === state.category;\r\n      const formatMatch = state.format === \"all\" || item.format === state.format;\r\n      const haystack = normalize(`${item.title} ${item.category} ${item.format} ${item.description}`);\r\n      const searchMatch = !state.search || haystack.includes(normalize(state.search));\r\n      return publishedMatch && relationMatch && categoryMatch && formatMatch && searchMatch;\r\n    });\r\n  }\r\n\r\n  function getFilteredVideos() {\r\n    const base = sortPublishedVideosFirst(getBaseFilteredVideos());\r\n\r\n    if (state.selectedVideoId) {\r\n      return base.filter(item => item.id === state.selectedVideoId);\r\n    }\r\n\r\n    return state.selectedImageId ? base.slice(0, 1) : base;\r\n  }\r\n\r\n  function populateImageOptions() {\r\n    const ready = state.category !== \"all\" && state.format !== \"all\";\r\n    const items = getBaseFilteredImages();\r\n\r\n    els.imageSelect.disabled = !ready;\r\n\r\n    if (!ready) {\r\n      els.imageSelect.innerHTML = '<option value=\"\">Primeiro escolha categoria e formato<\/option>';\r\n      return;\r\n    }\r\n\r\n    els.imageSelect.innerHTML = [\r\n      '<option value=\"\">Escolha uma descri\u00e7\u00e3o de imagem<\/option>',\r\n      ...items.map(item => `<option value=\"${escapeHtml(item.id)}\">${escapeHtml(item.title)}<\/option>`)\r\n    ].join(\"\");\r\n\r\n    els.imageSelect.value = state.chosenImageId || state.selectedImageId || \"\";\r\n  }\r\n\r\n  function populateVideoOptions() {\r\n    const ready = Boolean(state.selectedImageId);\r\n    const items = getBaseFilteredVideos();\r\n\r\n    els.videoSelect.disabled = !ready;\r\n\r\n    if (!ready) {\r\n      els.videoSelect.innerHTML = '<option value=\"\">Primeiro escolha uma imagem<\/option>';\r\n      return;\r\n    }\r\n\r\n    const oneToOneItems = items.slice(0, 1);\r\n\r\n    els.videoSelect.innerHTML = [\r\n      '<option value=\"\">Selecione o v\u00eddeo correspondente<\/option>',\r\n      ...oneToOneItems.map(item => `<option value=\"${escapeHtml(item.id)}\">${escapeHtml(item.title)}<\/option>`)\r\n    ].join(\"\");\r\n\r\n    els.videoSelect.value = state.selectedVideoId || \"\";\r\n  }\r\n\r\n  function imageCard(item) {\r\n    const selected = item.id === state.selectedImageId;\r\n    const chosen = item.id === state.chosenImageId || selected;\r\n    return `\r\n      <article class=\"bp-card ${selected ? \"is-selected\" : \"\"}\" data-card-id=\"${escapeHtml(item.id)}\">\r\n        <div class=\"bp-media\">\r\n          <img src=\"${escapeHtml(item.imageUrl)}\" alt=\"${escapeHtml(item.title)}\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\">\r\n        <\/div>\r\n\r\n        <div class=\"bp-card-body\">\r\n          <p class=\"bp-card-category\">${escapeHtml(item.category)}<\/p>\r\n          <h3 class=\"bp-card-title\">${escapeHtml(item.title)}<\/h3>\r\n          <p class=\"bp-card-description\">${escapeHtml(item.description)}<\/p>\r\n\r\n          <div class=\"bp-card-actions bp-image-card-actions\">\r\n            <button class=\"bp-button bp-button-secondary ${selected ? \"bp-image-selected-button\" : \"\"}\" type=\"button\" data-action=\"select-image\" data-id=\"${escapeHtml(item.id)}\">\r\n              ${selected ? \"\u2713 Imagem selecionada\" : \"Selecionar imagem\"}\r\n            <\/button>\r\n            <button class=\"bp-button bp-button-secondary bp-image-instructions-button\" type=\"button\" data-action=\"instructions-image\" data-id=\"${escapeHtml(item.id)}\" ${selected ? \"\" : \"disabled\"}>\r\n              \u24d8 Instru\u00e7\u00f5es\r\n            <\/button>\r\n          <\/div>\r\n        <\/div>\r\n      <\/article>\r\n    `;\r\n  }\r\n\r\n  function videoCard(item) {\r\n    const selected = item.id === state.selectedVideoId;\r\n    const media = `<video class=\"bp-hover-video\" data-src=\"${escapeHtml(item.videoUrl)}\" poster=\"${escapeHtml(item.posterUrl)}\" muted playsinline preload=\"none\" aria-label=\"Pr\u00e9via em v\u00eddeo: ${escapeHtml(item.title)}\"><\/video>`;\r\n\r\n    return `\r\n      <article class=\"bp-card ${selected ? \"is-selected\" : \"\"}\" data-card-id=\"${escapeHtml(item.id)}\">\r\n        <div class=\"bp-media\">\r\n          ${media}\r\n        <\/div>\r\n\r\n        <div class=\"bp-card-body\">\r\n          <p class=\"bp-card-category\">${escapeHtml(item.category)}<\/p>\r\n          <h3 class=\"bp-card-title\">${escapeHtml(item.title)}<\/h3>\r\n          <p class=\"bp-card-description\">${escapeHtml(item.description)}<\/p>\r\n\r\n          <div class=\"bp-card-actions bp-video-card-actions\">\r\n            <button\r\n              class=\"bp-button bp-button-secondary ${selected ? \"bp-video-selected-button\" : \"\"}\"\r\n              type=\"button\"\r\n              data-action=\"select-video\"\r\n              data-id=\"${escapeHtml(item.id)}\"\r\n            >\r\n              ${selected ? \"\u2713 V\u00eddeo selecionado\" : \"Selecionar v\u00eddeo\"}\r\n            <\/button>\r\n\r\n            <button\r\n              class=\"bp-button bp-button-secondary bp-video-instructions-button\"\r\n              type=\"button\"\r\n              data-action=\"instructions-video\"\r\n              data-id=\"${escapeHtml(item.id)}\"\r\n            >\r\n              \u24d8 Instru\u00e7\u00f5es\r\n            <\/button>\r\n          <\/div>\r\n        <\/div>\r\n      <\/article>\r\n    `;\r\n  }\r\n\r\n  function render() {\r\n    populateImageOptions();\r\n    populateVideoOptions();\r\n\r\n    const images = getFilteredImages();\r\n    const videos = getFilteredVideos();\r\n\r\n    els.imageGrid.innerHTML = images.map(imageCard).join(\"\");\r\n    els.videoGrid.innerHTML = videos.map(videoCard).join(\"\");\r\n\r\n    els.imageCount.textContent = `${images.length} ${images.length === 1 ? \"imagem\" : \"imagens\"}`;\r\n    els.videoCount.textContent = `${videos.length} ${videos.length === 1 ? \"v\u00eddeo\" : \"v\u00eddeos\"}`;\r\n\r\n    els.imageEmpty.classList.toggle(\"is-visible\", images.length === 0);\r\n    els.videoEmpty.classList.toggle(\"is-visible\", videos.length === 0);\r\n    const showVideoSection = videos.length > 0;\r\n    els.videosSection.classList.toggle(\"is-visible\", showVideoSection);\r\n    els.videoGuidance.classList.toggle(\"is-visible\", Boolean(state.selectedImageId));\r\n\r\n    updateProgress();\r\n    updateSummary();\r\n    activateVideoHoverBehavior();\r\n  }\r\n\r\n  function setStep(stepName, status) {\r\n    const step = document.querySelector(`#bp-app .bp-step[data-step=\"${stepName}\"]`);\r\n    if (!step) return;\r\n\r\n    step.classList.remove(\"is-active\", \"is-complete\");\r\n    if (status === \"active\") step.classList.add(\"is-active\");\r\n    if (status === \"complete\") step.classList.add(\"is-complete\");\r\n\r\n    const dot = step.querySelector(\".bp-step-dot\");\r\n    if (status === \"complete\") dot.textContent = \"\u2713\";\r\n    else {\r\n      const map = { category: \"1\", format: \"2\", image: \"3\", video: \"4\" };\r\n      dot.textContent = map[stepName];\r\n    }\r\n  }\r\n\r\n  function updateProgress() {\r\n    const categoryDone = state.category !== \"all\";\r\n    const formatDone = state.format !== \"all\";\r\n    const imageDone = Boolean(state.selectedImageId);\r\n    const videoDone = Boolean(state.selectedVideoId);\r\n\r\n    setStep(\"category\", categoryDone ? \"complete\" : \"active\");\r\n    setStep(\"format\", formatDone ? \"complete\" : (categoryDone ? \"active\" : \"\"));\r\n    setStep(\"image\", imageDone ? \"complete\" : (categoryDone && formatDone ? \"active\" : \"\"));\r\n    setStep(\"video\", videoDone ? \"complete\" : (imageDone ? \"active\" : \"\"));\r\n\r\n    const labels = {\r\n      category: categoryDone ? \"Conclu\u00eddo\" : \"Escolha uma categoria\",\r\n      format: formatDone ? \"Conclu\u00eddo\" : \"Escolha UGC ou POV\",\r\n      image: imageDone ? \"Conclu\u00eddo\" : \"Escolha uma descri\u00e7\u00e3o\",\r\n      video: videoDone ? \"Conclu\u00eddo\" : \"Escolha o movimento\"\r\n    };\r\n\r\n    Object.entries(labels).forEach(([key, value]) => {\r\n      const el = document.querySelector(`#bp-app .bp-step[data-step=\"${key}\"] .bp-step-status`);\r\n      if (el) el.textContent = value;\r\n    });\r\n\r\n    if (!categoryDone) {\r\n      els.nextGuidance.textContent = \"Etapa 1: escolha uma categoria para come\u00e7ar a filtrar a biblioteca.\";\r\n    } else if (!formatDone) {\r\n      els.nextGuidance.textContent = \"Etapa 2: agora escolha UGC ou POV.\";\r\n    } else if (!imageDone) {\r\n      els.nextGuidance.textContent = state.chosenImageId ? \"Agora copie o prompt, gere a imagem na sua plataforma e depois clique em \u201cSelecionar imagem\u201d para liberar o v\u00eddeo.\" : \"Etapa 3: escolha, pela descri\u00e7\u00e3o, a imagem que deseja gerar.\";\r\n    } else if (!videoDone) {\r\n      els.nextGuidance.textContent = \"Etapa 4: a imagem foi confirmada. Agora selecione o \u00fanico v\u00eddeo correspondente para continuar.\";\r\n    } else {\r\n      els.nextGuidance.textContent = \"Sele\u00e7\u00e3o conclu\u00edda. A imagem e o v\u00eddeo escolhidos est\u00e3o vis\u00edveis abaixo, prontos para copiar.\";\r\n    }\r\n\r\n    els.backButton.disabled = !categoryDone && !formatDone && !imageDone && !videoDone;\r\n  }\r\n\r\n  function updateSummary() {\r\n    const parts = [];\r\n    if (state.category !== \"all\") parts.push(state.category);\r\n    if (state.format !== \"all\") parts.push(state.format);\r\n\r\n    if (state.chosenImageId || state.selectedImageId) {\r\n      const currentImageId = state.selectedImageId || state.chosenImageId;\r\n      const item = imagePrompts.find(x => x.id === currentImageId);\r\n      if (item) {\r\n        parts.push(state.selectedImageId ? `Imagem selecionada: ${item.title}` : `Imagem escolhida: ${item.title}`);\r\n      }\r\n    }\r\n\r\n    if (state.selectedVideoId) {\r\n      const item = videoPrompts.find(x => x.id === state.selectedVideoId);\r\n      if (item) parts.push(`V\u00eddeo: ${item.title}`);\r\n    }\r\n\r\n    els.selectionSummary.textContent = parts.length\r\n      ? parts.join(\" \u00b7 \")\r\n      : \"Nenhuma sele\u00e7\u00e3o conclu\u00edda.\";\r\n  }\r\n\r\n  let modalReturnFocus = null;\r\n  let modalScrollPosition = { x: 0, y: 0 };\r\n\r\n  function openModal(title, subtitle, bodyHtml) {\r\n    modalReturnFocus = document.activeElement instanceof HTMLElement ? document.activeElement : null;\r\n    modalScrollPosition = {\r\n      x: window.scrollX || window.pageXOffset || 0,\r\n      y: window.scrollY || window.pageYOffset || 0\r\n    };\r\n    els.modalTitle.textContent = title;\r\n    els.modalSubtitle.textContent = subtitle || \"\";\r\n    els.modalBody.innerHTML = bodyHtml;\r\n    const modal = els.modalBackdrop.querySelector(\".bp-modal\");\r\n    if (modal) modal.scrollTop = 0;\r\n    els.modalBackdrop.classList.add(\"is-open\");\r\n    els.modalBackdrop.setAttribute(\"aria-hidden\", \"false\");\r\n    document.documentElement.style.overflow = \"hidden\";\r\n    document.body.classList.add(\"bp-modal-open\");\r\n\r\n    window.requestAnimationFrame(() => {\r\n      const activeModal = els.modalBackdrop?.querySelector(\".bp-modal\");\r\n      if (activeModal) activeModal.scrollTop = 0;\r\n      try { els.modalClose?.focus({ preventScroll: true }); } catch (error) {}\r\n    });\r\n  }\r\n\r\n  function closeModal() {\r\n    if (!els.modalBackdrop.classList.contains(\"is-open\")) return;\r\n    els.modalBackdrop.classList.remove(\"is-open\");\r\n    els.modalBackdrop.setAttribute(\"aria-hidden\", \"true\");\r\n    document.documentElement.style.overflow = \"\";\r\n    document.body.classList.remove(\"bp-modal-open\");\r\n    window.scrollTo(modalScrollPosition.x, modalScrollPosition.y);\r\n    if (modalReturnFocus && document.contains(modalReturnFocus)) {\r\n      setTimeout(() => {\r\n        try { modalReturnFocus.focus({ preventScroll: true }); } catch (error) {}\r\n      }, 0);\r\n    }\r\n  }\r\n\r\n  function showImageInstructions(item) {\r\n    if (!item) return;\r\n\r\n    const imagePrompt = getUniversalPrompt(item, \"image\");\r\n    if (!imagePrompt) {\r\n      openModal(\r\n        \"Prompt indispon\u00edvel\",\r\n        `${item.category || \"Categoria n\u00e3o identificada\"} \u00b7 ${item.format || \"Formato n\u00e3o identificado\"}`,\r\n        `<div class=\"bp-instruction-box\"><h4>N\u00e3o foi poss\u00edvel carregar o prompt<\/h4><p>O formato deste conte\u00fado n\u00e3o est\u00e1 vinculado a um dos quatro prompts universais. Feche esta janela e tente novamente.<\/p><\/div>`\r\n      );\r\n      return;\r\n    }\r\n\r\n    const refs = (Array.isArray(item.references) ? item.references : []).map((ref, index) => `\r\n      <div class=\"bp-reference-item\">\r\n        <span class=\"bp-reference-number\">${index + 1}<\/span>\r\n        <span>${escapeHtml(ref)}<\/span>\r\n      <\/div>\r\n    `).join(\"\");\r\n\r\n    openModal(\r\n      \"Como gerar esta imagem\",\r\n      `${item.category} \u00b7 ${item.format}`,\r\n      `\r\n        <div class=\"bp-instruction-box\">\r\n          <h4>Refer\u00eancias necess\u00e1rias<\/h4>\r\n          <p>Anexe as refer\u00eancias abaixo <strong>na ordem indicada<\/strong>. O formato ${escapeHtml(item.format)} exige exatamente estas imagens:<\/p>\r\n          <div class=\"bp-reference-list\">${refs}<\/div>\r\n        <\/div>\r\n\r\n        <div class=\"bp-instruction-box\" style=\"margin-top:14px;\">\r\n          <h4>Passo a passo<\/h4>\r\n          <ol class=\"bp-instruction-list\">\r\n            <li>Abra a ferramenta de gera\u00e7\u00e3o de imagem que voc\u00ea utiliza.<\/li>\r\n            <li>Anexe primeiro a imagem da influenciadora, quando o formato for UGC; depois anexe a imagem do produto.<\/li>\r\n            <li>No formato POV, anexe somente a imagem do produto, salvo quando a lista acima indicar outra refer\u00eancia.<\/li>\r\n            <li>Clique em <strong>Copiar prompt de imagem<\/strong>, cole o prompt completo e gere a imagem.<\/li>\r\n            <li>Baixe e confira a imagem final. O rosto, o produto, as cores, os textos e os detalhes precisam permanecer corretos.<\/li>\r\n            <li>Ao clicar em <strong>Selecionar imagem<\/strong>, este painel \u00e9 aberto automaticamente para voc\u00ea copiar o prompt; a sele\u00e7\u00e3o tamb\u00e9m libera o v\u00eddeo correspondente.<\/li>\r\n          <\/ol>\r\n        <\/div>\r\n\r\n        <div class=\"bp-compact-prompt-wrap\">\r\n          <div class=\"bp-compact-prompt-head\">\r\n            <strong>Prompt em ingl\u00eas<\/strong>\r\n            <span>Role dentro da caixa para ler tudo<\/span>\r\n          <\/div>\r\n          <div class=\"bp-compact-prompt\">${escapeHtml(imagePrompt)}<\/div>\r\n        <\/div>\r\n\r\n        <div class=\"bp-modal-actions\">\r\n          <button class=\"bp-button bp-button-primary\" type=\"button\" data-modal-copy=\"${escapeHtml(item.id)}\" data-copy-type=\"image\">\r\n            Copiar prompt de imagem\r\n          <\/button>\r\n        <\/div>\r\n      `\r\n    );\r\n  }\r\n\r\n  function showSpeechCopyEditor(item) {\r\n    saveSpeechCopy(item.id, \"\");\r\n    const currentSpeech = \"\";\r\n\r\n    openModal(\r\n      \"Incluir fala no prompt\",\r\n      `${item.category} \u00b7 ${item.format}`,\r\n      `\r\n        <div class=\"bp-speech-field-wrap\">\r\n          <div class=\"bp-speech-field-label\">\r\n            <strong>Escreva a fala do v\u00eddeo \u2014 m\u00e1ximo 141 caracteres<\/strong>\r\n            <span class=\"bp-speech-counter\" id=\"bpSpeechCounter\">${currentSpeech.length}\/141<\/span>\r\n          <\/div>\r\n\r\n          <textarea\r\n            class=\"bp-speech-textarea\"\r\n            id=\"bpSpeechTextarea\"\r\n            maxlength=\"141\"\r\n            placeholder=\"Digite aqui a fala que a influenciadora dever\u00e1 dizer...\"\r\n          >${escapeHtml(currentSpeech)}<\/textarea>\r\n\r\n          <p class=\"bp-speech-help\">\r\n            A fala ser\u00e1 adicionada automaticamente ao prompt de v\u00eddeo, substituindo a palavra \u201cFALA\u201d.\r\n          <\/p>\r\n\r\n          <div class=\"bp-speech-preview\" id=\"bpSpeechPreview\">\r\n            Dialogue (Brazilian Portuguese): \"${escapeHtml(currentSpeech || \"FALA\")}\"\r\n          <\/div>\r\n\r\n          <div class=\"bp-speech-empty-warning\" id=\"bpSpeechWarning\">\r\n            Escreva a fala antes de copiar o prompt completo.\r\n          <\/div>\r\n        <\/div>\r\n\r\n        <div class=\"bp-modal-actions\">\r\n          <button\r\n            class=\"bp-button bp-button-secondary\"\r\n            type=\"button\"\r\n            data-clear-speech=\"${escapeHtml(item.id)}\"\r\n          >\r\n            Limpar fala\r\n          <\/button>\r\n\r\n          <button\r\n            class=\"bp-button bp-button-secondary\"\r\n            type=\"button\"\r\n            data-copy-personalized-prompt=\"${escapeHtml(item.id)}\"\r\n          >\r\n            Copiar prompt completo\r\n          <\/button>\r\n        <\/div>\r\n      `\r\n    );\r\n\r\n    const textarea = document.getElementById(\"bpSpeechTextarea\");\r\n    const counter = document.getElementById(\"bpSpeechCounter\");\r\n    const preview = document.getElementById(\"bpSpeechPreview\");\r\n\r\n    if (textarea && counter && preview) {\r\n      const updateSpeechUI = () => {\r\n        const value = textarea.value.slice(0, 141);\r\n        if (textarea.value !== value) textarea.value = value;\r\n\r\n        counter.textContent = `${value.length}\/141`;\r\n        counter.classList.toggle(\"is-near-limit\", value.length >= 115 && value.length < 141);\r\n        counter.classList.toggle(\"is-limit\", value.length >= 141);\r\n        preview.textContent = `Dialogue (Brazilian Portuguese): \"${value || \"FALA\"}\"`;\r\n      };\r\n\r\n      textarea.addEventListener(\"input\", updateSpeechUI);\r\n      updateSpeechUI();\r\n      setTimeout(() => textarea.focus(), 80);\r\n    }\r\n  }\r\n\r\n  function showVideoInstructions(item) {\r\n    if (!item) return;\r\n\r\n    const videoPrompt = buildPersonalizedVideoPrompt(item);\r\n    if (!videoPrompt) {\r\n      openModal(\r\n        \"Prompt indispon\u00edvel\",\r\n        `${item.category || \"Categoria n\u00e3o identificada\"} \u00b7 ${item.format || \"Formato n\u00e3o identificado\"}`,\r\n        `<div class=\"bp-instruction-box\"><h4>N\u00e3o foi poss\u00edvel carregar o prompt<\/h4><p>O formato deste conte\u00fado n\u00e3o est\u00e1 vinculado a um dos quatro prompts universais. Feche esta janela e tente novamente.<\/p><\/div>`\r\n      );\r\n      return;\r\n    }\r\n\r\n    const relatedImage = imagePrompts.find(img => img.id === item.relatedImage);\r\n\r\n    openModal(\r\n      \"Como gerar este v\u00eddeo\",\r\n      `${item.category} \u00b7 ${item.format}`,\r\n      `\r\n        <div class=\"bp-instruction-box\">\r\n          <h4>O que voc\u00ea deve enviar<\/h4>\r\n          <p>\r\n            Use como refer\u00eancia a <strong>imagem final j\u00e1 gerada<\/strong> na etapa anterior.\r\n            N\u00e3o envie novamente a influenciadora e o produto separadamente.\r\n          <\/p>\r\n          ${relatedImage ? `\r\n            <div class=\"bp-reference-list\">\r\n              <div class=\"bp-reference-item\">\r\n                <span class=\"bp-reference-number\">1<\/span>\r\n                <span>Imagem final gerada a partir de: <strong>${escapeHtml(relatedImage.title)}<\/strong><\/span>\r\n              <\/div>\r\n            <\/div>\r\n          ` : \"\"}\r\n        <\/div>\r\n\r\n        <div class=\"bp-instruction-box\" style=\"margin-top:14px;\">\r\n          <h4>Passo a passo no Flow \/ VEO 3<\/h4>\r\n          <ol class=\"bp-instruction-list\">\r\n            <li>Salve a imagem final criada na etapa de imagens.<\/li>\r\n            <li>Abra o Flow e selecione o modelo de v\u00eddeo VEO 3.<\/li>\r\n            <li>Envie a imagem final como imagem inicial ou imagem de refer\u00eancia.<\/li>\r\n            <li>Logo abaixo destas instru\u00e7\u00f5es, clique em <strong>Copiar prompt com fala<\/strong>.<\/li>\r\n            <li>Escreva sua fala com at\u00e9 141 caracteres e depois clique em <strong>Copiar prompt completo<\/strong>. A fala ser\u00e1 inclu\u00edda automaticamente no comando em ingl\u00eas.<\/li>\r\n            <li>Gere o v\u00eddeo e confira se o produto, o rosto e a anatomia permaneceram est\u00e1veis.<\/li>\r\n          <\/ol>\r\n        <\/div>\r\n\r\n        <div class=\"bp-compact-prompt-wrap\">\r\n          <div class=\"bp-compact-prompt-head\">\r\n            <strong>Prompt em ingl\u00eas<\/strong>\r\n            <span>Role dentro da caixa para ler tudo<\/span>\r\n          <\/div>\r\n          <div class=\"bp-compact-prompt\">${escapeHtml(videoPrompt)}<\/div>\r\n        <\/div>\r\n\r\n        <div class=\"bp-modal-actions\">\r\n          <button class=\"bp-button bp-speech-button ${getSpeechCopy(item.id) ? \"has-copy\" : \"\"}\" type=\"button\" data-modal-speech=\"${escapeHtml(item.id)}\">\r\n            \u270e Copiar prompt com fala\r\n          <\/button>\r\n        <\/div>\r\n      `\r\n    );\r\n  }\r\n\r\n  function showPrompt(item, type) {\r\n    const isImage = type === \"image\";\r\n    const promptToShow = normalizePromptText(isImage ? getUniversalPrompt(item, \"image\") : buildPersonalizedVideoPrompt(item));\r\n\r\n    openModal(\r\n      isImage ? \"Prompt de imagem\" : \"Prompt de v\u00eddeo\",\r\n      `${item.category} \u00b7 ${item.format}`,\r\n      `\r\n        <div class=\"bp-prompt-box\">${escapeHtml(promptToShow)}<\/div>\r\n        ${!isImage ? `\r\n          <div class=\"bp-modal-actions\" style=\"margin-bottom:2px;\">\r\n            <button class=\"bp-button bp-speech-button ${getSpeechCopy(item.id) ? \"has-copy\" : \"\"}\" type=\"button\" data-modal-speech=\"${escapeHtml(item.id)}\">\r\n              \u270e Copiar prompt com fala\r\n            <\/button>\r\n          <\/div>\r\n        ` : \"\"}\r\n        <div class=\"bp-modal-actions\">\r\n          <button class=\"bp-button bp-button-primary\" type=\"button\" data-modal-copy=\"${escapeHtml(item.id)}\" data-copy-type=\"${type}\">\r\n            Copiar prompt\r\n          <\/button>\r\n          <button class=\"bp-button bp-button-secondary\" type=\"button\" data-modal-instructions=\"${escapeHtml(item.id)}\" data-instruction-type=\"${type}\">\r\n            \u24d8 Ver instru\u00e7\u00f5es\r\n          <\/button>\r\n        <\/div>\r\n      `\r\n    );\r\n  }\r\n\r\n  async function copyText(text) {\r\n    const value = normalizePromptText(text);\r\n    const scrollX = window.scrollX || window.pageXOffset || 0;\r\n    const scrollY = window.scrollY || window.pageYOffset || 0;\r\n    let copied = false;\r\n\r\n    try {\r\n      if (navigator.clipboard && window.isSecureContext) {\r\n        await navigator.clipboard.writeText(value);\r\n        copied = true;\r\n      }\r\n    } catch (error) {\r\n      copied = false;\r\n    }\r\n\r\n    if (!copied) {\r\n      const area = document.createElement(\"textarea\");\r\n      area.value = value;\r\n      area.setAttribute(\"readonly\", \"\");\r\n      area.setAttribute(\"aria-hidden\", \"true\");\r\n      area.style.position = \"fixed\";\r\n      area.style.left = \"-9999px\";\r\n      area.style.top = \"0\";\r\n      area.style.width = \"1px\";\r\n      area.style.height = \"1px\";\r\n      area.style.opacity = \"0\";\r\n      document.body.appendChild(area);\r\n\r\n      try {\r\n        area.focus({ preventScroll: true });\r\n      } catch (error) {\r\n        area.focus();\r\n      }\r\n\r\n      area.select();\r\n      area.setSelectionRange(0, area.value.length);\r\n\r\n      try {\r\n        copied = document.execCommand(\"copy\");\r\n      } catch (error) {\r\n        copied = false;\r\n      }\r\n\r\n      area.remove();\r\n    }\r\n\r\n    window.scrollTo(scrollX, scrollY);\r\n\r\n    els.toast.textContent = copied ? \"Prompt copiado!\" : \"N\u00e3o foi poss\u00edvel copiar. Selecione o texto manualmente.\";\r\n    els.toast.classList.add(\"is-visible\");\r\n    clearTimeout(copyText.timer);\r\n    copyText.timer = setTimeout(() => {\r\n      els.toast.classList.remove(\"is-visible\");\r\n      els.toast.textContent = \"Prompt copiado!\";\r\n    }, 2200);\r\n\r\n    return copied;\r\n  }\r\n\r\n  function activateButtonFeedback(button,labelSuccess=\"\u2713 Conclu\u00eddo!\") {\r\n    if(!button) return;\r\n    const original=button.dataset.originalLabel||button.textContent;\r\n    button.dataset.originalLabel=original;\r\n    button.classList.add(\"is-copied\");\r\n    button.textContent=labelSuccess;\r\n    clearTimeout(button._bpTimer);\r\n    button._bpTimer=setTimeout(()=>{\r\n      button.classList.remove(\"is-copied\");\r\n      button.textContent=original;\r\n    },1800);\r\n  }\r\n\r\n  function signalCopied(button,copied){\r\n    if(copied) activateButtonFeedback(button,\"\u2713 Copiado!\");\r\n  }\r\n\r\n  function chooseImage(id) {\r\n    state.chosenImageId = id;\r\n    state.selectedImageId = \"\";\r\n    state.selectedVideoId = \"\";\r\n\r\n    safeStorage.remove(\"bp_selected_image\");\r\n    safeStorage.remove(\"bp_selected_video\");\r\n\r\n    render();\r\n\r\n    if (id) {\r\n      setTimeout(() => {\r\n        document.getElementById(\"bpImagesSection\")?.scrollIntoView({ behavior: \"smooth\", block: \"start\" });\r\n      }, 80);\r\n    }\r\n  }\r\n\r\n  function confirmImage(id) {\r\n    const imageToConfirm = id || state.chosenImageId;\r\n    if (!imageToConfirm) return;\r\n\r\n    state.chosenImageId = imageToConfirm;\r\n    state.selectedImageId = imageToConfirm;\r\n    state.selectedVideoId = \"\";\r\n\r\n    safeStorage.set(\"bp_selected_image\", imageToConfirm);\r\n    safeStorage.remove(\"bp_selected_video\");\r\n\r\n    render();\r\n  }\r\n\r\n  function selectVideo(id) {\r\n    state.selectedVideoId = id;\r\n    if (id) safeStorage.set(\"bp_selected_video\", id);\r\n    else safeStorage.remove(\"bp_selected_video\");\r\n    render();\r\n  }\r\n\r\n  function goBackOneStep() {\r\n    if (state.selectedVideoId) {\r\n      state.selectedVideoId = \"\";\r\n      safeStorage.remove(\"bp_selected_video\");\r\n    } else if (state.selectedImageId) {\r\n      state.selectedImageId = \"\";\r\n      state.selectedVideoId = \"\";\r\n      safeStorage.remove(\"bp_selected_image\");\r\n      safeStorage.remove(\"bp_selected_video\");\r\n    } else if (state.chosenImageId) {\r\n      state.chosenImageId = \"\";\r\n    } else if (state.format !== \"all\") {\r\n      state.format = \"all\";\r\n      els.formatSelect.value = \"all\";\r\n    } else if (state.category !== \"all\") {\r\n      state.category = \"all\";\r\n      els.categorySelect.value = \"all\";\r\n    }\r\n    render();\r\n  }\r\n\r\n  function resetAll() {\r\n    state.category = \"all\";\r\n    state.format = \"all\";\r\n    state.search = \"\";\r\n    state.chosenImageId = \"\";\r\n    state.selectedImageId = \"\";\r\n    state.selectedVideoId = \"\";\r\n\r\n    els.categorySelect.value = \"all\";\r\n    els.formatSelect.value = \"all\";\r\n    els.searchInput.value = \"\";\r\n\r\n    safeStorage.remove(\"bp_selected_image\");\r\n    safeStorage.remove(\"bp_selected_video\");\r\n\r\n    render();\r\n    window.scrollTo({ top: 0, behavior: \"smooth\" });\r\n  }\r\n\r\n  els.categorySelect.addEventListener(\"change\", event => {\r\n    state.category = event.target.value;\r\n    state.chosenImageId = \"\";\r\n    state.selectedImageId = \"\";\r\n    state.selectedVideoId = \"\";\r\n    safeStorage.remove(\"bp_selected_image\");\r\n    safeStorage.remove(\"bp_selected_video\");\r\n    render();\r\n  });\r\n\r\n  els.formatSelect.addEventListener(\"change\", event => {\r\n    state.format = event.target.value;\r\n    state.chosenImageId = \"\";\r\n    state.selectedImageId = \"\";\r\n    state.selectedVideoId = \"\";\r\n    safeStorage.remove(\"bp_selected_image\");\r\n    safeStorage.remove(\"bp_selected_video\");\r\n    render();\r\n  });\r\n\r\n  els.imageSelect.addEventListener(\"change\", event => {\r\n    chooseImage(event.target.value);\r\n  });\r\n\r\n  els.videoSelect.addEventListener(\"change\", event => {\r\n    selectVideo(event.target.value);\r\n    if (event.target.value) {\r\n      setTimeout(() => {\r\n        document.getElementById(\"bpVideosSection\")?.scrollIntoView({ behavior: \"smooth\", block: \"start\" });\r\n      }, 120);\r\n    }\r\n  });\r\n\r\n  els.backButton.addEventListener(\"click\", goBackOneStep);\r\n  els.flowResetButton.addEventListener(\"click\", resetAll);\r\n\r\n  els.searchInput.addEventListener(\"input\", event => {\r\n    state.search = event.target.value.trim();\r\n    render();\r\n  });\r\n\r\n  els.resetButton.addEventListener(\"click\", resetAll);\r\n  els.modalClose.addEventListener(\"click\", closeModal);\r\n\r\n  els.modalBackdrop.addEventListener(\"click\", event => {\r\n    if (event.target === els.modalBackdrop) closeModal();\r\n  });\r\n\r\n  document.addEventListener(\"keydown\", event => {\r\n    if (event.key === \"Escape\") closeModal();\r\n  });\r\n\r\n  \/* CORRE\u00c7\u00c3O DO MODAL MOVIDO PARA O BODY\r\n     O modal \u00e9 anexado diretamente ao body para escapar das limita\u00e7\u00f5es do\r\n     Elementor. Por isso, os cliques internos do modal n\u00e3o chegam mais ao\r\n     listener delegado de #bp-app. Este listener exclusivo mant\u00e9m copiar,\r\n     personalizar fala e navegar entre instru\u00e7\u00f5es funcionando normalmente. *\/\r\n  els.modalBackdrop.addEventListener(\"click\", async event => {\r\n    const clickedButton = event.target.closest(\"button\");\r\n    if (!clickedButton || event.target === els.modalBackdrop) return;\r\n\r\n    event.preventDefault();\r\n    event.stopPropagation();\r\n\r\n    const copyButton = event.target.closest(\"[data-modal-copy]\");\r\n    if (copyButton) {\r\n      const id = copyButton.dataset.modalCopy;\r\n      const type = copyButton.dataset.copyType;\r\n      const item = type === \"image\"\r\n        ? imagePrompts.find(x => x.id === id)\r\n        : videoPrompts.find(x => x.id === id);\r\n\r\n      if (item) {\r\n        const promptToCopy = type === \"video\"\r\n          ? buildPersonalizedVideoPrompt(item)\r\n          : getUniversalPrompt(item, \"image\");\r\n\r\n        const copied = await copyText(promptToCopy);\r\n        signalCopied(copyButton, copied);\r\n      }\r\n      return;\r\n    }\r\n\r\n    const modalSpeechButton = event.target.closest(\"[data-modal-speech]\");\r\n    if (modalSpeechButton) {\r\n      const item = videoPrompts.find(x => x.id === modalSpeechButton.dataset.modalSpeech);\r\n      if (item) showSpeechCopyEditor(item);\r\n      return;\r\n    }\r\n\r\n    const clearSpeechButton = event.target.closest(\"[data-clear-speech]\");\r\n    if (clearSpeechButton) {\r\n      const videoId = clearSpeechButton.dataset.clearSpeech;\r\n      saveSpeechCopy(videoId, \"\");\r\n      const item = videoPrompts.find(x => x.id === videoId);\r\n      if (item) showSpeechCopyEditor(item);\r\n      render();\r\n      return;\r\n    }\r\n\r\n    const copyPersonalizedButton = event.target.closest(\"[data-copy-personalized-prompt]\");\r\n    if (copyPersonalizedButton) {\r\n      const videoId = copyPersonalizedButton.dataset.copyPersonalizedPrompt;\r\n      const textarea = document.getElementById(\"bpSpeechTextarea\");\r\n      const warning = document.getElementById(\"bpSpeechWarning\");\r\n      const value = String(textarea?.value || \"\").trim().slice(0, 141);\r\n\r\n      if (!value) {\r\n        warning?.classList.add(\"is-visible\");\r\n      } else {\r\n        warning?.classList.remove(\"is-visible\");\r\n        saveSpeechCopy(videoId, value);\r\n        const item = videoPrompts.find(x => x.id === videoId);\r\n        if (item) {\r\n          const copied = await copyText(buildPersonalizedVideoPrompt(item));\r\n          signalCopied(copyPersonalizedButton, copied);\r\n        }\r\n        render();\r\n      }\r\n      return;\r\n    }\r\n\r\n    const instructionButton = event.target.closest(\"[data-modal-instructions]\");\r\n    if (instructionButton) {\r\n      const id = instructionButton.dataset.modalInstructions;\r\n      const type = instructionButton.dataset.instructionType;\r\n\r\n      if (type === \"image\") {\r\n        const item = imagePrompts.find(x => x.id === id);\r\n        if (item) showImageInstructions(item);\r\n      } else {\r\n        const item = videoPrompts.find(x => x.id === id);\r\n        if (item) showVideoInstructions(item);\r\n      }\r\n    }\r\n  });\r\n\r\n  document.getElementById(\"bp-app\").addEventListener(\"click\", async event => {\r\n    const clickedButton = event.target.closest(\"button\");\r\n    if (clickedButton) {\r\n      event.preventDefault();\r\n      event.stopPropagation();\r\n    }\r\n\r\n    const actionButton = event.target.closest(\"[data-action]\");\r\n    if (actionButton) {\r\n      const { action, id } = actionButton.dataset;\r\n\r\n      if (action === \"instructions-image\") {\r\n        const item = imagePrompts.find(x => x.id === id);\r\n        if (item) showImageInstructions(item);\r\n      }\r\n\r\n      if (action === \"select-image\") {\r\n        const item = imagePrompts.find(x => x.id === id);\r\n        confirmImage(id);\r\n\r\n        \/* O render recria os cards. Abrimos o modal somente depois que o DOM\r\n           atualizado terminar de ser aplicado, evitando que o Elementor ou o\r\n           navegador interrompa a abertura das instru\u00e7\u00f5es. *\/\r\n        if (item) {\r\n          window.requestAnimationFrame(() => {\r\n            window.requestAnimationFrame(() => {\r\n              showImageInstructions(item);\r\n            });\r\n          });\r\n        }\r\n\r\n        return;\r\n      }\r\n\r\n      if (action === \"instructions-video\") {\r\n        const item = videoPrompts.find(x => x.id === id);\r\n        if (item) showVideoInstructions(item);\r\n      }\r\n\r\n\r\n      if (action === \"speech-copy\") {\r\n        const item = videoPrompts.find(x => x.id === id);\r\n        if (item) showSpeechCopyEditor(item);\r\n      }\r\n\r\n      if (action === \"select-video\") {\r\n        const item = videoPrompts.find(x => x.id === id);\r\n        selectVideo(id);\r\n\r\n        \/* O grid de v\u00eddeos tamb\u00e9m \u00e9 reconstru\u00eddo pelo render. O modal \u00e9\r\n           aberto ap\u00f3s dois frames para garantir que a sele\u00e7\u00e3o visual e os\r\n           observadores de v\u00eddeo terminem antes das instru\u00e7\u00f5es. *\/\r\n        if (item) {\r\n          window.requestAnimationFrame(() => {\r\n            window.requestAnimationFrame(() => {\r\n              showVideoInstructions(item);\r\n            });\r\n          });\r\n        }\r\n\r\n        return;\r\n      }\r\n    }\r\n\r\n    const copyButton = event.target.closest(\"[data-modal-copy]\");\r\n    if (copyButton) {\r\n      const id = copyButton.dataset.modalCopy;\r\n      const type = copyButton.dataset.copyType;\r\n      const item = type === \"image\"\r\n        ? imagePrompts.find(x => x.id === id)\r\n        : videoPrompts.find(x => x.id === id);\r\n\r\n      if (item) {\r\n        const promptToCopy = type === \"video\"\r\n          ? buildPersonalizedVideoPrompt(item)\r\n          : getUniversalPrompt(item, \"image\");\r\n\r\n        const savedScrollX = window.scrollX || window.pageXOffset || 0;\r\n        const savedScrollY = window.scrollY || window.pageYOffset || 0;\r\n        const copied = await copyText(promptToCopy);\r\n        signalCopied(copyButton, copied);\r\n        window.scrollTo(savedScrollX, savedScrollY);\r\n      }\r\n    }\r\n\r\n    const modalSpeechButton = event.target.closest(\"[data-modal-speech]\");\r\n    if (modalSpeechButton) {\r\n      const item = videoPrompts.find(x => x.id === modalSpeechButton.dataset.modalSpeech);\r\n      if (item) showSpeechCopyEditor(item);\r\n    }\r\n\r\n\r\n    const clearSpeechButton = event.target.closest(\"[data-clear-speech]\");\r\n    if (clearSpeechButton) {\r\n      const videoId = clearSpeechButton.dataset.clearSpeech;\r\n      saveSpeechCopy(videoId, \"\");\r\n      const item = videoPrompts.find(x => x.id === videoId);\r\n      if (item) showSpeechCopyEditor(item);\r\n      render();\r\n    }\r\n\r\n    const copyPersonalizedButton = event.target.closest(\"[data-copy-personalized-prompt]\");\r\n    if (copyPersonalizedButton) {\r\n      const videoId = copyPersonalizedButton.dataset.copyPersonalizedPrompt;\r\n      const textarea = document.getElementById(\"bpSpeechTextarea\");\r\n      const warning = document.getElementById(\"bpSpeechWarning\");\r\n      const value = String(textarea?.value || \"\").trim().slice(0, 141);\r\n\r\n      if (!value) {\r\n        warning?.classList.add(\"is-visible\");\r\n      } else {\r\n        saveSpeechCopy(videoId, value);\r\n        activateButtonFeedback(copyPersonalizedButton,\"\u2713 Copiado!\");\r\n        const item = videoPrompts.find(x => x.id === videoId);\r\n        if (item) {\r\n          const savedScrollX = window.scrollX || window.pageXOffset || 0;\r\n          const savedScrollY = window.scrollY || window.pageYOffset || 0;\r\n          const copied = await copyText(buildPersonalizedVideoPrompt(item));\r\n          signalCopied(copyPersonalizedButton, copied);\r\n          window.scrollTo(savedScrollX, savedScrollY);\r\n        }\r\n        render();\r\n      }\r\n    }\r\n\r\n    const instructionButton = event.target.closest(\"[data-modal-instructions]\");\r\n    if (instructionButton) {\r\n      const id = instructionButton.dataset.modalInstructions;\r\n      const type = instructionButton.dataset.instructionType;\r\n\r\n      if (type === \"image\") {\r\n        const item = imagePrompts.find(x => x.id === id);\r\n        if (item) showImageInstructions(item);\r\n      } else {\r\n        const item = videoPrompts.find(x => x.id === id);\r\n        if (item) showVideoInstructions(item);\r\n      }\r\n    }\r\n  });\r\n\r\n\r\n  let bpVideoVisibilityObserver = null;\r\n  const bpVideoUnloadTimers = new WeakMap();\r\n\r\n  function releaseVideo(video, unloadDelay = 12000) {\r\n    if (!video) return;\r\n\r\n    video.pause();\r\n    video.loop = false;\r\n\r\n    const previousTimer = bpVideoUnloadTimers.get(video);\r\n    if (previousTimer) window.clearTimeout(previousTimer);\r\n\r\n    const unloadTimer = window.setTimeout(() => {\r\n      const isVisible = video.dataset.bpVisible === \"true\";\r\n      if (!isVisible && video.getAttribute(\"src\")) {\r\n        try { video.currentTime = 0; } catch (error) {}\r\n        video.removeAttribute(\"src\");\r\n        video.load();\r\n      }\r\n    }, unloadDelay);\r\n\r\n    bpVideoUnloadTimers.set(video, unloadTimer);\r\n  }\r\n\r\n  function ensureVideoSource(video) {\r\n    if (!video.getAttribute(\"src\")) {\r\n      const source = video.dataset.src;\r\n      if (source) {\r\n        video.src = source;\r\n        video.load();\r\n      }\r\n    }\r\n  }\r\n\r\n  function playVisibleVideo(video) {\r\n    if (!video || !video.dataset.src || document.hidden) return;\r\n\r\n    const previousTimer = bpVideoUnloadTimers.get(video);\r\n    if (previousTimer) window.clearTimeout(previousTimer);\r\n\r\n    ensureVideoSource(video);\r\n\r\n    video.muted = true;\r\n    video.defaultMuted = true;\r\n    video.playsInline = true;\r\n    video.loop = true;\r\n    video.autoplay = true;\r\n\r\n    const promise = video.play();\r\n    if (promise && typeof promise.catch === \"function\") {\r\n      promise.catch(() => {\r\n        \/* O navegador pode bloquear temporariamente; o observer tentar\u00e1 novamente\r\n           quando o v\u00eddeo voltar a entrar na \u00e1rea vis\u00edvel. *\/\r\n      });\r\n    }\r\n  }\r\n\r\n  function activateVideoHoverBehavior() {\r\n    if (bpVideoVisibilityObserver) bpVideoVisibilityObserver.disconnect();\r\n\r\n    const videos = document.querySelectorAll(\"#bp-app .bp-hover-video\");\r\n\r\n    bpVideoVisibilityObserver = new IntersectionObserver(entries => {\r\n      entries.forEach(entry => {\r\n        const video = entry.target;\r\n        const sufficientlyVisible = entry.isIntersecting && entry.intersectionRatio >= 0.22;\r\n\r\n        video.dataset.bpVisible = sufficientlyVisible ? \"true\" : \"false\";\r\n\r\n        if (sufficientlyVisible) {\r\n          playVisibleVideo(video);\r\n        } else {\r\n          releaseVideo(video);\r\n        }\r\n      });\r\n    }, {\r\n      root: null,\r\n      rootMargin: \"80px 0px 80px 0px\",\r\n      threshold: [0, 0.22, 0.5, 0.85]\r\n    });\r\n\r\n    videos.forEach(video => {\r\n      video.autoplay = false;\r\n      video.loop = false;\r\n      video.preload = \"none\";\r\n      video.muted = true;\r\n      video.defaultMuted = true;\r\n      video.playsInline = true;\r\n      video.dataset.bpVisible = \"false\";\r\n\r\n      \/* Clique continua dispon\u00edvel para pausar ou retomar manualmente,\r\n         sem alterar o autoplay baseado na visibilidade. *\/\r\n      video.addEventListener(\"click\", event => {\r\n        event.preventDefault();\r\n\r\n        if (video.paused) {\r\n          playVisibleVideo(video);\r\n        } else {\r\n          video.pause();\r\n        }\r\n      });\r\n\r\n      bpVideoVisibilityObserver.observe(video);\r\n    });\r\n  }\r\n\r\n\r\n\r\n  \/* GERADOR DE INFLUENCIADORA REALISTA *\/\r\n  const influencerEls = {\r\n    launcher: document.getElementById(\"bpInfluencerLauncher\"),\r\n    toggle: document.getElementById(\"bpInfluencerToggle\"),\r\n    openLabel: document.getElementById(\"bpInfluencerOpenLabel\"),\r\n    generate: document.getElementById(\"bpInfluencerGenerate\"),\r\n    copy: document.getElementById(\"bpInfluencerCopy\"),\r\n    clear: document.getElementById(\"bpInfluencerClear\"),\r\n    result: document.getElementById(\"bpInfluencerResult\")\r\n  };\r\n\r\n  function influencerValue(id) {\r\n    return document.getElementById(id)?.value || \"\";\r\n  }\r\n\r\n  function buildInfluencerPrompt() {\r\n    const genderPt = influencerValue(\"bpInfGender\");\r\n    const agePt = influencerValue(\"bpInfAge\");\r\n    const nationalityPt = influencerValue(\"bpInfNationality\");\r\n    const skinPt = influencerValue(\"bpInfSkin\");\r\n    const hairColorPt = influencerValue(\"bpInfHairColor\");\r\n    const hairStylePt = influencerValue(\"bpInfHairStyle\");\r\n    const hairLengthPt = influencerValue(\"bpInfHairLength\");\r\n    const eyesPt = influencerValue(\"bpInfEyes\");\r\n    const bodyPt = influencerValue(\"bpInfBody\");\r\n    const size = influencerValue(\"bpInfSize\");\r\n    const makeupPt = influencerValue(\"bpInfMakeup\");\r\n    const framingPt = influencerValue(\"bpInfFraming\");\r\n    const environmentPt = influencerValue(\"bpInfEnvironment\");\r\n\r\n    const translate = (value, dictionary) => dictionary[value] || value;\r\n\r\n    const gender = translate(genderPt, {\r\n      \"Feminino\": \"Female\",\r\n      \"Masculino\": \"Male\"\r\n    });\r\n\r\n    const age = translate(agePt, {\r\n      \"18\u201320 anos\": \"18\u201320 years old\",\r\n      \"20\u201325 anos\": \"20\u201325 years old\",\r\n      \"25\u201335 anos\": \"25\u201335 years old\",\r\n      \"35\u201345 anos\": \"35\u201345 years old\",\r\n      \"45\u201355 anos\": \"45\u201355 years old\",\r\n      \"55\u201365 anos\": \"55\u201365 years old\",\r\n      \"65+ anos\": \"65+ years old\"\r\n    });\r\n\r\n    const nationality = translate(nationalityPt, {\r\n      \"Brasileiro\": \"Brazilian\",\r\n      \"Latino\": \"Latino\",\r\n      \"Europeu\": \"European\",\r\n      \"Mediterr\u00e2neo\": \"Mediterranean\",\r\n      \"Norte-Americano\": \"North American\",\r\n      \"Africano\": \"African\",\r\n      \"\u00c1rabe\": \"Arab\",\r\n      \"Indiano\": \"Indian\",\r\n      \"Chin\u00eas\": \"Chinese\",\r\n      \"Japon\u00eas\": \"Japanese\",\r\n      \"Coreano\": \"Korean\",\r\n      \"Sudeste Asi\u00e1tico\": \"Southeast Asian\"\r\n    });\r\n\r\n    const skin = translate(skinPt, {\r\n      \"Muito clara (porcelana)\": \"Very fair porcelain skin\",\r\n      \"Clara\": \"Fair skin\",\r\n      \"Clara amorenada\": \"Light warm tan skin\",\r\n      \"Albina\": \"Albinism-associated very pale skin\",\r\n      \"Morena clara (oliva)\": \"Light olive skin\",\r\n      \"Morena (caramelo)\": \"Medium caramel skin\",\r\n      \"Morena escura\": \"Deep brown skin\",\r\n      \"Negra clara\": \"Light Black skin tone\",\r\n      \"Negra\": \"Black skin tone\",\r\n      \"Negra profunda (\u00e9bano)\": \"Deep ebony skin tone\"\r\n    });\r\n\r\n    const hairColor = translate(hairColorPt, {\r\n      \"Preto\": \"Black\",\r\n      \"Castanho escuro\": \"Dark brown\",\r\n      \"Castanho\": \"Brown\",\r\n      \"Castanho claro\": \"Light brown\",\r\n      \"Loiro escuro\": \"Dark blonde\",\r\n      \"Loiro\": \"Blonde\",\r\n      \"Loiro platinado\": \"Platinum blonde\",\r\n      \"Ruivo\": \"Red\",\r\n      \"Ruivo acobreado\": \"Copper red\",\r\n      \"Branco\": \"White\",\r\n      \"Cinza\/Prateado\": \"Gray\/Silver\"\r\n    });\r\n\r\n    const hairStyle = translate(hairStylePt, {\r\n      \"Liso\": \"Straight\",\r\n      \"Ondulado\": \"Wavy\",\r\n      \"Beach Waves\": \"Beach waves\",\r\n      \"Cacheado\": \"Curly\",\r\n      \"Cacheado volumoso\": \"Voluminous curly\",\r\n      \"Crespo\": \"Coily\",\r\n      \"Black Power\": \"Afro\",\r\n      \"Box Braids\": \"Box braids\",\r\n      \"Tran\u00e7as\": \"Braids\",\r\n      \"Coque\": \"Bun\",\r\n      \"Rabo de Cavalo\": \"Ponytail\",\r\n      \"Semi preso\": \"Half-up hairstyle\"\r\n    });\r\n\r\n    const hairLength = translate(hairLengthPt, {\r\n      \"Curto\": \"Short\",\r\n      \"M\u00e9dio\": \"Medium\",\r\n      \"Longo\": \"Long\"\r\n    });\r\n\r\n    const eyes = translate(eyesPt, {\r\n      \"Castanho escuro\": \"Dark brown\",\r\n      \"Castanho\": \"Brown\",\r\n      \"Castanho claro\": \"Light brown\",\r\n      \"Mel\/Avel\u00e3\": \"Honey\/Hazel\",\r\n      \"\u00c2mbar\": \"Amber\",\r\n      \"Verde\": \"Green\",\r\n      \"Azul\": \"Blue\",\r\n      \"Cinza\": \"Gray\",\r\n      \"Preto\": \"Black\"\r\n    });\r\n\r\n    const body = translate(bodyPt, {\r\n      \"Magro\": \"Slim\",\r\n      \"M\u00e9dio\": \"Medium build\",\r\n      \"Fitness\": \"Fitness\",\r\n      \"Atl\u00e9tico\": \"Athletic\",\r\n      \"Curvil\u00edneo\": \"Curvy\",\r\n      \"Plus Size\": \"Plus size\"\r\n    });\r\n\r\n    const makeup = translate(makeupPt, {\r\n      \"Natural\": \"Natural\",\r\n      \"Sem maquiagem\": \"No Makeup Look\",\r\n      \"Leve e sofisticada\": \"Soft Glam\",\r\n      \"Glamourosa\": \"Full Glam\",\r\n      \"Noiva\": \"Bridal\",\r\n      \"Editorial\": \"Editorial\",\r\n      \"Luxo\": \"Luxury Beauty\",\r\n      \"Coreana\": \"Korean Beauty\",\r\n      \"Clean Girl\": \"Clean Girl\",\r\n      \"Passarela\": \"Fashion Runway\",\r\n      \"Noturna\": \"Evening Makeup\",\r\n      \"Corporativa\": \"Professional Business\",\r\n      \"Praia\": \"Beach Makeup\",\r\n      \"Personalizado\": \"Custom\"\r\n    });\r\n\r\n    const framing = translate(framingPt, {\r\n      \"Close-Up (Rosto)\": \"Close-up (Face)\",\r\n      \"Meio-Corpo\": \"Medium Shot\",\r\n      \"Corpo Inteiro\": \"Full Body\"\r\n    });\r\n\r\n    const environment = translate(environmentPt, {\r\n      \"Est\u00fadio Branco\": \"White Studio\",\r\n      \"Est\u00fadio Cinza\": \"Gray Studio\",\r\n      \"Est\u00fadio Fashion\": \"Fashion Studio\",\r\n      \"Est\u00fadio de Luxo\": \"Luxury Studio\",\r\n      \"Sala de Estar Moderna\": \"Modern Living Room\",\r\n      \"Sala de Estar de Luxo\": \"Luxury Living Room\",\r\n      \"Quarto\": \"Bedroom\",\r\n      \"Closet\": \"Walk-in Closet\",\r\n      \"Escrit\u00f3rio Moderno\": \"Modern Office\",\r\n      \"Escrit\u00f3rio Corporativo\": \"Corporate Office\",\r\n      \"Cafeteria\": \"Coffee Shop\",\r\n      \"Shopping Center\": \"Shopping Mall\",\r\n      \"\u00d3tica\": \"Optical Store\",\r\n      \"Loja de Roupas\": \"Clothing Store\",\r\n      \"Est\u00fadio de Maquiagem\": \"Makeup Studio\",\r\n      \"Sal\u00e3o de Beleza\": \"Beauty Salon\",\r\n      \"Feira de Rua\": \"Street Market\",\r\n      \"Academia\": \"Gym\",\r\n      \"Praia\": \"Beach\",\r\n      \"Parque\": \"Park\",\r\n      \"Rua Urbana\": \"Urban Street\",\r\n      \"Restaurante\": \"Restaurant\",\r\n      \"Cozinha\": \"Kitchen\",\r\n      \"Sagu\u00e3o de Hotel\": \"Hotel Lobby\",\r\n      \"Quarto de Hotel\": \"Hotel Room\",\r\n      \"Rooftop\": \"Rooftop\",\r\n      \"Jardim Externo\": \"Outdoor Garden\",\r\n      \"Personalizado\": \"Custom\"\r\n    });\r\n\r\n    return `Use the uploaded face reference image ONLY as a visual reference to create a NEW adult person.\r\n\r\nThe uploaded reference serves exclusively as inspiration for the person's apparent age, facial harmony, hairstyle, body proportions, clothing size, fashion style, and overall visual aesthetic.\r\n\r\nThe uploaded reference MUST NEVER be treated as the identity to reproduce.\r\n\r\nDO NOT recreate, duplicate, clone, copy, replicate, or generate the same individual shown in the reference image.\r\n\r\nInstead, generate a completely NEW and UNIQUE adult person belonging to the same visual archetype while possessing an entirely different facial identity.\r\n\r\nThe generated person should realistically resemble someone who could be a close relative or sibling of the reference, while remaining unquestionably a different individual.\r\n\r\n--------------------------------------------------\r\nCHARACTERISTICS\r\n--------------------------------------------------\r\n\r\n\u2022 Gender: ${gender}\r\n\u2022 Age Range: ${age}\r\n\u2022 Facial Archetype: ${nationality}\r\n\u2022 Skin Tone: ${skin}\r\n\u2022 Hair Color: ${hairColor}\r\n\u2022 Hair Style: ${hairStyle}\r\n\u2022 Hair Length: ${hairLength}\r\n\u2022 Eye Color: ${eyes}\r\n\u2022 Body Type: ${body}\r\n\u2022 Brazilian Clothing Size (Manequim): ${size}\r\n\u2022 Framing: ${framing}\r\n\r\nAvailable options:\r\n\u2022 Close-up (Face)\r\n\u2022 Medium Shot\r\n\u2022 Full Body\r\n\r\n\u2022 Environment: ${environment}\r\n\r\nSuggested environments:\r\n\u2022 White Studio\r\n\u2022 Gray Studio\r\n\u2022 Fashion Studio\r\n\u2022 Luxury Studio\r\n\u2022 Modern Living Room\r\n\u2022 Luxury Living Room\r\n\u2022 Bedroom\r\n\u2022 Walk-in Closet\r\n\u2022 Modern Office\r\n\u2022 Corporate Office\r\n\u2022 Coffee Shop\r\n\u2022 Shopping Mall\r\n\u2022 Optical Store\r\n\u2022 Clothing Store\r\n\u2022 Makeup Studio\r\n\u2022 Beauty Salon\r\n\u2022 Gym\r\n\u2022 Beach\r\n\u2022 Park\r\n\u2022 Urban Street\r\n\u2022 Restaurant\r\n\u2022 Kitchen\r\n\u2022 Hotel Lobby\r\n\u2022 Hotel Room\r\n\u2022 Rooftop\r\n\u2022 Outdoor Garden\r\n\u2022 Custom\r\n\r\n--------------------------------------------------\r\nMAKEUP\r\n--------------------------------------------------\r\n\r\nApply professional makeup that naturally complements the person's facial features, skin tone, age, hairstyle, outfit and selected environment.\r\n\r\nRespect the selected Makeup Style (${makeup}).\r\n\r\nSuggested options:\r\n\u2022 Natural\r\n\u2022 No Makeup Look\r\n\u2022 Soft Glam\r\n\u2022 Full Glam\r\n\u2022 Bridal\r\n\u2022 Editorial\r\n\u2022 Luxury Beauty\r\n\u2022 Korean Beauty\r\n\u2022 Clean Girl\r\n\u2022 Fashion Runway\r\n\u2022 Evening Makeup\r\n\u2022 Professional Business\r\n\u2022 Beach Makeup\r\n\u2022 Custom\r\n\r\nThe makeup must be professionally executed and physically realistic.\r\n\r\nRequirements:\r\n\u2022 Natural skin finish\r\n\u2022 Visible skin texture without excessive smoothing\r\n\u2022 Realistic foundation matching the neck and body\r\n\u2022 Smooth color transitions\r\n\u2022 Natural contour and highlights\r\n\u2022 Soft blush placement\r\n\u2022 Well-defined yet realistic eyebrows\r\n\u2022 Individual eyebrow hairs\r\n\u2022 Realistic eyelashes\r\n\u2022 Accurate eyeliner when appropriate\r\n\u2022 Detailed eyeshadow blending\r\n\u2022 Natural lip texture\r\n\u2022 Realistic lipstick finish\r\n\u2022 Soft facial dimension\r\n\u2022 No exaggerated beauty filters\r\n\u2022 No plastic appearance\r\n\u2022 No over-retouching\r\n\u2022 No artificial airbrushing\r\n\r\nThe makeup should enhance the person's natural beauty while remaining believable under professional photography.\r\n\r\nFor male subjects, apply only subtle grooming when appropriate, including:\r\n\u2022 Skin tone correction\r\n\u2022 Shine reduction\r\n\u2022 Light complexion balancing\r\n\u2022 Natural eyebrow grooming\r\n\u2022 Minimal concealer\r\n\u2022 Natural lip hydration\r\n\r\nAvoid visible cosmetic appearance unless explicitly requested.\r\n\r\n--------------------------------------------------\r\nIDENTITY PRESERVATION\r\n--------------------------------------------------\r\n\r\nPreserve ONLY these high-level characteristics:\r\n\u2022 Apparent gender\r\n\u2022 Apparent age\r\n\u2022 Facial archetype\r\n\u2022 Skin tone\r\n\u2022 Hair color\r\n\u2022 Hair style\r\n\u2022 Hair length\r\n\u2022 Eye color (when visible)\r\n\u2022 Overall facial harmony\r\n\u2022 General face shape\r\n\u2022 Overall facial proportions\r\n\u2022 Overall body proportions\r\n\u2022 Clothing size\r\n\u2022 Fashion style\r\n\u2022 Visual aesthetic\r\n\r\nThe facial identity MUST be completely original.\r\n\r\n--------------------------------------------------\r\nPHOTOREALISM\r\n--------------------------------------------------\r\n\r\nGenerate an ultra-photorealistic commercial photograph.\r\n\r\nThe image must be visually indistinguishable from a real photograph captured by a professional photographer using a premium full-frame camera.\r\n\r\nRequirements:\r\n\u2022 Ultra High Resolution\r\n\u2022 Hyper-realistic\r\n\u2022 Editorial quality\r\n\u2022 Luxury commercial photography\r\n\u2022 Natural skin texture\r\n\u2022 Visible pores\r\n\u2022 Individual hair strands\r\n\u2022 Natural eyelashes\r\n\u2022 Detailed eyebrows\r\n\u2022 Sharp eyes\r\n\u2022 Accurate anatomy\r\n\u2022 Realistic proportions\r\n\u2022 High Dynamic Range\r\n\u2022 Natural color science\r\n\u2022 Premium commercial finish\r\n\r\nAvoid:\r\n\u2022 CGI appearance\r\n\u2022 Plastic skin\r\n\u2022 AI look\r\n\u2022 Over-smoothing\r\n\u2022 Unrealistic eyes\r\n\u2022 Deformed anatomy\r\n\u2022 Low-quality textures\r\n\u2022 Cartoon appearance\r\n\u2022 Artificial sharpening\r\n\r\n--------------------------------------------------\r\nCAMERA\r\n--------------------------------------------------\r\n\r\nSimulate professional photography captured with premium cameras such as:\r\n\u2022 Sony A7R V\r\n\u2022 Canon EOS R5\r\n\u2022 Nikon Z8\r\n\r\nPreferred lenses:\r\n\u2022 50mm\r\n\u2022 85mm\r\n\r\nMaintain:\r\n\u2022 Natural perspective\r\n\u2022 High optical sharpness\r\n\u2022 Realistic depth of field\r\n\u2022 Cinematic bokeh\r\n\u2022 No wide-angle distortion\r\n\r\n--------------------------------------------------\r\nMAKEUP\r\n--------------------------------------------------\r\n\r\nApply professional makeup that naturally complements the person's facial features, skin tone, age, hairstyle, outfit and selected environment.\r\n\r\nRespect the selected Makeup Style (${makeup}).\r\n\r\nSuggested options:\r\n\u2022 Natural\r\n\u2022 No Makeup Look\r\n\u2022 Soft Glam\r\n\u2022 Full Glam\r\n\u2022 Bridal\r\n\u2022 Editorial\r\n\u2022 Luxury Beauty\r\n\u2022 Korean Beauty\r\n\u2022 Clean Girl\r\n\u2022 Fashion Runway\r\n\u2022 Evening Makeup\r\n\u2022 Professional Business\r\n\u2022 Beach Makeup\r\n\u2022 Custom\r\n\r\nThe makeup must be professionally executed and physically realistic.\r\n\r\nRequirements:\r\n\u2022 Natural skin finish\r\n\u2022 Visible skin texture without excessive smoothing\r\n\u2022 Realistic foundation matching the neck and body\r\n\u2022 Smooth color transitions\r\n\u2022 Natural contour and highlights\r\n\u2022 Soft blush placement\r\n\u2022 Well-defined yet realistic eyebrows\r\n\u2022 Individual eyebrow hairs\r\n\u2022 Realistic eyelashes\r\n\u2022 Accurate eyeliner when appropriate\r\n\u2022 Detailed eyeshadow blending\r\n\u2022 Natural lip texture\r\n\u2022 Realistic lipstick finish\r\n\u2022 Soft facial dimension\r\n\u2022 No exaggerated beauty filters\r\n\u2022 No plastic appearance\r\n\u2022 No over-retouching\r\n\u2022 No artificial airbrushing\r\n\r\nThe makeup should enhance the person's natural beauty while remaining believable under professional photography.\r\n\r\nFor male subjects, apply only subtle grooming when appropriate, including:\r\n\u2022 Skin tone correction\r\n\u2022 Shine reduction\r\n\u2022 Light complexion balancing\r\n\u2022 Natural eyebrow grooming\r\n\u2022 Minimal concealer\r\n\u2022 Natural lip hydration\r\n\r\nAvoid visible cosmetic appearance unless explicitly requested.\r\n\r\n--------------------------------------------------\r\nLIGHTING\r\n--------------------------------------------------\r\n\r\nProfessional editorial lighting.\r\nSoft natural shadows.\r\nBalanced highlights.\r\nPhysically accurate light behavior.\r\nNatural skin reflections.\r\nRealistic ambient lighting.\r\nNo clipped highlights.\r\nNo crushed shadows.\r\n\r\n--------------------------------------------------\r\nFRAMING\r\n--------------------------------------------------\r\n\r\nRespect the selected framing (${framing}).\r\n\r\nClose-up (Face)\r\n\u2022 Frame from shoulders upward.\r\n\u2022 Face occupies most of the composition.\r\n\u2022 Eyes are the focal point.\r\n\u2022 Preserve perfect facial proportions.\r\n\r\nMedium Shot\r\n\u2022 Frame approximately from the waist upward.\r\n\u2022 Face remains prominent.\r\n\u2022 Hands may naturally appear.\r\n\u2022 Balanced commercial composition.\r\n\r\nFull Body\r\n\u2022 Entire body visible from head to feet.\r\n\u2022 Comfortable margins.\r\n\u2022 No cropped limbs.\r\n\u2022 Natural proportions.\r\n\r\n--------------------------------------------------\r\nENVIRONMENT\r\n--------------------------------------------------\r\n\r\nRender the selected environment (${environment}) with maximum realism.\r\n\r\nThe environment should include authentic architecture, textures, furniture, lighting, reflections and depth appropriate for the selected location.\r\n\r\nMaintain subtle background blur whenever appropriate.\r\n\r\nNever allow the background to compete with the subject.\r\n\r\nIf \"Custom\" is selected, reproduce the user's description as accurately as possible.\r\n\r\n--------------------------------------------------\r\nCONTEXTUAL COHERENCE\r\n--------------------------------------------------\r\n\r\nThe clothing, footwear, accessories, hairstyle, makeup, pose, lighting and color palette MUST naturally match the selected environment.\r\n\r\nExamples:\r\n\u2022 Optical Store \u2192 elegant casual fashion suitable for eyewear.\r\n\u2022 Fashion Studio \u2192 editorial fashion.\r\n\u2022 Gym \u2192 athletic apparel.\r\n\u2022 Luxury Living Room \u2192 premium casual clothing.\r\n\u2022 Office \u2192 business casual.\r\n\u2022 Coffee Shop \u2192 modern lifestyle clothing.\r\n\u2022 Beach \u2192 lightweight summer clothing.\r\n\u2022 Restaurant \u2192 elegant smart casual.\r\n\u2022 Kitchen \u2192 relaxed lifestyle clothing.\r\n\r\nEvery visual element must feel naturally coherent.\r\n\r\n--------------------------------------------------\r\nPOSE & EXPRESSION\r\n--------------------------------------------------\r\n\r\nGenerate one natural, realistic and commercially appealing pose.\r\n\r\nThe expression should feel authentic, relaxed and confident.\r\n\r\nAvoid exaggerated expressions or unnatural body language.\r\n\r\n--------------------------------------------------\r\nCOMPOSITION\r\n--------------------------------------------------\r\n\r\nUse premium editorial composition.\r\n\r\nMaintain:\r\n\u2022 Balanced framing\r\n\u2022 Natural perspective\r\n\u2022 Proper subject positioning\r\n\u2022 Realistic depth of field\r\n\u2022 Professional composition\r\n\u2022 Natural negative space\r\n\r\nAvoid:\r\n\u2022 Cropped limbs\r\n\u2022 Awkward framing\r\n\u2022 Tilted horizons\r\n\u2022 Fisheye distortion\r\n\u2022 Unrealistic perspective\r\n\r\n--------------------------------------------------\r\nFINAL QUALITY\r\n--------------------------------------------------\r\n\r\nGenerate a single premium commercial photograph suitable for luxury advertising, fashion campaigns, e-commerce, UGC, magazines and high-end branding.\r\n\r\nThe final image should be indistinguishable from a real professional photograph captured during a commercial photoshoot.`;\r\n  }\r\n\r\n  influencerEls.toggle?.addEventListener(\"click\", event => {\r\n    event.preventDefault();\r\n    event.stopPropagation();\r\n    const open = influencerEls.launcher.classList.toggle(\"is-open\");\r\n    influencerEls.toggle.setAttribute(\"aria-expanded\", String(open));\r\n    influencerEls.openLabel.textContent = open ? \"Fechar gerador \u2191\" : \"Abrir gerador \u2193\";\r\n  });\r\n\r\n  influencerEls.generate?.addEventListener(\"click\", event => {\r\n    event.preventDefault();\r\n    event.stopPropagation();\r\n\r\n    const requiredFields = [\r\n      \"bpInfGender\", \"bpInfAge\", \"bpInfNationality\", \"bpInfSkin\",\r\n      \"bpInfHairColor\", \"bpInfHairStyle\", \"bpInfHairLength\", \"bpInfEyes\",\r\n      \"bpInfBody\", \"bpInfSize\", \"bpInfMakeup\", \"bpInfFraming\", \"bpInfEnvironment\"\r\n    ];\r\n\r\n    const firstEmptyField = requiredFields\r\n      .map(id => document.getElementById(id))\r\n      .find(field => field && !field.value);\r\n\r\n    if (firstEmptyField) {\r\n      influencerEls.result.textContent = \"Selecione todas as caracter\u00edsticas da influenciadora antes de gerar o prompt.\";\r\n      firstEmptyField.focus();\r\n      return;\r\n    }\r\n\r\n    influencerEls.result.textContent = buildInfluencerPrompt();\r\n    activateButtonFeedback(influencerEls.generate,\"\u2713 Gerado!\");\r\n  });\r\n\r\n  influencerEls.copy?.addEventListener(\"click\", async event => {\r\n    event.preventDefault();\r\n    event.stopPropagation();\r\n    const text = influencerEls.result.textContent.trim();\r\n    if (!text || text.startsWith(\"Escolha as caracter\u00edsticas\") || text.startsWith(\"Selecione todas\")) {\r\n      influencerEls.result.textContent = \"Selecione todas as caracter\u00edsticas e gere o prompt antes de copiar.\";\r\n      return;\r\n    }\r\n    const ok=await copyText(influencerEls.result.textContent); signalCopied(influencerEls.copy,ok);\r\n  });\r\n\r\n\r\n  influencerEls.clear?.addEventListener(\"click\", event => {\r\n    event.preventDefault();\r\n    event.stopPropagation();\r\n    const defaults = {\r\n      bpInfGender: \"\",\r\n      bpInfAge: \"\",\r\n      bpInfNationality: \"\",\r\n      bpInfSkin: \"\",\r\n      bpInfHairColor: \"\",\r\n      bpInfHairStyle: \"\",\r\n      bpInfHairLength: \"\",\r\n      bpInfEyes: \"\",\r\n      bpInfBody: \"\",\r\n      bpInfSize: \"\",\r\n      bpInfMakeup: \"\",\r\n      bpInfFraming: \"\",\r\n      bpInfEnvironment: \"\"\r\n    };\r\n\r\n    Object.entries(defaults).forEach(([id, value]) => {\r\n      const field = document.getElementById(id);\r\n      if (field) field.value = value;\r\n    });\r\n\r\n    influencerEls.result.textContent = \"Escolha as caracter\u00edsticas e clique em \u201cGerar prompt da influenciadora\u201d.\";\r\n  });\r\n\r\n\r\n\r\n  \/* GERADOR DE COPIES *\/\r\n  const copyEls = {\r\n    launcher: document.getElementById(\"bpCopyLauncher\"),\r\n    toggle: document.getElementById(\"bpCopyToggle\"),\r\n    openLabel: document.getElementById(\"bpCopyOpenLabel\"),\r\n    clear: document.getElementById(\"bpCopyClear\"),\r\n    instructions: document.getElementById(\"bpCopyInstructions\"),\r\n    technical: document.getElementById(\"bpCopyTechnical\"),\r\n    champion: document.getElementById(\"bpCopyChampion\"),\r\n    technicalCounter: document.getElementById(\"bpCopyTechnicalCounter\"),\r\n    championCounter: document.getElementById(\"bpCopyChampionCounter\"),\r\n    warning: document.getElementById(\"bpCopyWarning\"),\r\n    generate: document.getElementById(\"bpCopyGenerate\"),\r\n    copy: document.getElementById(\"bpCopyCopy\"),\r\n    result: document.getElementById(\"bpCopyResult\")\r\n  };\r\n\r\n  const copyState = { style: \"\", duration: \"\" };\r\n\r\n  function copyDurationRules(duration) {\r\n    const map = {\r\n      \"8\": { label: \"Oito segundos\", range: \"136 a 142 caracteres\", guidance: \"gancho imediato, uma ideia principal e CTA curto\" },\r\n      \"16\": { label: \"Dezesseis segundos\", range: \"276 a 288 caracteres\", guidance: \"gancho curto, apresenta\u00e7\u00e3o do produto, um ou dois benef\u00edcios e CTA direto\" },\r\n      \"24\": { label: \"Vinte e quatro segundos\", range: \"400 a 426 caracteres\", guidance: \"gancho forte, dor ou desejo, at\u00e9 tr\u00eas benef\u00edcios comprov\u00e1veis, conclus\u00e3o persuasiva e CTA direto\" }\r\n    };\r\n    return map[String(duration)] || map[\"8\"];\r\n  }\r\n\r\n  function buildCopyPrompt() {\r\n    const rules = copyDurationRules(copyState.duration);\r\n    const technical = String(copyEls.technical?.value || \"\").trim();\r\n    const champion = String(copyEls.champion?.value || \"\").trim();\r\n    const styleStructure = copyState.style === \"Copy Humanizada\"\r\n      ? `Cada vers\u00e3o deve conter: Foco, GANCHO, FALA, CTA, COPY CONT\u00cdNUA, DESCRI\u00c7\u00c3O, exatamente cinco HASHTAGS e CARACTERES.`\r\n      : `Cada vers\u00e3o deve conter: Foco, GANCHO, COPY, CTA, COPY CONT\u00cdNUA, DESCRI\u00c7\u00c3O, exatamente cinco HASHTAGS e CARACTERES.`;\r\n\r\n    return `COMUNIDADE DAS COPYS\r\n\r\nVoc\u00ea \u00e9 um especialista brasileiro em copywriting de resposta direta para TikTok Shop. Analise as imagens do produto anexadas pelo usu\u00e1rio e as informa\u00e7\u00f5es abaixo para criar copies naturais, persuasivas, originais, seguras e totalmente fi\u00e9is ao produto.\r\n\r\nENTRADAS SELECIONADAS\r\nEstilo da copy: ${copyState.style}\r\nDura\u00e7\u00e3o da copy: ${rules.label}\r\nIntervalo obrigat\u00f3rio da COPY CONT\u00cdNUA: ${rules.range}\r\nDescri\u00e7\u00e3o t\u00e9cnica do produto: ${technical || \"N\u00e3o fornecida. Use somente as imagens e demais informa\u00e7\u00f5es anexadas pelo usu\u00e1rio.\"}\r\nCopy campe\u00e3: ${champion || \"N\u00e3o fornecida.\"}\r\n\r\nREGRAS ABSOLUTAS\r\n1. Gere exatamente 5 copies completas em uma \u00fanica resposta: COPY 1 at\u00e9 COPY 5.\r\n2. Baseie-se exclusivamente nas imagens anexadas e nas informa\u00e7\u00f5es fornecidas pelo usu\u00e1rio.\r\n3. Nunca invente fun\u00e7\u00f5es, materiais, medidas, cores, compatibilidade, capacidade, pot\u00eancia, ingredientes, autonomia, resist\u00eancia, certifica\u00e7\u00f5es, garantias, resultados, avalia\u00e7\u00f5es, quantidade de vendas, estoque, pre\u00e7o, desconto, promo\u00e7\u00e3o, cupom, frete, brindes ou acess\u00f3rios.\r\n4. Quando houver d\u00favida sobre uma caracter\u00edstica, n\u00e3o a utilize.\r\n5. A Copy Campe\u00e3, quando fornecida, serve apenas como refer\u00eancia estrat\u00e9gica de gancho, ritmo, abordagem, gatilhos e l\u00f3gica de convers\u00e3o. Nunca copie frases, trechos ou estrutura literal.\r\n6. As cinco vers\u00f5es devem ter focos, ganchos, desenvolvimentos, CTAs, descri\u00e7\u00f5es e conjuntos de hashtags realmente diferentes.\r\n7. Use portugu\u00eas brasileiro natural, claro, persuasivo, f\u00e1cil de narrar e adequado ao TikTok Shop.\r\n8. N\u00e3o use emojis, s\u00edmbolos decorativos, urg\u00eancia falsa, escassez inventada, alega\u00e7\u00f5es m\u00e9dicas, promessas garantidas ou compara\u00e7\u00f5es n\u00e3o comprovadas.\r\n9. Todos os CTAs devem direcionar ao produto dentro do TikTok Shop, como \u201cClique abaixo e confira\u201d, \u201cVeja os detalhes na loja\u201d ou equivalentes.\r\n10. N\u00fameros na narra\u00e7\u00e3o devem ser escritos por extenso, exceto especifica\u00e7\u00f5es t\u00e9cnicas oficiais.\r\n\r\nESTILO SELECIONADO\r\n${copyState.style === \"Copy Humanizada\"\r\n? \"Produza falas espont\u00e2neas, conversadas, com apar\u00eancia de conte\u00fado UGC feito por uma pessoa real. Evite tom corporativo e excesso de linguagem publicit\u00e1ria. As cinco copies devem parecer falas de pessoas diferentes.\"\r\n: \"Produza textos estruturados, diretos, comerciais, profissionais e persuasivos, com benef\u00edcio principal claro, gancho forte e CTA direto, sem parecer rob\u00f3tico.\"}\r\n\r\nDURA\u00c7\u00c3O E CONTAGEM\r\nCada COPY CONT\u00cdNUA deve ter obrigatoriamente ${rules.range}. A contagem inclui letras, n\u00fameros, espa\u00e7os e pontua\u00e7\u00e3o do texto cont\u00ednuo. N\u00e3o conte t\u00edtulos, r\u00f3tulos, descri\u00e7\u00e3o, hashtags ou o campo CARACTERES.\r\nPara esta dura\u00e7\u00e3o, use ${rules.guidance}.\r\nAntes de apresentar cada vers\u00e3o, una GANCHO + ${copyState.style === \"Copy Humanizada\" ? \"FALA\" : \"COPY\"} + CTA, conte exatamente os caracteres, corrija e valide. Nunca estime ou arredonde.\r\n\r\nFORMATO OBRIGAT\u00d3RIO\r\nComece diretamente assim:\r\nCOMUNIDADE DAS COPYS\r\nEstilo selecionado: ${copyState.style}\r\nDura\u00e7\u00e3o selecionada: ${rules.label}\r\nIntervalo obrigat\u00f3rio: ${rules.range}\r\nProduto analisado: nome ou categoria identificada\r\nP\u00fablico-alvo: resumo em no m\u00e1ximo tr\u00eas linhas\r\n\r\nDepois apresente COPY 1, COPY 2, COPY 3, COPY 4 e COPY 5.\r\n${styleStructure}\r\nA COPY CONT\u00cdNUA deve unir exatamente o gancho, o desenvolvimento e o CTA, em um \u00fanico par\u00e1grafo, sem r\u00f3tulos internos, aspas, emojis ou s\u00edmbolos decorativos.\r\nA descri\u00e7\u00e3o deve ser uma frase curta e coerente.\r\nCada vers\u00e3o deve ter exatamente cinco hashtags relacionadas ao produto e ao foco.\r\nO campo CARACTERES deve informar a contagem exata da COPY CONT\u00cdNUA.\r\n\r\nSEGURAN\u00c7A E CONFORMIDADE\r\nPara sa\u00fade, beleza, bem-estar, suplementos, cosm\u00e9ticos ou monitoramento, n\u00e3o use cura, diagn\u00f3stico, tratamento, resultado garantido ou benef\u00edcio m\u00e9dico n\u00e3o comprovado. Prefira termos como ajuda, auxilia, contribui, acompanha ou facilita apenas quando sustentados pelo material fornecido.\r\nNunca invente pre\u00e7o, promo\u00e7\u00e3o, desconto, estoque, urg\u00eancia, escassez, desempenho, durabilidade ou superioridade.\r\nN\u00e3o direcione para WhatsApp, site externo, link da bio, outra plataforma ou mensagem privada.\r\n\r\nENCERRAMENTO\r\nDepois da COPY 5, apresente um PROTOCOLO ANTI-VIOLA\u00c7\u00d5ES APLICADO com no m\u00e1ximo cinco verifica\u00e7\u00f5es curtas e uma AUTOAN\u00c1LISE E CORRE\u00c7\u00c3O com no m\u00e1ximo tr\u00eas linhas, confirmando fidelidade, naturalidade, seguran\u00e7a e contagem.\r\nN\u00e3o revele racioc\u00ednio interno detalhado. N\u00e3o pergunte se deve continuar. N\u00e3o encerre antes da COPY 5 completa.\r\n\r\nAgora analise todas as fotos do produto anexadas nesta conversa e execute o formato solicitado.`;\r\n  }\r\n\r\n  function updateCopyCounter(field, counter) {\r\n    if (!field || !counter) return;\r\n    counter.textContent = `${field.value.length}\/400`;\r\n  }\r\n\r\n  copyEls.toggle?.addEventListener(\"click\", event => {\r\n    event.preventDefault(); event.stopPropagation();\r\n    const open = copyEls.launcher.classList.toggle(\"is-open\");\r\n    copyEls.toggle.setAttribute(\"aria-expanded\", String(open));\r\n    copyEls.openLabel.textContent = open ? \"Fechar gerador \u2191\" : \"Abrir gerador \u2193\";\r\n  });\r\n\r\n  document.querySelectorAll(\"#bp-app [data-copy-style]\").forEach(button => {\r\n    button.addEventListener(\"click\", event => {\r\n      event.preventDefault(); event.stopPropagation();\r\n      copyState.style = button.dataset.copyStyle || \"\";\r\n      document.querySelectorAll(\"#bp-app [data-copy-style]\").forEach(item => item.classList.toggle(\"is-selected\", item === button));\r\n      copyEls.warning?.classList.remove(\"is-visible\");\r\n    });\r\n  });\r\n\r\n  document.querySelectorAll(\"#bp-app [data-copy-duration]\").forEach(button => {\r\n    button.addEventListener(\"click\", event => {\r\n      event.preventDefault(); event.stopPropagation();\r\n      copyState.duration = button.dataset.copyDuration || \"\";\r\n      document.querySelectorAll(\"#bp-app [data-copy-duration]\").forEach(item => item.classList.toggle(\"is-selected\", item === button));\r\n      copyEls.warning?.classList.remove(\"is-visible\");\r\n    });\r\n  });\r\n\r\n  copyEls.technical?.addEventListener(\"input\", () => updateCopyCounter(copyEls.technical, copyEls.technicalCounter));\r\n  copyEls.champion?.addEventListener(\"input\", () => updateCopyCounter(copyEls.champion, copyEls.championCounter));\r\n\r\n  copyEls.clear?.addEventListener(\"click\", event => {\r\n    event.preventDefault(); event.stopPropagation();\r\n    copyState.style = \"\"; copyState.duration = \"\";\r\n    document.querySelectorAll(\"#bp-app [data-copy-style], #bp-app [data-copy-duration]\").forEach(item => item.classList.remove(\"is-selected\"));\r\n    if (copyEls.technical) copyEls.technical.value = \"\";\r\n    if (copyEls.champion) copyEls.champion.value = \"\";\r\n    updateCopyCounter(copyEls.technical, copyEls.technicalCounter);\r\n    updateCopyCounter(copyEls.champion, copyEls.championCounter);\r\n    copyEls.warning?.classList.remove(\"is-visible\");\r\n    if (copyEls.result) copyEls.result.textContent = \"Selecione o estilo e a dura\u00e7\u00e3o, preencha os campos opcionais e clique em \u201cGerar prompt de copies\u201d.\";\r\n  });\r\n\r\n  copyEls.generate?.addEventListener(\"click\", event => {\r\n    event.preventDefault(); event.stopPropagation();\r\n    if (!copyState.style || !copyState.duration) {\r\n      copyEls.warning?.classList.add(\"is-visible\");\r\n      return;\r\n    }\r\n    copyEls.warning?.classList.remove(\"is-visible\");\r\n    copyEls.result.textContent = buildCopyPrompt();\r\n    activateButtonFeedback(copyEls.generate,\"\u2713 Gerado!\");\r\n  });\r\n\r\n  copyEls.copy?.addEventListener(\"click\", async event => {\r\n    event.preventDefault(); event.stopPropagation();\r\n    if (!copyState.style || !copyState.duration) {\r\n      copyEls.warning?.classList.add(\"is-visible\");\r\n      copyEls.launcher?.classList.add(\"is-open\");\r\n      return;\r\n    }\r\n    if (!copyEls.result.textContent.trim() || copyEls.result.textContent.startsWith(\"Selecione o estilo\")) {\r\n      copyEls.result.textContent = buildCopyPrompt();\r\n    activateButtonFeedback(copyEls.generate,\"\u2713 Gerado!\");\r\n    }\r\n    const ok=await copyText(copyEls.result.textContent); signalCopied(copyEls.copy,ok);\r\n  });\r\n\r\n  copyEls.instructions?.addEventListener(\"click\", event => {\r\n    event.preventDefault(); event.stopPropagation();\r\n    openModal(\r\n      \"Como usar o Gerador de Copies\",\r\n      \"ChatGPT \u00b7 Fotos do produto \u00b7 Prompt gerado\",\r\n      `<div class=\"bp-instruction-box\">\r\n        <h4>O que voc\u00ea precisa preparar<\/h4>\r\n        <div class=\"bp-reference-list\">\r\n          <div class=\"bp-reference-item\"><span class=\"bp-reference-number\">1<\/span><span>Fotos claras do produto, mostrando embalagem, detalhes, informa\u00e7\u00f5es, medidas e acess\u00f3rios realmente inclu\u00eddos.<\/span><\/div>\r\n          <div class=\"bp-reference-item\"><span class=\"bp-reference-number\">2<\/span><span>Descri\u00e7\u00e3o t\u00e9cnica do produto, quando dispon\u00edvel. Esse campo \u00e9 opcional, mas aumenta a fidelidade das copies.<\/span><\/div>\r\n          <div class=\"bp-reference-item\"><span class=\"bp-reference-number\">3<\/span><span>Uma copy campe\u00e3, quando dispon\u00edvel. Ela ser\u00e1 usada apenas como refer\u00eancia estrat\u00e9gica, sem copiar frases.<\/span><\/div>\r\n        <\/div>\r\n      <\/div>\r\n      <div class=\"bp-instruction-box\" style=\"margin-top:14px;\">\r\n        <h4>Passo a passo<\/h4>\r\n        <ol class=\"bp-instruction-list\">\r\n          <li>Escolha <strong>Copy Padr\u00e3o<\/strong> ou <strong>Copy Humanizada<\/strong>.<\/li>\r\n          <li>Escolha a dura\u00e7\u00e3o: <strong>8, 16 ou 24 segundos<\/strong>.<\/li>\r\n          <li>Preencha os dois campos opcionais, quando tiver essas informa\u00e7\u00f5es.<\/li>\r\n          <li>Clique em <strong>Gerar prompt de copies<\/strong> e depois em <strong>Copiar<\/strong>.<\/li>\r\n          <li>Abra uma nova conversa no ChatGPT.<\/li>\r\n          <li>Anexe todas as fotos do produto na mesma conversa.<\/li>\r\n          <li>Cole o prompt copiado e envie.<\/li>\r\n          <li>Confira se as copies respeitam exatamente as caracter\u00edsticas mostradas nas fotos antes de publicar.<\/li>\r\n        <\/ol>\r\n      <\/div>`\r\n    );\r\n  });\r\n\r\n  document.addEventListener(\"visibilitychange\", () => {\r\n    if (document.hidden) {\r\n      document.querySelectorAll(\"#bp-app .bp-hover-video\").forEach(releaseVideo);\r\n    }\r\n  });\r\n\r\n  window.addEventListener(\"pagehide\", () => {\r\n    document.querySelectorAll(\"#bp-app .bp-hover-video\").forEach(video => {\r\n      video.pause();\r\n      video.removeAttribute(\"src\");\r\n    });\r\n  });\r\n\r\n  populateCategories();\r\n\r\n  \/* Carregamento inicial intencionalmente limpo. *\/\r\n\r\n  render();\r\n})();\r\n<\/script>\r\n\r\n<!--\r\n===============================================================\r\nINTEGRA\u00c7\u00c3O COM O MAKE \u2014 RESUMO OPERACIONAL\r\n===============================================================\r\n\r\nJSON ENVIADO AO MAKE:\r\n{\r\n  \"email\": \"usuario@email.com\",\r\n  \"password\": \"senha_digitada\",\r\n  \"application\": \"comunidade-prompts\",\r\n  \"timestamp\": \"2026-07-31T20:20:00.000Z\"\r\n}\r\n\r\nRESPOSTA DE SUCESSO ESPERADA:\r\n{\r\n  \"success\": true,\r\n  \"authorized\": true,\r\n  \"user\": {\r\n    \"id\": \"USR-000123\",\r\n    \"name\": \"Jo\u00e3o Silva\",\r\n    \"email\": \"joao@email.com\",\r\n    \"product\": \"Comunidade dos Prompts\",\r\n    \"expirationDate\": \"2026-08-31\"\r\n  },\r\n  \"token\": \"TOKEN_TEMPORARIO\",\r\n  \"expiresIn\": 43200\r\n}\r\n\r\nRESPOSTA DE FALHA ESPERADA:\r\n{\r\n  \"success\": false,\r\n  \"authorized\": false,\r\n  \"message\": \"E-mail, senha ou permiss\u00e3o inv\u00e1lidos.\"\r\n}\r\n\r\nCEN\u00c1RIO SUGERIDO NO MAKE:\r\n1. Webhooks > Custom webhook.\r\n2. Receber e validar o corpo JSON.\r\n3. Normalizar o e-mail para min\u00fasculas.\r\n4. Google Sheets > Search Rows pelo e-mail.\r\n5. Validar senha\/hash, status, produto, entrada e expira\u00e7\u00e3o.\r\n6. Registrar \"\u00faltimo acesso\" somente quando autorizado.\r\n7. Gerar token tempor\u00e1rio aleat\u00f3rio no backend.\r\n8. Webhooks > Webhook response com JSON e Content-Type application\/json.\r\n9. Retornar sempre mensagem gen\u00e9rica em falhas.\r\n10. Configurar CORS somente para o dom\u00ednio publicado, quando aplic\u00e1vel.\r\n\r\nSEGURAN\u00c7A:\r\n- N\u00e3o use senha em texto puro na planilha; prefira hash validado em backend.\r\n- O Make deve ser a fonte de verdade da autoriza\u00e7\u00e3o.\r\n- O HTML pode ser inspecionado e alterado pelo usu\u00e1rio.\r\n- Sess\u00e3o no navegador reduz logins repetidos, mas n\u00e3o protege arquivos p\u00fablicos.\r\n- Conte\u00fado realmente sens\u00edvel deve ser entregue por backend somente ap\u00f3s token v\u00e1lido.\r\n- Use HTTPS.\r\n- Restrinja origem\/CORS.\r\n- Aplique rate limit tamb\u00e9m no Make\/backend.\r\n- N\u00e3o registre senhas nos logs do Make.\r\n- N\u00e3o devolva dados completos da planilha.\r\n===============================================================\r\n-->\r\n\r\n<\/body>\r\n<\/html>\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>Comunidade dos Prompts 2.9 IA Comunidade dos Prompts Acesso \u00e0 Comunidade dos Prompts Entre com seu e-mail e senha. E-mail Senha Ver Manter conectado Entrar Acesso exclusivo para membros autorizados. Suas credenciais s\u00e3o validadas pelo sistema antes da libera\u00e7\u00e3o da aplica\u00e7\u00e3o. IA Comunidade dos Prompts Biblioteca de imagens e v\u00eddeos para TikTok Shop e Shopee [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-9","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/comunidadedosprompts.com.br\/index.php?rest_route=\/wp\/v2\/pages\/9","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/comunidadedosprompts.com.br\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/comunidadedosprompts.com.br\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/comunidadedosprompts.com.br\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/comunidadedosprompts.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=9"}],"version-history":[{"count":5,"href":"https:\/\/comunidadedosprompts.com.br\/index.php?rest_route=\/wp\/v2\/pages\/9\/revisions"}],"predecessor-version":[{"id":16,"href":"https:\/\/comunidadedosprompts.com.br\/index.php?rest_route=\/wp\/v2\/pages\/9\/revisions\/16"}],"wp:attachment":[{"href":"https:\/\/comunidadedosprompts.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=9"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}