{
  "estilo": "ugc-reels",
  "nome": "UGC de Reels",
  "versao": 1,
  "fps": 30,
  "pecas": [
    {
      "nome": "BotaoLink",
      "categoria": "formas",
      "tipo": "componente",
      "arquivo": "formas/BotaoLink.tsx",
      "descricao": "botão amarelo LINK NA BIO (Montserrat 900) com mãozinha 👆 que quica 14 px e um anel que pulsa a cada 20 quadros.",
      "params": [
        "texto?",
        "y?",
        "tamanho?",
        "inicio?"
      ],
      "duracao": [
        30,
        90
      ],
      "tags": [
        "forma",
        "botao",
        "link"
      ]
    },
    {
      "nome": "CabecalhoPerfil",
      "categoria": "formas",
      "tipo": "componente",
      "arquivo": "formas/CabecalhoPerfil.tsx",
      "descricao": "barrinhas de story no topo (a da cena enche de 0 a 100%), avatar com anel, @usuário e botão Seguir.",
      "params": [
        "usuario",
        "avatar?",
        "barras?",
        "ativa?",
        "duracao?",
        "inicio?"
      ],
      "duracao": [
        30,
        90
      ],
      "tags": [
        "forma",
        "cabecalho",
        "perfil"
      ]
    },
    {
      "nome": "Comentario",
      "categoria": "formas",
      "tipo": "componente",
      "arquivo": "formas/Comentario.tsx",
      "descricao": "bolha branca de comentário (avatar, nome, texto e coração com contagem).",
      "params": [
        "nome",
        "texto",
        "curtidas?",
        "avatar?",
        "y?",
        "inicio?"
      ],
      "duracao": [
        30,
        90
      ],
      "tags": [
        "forma",
        "comentario"
      ]
    },
    {
      "nome": "NotaDeMao",
      "categoria": "formas",
      "tipo": "componente",
      "arquivo": "formas/NotaDeMao.tsx",
      "descricao": "texto em Caveat 700 branco com contorno preto, inclinado, e uma seta desenhada à mão que aponta para o alvo.",
      "params": [
        "texto",
        "x?",
        "y?",
        "tamanho?",
        "rot?",
        "alvo?",
        "inicio?"
      ],
      "duracao": [
        30,
        90
      ],
      "tags": [
        "forma",
        "nota",
        "de"
      ]
    },
    {
      "nome": "Reacoes",
      "categoria": "formas",
      "tipo": "componente",
      "arquivo": "formas/Reacoes.tsx",
      "descricao": "emojis (❤️ 🔥 😍 👏) que sobem pela lateral direita, um novo a cada `intervalo` quadros.",
      "params": [
        "emojis?",
        "quantidade?",
        "inicio?",
        "intervalo?",
        "base?"
      ],
      "duracao": [
        30,
        90
      ],
      "tags": [
        "forma",
        "reacoes"
      ]
    },
    {
      "nome": "VideoCelular",
      "categoria": "formas",
      "tipo": "componente",
      "arquivo": "formas/VideoCelular.tsx",
      "descricao": "a imagem do cliente em tela cheia, com cara de gravação de celular: tremida de mão (±5 px, ±0,4°), contraste 1,08, vinheta e gradiente embaixo pra legenda ler.",
      "params": [
        "cortes",
        "fim?",
        "tremor?"
      ],
      "duracao": [
        30,
        90
      ],
      "tags": [
        "forma",
        "video",
        "celular"
      ]
    },
    {
      "nome": "Fundo",
      "categoria": "texturas",
      "tipo": "componente",
      "arquivo": "texturas/Fundo.tsx",
      "descricao": "preto liso. Só aparece nos quadros de corte entre duas imagens; a imagem (VideoCelular) cobre a tela.",
      "params": [
        "cor?"
      ],
      "duracao": null,
      "tags": [
        "texturas",
        "fundo"
      ]
    },
    {
      "nome": "Particulas",
      "categoria": "texturas",
      "tipo": "componente",
      "arquivo": "texturas/Particulas.tsx",
      "descricao": "Camada de pontos e traços flutuando em 3 profundidades (movimento de fundo constante).",
      "params": [
        "quantidade?",
        "cor?",
        "semente?",
        "velocidade?",
        "opacidade?"
      ],
      "duracao": null,
      "tags": [
        "fundo",
        "movimento",
        "densidade"
      ]
    },
    {
      "nome": "Cena",
      "categoria": "transicoes",
      "tipo": "componente",
      "arquivo": "transicoes/Cena.tsx",
      "descricao": "janela de tempo de um plano. Entra com movimento (nunca corte seco) e a saída cruza 4 quadros com a entrada da próxima. Dentro dela, useCurrentFrame() começa em 0.",
      "params": [
        "de",
        "ate",
        "entrada?",
        "saida?",
        "ultima?",
        "children"
      ],
      "duracao": [
        24,
        150
      ],
      "tags": [
        "transicoes",
        "cena"
      ]
    },
    {
      "nome": "CorteImpacto",
      "categoria": "transicoes",
      "tipo": "componente",
      "arquivo": "transicoes/CorteImpacto.tsx",
      "descricao": "Soco de corte: clarão, tremida e zoom-pop que decaem em ~10 quadros.",
      "params": [
        "em",
        "forca?",
        "clarao?",
        "corClarao?",
        "children"
      ],
      "duracao": [
        10,
        14
      ],
      "tags": [
        "corte",
        "impacto",
        "energia"
      ]
    },
    {
      "nome": "AssinaturaMarca",
      "categoria": "tipografia",
      "tipo": "componente",
      "arquivo": "tipografia/AssinaturaMarca.tsx",
      "descricao": "cartão final. A imagem fica borrada (24 px) e escurecida; o avatar com anel de story cai com overshoot, o @usuário aparece e o botão Seguir / site fecham.",
      "params": [
        "fundo",
        "logo",
        "usuario",
        "endereco?",
        "inicio?"
      ],
      "duracao": [
        30,
        90
      ],
      "tags": [
        "tipografia",
        "assinatura",
        "marca"
      ]
    },
    {
      "nome": "LegendaEmoji",
      "categoria": "tipografia",
      "tipo": "componente",
      "arquivo": "tipografia/LegendaEmoji.tsx",
      "descricao": "legenda em Montserrat 900 branca com contorno preto de 5 px.",
      "params": [
        "texto",
        "emoji?",
        "y?",
        "tamanho?",
        "inicio?",
        "passo?",
        "fim?"
      ],
      "duracao": [
        30,
        90
      ],
      "tags": [
        "tipografia",
        "legenda",
        "emoji"
      ]
    },
    {
      "nome": "Camera",
      "categoria": "camera",
      "tipo": "componente",
      "arquivo": "camera/Camera.tsx",
      "descricao": "deriva constante por baixo de tudo (zoom, deslize e giro) e um soco em cada batida.",
      "params": [
        "batidas?",
        "forca?",
        "children"
      ],
      "duracao": null,
      "tags": [
        "camera",
        "camera"
      ]
    },
    {
      "nome": "CameraDeriva",
      "categoria": "camera",
      "tipo": "componente",
      "arquivo": "camera/CameraDeriva.tsx",
      "descricao": "Câmera 3D com perspectiva: chaves {em,z,x,y,giro} levam o foco de uma a outra e por baixo roda uma deriva que nunca para.",
      "params": [
        "chaves?",
        "deriva?",
        "perspectiva?",
        "children"
      ],
      "duracao": null,
      "tags": [
        "3d",
        "camera",
        "movimento"
      ]
    },
    {
      "nome": "assinatura",
      "categoria": "sons",
      "tipo": "audio",
      "arquivo": "sons/assinatura.mp3",
      "descricao": "cartão final.",
      "params": [
        "em",
        "volume?"
      ],
      "duracao": [
        48,
        48
      ],
      "tags": [
        "sfx"
      ],
      "volumeSugerido": 0.9
    },
    {
      "nome": "corte",
      "categoria": "sons",
      "tipo": "audio",
      "arquivo": "sons/corte.mp3",
      "descricao": "cada corte seco entre imagens.",
      "params": [
        "em",
        "volume?"
      ],
      "duracao": [
        48,
        48
      ],
      "tags": [
        "sfx"
      ],
      "volumeSugerido": 0.8
    },
    {
      "nome": "impacto",
      "categoria": "sons",
      "tipo": "audio",
      "arquivo": "sons/impacto.mp3",
      "descricao": "a frase da virada.",
      "params": [
        "em",
        "volume?"
      ],
      "duracao": [
        48,
        48
      ],
      "tags": [
        "sfx"
      ],
      "volumeSugerido": 0.7
    },
    {
      "nome": "notificacao",
      "categoria": "sons",
      "tipo": "audio",
      "arquivo": "sons/notificacao.mp3",
      "descricao": "bolha de comentário.",
      "params": [
        "em",
        "volume?"
      ],
      "duracao": [
        48,
        48
      ],
      "tags": [
        "sfx"
      ],
      "volumeSugerido": 0.8
    },
    {
      "nome": "palavra",
      "categoria": "sons",
      "tipo": "audio",
      "arquivo": "sons/palavra.mp3",
      "descricao": "início de cada frase da legenda.",
      "params": [
        "em",
        "volume?"
      ],
      "duracao": [
        48,
        48
      ],
      "tags": [
        "sfx"
      ],
      "volumeSugerido": 0.85
    },
    {
      "nome": "pop",
      "categoria": "sons",
      "tipo": "audio",
      "arquivo": "sons/pop.mp3",
      "descricao": "emoji, avatar ou adereço que entra.",
      "params": [
        "em",
        "volume?"
      ],
      "duracao": [
        48,
        48
      ],
      "tags": [
        "sfx"
      ],
      "volumeSugerido": 0.85,
      "bpm": 120
    },
    {
      "nome": "toque",
      "categoria": "sons",
      "tipo": "audio",
      "arquivo": "sons/toque.mp3",
      "descricao": "botão LINK NA BIO.",
      "params": [
        "em",
        "volume?"
      ],
      "duracao": [
        48,
        48
      ],
      "tags": [
        "sfx"
      ],
      "volumeSugerido": 0.8
    },
    {
      "nome": "whoosh",
      "categoria": "sons",
      "tipo": "audio",
      "arquivo": "sons/whoosh.mp3",
      "descricao": "nota ou botão que entra.",
      "params": [
        "em",
        "volume?"
      ],
      "duracao": [
        48,
        48
      ],
      "tags": [
        "sfx"
      ],
      "volumeSugerido": 0.7
    },
    {
      "nome": "Som",
      "categoria": "sons",
      "tipo": "componente",
      "arquivo": "sons/Som.tsx",
      "descricao": "Componentes Efeito (um som no quadro em) e Trilha (música com fade de saída) que tocam os áudios acima.",
      "params": [
        "som",
        "em",
        "volume?"
      ],
      "duracao": null,
      "tags": [
        "audio",
        "codigo"
      ]
    },
    {
      "nome": "trilha",
      "categoria": "trilha",
      "tipo": "audio",
      "arquivo": "trilha/pop-120bpm.mp3",
      "descricao": "8,6 s a partir de 2.0 s da trilha gerada (120 bpm); repetir em laço para vídeos longos.",
      "params": [
        "volume?",
        "saida?"
      ],
      "duracao": [
        255,
        255
      ],
      "tags": [
        "trilha",
        "musica"
      ],
      "bpm": 120
    },
    {
      "nome": "paleta",
      "categoria": "paleta",
      "tipo": "dados",
      "arquivo": "cores/paleta.json",
      "descricao": "Cores, sombras, area segura, curvas e medidas do estilo (cores/paleta.png é a amostra visual).",
      "params": [],
      "duracao": null,
      "tags": [
        "cor"
      ]
    }
  ]
}
