{
  "$schema": "vatse.catalog/v1",
  "generatedAt": "2026-10-26T02:02:15.004Z",
  "usage": {
    "smartUI": "CSS em /smart-ui.css e JS opcional em /smart-ui.js. Componentes por classes sc-*. Temas por data-theme e modo por data-mode no <html>.",
    "motion": "CSS em /motion/dist/vatse-motion.css e JS em /motion/dist/vatse-motion.full.min.js (ou núcleo + módulos). Animação por data-vm=\"preset\" e parâmetros data-vm-*. Nomes e valores em inglês ou português.",
    "together": "Carregue os dois; o Smart UI entrega estrutura e tema, o Motion entrega movimento. Classes de entrada do Smart UI viram presets do Motion automaticamente."
  },
  "smartUI": [
    {
      "id": "tokens",
      "name": "Tokens",
      "category": "foundations",
      "url": "https://ui.vatse.dev/components/tokens/",
      "variants": [
        {
          "id": "01-timing-motion-transitions",
          "name": "Timing / Motion (transitions)",
          "url": "https://ui.vatse.dev/components/tokens/01-timing-motion-transitions/"
        }
      ]
    },
    {
      "id": "themes",
      "name": "Temas e modos",
      "category": "foundations",
      "url": "https://ui.vatse.dev/components/themes/",
      "variants": [
        {
          "id": "01-base",
          "name": "Base",
          "url": "https://ui.vatse.dev/components/themes/01-base/"
        }
      ]
    },
    {
      "id": "container",
      "name": "Container",
      "category": "layout",
      "url": "https://ui.vatse.dev/components/container/",
      "variants": [
        {
          "id": "01-base",
          "name": "Base",
          "url": "https://ui.vatse.dev/components/container/01-base/"
        }
      ]
    },
    {
      "id": "grid",
      "name": "Grid responsivo",
      "category": "layout",
      "url": "https://ui.vatse.dev/components/grid/",
      "variants": [
        {
          "id": "01-2-colunas",
          "name": "2 colunas",
          "url": "https://ui.vatse.dev/components/grid/01-2-colunas/"
        },
        {
          "id": "02-3-colunas",
          "name": "3 colunas",
          "url": "https://ui.vatse.dev/components/grid/02-3-colunas/"
        },
        {
          "id": "03-auto-fit",
          "name": "Auto-fit",
          "url": "https://ui.vatse.dev/components/grid/03-auto-fit/"
        },
        {
          "id": "04-spans-dashboard",
          "name": "Spans (dashboard)",
          "url": "https://ui.vatse.dev/components/grid/04-spans-dashboard/"
        },
        {
          "id": "05-sidebar-layout",
          "name": "Sidebar layout",
          "url": "https://ui.vatse.dev/components/grid/05-sidebar-layout/"
        },
        {
          "id": "06-cards-hover-opt-in",
          "name": "Cards + hover (opt-in)",
          "url": "https://ui.vatse.dev/components/grid/06-cards-hover-opt-in/"
        },
        {
          "id": "07-pricing-3-planos",
          "name": "Pricing (3 planos)",
          "url": "https://ui.vatse.dev/components/grid/07-pricing-3-planos/"
        },
        {
          "id": "08-dashboard-cards-tabela",
          "name": "Dashboard (cards + tabela)",
          "url": "https://ui.vatse.dev/components/grid/08-dashboard-cards-tabela/"
        },
        {
          "id": "09-form-layout-2-colunas-full",
          "name": "Form layout (2 colunas + full)",
          "url": "https://ui.vatse.dev/components/grid/09-form-layout-2-colunas-full/"
        },
        {
          "id": "10-lista-de-cards-ui-feed",
          "name": "Lista de cards (UI feed)",
          "url": "https://ui.vatse.dev/components/grid/10-lista-de-cards-ui-feed/"
        }
      ]
    },
    {
      "id": "typography",
      "name": "Tipografia",
      "category": "typography",
      "url": "https://ui.vatse.dev/components/typography/",
      "variants": [
        {
          "id": "01-headings-display",
          "name": "Headings + display",
          "url": "https://ui.vatse.dev/components/typography/01-headings-display/"
        },
        {
          "id": "02-tamanhos-pesos-espacamento",
          "name": "Tamanhos + pesos + espaçamento",
          "url": "https://ui.vatse.dev/components/typography/02-tamanhos-pesos-espacamento/"
        },
        {
          "id": "03-lead-destaque-muted",
          "name": "Lead + destaque + muted",
          "url": "https://ui.vatse.dev/components/typography/03-lead-destaque-muted/"
        },
        {
          "id": "04-branding-gradiente",
          "name": "Branding (gradiente)",
          "url": "https://ui.vatse.dev/components/typography/04-branding-gradiente/"
        },
        {
          "id": "05-links-enfases-inline",
          "name": "Links + ênfases (inline)",
          "url": "https://ui.vatse.dev/components/typography/05-links-enfases-inline/"
        },
        {
          "id": "06-listas-ul-ol",
          "name": "Listas (UL/OL)",
          "url": "https://ui.vatse.dev/components/typography/06-listas-ul-ol/"
        },
        {
          "id": "07-texto-longo-prose-citacao",
          "name": "Texto longo (prose) + citação",
          "url": "https://ui.vatse.dev/components/typography/07-texto-longo-prose-citacao/"
        },
        {
          "id": "08-codigo-bloco-snippet",
          "name": "Código (bloco) + snippet",
          "url": "https://ui.vatse.dev/components/typography/08-codigo-bloco-snippet/"
        }
      ]
    },
    {
      "id": "button",
      "name": "Botões",
      "category": "buttons",
      "url": "https://ui.vatse.dev/components/button/",
      "variants": [
        {
          "id": "01-variantes",
          "name": "Variantes",
          "url": "https://ui.vatse.dev/components/button/01-variantes/"
        },
        {
          "id": "02-tamanhos",
          "name": "Tamanhos",
          "url": "https://ui.vatse.dev/components/button/02-tamanhos/"
        },
        {
          "id": "03-pill",
          "name": "Pill",
          "url": "https://ui.vatse.dev/components/button/03-pill/"
        },
        {
          "id": "04-icon-buttons",
          "name": "Icon buttons",
          "url": "https://ui.vatse.dev/components/button/04-icon-buttons/"
        },
        {
          "id": "05-grupo",
          "name": "Grupo",
          "url": "https://ui.vatse.dev/components/button/05-grupo/"
        },
        {
          "id": "06-estados-disabled-loading",
          "name": "Estados (disabled/loading)",
          "url": "https://ui.vatse.dev/components/button/06-estados-disabled-loading/"
        },
        {
          "id": "07-fx-box-shadow-estavam-em-efeitos",
          "name": "FX (box-shadow)  estavam em “Efeitos”",
          "url": "https://ui.vatse.dev/components/button/07-fx-box-shadow-estavam-em-efeitos/"
        },
        {
          "id": "x-button-8",
          "name": "Soft",
          "url": "https://ui.vatse.dev/components/button/x-button-8/"
        },
        {
          "id": "x-button-9",
          "name": "Ghost",
          "url": "https://ui.vatse.dev/components/button/x-button-9/"
        },
        {
          "id": "x-button-10",
          "name": "Destructive",
          "url": "https://ui.vatse.dev/components/button/x-button-10/"
        },
        {
          "id": "x-button-11",
          "name": "Success",
          "url": "https://ui.vatse.dev/components/button/x-button-11/"
        },
        {
          "id": "x-button-12",
          "name": "Spotlight",
          "url": "https://ui.vatse.dev/components/button/x-button-12/"
        },
        {
          "id": "x-button-13",
          "name": "Split action",
          "url": "https://ui.vatse.dev/components/button/x-button-13/"
        },
        {
          "id": "x-button-14",
          "name": "Toolbar",
          "url": "https://ui.vatse.dev/components/button/x-button-14/"
        },
        {
          "id": "x-button-15",
          "name": "Floating action",
          "url": "https://ui.vatse.dev/components/button/x-button-15/"
        }
      ]
    },
    {
      "id": "button-effects",
      "name": "Botões com microinteração",
      "category": "motion",
      "url": "https://ui.vatse.dev/components/button-effects/",
      "variants": [
        {
          "id": "01-base",
          "name": "Base",
          "url": "https://ui.vatse.dev/components/button-effects/01-base/"
        }
      ]
    },
    {
      "id": "cards",
      "name": "Cards",
      "category": "cards",
      "url": "https://ui.vatse.dev/components/cards/",
      "variants": [
        {
          "id": "01-cards-em-grid-nao-banner",
          "name": "Cards em grid (não “banner”)",
          "url": "https://ui.vatse.dev/components/cards/01-cards-em-grid-nao-banner/"
        },
        {
          "id": "02-media-cards-altura-consistente",
          "name": "Media cards (altura consistente)",
          "url": "https://ui.vatse.dev/components/cards/02-media-cards-altura-consistente/"
        },
        {
          "id": "03-gradient-border-glow",
          "name": "Gradient border + glow",
          "url": "https://ui.vatse.dev/components/cards/03-gradient-border-glow/"
        },
        {
          "id": "04-reveal-cta-animacao",
          "name": "Reveal CTA (animação)",
          "url": "https://ui.vatse.dev/components/cards/04-reveal-cta-animacao/"
        },
        {
          "id": "05-notification-info",
          "name": "Notification / info",
          "url": "https://ui.vatse.dev/components/cards/05-notification-info/"
        },
        {
          "id": "06-3d-glow",
          "name": "3D + Glow",
          "url": "https://ui.vatse.dev/components/cards/06-3d-glow/"
        },
        {
          "id": "07-animacoes-optin",
          "name": "Animações (optin)",
          "url": "https://ui.vatse.dev/components/cards/07-animacoes-optin/"
        },
        {
          "id": "x-card-8",
          "name": "Editorial",
          "url": "https://ui.vatse.dev/components/cards/x-card-8/"
        },
        {
          "id": "x-card-9",
          "name": "Metric",
          "url": "https://ui.vatse.dev/components/cards/x-card-9/"
        },
        {
          "id": "x-card-10",
          "name": "Profile",
          "url": "https://ui.vatse.dev/components/cards/x-card-10/"
        },
        {
          "id": "x-card-11",
          "name": "Project",
          "url": "https://ui.vatse.dev/components/cards/x-card-11/"
        },
        {
          "id": "x-card-12",
          "name": "Commerce",
          "url": "https://ui.vatse.dev/components/cards/x-card-12/"
        },
        {
          "id": "x-card-13",
          "name": "Glass",
          "url": "https://ui.vatse.dev/components/cards/x-card-13/"
        },
        {
          "id": "x-card-14",
          "name": "Outline",
          "url": "https://ui.vatse.dev/components/cards/x-card-14/"
        },
        {
          "id": "x-card-15",
          "name": "Spotlight",
          "url": "https://ui.vatse.dev/components/cards/x-card-15/"
        },
        {
          "id": "x-card-16",
          "name": "Stacked",
          "url": "https://ui.vatse.dev/components/cards/x-card-16/"
        },
        {
          "id": "x-card-17",
          "name": "Horizontal",
          "url": "https://ui.vatse.dev/components/cards/x-card-17/"
        },
        {
          "id": "x-card-18",
          "name": "Media overlay",
          "url": "https://ui.vatse.dev/components/cards/x-card-18/"
        },
        {
          "id": "x-card-19",
          "name": "Status",
          "url": "https://ui.vatse.dev/components/cards/x-card-19/"
        },
        {
          "id": "x-card-20",
          "name": "Interactive",
          "url": "https://ui.vatse.dev/components/cards/x-card-20/"
        }
      ]
    },
    {
      "id": "bento-grid",
      "name": "Bento grid",
      "category": "layout",
      "url": "https://ui.vatse.dev/components/bento-grid/",
      "variants": [
        {
          "id": "01-base",
          "name": "Base",
          "url": "https://ui.vatse.dev/components/bento-grid/01-base/"
        },
        {
          "id": "x-feature-2",
          "name": "Product",
          "url": "https://ui.vatse.dev/components/bento-grid/x-feature-2/"
        },
        {
          "id": "x-feature-3",
          "name": "Metric",
          "url": "https://ui.vatse.dev/components/bento-grid/x-feature-3/"
        },
        {
          "id": "x-feature-4",
          "name": "Workflow",
          "url": "https://ui.vatse.dev/components/bento-grid/x-feature-4/"
        },
        {
          "id": "x-feature-5",
          "name": "Security",
          "url": "https://ui.vatse.dev/components/bento-grid/x-feature-5/"
        },
        {
          "id": "x-feature-6",
          "name": "Automation",
          "url": "https://ui.vatse.dev/components/bento-grid/x-feature-6/"
        },
        {
          "id": "x-feature-7",
          "name": "Integrations",
          "url": "https://ui.vatse.dev/components/bento-grid/x-feature-7/"
        },
        {
          "id": "x-feature-8",
          "name": "AI",
          "url": "https://ui.vatse.dev/components/bento-grid/x-feature-8/"
        },
        {
          "id": "x-feature-9",
          "name": "Mobile",
          "url": "https://ui.vatse.dev/components/bento-grid/x-feature-9/"
        },
        {
          "id": "x-feature-10",
          "name": "Analytics",
          "url": "https://ui.vatse.dev/components/bento-grid/x-feature-10/"
        },
        {
          "id": "x-feature-11",
          "name": "Collaboration",
          "url": "https://ui.vatse.dev/components/bento-grid/x-feature-11/"
        },
        {
          "id": "x-feature-12",
          "name": "Files",
          "url": "https://ui.vatse.dev/components/bento-grid/x-feature-12/"
        },
        {
          "id": "x-feature-13",
          "name": "Payments",
          "url": "https://ui.vatse.dev/components/bento-grid/x-feature-13/"
        },
        {
          "id": "x-feature-14",
          "name": "CRM",
          "url": "https://ui.vatse.dev/components/bento-grid/x-feature-14/"
        },
        {
          "id": "x-feature-15",
          "name": "Support",
          "url": "https://ui.vatse.dev/components/bento-grid/x-feature-15/"
        }
      ]
    },
    {
      "id": "cta",
      "name": "Chamadas para ação",
      "category": "marketing",
      "url": "https://ui.vatse.dev/components/cta/",
      "variants": [
        {
          "id": "01-base",
          "name": "Base",
          "url": "https://ui.vatse.dev/components/cta/01-base/"
        },
        {
          "id": "x-cta-1",
          "name": "Conversion",
          "url": "https://ui.vatse.dev/components/cta/x-cta-1/"
        },
        {
          "id": "x-cta-2",
          "name": "Product",
          "url": "https://ui.vatse.dev/components/cta/x-cta-2/"
        },
        {
          "id": "x-cta-3",
          "name": "Newsletter",
          "url": "https://ui.vatse.dev/components/cta/x-cta-3/"
        },
        {
          "id": "x-cta-4",
          "name": "Download",
          "url": "https://ui.vatse.dev/components/cta/x-cta-4/"
        },
        {
          "id": "x-cta-5",
          "name": "Demo",
          "url": "https://ui.vatse.dev/components/cta/x-cta-5/"
        },
        {
          "id": "x-cta-6",
          "name": "Contact",
          "url": "https://ui.vatse.dev/components/cta/x-cta-6/"
        },
        {
          "id": "x-cta-7",
          "name": "Trial",
          "url": "https://ui.vatse.dev/components/cta/x-cta-7/"
        },
        {
          "id": "x-cta-8",
          "name": "Upgrade",
          "url": "https://ui.vatse.dev/components/cta/x-cta-8/"
        },
        {
          "id": "x-cta-9",
          "name": "Community",
          "url": "https://ui.vatse.dev/components/cta/x-cta-9/"
        },
        {
          "id": "x-cta-10",
          "name": "Launch",
          "url": "https://ui.vatse.dev/components/cta/x-cta-10/"
        }
      ]
    },
    {
      "id": "inputs",
      "name": "Inputs",
      "category": "forms",
      "url": "https://ui.vatse.dev/components/inputs/",
      "variants": [
        {
          "id": "01-text-email-password",
          "name": "Text / Email / Password",
          "url": "https://ui.vatse.dev/components/inputs/01-text-email-password/"
        },
        {
          "id": "02-search-pill",
          "name": "Search (pill)",
          "url": "https://ui.vatse.dev/components/inputs/02-search-pill/"
        },
        {
          "id": "03-floating-label",
          "name": "Floating label",
          "url": "https://ui.vatse.dev/components/inputs/03-floating-label/"
        },
        {
          "id": "04-glow-shell-conic-border",
          "name": "Glow shell (conic border)",
          "url": "https://ui.vatse.dev/components/inputs/04-glow-shell-conic-border/"
        },
        {
          "id": "05-tipos-reais-number-date-time",
          "name": "Tipos reais (number / date / time)",
          "url": "https://ui.vatse.dev/components/inputs/05-tipos-reais-number-date-time/"
        },
        {
          "id": "06-textarea-mensagens",
          "name": "Textarea (mensagens)",
          "url": "https://ui.vatse.dev/components/inputs/06-textarea-mensagens/"
        },
        {
          "id": "07-file-input-nativo-estilizado",
          "name": "File input (nativo, estilizado)",
          "url": "https://ui.vatse.dev/components/inputs/07-file-input-nativo-estilizado/"
        },
        {
          "id": "08-addons-prefix-sufix-acao",
          "name": "Addons (prefix/sufix) + ação",
          "url": "https://ui.vatse.dev/components/inputs/08-addons-prefix-sufix-acao/"
        },
        {
          "id": "09-estados-disabled-readonly-valid-invalid",
          "name": "Estados (disabled / readonly / valid / invalid)",
          "url": "https://ui.vatse.dev/components/inputs/09-estados-disabled-readonly-valid-invalid/"
        },
        {
          "id": "10-range-fill-automatico-steps",
          "name": "Range (fill automático + steps)",
          "url": "https://ui.vatse.dev/components/inputs/10-range-fill-automatico-steps/"
        },
        {
          "id": "x-input-11",
          "name": "Com ícone",
          "url": "https://ui.vatse.dev/components/inputs/x-input-11/"
        },
        {
          "id": "x-input-12",
          "name": "Com ação",
          "url": "https://ui.vatse.dev/components/inputs/x-input-12/"
        },
        {
          "id": "x-input-13",
          "name": "Currency",
          "url": "https://ui.vatse.dev/components/inputs/x-input-13/"
        },
        {
          "id": "x-input-14",
          "name": "Tags",
          "url": "https://ui.vatse.dev/components/inputs/x-input-14/"
        },
        {
          "id": "x-input-15",
          "name": "Validation summary",
          "url": "https://ui.vatse.dev/components/inputs/x-input-15/"
        }
      ]
    },
    {
      "id": "forms",
      "name": "Formulários completos",
      "category": "forms",
      "url": "https://ui.vatse.dev/components/forms/",
      "variants": [
        {
          "id": "01-login",
          "name": "Login",
          "url": "https://ui.vatse.dev/components/forms/01-login/"
        },
        {
          "id": "02-inline",
          "name": "Inline",
          "url": "https://ui.vatse.dev/components/forms/02-inline/"
        },
        {
          "id": "03-subscribe",
          "name": "Subscribe",
          "url": "https://ui.vatse.dev/components/forms/03-subscribe/"
        },
        {
          "id": "04-textarea",
          "name": "Textarea",
          "url": "https://ui.vatse.dev/components/forms/04-textarea/"
        },
        {
          "id": "05-checkbox-radio",
          "name": "Checkbox / Radio",
          "url": "https://ui.vatse.dev/components/forms/05-checkbox-radio/"
        },
        {
          "id": "06-otp-verificacao",
          "name": "OTP (verificação)",
          "url": "https://ui.vatse.dev/components/forms/06-otp-verificacao/"
        },
        {
          "id": "07-upload-dropzone",
          "name": "Upload (dropzone)",
          "url": "https://ui.vatse.dev/components/forms/07-upload-dropzone/"
        },
        {
          "id": "08-validacao",
          "name": "Validação",
          "url": "https://ui.vatse.dev/components/forms/08-validacao/"
        },
        {
          "id": "09-select-custom",
          "name": "Select custom",
          "url": "https://ui.vatse.dev/components/forms/09-select-custom/"
        },
        {
          "id": "10-padrao",
          "name": "Padrão",
          "url": "https://ui.vatse.dev/components/forms/10-padrao/"
        },
        {
          "id": "11-soft-glow",
          "name": "Soft + Glow",
          "url": "https://ui.vatse.dev/components/forms/11-soft-glow/"
        },
        {
          "id": "12-orbit",
          "name": "Orbit",
          "url": "https://ui.vatse.dev/components/forms/12-orbit/"
        },
        {
          "id": "13-square-plus",
          "name": "Square + Plus",
          "url": "https://ui.vatse.dev/components/forms/13-square-plus/"
        },
        {
          "id": "14-segmented-glass-glider",
          "name": "Segmented (glass glider)",
          "url": "https://ui.vatse.dev/components/forms/14-segmented-glass-glider/"
        },
        {
          "id": "15-rating-estrelas",
          "name": "Rating (estrelas)",
          "url": "https://ui.vatse.dev/components/forms/15-rating-estrelas/"
        }
      ]
    },
    {
      "id": "select-menu",
      "name": "Select menu",
      "category": "forms",
      "url": "https://ui.vatse.dev/components/select-menu/",
      "variants": [
        {
          "id": "01-basico",
          "name": "Básico",
          "url": "https://ui.vatse.dev/components/select-menu/01-basico/"
        },
        {
          "id": "02-compact",
          "name": "Compact",
          "url": "https://ui.vatse.dev/components/select-menu/02-compact/"
        },
        {
          "id": "03-trigger-com-icone-opcoes-com-subtitulo",
          "name": "Trigger com ícone + opções com subtítulo",
          "url": "https://ui.vatse.dev/components/select-menu/03-trigger-com-icone-opcoes-com-subtitulo/"
        },
        {
          "id": "04-grid-palette-2-colunas",
          "name": "Grid / palette (2 colunas)",
          "url": "https://ui.vatse.dev/components/select-menu/04-grid-palette-2-colunas/"
        },
        {
          "id": "05-search-icones-ripple-fancy",
          "name": "Search + ícones + ripple (fancy)",
          "url": "https://ui.vatse.dev/components/select-menu/05-search-icones-ripple-fancy/"
        },
        {
          "id": "06-validacao-valid-invalid",
          "name": "Validação (valid/invalid)",
          "url": "https://ui.vatse.dev/components/select-menu/06-validacao-valid-invalid/"
        },
        {
          "id": "07-grupos-separadores",
          "name": "Grupos (separadores)",
          "url": "https://ui.vatse.dev/components/select-menu/07-grupos-separadores/"
        },
        {
          "id": "08-avatar-time",
          "name": "Avatar / time",
          "url": "https://ui.vatse.dev/components/select-menu/08-avatar-time/"
        },
        {
          "id": "09-status-dot-color",
          "name": "Status (dot color)",
          "url": "https://ui.vatse.dev/components/select-menu/09-status-dot-color/"
        },
        {
          "id": "10-popover-alto-lista-grande",
          "name": "Popover alto (lista grande)",
          "url": "https://ui.vatse.dev/components/select-menu/10-popover-alto-lista-grande/"
        }
      ]
    },
    {
      "id": "choice-controls",
      "name": "Checkbox, radio e switch",
      "category": "forms",
      "url": "https://ui.vatse.dev/components/choice-controls/",
      "variants": [
        {
          "id": "01-base",
          "name": "Base",
          "url": "https://ui.vatse.dev/components/choice-controls/01-base/"
        }
      ]
    },
    {
      "id": "range",
      "name": "Range slider",
      "category": "forms",
      "url": "https://ui.vatse.dev/components/range/",
      "variants": [
        {
          "id": "01-base",
          "name": "Base",
          "url": "https://ui.vatse.dev/components/range/01-base/"
        }
      ]
    },
    {
      "id": "file-upload",
      "name": "Upload de arquivo",
      "category": "forms",
      "url": "https://ui.vatse.dev/components/file-upload/",
      "variants": [
        {
          "id": "01-base",
          "name": "Base",
          "url": "https://ui.vatse.dev/components/file-upload/01-base/"
        }
      ]
    },
    {
      "id": "otp",
      "name": "Código OTP",
      "category": "forms",
      "url": "https://ui.vatse.dev/components/otp/",
      "variants": [
        {
          "id": "01-base",
          "name": "Base",
          "url": "https://ui.vatse.dev/components/otp/01-base/"
        }
      ]
    },
    {
      "id": "nav",
      "name": "Navegação",
      "category": "navigation",
      "url": "https://ui.vatse.dev/components/nav/",
      "variants": [
        {
          "id": "01-classico-logo-links-acoes",
          "name": "Clássico (logo + links + ações)",
          "url": "https://ui.vatse.dev/components/nav/01-classico-logo-links-acoes/"
        },
        {
          "id": "02-mobile-collapsible",
          "name": "Mobile Collapsible",
          "url": "https://ui.vatse.dev/components/nav/02-mobile-collapsible/"
        },
        {
          "id": "03-com-search",
          "name": "Com Search",
          "url": "https://ui.vatse.dev/components/nav/03-com-search/"
        },
        {
          "id": "04-centered-minimal",
          "name": "Centered / Minimal",
          "url": "https://ui.vatse.dev/components/nav/04-centered-minimal/"
        },
        {
          "id": "05-com-dropdown-usuario",
          "name": "Com Dropdown (usuário)",
          "url": "https://ui.vatse.dev/components/nav/05-com-dropdown-usuario/"
        },
        {
          "id": "06-pill-compact-tipo-doc-pill",
          "name": "Pill / Compact (tipo “doc pill”)",
          "url": "https://ui.vatse.dev/components/nav/06-pill-compact-tipo-doc-pill/"
        },
        {
          "id": "07-app-bar-icones-modo",
          "name": "App bar (ícones + modo)",
          "url": "https://ui.vatse.dev/components/nav/07-app-bar-icones-modo/"
        },
        {
          "id": "08-nav-saas-badge-modo",
          "name": "Nav “SaaS” (badge + modo)",
          "url": "https://ui.vatse.dev/components/nav/08-nav-saas-badge-modo/"
        },
        {
          "id": "09-nav-com-submenu-menu-modo",
          "name": "Nav com submenu (menu + modo)",
          "url": "https://ui.vatse.dev/components/nav/09-nav-com-submenu-menu-modo/"
        },
        {
          "id": "10-mobile-search-modo-tudo-junto",
          "name": "Mobile + search + modo (tudo junto)",
          "url": "https://ui.vatse.dev/components/nav/10-mobile-search-modo-tudo-junto/"
        },
        {
          "id": "x-nav-11",
          "name": "Command center",
          "url": "https://ui.vatse.dev/components/nav/x-nav-11/"
        },
        {
          "id": "x-nav-12",
          "name": "Brand split",
          "url": "https://ui.vatse.dev/components/nav/x-nav-12/"
        },
        {
          "id": "x-nav-13",
          "name": "Context rail",
          "url": "https://ui.vatse.dev/components/nav/x-nav-13/"
        },
        {
          "id": "x-nav-14",
          "name": "Product switcher",
          "url": "https://ui.vatse.dev/components/nav/x-nav-14/"
        },
        {
          "id": "x-nav-15",
          "name": "Mobile dock",
          "url": "https://ui.vatse.dev/components/nav/x-nav-15/"
        }
      ]
    },
    {
      "id": "footer",
      "name": "Rodapés",
      "category": "navigation",
      "url": "https://ui.vatse.dev/components/footer/",
      "variants": [
        {
          "id": "01-modern-brand-social-colunas",
          "name": "Modern (brand + social + colunas)",
          "url": "https://ui.vatse.dev/components/footer/01-modern-brand-social-colunas/"
        },
        {
          "id": "02-newsletter-premium-card-input-group",
          "name": "Newsletter premium (card + input group)",
          "url": "https://ui.vatse.dev/components/footer/02-newsletter-premium-card-input-group/"
        },
        {
          "id": "03-minimal-clean-linha-unica-elegante",
          "name": "Minimal clean (linha única, elegante)",
          "url": "https://ui.vatse.dev/components/footer/03-minimal-clean-linha-unica-elegante/"
        },
        {
          "id": "04-centered-social-brand",
          "name": "Centered + social (brand)",
          "url": "https://ui.vatse.dev/components/footer/04-centered-social-brand/"
        },
        {
          "id": "05-split-links-cta-contato",
          "name": "Split (links + CTA + contato)",
          "url": "https://ui.vatse.dev/components/footer/05-split-links-cta-contato/"
        },
        {
          "id": "06-grid-links-cards-visual-forte",
          "name": "Grid “links cards” (visual forte)",
          "url": "https://ui.vatse.dev/components/footer/06-grid-links-cards-visual-forte/"
        },
        {
          "id": "x-footer-7",
          "name": "Product columns",
          "url": "https://ui.vatse.dev/components/footer/x-footer-7/"
        },
        {
          "id": "x-footer-8",
          "name": "Minimal legal",
          "url": "https://ui.vatse.dev/components/footer/x-footer-8/"
        },
        {
          "id": "x-footer-9",
          "name": "Community",
          "url": "https://ui.vatse.dev/components/footer/x-footer-9/"
        },
        {
          "id": "x-footer-10",
          "name": "Application dock",
          "url": "https://ui.vatse.dev/components/footer/x-footer-10/"
        }
      ]
    },
    {
      "id": "mega-menu",
      "name": "Mega menu",
      "category": "navigation",
      "url": "https://ui.vatse.dev/components/mega-menu/",
      "variants": [
        {
          "id": "01-menu-simples",
          "name": "Menu simples",
          "url": "https://ui.vatse.dev/components/mega-menu/01-menu-simples/"
        },
        {
          "id": "02-acoes-rapidas",
          "name": "Ações rápidas",
          "url": "https://ui.vatse.dev/components/mega-menu/02-acoes-rapidas/"
        },
        {
          "id": "03-icones",
          "name": "Ícones",
          "url": "https://ui.vatse.dev/components/mega-menu/03-icones/"
        },
        {
          "id": "04-alinhado-a-esquerda",
          "name": "Alinhado à esquerda",
          "url": "https://ui.vatse.dev/components/mega-menu/04-alinhado-a-esquerda/"
        },
        {
          "id": "05-wide",
          "name": "Wide",
          "url": "https://ui.vatse.dev/components/mega-menu/05-wide/"
        },
        {
          "id": "06-header-grupos",
          "name": "Header + grupos",
          "url": "https://ui.vatse.dev/components/mega-menu/06-header-grupos/"
        },
        {
          "id": "07-trigger-icone-compact",
          "name": "Trigger ícone (compact)",
          "url": "https://ui.vatse.dev/components/mega-menu/07-trigger-icone-compact/"
        },
        {
          "id": "08-itens-com-badge-status",
          "name": "Itens com badge (status)",
          "url": "https://ui.vatse.dev/components/mega-menu/08-itens-com-badge-status/"
        },
        {
          "id": "09-perfil-header-acoes",
          "name": "Perfil (header + ações)",
          "url": "https://ui.vatse.dev/components/mega-menu/09-perfil-header-acoes/"
        },
        {
          "id": "10-checklist-menuitemcheckbox",
          "name": "Checklist (menuitemcheckbox)",
          "url": "https://ui.vatse.dev/components/mega-menu/10-checklist-menuitemcheckbox/"
        },
        {
          "id": "x-menu-11",
          "name": "Command palette",
          "url": "https://ui.vatse.dev/components/mega-menu/x-menu-11/"
        },
        {
          "id": "x-menu-12",
          "name": "Product matrix",
          "url": "https://ui.vatse.dev/components/mega-menu/x-menu-12/"
        }
      ]
    },
    {
      "id": "app-sidebar",
      "name": "App sidebar",
      "category": "application",
      "url": "https://ui.vatse.dev/components/app-sidebar/",
      "variants": [
        {
          "id": "01-base",
          "name": "Base",
          "url": "https://ui.vatse.dev/components/app-sidebar/01-base/"
        },
        {
          "id": "x-sidebar-2",
          "name": "Compact",
          "url": "https://ui.vatse.dev/components/app-sidebar/x-sidebar-2/"
        },
        {
          "id": "x-sidebar-3",
          "name": "Rail",
          "url": "https://ui.vatse.dev/components/app-sidebar/x-sidebar-3/"
        },
        {
          "id": "x-sidebar-4",
          "name": "Workspace",
          "url": "https://ui.vatse.dev/components/app-sidebar/x-sidebar-4/"
        },
        {
          "id": "x-sidebar-5",
          "name": "Commerce",
          "url": "https://ui.vatse.dev/components/app-sidebar/x-sidebar-5/"
        },
        {
          "id": "x-sidebar-6",
          "name": "Analytics",
          "url": "https://ui.vatse.dev/components/app-sidebar/x-sidebar-6/"
        },
        {
          "id": "x-sidebar-7",
          "name": "Support",
          "url": "https://ui.vatse.dev/components/app-sidebar/x-sidebar-7/"
        },
        {
          "id": "x-sidebar-8",
          "name": "Project",
          "url": "https://ui.vatse.dev/components/app-sidebar/x-sidebar-8/"
        },
        {
          "id": "x-sidebar-9",
          "name": "Media",
          "url": "https://ui.vatse.dev/components/app-sidebar/x-sidebar-9/"
        },
        {
          "id": "x-sidebar-10",
          "name": "Settings",
          "url": "https://ui.vatse.dev/components/app-sidebar/x-sidebar-10/"
        }
      ]
    },
    {
      "id": "tabs",
      "name": "Tabs",
      "category": "navigation",
      "url": "https://ui.vatse.dev/components/tabs/",
      "variants": [
        {
          "id": "01-indicator-animado-padrao",
          "name": "Indicator animado (padrão)",
          "url": "https://ui.vatse.dev/components/tabs/01-indicator-animado-padrao/"
        },
        {
          "id": "02-smarticons-sem-emojis",
          "name": "SmartIcons (sem emojis)",
          "url": "https://ui.vatse.dev/components/tabs/02-smarticons-sem-emojis/"
        },
        {
          "id": "03-pills-contadores",
          "name": "Pills + contadores",
          "url": "https://ui.vatse.dev/components/tabs/03-pills-contadores/"
        },
        {
          "id": "04-underline-indicator-linha-animada",
          "name": "Underline + indicator (linha animada)",
          "url": "https://ui.vatse.dev/components/tabs/04-underline-indicator-linha-animada/"
        },
        {
          "id": "05-segmented-switcher",
          "name": "Segmented (switcher)",
          "url": "https://ui.vatse.dev/components/tabs/05-segmented-switcher/"
        },
        {
          "id": "06-vertical-smarticons",
          "name": "Vertical + SmartIcons",
          "url": "https://ui.vatse.dev/components/tabs/06-vertical-smarticons/"
        },
        {
          "id": "07-scroll-muitos-tabs",
          "name": "Scroll (muitos tabs)",
          "url": "https://ui.vatse.dev/components/tabs/07-scroll-muitos-tabs/"
        },
        {
          "id": "08-tabs-dentro-de-card",
          "name": "Tabs dentro de Card",
          "url": "https://ui.vatse.dev/components/tabs/08-tabs-dentro-de-card/"
        },
        {
          "id": "09-tablist-acoes-header",
          "name": "Tablist + ações (header)",
          "url": "https://ui.vatse.dev/components/tabs/09-tablist-acoes-header/"
        },
        {
          "id": "10-header-menu-overflow",
          "name": "Header + menu (overflow)",
          "url": "https://ui.vatse.dev/components/tabs/10-header-menu-overflow/"
        },
        {
          "id": "x-tabs-11",
          "name": "Workspace switcher",
          "url": "https://ui.vatse.dev/components/tabs/x-tabs-11/"
        },
        {
          "id": "x-tabs-12",
          "name": "Analytics views",
          "url": "https://ui.vatse.dev/components/tabs/x-tabs-12/"
        }
      ]
    },
    {
      "id": "breadcrumbs",
      "name": "Breadcrumbs",
      "category": "navigation",
      "url": "https://ui.vatse.dev/components/breadcrumbs/",
      "variants": [
        {
          "id": "01-base",
          "name": "Base",
          "url": "https://ui.vatse.dev/components/breadcrumbs/01-base/"
        }
      ]
    },
    {
      "id": "banner",
      "name": "Banner",
      "category": "feedback",
      "url": "https://ui.vatse.dev/components/banner/",
      "variants": [
        {
          "id": "01-barra-de-aviso-info",
          "name": "Barra de aviso (info)",
          "url": "https://ui.vatse.dev/components/banner/01-barra-de-aviso-info/"
        },
        {
          "id": "02-promo-glass-cupom",
          "name": "Promo (glass) + cupom",
          "url": "https://ui.vatse.dev/components/banner/02-promo-glass-cupom/"
        },
        {
          "id": "03-warning-manutencao-dismissible",
          "name": "Warning (manutenção)  dismissible",
          "url": "https://ui.vatse.dev/components/banner/03-warning-manutencao-dismissible/"
        },
        {
          "id": "04-danger-erro-acao-rapida",
          "name": "Danger (erro) + ação rápida",
          "url": "https://ui.vatse.dev/components/banner/04-danger-erro-acao-rapida/"
        },
        {
          "id": "05-cookie-consent-tight",
          "name": "Cookie / Consent (tight)",
          "url": "https://ui.vatse.dev/components/banner/05-cookie-consent-tight/"
        },
        {
          "id": "06-sucesso-concluido-compact",
          "name": "Sucesso (concluído)  compact",
          "url": "https://ui.vatse.dev/components/banner/06-sucesso-concluido-compact/"
        }
      ]
    },
    {
      "id": "toast",
      "name": "Toast",
      "category": "feedback",
      "url": "https://ui.vatse.dev/components/toast/",
      "variants": [
        {
          "id": "01-info-basico",
          "name": "Info (básico)",
          "url": "https://ui.vatse.dev/components/toast/01-info-basico/"
        },
        {
          "id": "02-success-com-acao",
          "name": "Success (com ação)",
          "url": "https://ui.vatse.dev/components/toast/02-success-com-acao/"
        },
        {
          "id": "03-danger-erro",
          "name": "Danger (erro)",
          "url": "https://ui.vatse.dev/components/toast/03-danger-erro/"
        },
        {
          "id": "04-warning-atencao",
          "name": "Warning (atenção)",
          "url": "https://ui.vatse.dev/components/toast/04-warning-atencao/"
        },
        {
          "id": "05-persistente-duration-0",
          "name": "Persistente (duration=0)",
          "url": "https://ui.vatse.dev/components/toast/05-persistente-duration-0/"
        },
        {
          "id": "06-com-duracao-custom-6s",
          "name": "Com duração custom (6s)",
          "url": "https://ui.vatse.dev/components/toast/06-com-duracao-custom-6s/"
        }
      ]
    },
    {
      "id": "progress",
      "name": "Progresso",
      "category": "feedback",
      "url": "https://ui.vatse.dev/components/progress/",
      "variants": [
        {
          "id": "01-base",
          "name": "Base",
          "url": "https://ui.vatse.dev/components/progress/01-base/"
        }
      ]
    },
    {
      "id": "skeleton",
      "name": "Skeleton",
      "category": "feedback",
      "url": "https://ui.vatse.dev/components/skeleton/",
      "variants": [
        {
          "id": "01-base",
          "name": "Base",
          "url": "https://ui.vatse.dev/components/skeleton/01-base/"
        }
      ]
    },
    {
      "id": "modal",
      "name": "Modal",
      "category": "overlay",
      "url": "https://ui.vatse.dev/components/modal/",
      "variants": [
        {
          "id": "01-basico-default",
          "name": "Básico (default)",
          "url": "https://ui.vatse.dev/components/modal/01-basico-default/"
        },
        {
          "id": "02-confirmacao",
          "name": "Confirmação",
          "url": "https://ui.vatse.dev/components/modal/02-confirmacao/"
        },
        {
          "id": "03-small",
          "name": "Small",
          "url": "https://ui.vatse.dev/components/modal/03-small/"
        },
        {
          "id": "04-large-grid",
          "name": "Large (grid)",
          "url": "https://ui.vatse.dev/components/modal/04-large-grid/"
        },
        {
          "id": "05-fullscreen",
          "name": "Fullscreen",
          "url": "https://ui.vatse.dev/components/modal/05-fullscreen/"
        },
        {
          "id": "06-side-sheet",
          "name": "Side sheet",
          "url": "https://ui.vatse.dev/components/modal/06-side-sheet/"
        },
        {
          "id": "07-form-cadastro-rapido",
          "name": "Form (cadastro rápido)",
          "url": "https://ui.vatse.dev/components/modal/07-form-cadastro-rapido/"
        },
        {
          "id": "08-conteudo-longo-scroll",
          "name": "Conteúdo longo (scroll)",
          "url": "https://ui.vatse.dev/components/modal/08-conteudo-longo-scroll/"
        }
      ]
    },
    {
      "id": "tooltip",
      "name": "Tooltip",
      "category": "overlay",
      "url": "https://ui.vatse.dev/components/tooltip/",
      "variants": [
        {
          "id": "01-botao-top",
          "name": "Botão (top)",
          "url": "https://ui.vatse.dev/components/tooltip/01-botao-top/"
        },
        {
          "id": "02-posicoes-left-right-bottom",
          "name": "Posições (left/right/bottom)",
          "url": "https://ui.vatse.dev/components/tooltip/02-posicoes-left-right-bottom/"
        },
        {
          "id": "03-barra-social-tooltips",
          "name": "Barra social (tooltips)",
          "url": "https://ui.vatse.dev/components/tooltip/03-barra-social-tooltips/"
        },
        {
          "id": "04-tooltip-longo-legibilidade",
          "name": "Tooltip longo (legibilidade)",
          "url": "https://ui.vatse.dev/components/tooltip/04-tooltip-longo-legibilidade/"
        },
        {
          "id": "05-popover-share",
          "name": "Popover (Share)",
          "url": "https://ui.vatse.dev/components/tooltip/05-popover-share/"
        },
        {
          "id": "06-tooltip-card-perfil",
          "name": "Tooltip card (perfil)",
          "url": "https://ui.vatse.dev/components/tooltip/06-tooltip-card-perfil/"
        },
        {
          "id": "07-tooltip-em-icone-ajuda",
          "name": "Tooltip em ícone (ajuda)",
          "url": "https://ui.vatse.dev/components/tooltip/07-tooltip-em-icone-ajuda/"
        },
        {
          "id": "08-popover-posicionado-right-left",
          "name": "Popover posicionado (right/left)",
          "url": "https://ui.vatse.dev/components/tooltip/08-popover-posicionado-right-left/"
        }
      ]
    },
    {
      "id": "lightbox",
      "name": "Lightbox",
      "category": "overlay",
      "url": "https://ui.vatse.dev/components/lightbox/",
      "variants": [
        {
          "id": "01-base",
          "name": "Base",
          "url": "https://ui.vatse.dev/components/lightbox/01-base/"
        }
      ]
    },
    {
      "id": "accordion",
      "name": "Accordion",
      "category": "content",
      "url": "https://ui.vatse.dev/components/accordion/",
      "variants": [
        {
          "id": "01-single-faq-classico",
          "name": "Single (FAQ clássico)",
          "url": "https://ui.vatse.dev/components/accordion/01-single-faq-classico/"
        },
        {
          "id": "02-multi-varias-abertas",
          "name": "Multi (várias abertas)",
          "url": "https://ui.vatse.dev/components/accordion/02-multi-varias-abertas/"
        },
        {
          "id": "03-compact-classico",
          "name": "Compact (clássico)",
          "url": "https://ui.vatse.dev/components/accordion/03-compact-classico/"
        },
        {
          "id": "04-minimal-classico",
          "name": "Minimal (clássico)",
          "url": "https://ui.vatse.dev/components/accordion/04-minimal-classico/"
        },
        {
          "id": "05-plus-minus-animacao-icone-diferente",
          "name": "Plus/Minus (animação + ícone diferente)",
          "url": "https://ui.vatse.dev/components/accordion/05-plus-minus-animacao-icone-diferente/"
        },
        {
          "id": "06-cards-itens-separados-visual-premium",
          "name": "Cards (itens separados, visual premium)",
          "url": "https://ui.vatse.dev/components/accordion/06-cards-itens-separados-visual-premium/"
        },
        {
          "id": "07-glass-para-temas-glass-aurora-noir",
          "name": "Glass (para temas glass/aurora/noir)",
          "url": "https://ui.vatse.dev/components/accordion/07-glass-para-temas-glass-aurora-noir/"
        },
        {
          "id": "08-steps-timeline-layout-diferente",
          "name": "Steps/Timeline (layout diferente)",
          "url": "https://ui.vatse.dev/components/accordion/08-steps-timeline-layout-diferente/"
        }
      ]
    },
    {
      "id": "timeline",
      "name": "Timeline",
      "category": "data-display",
      "url": "https://ui.vatse.dev/components/timeline/",
      "variants": [
        {
          "id": "01-base",
          "name": "Base",
          "url": "https://ui.vatse.dev/components/timeline/01-base/"
        }
      ]
    },
    {
      "id": "stepper",
      "name": "Stepper",
      "category": "data-display",
      "url": "https://ui.vatse.dev/components/stepper/",
      "variants": [
        {
          "id": "01-base",
          "name": "Base",
          "url": "https://ui.vatse.dev/components/stepper/01-base/"
        }
      ]
    },
    {
      "id": "table",
      "name": "Tabelas",
      "category": "data-display",
      "url": "https://ui.vatse.dev/components/table/",
      "variants": [
        {
          "id": "01-basic",
          "name": "Basic",
          "url": "https://ui.vatse.dev/components/table/01-basic/"
        },
        {
          "id": "02-striped",
          "name": "Striped",
          "url": "https://ui.vatse.dev/components/table/02-striped/"
        },
        {
          "id": "03-bordered",
          "name": "Bordered",
          "url": "https://ui.vatse.dev/components/table/03-bordered/"
        },
        {
          "id": "04-compact",
          "name": "Compact",
          "url": "https://ui.vatse.dev/components/table/04-compact/"
        },
        {
          "id": "05-hover",
          "name": "Hover",
          "url": "https://ui.vatse.dev/components/table/05-hover/"
        },
        {
          "id": "06-responsivo",
          "name": "Responsivo",
          "url": "https://ui.vatse.dev/components/table/06-responsivo/"
        },
        {
          "id": "07-badges-status-dashboard",
          "name": "Badges + status (dashboard)",
          "url": "https://ui.vatse.dev/components/table/07-badges-status-dashboard/"
        },
        {
          "id": "08-coluna-de-acoes-botoes",
          "name": "Coluna de ações (botões)",
          "url": "https://ui.vatse.dev/components/table/08-coluna-de-acoes-botoes/"
        },
        {
          "id": "09-sticky-header-scroll-vertical",
          "name": "Sticky header (scroll vertical)",
          "url": "https://ui.vatse.dev/components/table/09-sticky-header-scroll-vertical/"
        },
        {
          "id": "10-selecionavel-row-select",
          "name": "Selecionável (row select)",
          "url": "https://ui.vatse.dev/components/table/10-selecionavel-row-select/"
        }
      ]
    },
    {
      "id": "stats",
      "name": "Stats e KPI",
      "category": "data-display",
      "url": "https://ui.vatse.dev/components/stats/",
      "variants": [
        {
          "id": "01-base",
          "name": "Base",
          "url": "https://ui.vatse.dev/components/stats/01-base/"
        }
      ]
    },
    {
      "id": "activity-feed",
      "name": "Activity feed",
      "category": "data-display",
      "url": "https://ui.vatse.dev/components/activity-feed/",
      "variants": [
        {
          "id": "01-base",
          "name": "Base",
          "url": "https://ui.vatse.dev/components/activity-feed/01-base/"
        }
      ]
    },
    {
      "id": "empty-state",
      "name": "Empty state",
      "category": "content",
      "url": "https://ui.vatse.dev/components/empty-state/",
      "variants": [
        {
          "id": "01-base",
          "name": "Base",
          "url": "https://ui.vatse.dev/components/empty-state/01-base/"
        },
        {
          "id": "x-empty-2",
          "name": "No results",
          "url": "https://ui.vatse.dev/components/empty-state/x-empty-2/"
        },
        {
          "id": "x-empty-3",
          "name": "First project",
          "url": "https://ui.vatse.dev/components/empty-state/x-empty-3/"
        },
        {
          "id": "x-empty-4",
          "name": "Inbox zero",
          "url": "https://ui.vatse.dev/components/empty-state/x-empty-4/"
        },
        {
          "id": "x-empty-5",
          "name": "Offline",
          "url": "https://ui.vatse.dev/components/empty-state/x-empty-5/"
        },
        {
          "id": "x-empty-6",
          "name": "Permission",
          "url": "https://ui.vatse.dev/components/empty-state/x-empty-6/"
        },
        {
          "id": "x-empty-7",
          "name": "Import",
          "url": "https://ui.vatse.dev/components/empty-state/x-empty-7/"
        },
        {
          "id": "x-empty-8",
          "name": "Search",
          "url": "https://ui.vatse.dev/components/empty-state/x-empty-8/"
        },
        {
          "id": "x-empty-9",
          "name": "Archived",
          "url": "https://ui.vatse.dev/components/empty-state/x-empty-9/"
        },
        {
          "id": "x-empty-10",
          "name": "Error recovery",
          "url": "https://ui.vatse.dev/components/empty-state/x-empty-10/"
        }
      ]
    },
    {
      "id": "carousel",
      "name": "Carousel",
      "category": "media",
      "url": "https://ui.vatse.dev/components/carousel/",
      "variants": [
        {
          "id": "01-slides-basicos-1",
          "name": "Slides básicos (1)",
          "url": "https://ui.vatse.dev/components/carousel/01-slides-basicos-1/"
        },
        {
          "id": "02-cards-2-por-view",
          "name": "Cards (2 por view)",
          "url": "https://ui.vatse.dev/components/carousel/02-cards-2-por-view/"
        },
        {
          "id": "03-cards-3-por-view",
          "name": "Cards (3 por view)",
          "url": "https://ui.vatse.dev/components/carousel/03-cards-3-por-view/"
        },
        {
          "id": "04-autoplay",
          "name": "Autoplay",
          "url": "https://ui.vatse.dev/components/carousel/04-autoplay/"
        },
        {
          "id": "05-imagens",
          "name": "Imagens",
          "url": "https://ui.vatse.dev/components/carousel/05-imagens/"
        },
        {
          "id": "06-testimonials",
          "name": "Testimonials",
          "url": "https://ui.vatse.dev/components/carousel/06-testimonials/"
        },
        {
          "id": "07-spotlight-cards-com-foco",
          "name": "Spotlight (cards com foco)",
          "url": "https://ui.vatse.dev/components/carousel/07-spotlight-cards-com-foco/"
        },
        {
          "id": "x-carousel-8",
          "name": "Story cards",
          "url": "https://ui.vatse.dev/components/carousel/x-carousel-8/"
        },
        {
          "id": "x-carousel-9",
          "name": "Product reel",
          "url": "https://ui.vatse.dev/components/carousel/x-carousel-9/"
        },
        {
          "id": "x-carousel-10",
          "name": "Timeline",
          "url": "https://ui.vatse.dev/components/carousel/x-carousel-10/"
        },
        {
          "id": "x-carousel-11",
          "name": "Editorial",
          "url": "https://ui.vatse.dev/components/carousel/x-carousel-11/"
        },
        {
          "id": "x-carousel-12",
          "name": "Fullscreen showcase",
          "url": "https://ui.vatse.dev/components/carousel/x-carousel-12/"
        }
      ]
    },
    {
      "id": "music-player",
      "name": "Music player",
      "category": "media",
      "url": "https://ui.vatse.dev/components/music-player/",
      "variants": [
        {
          "id": "01-coverflow-premium-card",
          "name": "Coverflow premium (card)",
          "url": "https://ui.vatse.dev/components/music-player/01-coverflow-premium-card/"
        },
        {
          "id": "02-mini-player-barra",
          "name": "Mini player (barra)",
          "url": "https://ui.vatse.dev/components/music-player/02-mini-player-barra/"
        },
        {
          "id": "03-player-playlist-clicavel",
          "name": "Player + playlist clicável",
          "url": "https://ui.vatse.dev/components/music-player/03-player-playlist-clicavel/"
        },
        {
          "id": "04-neon-glass-tema-driven",
          "name": "Neon / glass (tema-driven)",
          "url": "https://ui.vatse.dev/components/music-player/04-neon-glass-tema-driven/"
        },
        {
          "id": "05-card-capa-player-lado-a-lado",
          "name": "Card (capa + player lado a lado)",
          "url": "https://ui.vatse.dev/components/music-player/05-card-capa-player-lado-a-lado/"
        },
        {
          "id": "06-playlist-somente-lista-sem-capa",
          "name": "Playlist (somente lista, sem capa)",
          "url": "https://ui.vatse.dev/components/music-player/06-playlist-somente-lista-sem-capa/"
        }
      ]
    },
    {
      "id": "gallery",
      "name": "Galerias",
      "category": "media",
      "url": "https://ui.vatse.dev/components/gallery/",
      "variants": [
        {
          "id": "01-lightbox-classico",
          "name": "Lightbox (clássico)",
          "url": "https://ui.vatse.dev/components/gallery/01-lightbox-classico/"
        },
        {
          "id": "02-square-classico",
          "name": "Square (clássico)",
          "url": "https://ui.vatse.dev/components/gallery/02-square-classico/"
        },
        {
          "id": "03-caption-classico",
          "name": "Caption (clássico)",
          "url": "https://ui.vatse.dev/components/gallery/03-caption-classico/"
        },
        {
          "id": "04-masonry-classico",
          "name": "Masonry (clássico)",
          "url": "https://ui.vatse.dev/components/gallery/04-masonry-classico/"
        },
        {
          "id": "05-spans-grid-classico",
          "name": "Spans (grid) (clássico)",
          "url": "https://ui.vatse.dev/components/gallery/05-spans-grid-classico/"
        },
        {
          "id": "06-sem-lightbox-classico",
          "name": "Sem lightbox (clássico)",
          "url": "https://ui.vatse.dev/components/gallery/06-sem-lightbox-classico/"
        },
        {
          "id": "07-reveal-captions-novo",
          "name": "Reveal captions (novo)",
          "url": "https://ui.vatse.dev/components/gallery/07-reveal-captions-novo/"
        },
        {
          "id": "08-bento-grid-novo",
          "name": "Bento grid (novo)",
          "url": "https://ui.vatse.dev/components/gallery/08-bento-grid-novo/"
        },
        {
          "id": "09-filmstrip-horizontal-scroll-novo",
          "name": "Filmstrip (horizontal scroll) (novo)",
          "url": "https://ui.vatse.dev/components/gallery/09-filmstrip-horizontal-scroll-novo/"
        },
        {
          "id": "10-polaroid-stack-novo",
          "name": "Polaroid stack (novo)",
          "url": "https://ui.vatse.dev/components/gallery/10-polaroid-stack-novo/"
        },
        {
          "id": "x-gallery-11",
          "name": "Editorial mosaic",
          "url": "https://ui.vatse.dev/components/gallery/x-gallery-11/"
        },
        {
          "id": "x-gallery-12",
          "name": "Immersive showcase",
          "url": "https://ui.vatse.dev/components/gallery/x-gallery-12/"
        }
      ]
    },
    {
      "id": "coverflow",
      "name": "Coverflow",
      "category": "3d",
      "url": "https://ui.vatse.dev/components/coverflow/",
      "variants": [
        {
          "id": "01-base",
          "name": "Base",
          "url": "https://ui.vatse.dev/components/coverflow/01-base/"
        }
      ]
    },
    {
      "id": "slidewheel",
      "name": "SlideWheel",
      "category": "3d",
      "url": "https://ui.vatse.dev/components/slidewheel/",
      "variants": [
        {
          "id": "01-base",
          "name": "Base",
          "url": "https://ui.vatse.dev/components/slidewheel/01-base/"
        }
      ]
    },
    {
      "id": "photo-rail",
      "name": "Photo rail",
      "category": "media",
      "url": "https://ui.vatse.dev/components/photo-rail/",
      "variants": [
        {
          "id": "01-rail-12-fotos-desktop",
          "name": "Rail 12 fotos (desktop)",
          "url": "https://ui.vatse.dev/components/photo-rail/01-rail-12-fotos-desktop/"
        },
        {
          "id": "02-compacto-6-fotos",
          "name": "Compacto (6 fotos)",
          "url": "https://ui.vatse.dev/components/photo-rail/02-compacto-6-fotos/"
        },
        {
          "id": "03-tall-mais-altura",
          "name": "Tall (mais altura)",
          "url": "https://ui.vatse.dev/components/photo-rail/03-tall-mais-altura/"
        },
        {
          "id": "04-mini-4-fotos-foco-rapido",
          "name": "Mini (4 fotos, foco rápido)",
          "url": "https://ui.vatse.dev/components/photo-rail/04-mini-4-fotos-foco-rapido/"
        },
        {
          "id": "05-stack-vertical-mobile-compact",
          "name": "Stack (vertical, mobile/compact)",
          "url": "https://ui.vatse.dev/components/photo-rail/05-stack-vertical-mobile-compact/"
        }
      ]
    },
    {
      "id": "aurora",
      "name": "Aurora",
      "category": "backgrounds",
      "url": "https://ui.vatse.dev/components/aurora/",
      "variants": [
        {
          "id": "01-base",
          "name": "Base",
          "url": "https://ui.vatse.dev/components/aurora/01-base/"
        }
      ]
    },
    {
      "id": "animated-gradient",
      "name": "Animated gradient",
      "category": "backgrounds",
      "url": "https://ui.vatse.dev/components/animated-gradient/",
      "variants": [
        {
          "id": "01-base",
          "name": "Base",
          "url": "https://ui.vatse.dev/components/animated-gradient/01-base/"
        }
      ]
    },
    {
      "id": "backgrounds",
      "name": "Backgrounds experimentais",
      "category": "backgrounds",
      "url": "https://ui.vatse.dev/components/backgrounds/",
      "variants": [
        {
          "id": "01-base",
          "name": "Base",
          "url": "https://ui.vatse.dev/components/backgrounds/01-base/"
        },
        {
          "id": "x-background-1",
          "name": "Aurora",
          "url": "https://ui.vatse.dev/components/backgrounds/x-background-1/"
        },
        {
          "id": "x-background-2",
          "name": "Mesh",
          "url": "https://ui.vatse.dev/components/backgrounds/x-background-2/"
        },
        {
          "id": "x-background-3",
          "name": "Animated gradient",
          "url": "https://ui.vatse.dev/components/backgrounds/x-background-3/"
        },
        {
          "id": "x-background-4",
          "name": "Blobs",
          "url": "https://ui.vatse.dev/components/backgrounds/x-background-4/"
        },
        {
          "id": "x-background-5",
          "name": "Spotlight",
          "url": "https://ui.vatse.dev/components/backgrounds/x-background-5/"
        },
        {
          "id": "x-background-6",
          "name": "Grid",
          "url": "https://ui.vatse.dev/components/backgrounds/x-background-6/"
        },
        {
          "id": "x-background-7",
          "name": "Interactive grid",
          "url": "https://ui.vatse.dev/components/backgrounds/x-background-7/"
        },
        {
          "id": "x-background-8",
          "name": "Dots",
          "url": "https://ui.vatse.dev/components/backgrounds/x-background-8/"
        },
        {
          "id": "x-background-9",
          "name": "Dotted glow",
          "url": "https://ui.vatse.dev/components/backgrounds/x-background-9/"
        },
        {
          "id": "x-background-10",
          "name": "Beams",
          "url": "https://ui.vatse.dev/components/backgrounds/x-background-10/"
        },
        {
          "id": "x-background-11",
          "name": "Radial glow",
          "url": "https://ui.vatse.dev/components/backgrounds/x-background-11/"
        },
        {
          "id": "x-background-12",
          "name": "Meteors",
          "url": "https://ui.vatse.dev/components/backgrounds/x-background-12/"
        },
        {
          "id": "x-background-13",
          "name": "Stars",
          "url": "https://ui.vatse.dev/components/backgrounds/x-background-13/"
        },
        {
          "id": "x-background-14",
          "name": "Noise",
          "url": "https://ui.vatse.dev/components/backgrounds/x-background-14/"
        },
        {
          "id": "x-background-15",
          "name": "HUD",
          "url": "https://ui.vatse.dev/components/backgrounds/x-background-15/"
        },
        {
          "id": "x-background-16",
          "name": "Scanlines",
          "url": "https://ui.vatse.dev/components/backgrounds/x-background-16/"
        },
        {
          "id": "x-background-17",
          "name": "Vortex",
          "url": "https://ui.vatse.dev/components/backgrounds/x-background-17/"
        },
        {
          "id": "x-background-18",
          "name": "Waves",
          "url": "https://ui.vatse.dev/components/backgrounds/x-background-18/"
        },
        {
          "id": "x-background-19",
          "name": "Orbs",
          "url": "https://ui.vatse.dev/components/backgrounds/x-background-19/"
        },
        {
          "id": "x-background-20",
          "name": "Pointer glow",
          "url": "https://ui.vatse.dev/components/backgrounds/x-background-20/"
        },
        {
          "id": "x-background-21",
          "name": "Animated lines",
          "url": "https://ui.vatse.dev/components/backgrounds/x-background-21/"
        },
        {
          "id": "x-background-22",
          "name": "Particles lite",
          "url": "https://ui.vatse.dev/components/backgrounds/x-background-22/"
        }
      ]
    },
    {
      "id": "spotlight",
      "name": "Spotlight",
      "category": "pointer",
      "url": "https://ui.vatse.dev/components/spotlight/",
      "variants": [
        {
          "id": "01-base",
          "name": "Base",
          "url": "https://ui.vatse.dev/components/spotlight/01-base/"
        }
      ]
    },
    {
      "id": "grid-background",
      "name": "Grid e dots",
      "category": "backgrounds",
      "url": "https://ui.vatse.dev/components/grid-background/",
      "variants": [
        {
          "id": "01-base",
          "name": "Base",
          "url": "https://ui.vatse.dev/components/grid-background/01-base/"
        }
      ]
    },
    {
      "id": "beams",
      "name": "Beams e radial glow",
      "category": "backgrounds",
      "url": "https://ui.vatse.dev/components/beams/",
      "variants": [
        {
          "id": "01-base",
          "name": "Base",
          "url": "https://ui.vatse.dev/components/beams/01-base/"
        }
      ]
    },
    {
      "id": "noise-hud",
      "name": "Noise e HUD",
      "category": "backgrounds",
      "url": "https://ui.vatse.dev/components/noise-hud/",
      "variants": [
        {
          "id": "01-base",
          "name": "Base",
          "url": "https://ui.vatse.dev/components/noise-hud/01-base/"
        }
      ]
    },
    {
      "id": "reveal",
      "name": "Scroll reveal",
      "category": "motion",
      "url": "https://ui.vatse.dev/components/reveal/",
      "variants": [
        {
          "id": "01-base",
          "name": "Base",
          "url": "https://ui.vatse.dev/components/reveal/01-base/"
        }
      ]
    },
    {
      "id": "animations",
      "name": "Animações",
      "category": "motion",
      "url": "https://ui.vatse.dev/components/animations/",
      "variants": [
        {
          "id": "01-fade-up",
          "name": "Fade up",
          "url": "https://ui.vatse.dev/components/animations/01-fade-up/"
        },
        {
          "id": "02-fade-in",
          "name": "Fade in",
          "url": "https://ui.vatse.dev/components/animations/02-fade-in/"
        },
        {
          "id": "03-zoom-in",
          "name": "Zoom in",
          "url": "https://ui.vatse.dev/components/animations/03-zoom-in/"
        },
        {
          "id": "04-slide-left",
          "name": "Slide left",
          "url": "https://ui.vatse.dev/components/animations/04-slide-left/"
        },
        {
          "id": "05-slide-right",
          "name": "Slide right",
          "url": "https://ui.vatse.dev/components/animations/05-slide-right/"
        },
        {
          "id": "06-stagger-grid",
          "name": "Stagger (grid)",
          "url": "https://ui.vatse.dev/components/animations/06-stagger-grid/"
        },
        {
          "id": "07-blur-in-novo",
          "name": "Blur in (novo)",
          "url": "https://ui.vatse.dev/components/animations/07-blur-in-novo/"
        },
        {
          "id": "08-pop-in-novo",
          "name": "Pop in (novo)",
          "url": "https://ui.vatse.dev/components/animations/08-pop-in-novo/"
        },
        {
          "id": "09-flip-in-novo",
          "name": "Flip in (novo)",
          "url": "https://ui.vatse.dev/components/animations/09-flip-in-novo/"
        },
        {
          "id": "10-bounce-skew-novo",
          "name": "Bounce / Skew (novo)",
          "url": "https://ui.vatse.dev/components/animations/10-bounce-skew-novo/"
        }
      ]
    },
    {
      "id": "effects",
      "name": "Efeitos visuais",
      "category": "motion",
      "url": "https://ui.vatse.dev/components/effects/",
      "variants": [
        {
          "id": "01-liquid-aurora-css-only-corrigido",
          "name": "Liquid / Aurora (CSS-only, corrigido)",
          "url": "https://ui.vatse.dev/components/effects/01-liquid-aurora-css-only-corrigido/"
        },
        {
          "id": "02-conic-glow-tipo-gemini-corrigido",
          "name": "Conic Glow (tipo Gemini, corrigido)",
          "url": "https://ui.vatse.dev/components/effects/02-conic-glow-tipo-gemini-corrigido/"
        },
        {
          "id": "03-sheen-shimmer-novo",
          "name": "Sheen / Shimmer (novo)",
          "url": "https://ui.vatse.dev/components/effects/03-sheen-shimmer-novo/"
        },
        {
          "id": "04-scanlines-hud-novo",
          "name": "Scanlines / HUD (novo)",
          "url": "https://ui.vatse.dev/components/effects/04-scanlines-hud-novo/"
        },
        {
          "id": "05-vignette-noise-overlay",
          "name": "Vignette + noise (overlay)",
          "url": "https://ui.vatse.dev/components/effects/05-vignette-noise-overlay/"
        },
        {
          "id": "06-slidewheel-galeria-circular-scroll-corrigido",
          "name": "SlideWheel (galeria circular + scroll, corrigido)",
          "url": "https://ui.vatse.dev/components/effects/06-slidewheel-galeria-circular-scroll-corrigido/"
        }
      ]
    },
    {
      "id": "text-effects",
      "name": "Efeitos de texto",
      "category": "text-effects",
      "url": "https://ui.vatse.dev/components/text-effects/",
      "variants": [
        {
          "id": "01-base",
          "name": "Base",
          "url": "https://ui.vatse.dev/components/text-effects/01-base/"
        },
        {
          "id": "x-text-1",
          "name": "Typewriter",
          "url": "https://ui.vatse.dev/components/text-effects/x-text-1/"
        },
        {
          "id": "x-text-2",
          "name": "Word rotate",
          "url": "https://ui.vatse.dev/components/text-effects/x-text-2/"
        },
        {
          "id": "x-text-3",
          "name": "Flip words",
          "url": "https://ui.vatse.dev/components/text-effects/x-text-3/"
        },
        {
          "id": "x-text-4",
          "name": "Blur reveal",
          "url": "https://ui.vatse.dev/components/text-effects/x-text-4/"
        },
        {
          "id": "x-text-5",
          "name": "Text reveal",
          "url": "https://ui.vatse.dev/components/text-effects/x-text-5/"
        },
        {
          "id": "x-text-6",
          "name": "Gradient",
          "url": "https://ui.vatse.dev/components/text-effects/x-text-6/"
        },
        {
          "id": "x-text-7",
          "name": "Shimmer",
          "url": "https://ui.vatse.dev/components/text-effects/x-text-7/"
        },
        {
          "id": "x-text-8",
          "name": "Scramble",
          "url": "https://ui.vatse.dev/components/text-effects/x-text-8/"
        },
        {
          "id": "x-text-9",
          "name": "Encrypted reveal",
          "url": "https://ui.vatse.dev/components/text-effects/x-text-9/"
        },
        {
          "id": "x-text-10",
          "name": "Split reveal",
          "url": "https://ui.vatse.dev/components/text-effects/x-text-10/"
        },
        {
          "id": "x-text-11",
          "name": "Mask reveal",
          "url": "https://ui.vatse.dev/components/text-effects/x-text-11/"
        },
        {
          "id": "x-text-12",
          "name": "Highlight",
          "url": "https://ui.vatse.dev/components/text-effects/x-text-12/"
        },
        {
          "id": "x-text-13",
          "name": "Number roll",
          "url": "https://ui.vatse.dev/components/text-effects/x-text-13/"
        },
        {
          "id": "x-text-14",
          "name": "Counter",
          "url": "https://ui.vatse.dev/components/text-effects/x-text-14/"
        },
        {
          "id": "x-text-15",
          "name": "Marquee",
          "url": "https://ui.vatse.dev/components/text-effects/x-text-15/"
        }
      ]
    },
    {
      "id": "pointer-effects",
      "name": "Efeitos de ponteiro",
      "category": "pointer",
      "url": "https://ui.vatse.dev/components/pointer-effects/",
      "variants": [
        {
          "id": "01-base",
          "name": "Base",
          "url": "https://ui.vatse.dev/components/pointer-effects/01-base/"
        },
        {
          "id": "x-pointer-1",
          "name": "Magnetic",
          "url": "https://ui.vatse.dev/components/pointer-effects/x-pointer-1/"
        },
        {
          "id": "x-pointer-2",
          "name": "Spotlight",
          "url": "https://ui.vatse.dev/components/pointer-effects/x-pointer-2/"
        },
        {
          "id": "x-pointer-3",
          "name": "Tilt",
          "url": "https://ui.vatse.dev/components/pointer-effects/x-pointer-3/"
        },
        {
          "id": "x-pointer-4",
          "name": "Glow trail",
          "url": "https://ui.vatse.dev/components/pointer-effects/x-pointer-4/"
        },
        {
          "id": "x-pointer-5",
          "name": "Ripple",
          "url": "https://ui.vatse.dev/components/pointer-effects/x-pointer-5/"
        },
        {
          "id": "x-pointer-6",
          "name": "Cursor halo",
          "url": "https://ui.vatse.dev/components/pointer-effects/x-pointer-6/"
        },
        {
          "id": "x-pointer-7",
          "name": "Parallax",
          "url": "https://ui.vatse.dev/components/pointer-effects/x-pointer-7/"
        },
        {
          "id": "x-pointer-8",
          "name": "Reveal border",
          "url": "https://ui.vatse.dev/components/pointer-effects/x-pointer-8/"
        },
        {
          "id": "x-pointer-9",
          "name": "Follow gradient",
          "url": "https://ui.vatse.dev/components/pointer-effects/x-pointer-9/"
        },
        {
          "id": "x-pointer-10",
          "name": "Proximity scale",
          "url": "https://ui.vatse.dev/components/pointer-effects/x-pointer-10/"
        }
      ]
    },
    {
      "id": "scroll-effects",
      "name": "Efeitos de rolagem",
      "category": "scroll",
      "url": "https://ui.vatse.dev/components/scroll-effects/",
      "variants": [
        {
          "id": "01-base",
          "name": "Base",
          "url": "https://ui.vatse.dev/components/scroll-effects/01-base/"
        },
        {
          "id": "x-scroll-1",
          "name": "Fade up",
          "url": "https://ui.vatse.dev/components/scroll-effects/x-scroll-1/"
        },
        {
          "id": "x-scroll-2",
          "name": "Fade down",
          "url": "https://ui.vatse.dev/components/scroll-effects/x-scroll-2/"
        },
        {
          "id": "x-scroll-3",
          "name": "Slide left",
          "url": "https://ui.vatse.dev/components/scroll-effects/x-scroll-3/"
        },
        {
          "id": "x-scroll-4",
          "name": "Slide right",
          "url": "https://ui.vatse.dev/components/scroll-effects/x-scroll-4/"
        },
        {
          "id": "x-scroll-5",
          "name": "Scale",
          "url": "https://ui.vatse.dev/components/scroll-effects/x-scroll-5/"
        },
        {
          "id": "x-scroll-6",
          "name": "Blur",
          "url": "https://ui.vatse.dev/components/scroll-effects/x-scroll-6/"
        },
        {
          "id": "x-scroll-7",
          "name": "Clip",
          "url": "https://ui.vatse.dev/components/scroll-effects/x-scroll-7/"
        },
        {
          "id": "x-scroll-8",
          "name": "Stagger",
          "url": "https://ui.vatse.dev/components/scroll-effects/x-scroll-8/"
        },
        {
          "id": "x-scroll-9",
          "name": "Sticky reveal",
          "url": "https://ui.vatse.dev/components/scroll-effects/x-scroll-9/"
        },
        {
          "id": "x-scroll-10",
          "name": "Horizontal story",
          "url": "https://ui.vatse.dev/components/scroll-effects/x-scroll-10/"
        },
        {
          "id": "x-scroll-11",
          "name": "Depth",
          "url": "https://ui.vatse.dev/components/scroll-effects/x-scroll-11/"
        },
        {
          "id": "x-scroll-12",
          "name": "Parallax lite",
          "url": "https://ui.vatse.dev/components/scroll-effects/x-scroll-12/"
        },
        {
          "id": "x-scroll-13",
          "name": "Section snap",
          "url": "https://ui.vatse.dev/components/scroll-effects/x-scroll-13/"
        },
        {
          "id": "x-scroll-14",
          "name": "Progressive line",
          "url": "https://ui.vatse.dev/components/scroll-effects/x-scroll-14/"
        },
        {
          "id": "x-scroll-15",
          "name": "Counter reveal",
          "url": "https://ui.vatse.dev/components/scroll-effects/x-scroll-15/"
        }
      ]
    },
    {
      "id": "card-effects",
      "name": "Efeitos para cards",
      "category": "motion",
      "url": "https://ui.vatse.dev/components/card-effects/",
      "variants": [
        {
          "id": "01-base",
          "name": "Base",
          "url": "https://ui.vatse.dev/components/card-effects/01-base/"
        },
        {
          "id": "x-card-effect-1",
          "name": "Lift",
          "url": "https://ui.vatse.dev/components/card-effects/x-card-effect-1/"
        },
        {
          "id": "x-card-effect-2",
          "name": "Glow",
          "url": "https://ui.vatse.dev/components/card-effects/x-card-effect-2/"
        },
        {
          "id": "x-card-effect-3",
          "name": "Border trace",
          "url": "https://ui.vatse.dev/components/card-effects/x-card-effect-3/"
        },
        {
          "id": "x-card-effect-4",
          "name": "Spotlight",
          "url": "https://ui.vatse.dev/components/card-effects/x-card-effect-4/"
        },
        {
          "id": "x-card-effect-5",
          "name": "Tilt",
          "url": "https://ui.vatse.dev/components/card-effects/x-card-effect-5/"
        },
        {
          "id": "x-card-effect-6",
          "name": "Flip",
          "url": "https://ui.vatse.dev/components/card-effects/x-card-effect-6/"
        },
        {
          "id": "x-card-effect-7",
          "name": "Reveal CTA",
          "url": "https://ui.vatse.dev/components/card-effects/x-card-effect-7/"
        },
        {
          "id": "x-card-effect-8",
          "name": "Image zoom",
          "url": "https://ui.vatse.dev/components/card-effects/x-card-effect-8/"
        },
        {
          "id": "x-card-effect-9",
          "name": "Sheen",
          "url": "https://ui.vatse.dev/components/card-effects/x-card-effect-9/"
        },
        {
          "id": "x-card-effect-10",
          "name": "Gradient border",
          "url": "https://ui.vatse.dev/components/card-effects/x-card-effect-10/"
        },
        {
          "id": "x-card-effect-11",
          "name": "Stack",
          "url": "https://ui.vatse.dev/components/card-effects/x-card-effect-11/"
        },
        {
          "id": "x-card-effect-12",
          "name": "Depth",
          "url": "https://ui.vatse.dev/components/card-effects/x-card-effect-12/"
        },
        {
          "id": "x-card-effect-13",
          "name": "Soft shadow",
          "url": "https://ui.vatse.dev/components/card-effects/x-card-effect-13/"
        },
        {
          "id": "x-card-effect-14",
          "name": "Glass",
          "url": "https://ui.vatse.dev/components/card-effects/x-card-effect-14/"
        },
        {
          "id": "x-card-effect-15",
          "name": "Signal pulse",
          "url": "https://ui.vatse.dev/components/card-effects/x-card-effect-15/"
        }
      ]
    },
    {
      "id": "loaders",
      "name": "Loaders",
      "category": "feedback",
      "url": "https://ui.vatse.dev/components/loaders/",
      "variants": [
        {
          "id": "01-spinner",
          "name": "Spinner",
          "url": "https://ui.vatse.dev/components/loaders/01-spinner/"
        },
        {
          "id": "02-dots",
          "name": "Dots",
          "url": "https://ui.vatse.dev/components/loaders/02-dots/"
        },
        {
          "id": "03-bars",
          "name": "Bars",
          "url": "https://ui.vatse.dev/components/loaders/03-bars/"
        },
        {
          "id": "04-orbit",
          "name": "Orbit",
          "url": "https://ui.vatse.dev/components/loaders/04-orbit/"
        },
        {
          "id": "05-ring",
          "name": "Ring",
          "url": "https://ui.vatse.dev/components/loaders/05-ring/"
        },
        {
          "id": "06-skeleton",
          "name": "Skeleton",
          "url": "https://ui.vatse.dev/components/loaders/06-skeleton/"
        },
        {
          "id": "x-loader-7",
          "name": "Orbit",
          "url": "https://ui.vatse.dev/components/loaders/x-loader-7/"
        },
        {
          "id": "x-loader-8",
          "name": "Signal bars",
          "url": "https://ui.vatse.dev/components/loaders/x-loader-8/"
        },
        {
          "id": "x-loader-9",
          "name": "Progress ring",
          "url": "https://ui.vatse.dev/components/loaders/x-loader-9/"
        },
        {
          "id": "x-loader-10",
          "name": "Skeleton page",
          "url": "https://ui.vatse.dev/components/loaders/x-loader-10/"
        }
      ]
    },
    {
      "id": "tilt",
      "name": "Tilt",
      "category": "pointer",
      "url": "https://ui.vatse.dev/components/tilt/",
      "variants": [
        {
          "id": "01-base",
          "name": "Base",
          "url": "https://ui.vatse.dev/components/tilt/01-base/"
        }
      ]
    },
    {
      "id": "ripple",
      "name": "Ripple",
      "category": "pointer",
      "url": "https://ui.vatse.dev/components/ripple/",
      "variants": [
        {
          "id": "01-base",
          "name": "Base",
          "url": "https://ui.vatse.dev/components/ripple/01-base/"
        }
      ]
    },
    {
      "id": "disclosure",
      "name": "Expandable card",
      "category": "motion",
      "url": "https://ui.vatse.dev/components/disclosure/",
      "variants": [
        {
          "id": "01-morph-stack-single",
          "name": "Morph (stack) • Single",
          "url": "https://ui.vatse.dev/components/disclosure/01-morph-stack-single/"
        },
        {
          "id": "02-pills-bem-diferente-do-accordion",
          "name": "Pills (bem diferente do accordion)",
          "url": "https://ui.vatse.dev/components/disclosure/02-pills-bem-diferente-do-accordion/"
        },
        {
          "id": "03-accent-faixa-lateral",
          "name": "Accent (faixa lateral)",
          "url": "https://ui.vatse.dev/components/disclosure/03-accent-faixa-lateral/"
        },
        {
          "id": "04-cards-itens-separados",
          "name": "Cards (itens separados)",
          "url": "https://ui.vatse.dev/components/disclosure/04-cards-itens-separados/"
        },
        {
          "id": "05-badges-editorial",
          "name": "Badges (editorial)",
          "url": "https://ui.vatse.dev/components/disclosure/05-badges-editorial/"
        },
        {
          "id": "06-conteudo-rico-form",
          "name": "Conteúdo rico (form)",
          "url": "https://ui.vatse.dev/components/disclosure/06-conteudo-rico-form/"
        }
      ]
    },
    {
      "id": "marketing-hero",
      "name": "Hero primitives",
      "category": "marketing",
      "url": "https://ui.vatse.dev/components/marketing-hero/",
      "variants": [
        {
          "id": "01-minimal-intro",
          "name": "Minimal (intro)",
          "url": "https://ui.vatse.dev/components/marketing-hero/01-minimal-intro/"
        },
        {
          "id": "02-split-com-midia",
          "name": "Split com mídia",
          "url": "https://ui.vatse.dev/components/marketing-hero/02-split-com-midia/"
        },
        {
          "id": "03-centered-chamada",
          "name": "Centered (chamada)",
          "url": "https://ui.vatse.dev/components/marketing-hero/03-centered-chamada/"
        },
        {
          "id": "04-glass-destaque",
          "name": "Glass (destaque)",
          "url": "https://ui.vatse.dev/components/marketing-hero/04-glass-destaque/"
        },
        {
          "id": "05-announcement-barra",
          "name": "Announcement (barra)",
          "url": "https://ui.vatse.dev/components/marketing-hero/05-announcement-barra/"
        },
        {
          "id": "06-hero-com-metricas-cards",
          "name": "Hero com métricas (cards)",
          "url": "https://ui.vatse.dev/components/marketing-hero/06-hero-com-metricas-cards/"
        },
        {
          "id": "x-hero-7",
          "name": "Product stage",
          "url": "https://ui.vatse.dev/components/marketing-hero/x-hero-7/"
        },
        {
          "id": "x-hero-8",
          "name": "Dashboard launch",
          "url": "https://ui.vatse.dev/components/marketing-hero/x-hero-8/"
        },
        {
          "id": "x-hero-9",
          "name": "Editorial split",
          "url": "https://ui.vatse.dev/components/marketing-hero/x-hero-9/"
        },
        {
          "id": "x-hero-10",
          "name": "Aurora product",
          "url": "https://ui.vatse.dev/components/marketing-hero/x-hero-10/"
        },
        {
          "id": "x-hero-11",
          "name": "Developer console",
          "url": "https://ui.vatse.dev/components/marketing-hero/x-hero-11/"
        },
        {
          "id": "x-hero-12",
          "name": "AI workspace",
          "url": "https://ui.vatse.dev/components/marketing-hero/x-hero-12/"
        },
        {
          "id": "x-hero-13",
          "name": "Commerce conversion",
          "url": "https://ui.vatse.dev/components/marketing-hero/x-hero-13/"
        },
        {
          "id": "x-hero-14",
          "name": "Mobile product",
          "url": "https://ui.vatse.dev/components/marketing-hero/x-hero-14/"
        },
        {
          "id": "x-hero-15",
          "name": "Security platform",
          "url": "https://ui.vatse.dev/components/marketing-hero/x-hero-15/"
        },
        {
          "id": "x-hero-16",
          "name": "Data storytelling",
          "url": "https://ui.vatse.dev/components/marketing-hero/x-hero-16/"
        },
        {
          "id": "x-hero-17",
          "name": "Community",
          "url": "https://ui.vatse.dev/components/marketing-hero/x-hero-17/"
        },
        {
          "id": "x-hero-18",
          "name": "Case study",
          "url": "https://ui.vatse.dev/components/marketing-hero/x-hero-18/"
        },
        {
          "id": "x-hero-19",
          "name": "Interactive demo",
          "url": "https://ui.vatse.dev/components/marketing-hero/x-hero-19/"
        },
        {
          "id": "x-hero-20",
          "name": "Minimal statement",
          "url": "https://ui.vatse.dev/components/marketing-hero/x-hero-20/"
        }
      ]
    },
    {
      "id": "pricing",
      "name": "Pricing",
      "category": "marketing",
      "url": "https://ui.vatse.dev/components/pricing/",
      "variants": [
        {
          "id": "01-base",
          "name": "Base",
          "url": "https://ui.vatse.dev/components/pricing/01-base/"
        },
        {
          "id": "x-pricing-2",
          "name": "Starter",
          "url": "https://ui.vatse.dev/components/pricing/x-pricing-2/"
        },
        {
          "id": "x-pricing-3",
          "name": "Recommended",
          "url": "https://ui.vatse.dev/components/pricing/x-pricing-3/"
        },
        {
          "id": "x-pricing-4",
          "name": "Enterprise",
          "url": "https://ui.vatse.dev/components/pricing/x-pricing-4/"
        },
        {
          "id": "x-pricing-5",
          "name": "Usage",
          "url": "https://ui.vatse.dev/components/pricing/x-pricing-5/"
        },
        {
          "id": "x-pricing-6",
          "name": "Annual",
          "url": "https://ui.vatse.dev/components/pricing/x-pricing-6/"
        },
        {
          "id": "x-pricing-7",
          "name": "Comparison",
          "url": "https://ui.vatse.dev/components/pricing/x-pricing-7/"
        },
        {
          "id": "x-pricing-8",
          "name": "Compact",
          "url": "https://ui.vatse.dev/components/pricing/x-pricing-8/"
        },
        {
          "id": "x-pricing-9",
          "name": "Feature-rich",
          "url": "https://ui.vatse.dev/components/pricing/x-pricing-9/"
        },
        {
          "id": "x-pricing-10",
          "name": "Custom",
          "url": "https://ui.vatse.dev/components/pricing/x-pricing-10/"
        }
      ]
    },
    {
      "id": "testimonial",
      "name": "Testimonials",
      "category": "marketing",
      "url": "https://ui.vatse.dev/components/testimonial/",
      "variants": [
        {
          "id": "01-base",
          "name": "Base",
          "url": "https://ui.vatse.dev/components/testimonial/01-base/"
        },
        {
          "id": "x-testimonial-2",
          "name": "Quote",
          "url": "https://ui.vatse.dev/components/testimonial/x-testimonial-2/"
        },
        {
          "id": "x-testimonial-3",
          "name": "Profile",
          "url": "https://ui.vatse.dev/components/testimonial/x-testimonial-3/"
        },
        {
          "id": "x-testimonial-4",
          "name": "Company",
          "url": "https://ui.vatse.dev/components/testimonial/x-testimonial-4/"
        },
        {
          "id": "x-testimonial-5",
          "name": "Metric",
          "url": "https://ui.vatse.dev/components/testimonial/x-testimonial-5/"
        },
        {
          "id": "x-testimonial-6",
          "name": "Video",
          "url": "https://ui.vatse.dev/components/testimonial/x-testimonial-6/"
        },
        {
          "id": "x-testimonial-7",
          "name": "Carousel item",
          "url": "https://ui.vatse.dev/components/testimonial/x-testimonial-7/"
        },
        {
          "id": "x-testimonial-8",
          "name": "Wall",
          "url": "https://ui.vatse.dev/components/testimonial/x-testimonial-8/"
        },
        {
          "id": "x-testimonial-9",
          "name": "Case",
          "url": "https://ui.vatse.dev/components/testimonial/x-testimonial-9/"
        },
        {
          "id": "x-testimonial-10",
          "name": "Compact",
          "url": "https://ui.vatse.dev/components/testimonial/x-testimonial-10/"
        }
      ]
    },
    {
      "id": "chat",
      "name": "Chat UI",
      "category": "application",
      "url": "https://ui.vatse.dev/components/chat/",
      "variants": [
        {
          "id": "01-base",
          "name": "Base",
          "url": "https://ui.vatse.dev/components/chat/01-base/"
        }
      ]
    },
    {
      "id": "kanban",
      "name": "Kanban card",
      "category": "application",
      "url": "https://ui.vatse.dev/components/kanban/",
      "variants": [
        {
          "id": "01-base",
          "name": "Base",
          "url": "https://ui.vatse.dev/components/kanban/01-base/"
        }
      ]
    },
    {
      "id": "inbox",
      "name": "Inbox item",
      "category": "application",
      "url": "https://ui.vatse.dev/components/inbox/",
      "variants": [
        {
          "id": "01-base",
          "name": "Base",
          "url": "https://ui.vatse.dev/components/inbox/01-base/"
        }
      ]
    },
    {
      "id": "search-filter",
      "name": "Search e filtros",
      "category": "application",
      "url": "https://ui.vatse.dev/components/search-filter/",
      "variants": [
        {
          "id": "01-base",
          "name": "Base",
          "url": "https://ui.vatse.dev/components/search-filter/01-base/"
        }
      ]
    }
  ],
  "motion": {
    "version": "0.1.0",
    "docs": "https://ui.vatse.dev/motion/",
    "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html",
    "llms": "https://ui.vatse.dev/motion/llms.txt",
    "templates": [
      {
        "slug": "alba",
        "nome": "Alba (clínica de estética)",
        "url": "https://ui.vatse.dev/motion/templates/alba/"
      },
      {
        "slug": "pulso",
        "nome": "Pulso (venda de SaaS com painel)",
        "url": "https://ui.vatse.dev/motion/templates/pulso/"
      },
      {
        "slug": "noir",
        "nome": "Ônix (editorial P&B)",
        "url": "https://ui.vatse.dev/motion/templates/noir/"
      },
      {
        "slug": "estudio",
        "nome": "Estúdio",
        "url": "https://ui.vatse.dev/motion/templates/estudio/"
      },
      {
        "slug": "produto",
        "nome": "Produto",
        "url": "https://ui.vatse.dev/motion/templates/produto/"
      },
      {
        "slug": "portfolio",
        "nome": "Portfólio",
        "url": "https://ui.vatse.dev/motion/templates/portfolio/"
      },
      {
        "slug": "restaurante",
        "nome": "Restaurante",
        "url": "https://ui.vatse.dev/motion/templates/restaurante/"
      },
      {
        "slug": "clinica",
        "nome": "Clínica",
        "url": "https://ui.vatse.dev/motion/templates/clinica/"
      },
      {
        "slug": "academia",
        "nome": "Academia",
        "url": "https://ui.vatse.dev/motion/templates/academia/"
      },
      {
        "slug": "saas",
        "nome": "SaaS escuro",
        "url": "https://ui.vatse.dev/motion/templates/saas/"
      },
      {
        "slug": "evento",
        "nome": "Evento",
        "url": "https://ui.vatse.dev/motion/templates/evento/"
      },
      {
        "slug": "imobiliaria",
        "nome": "Imobiliária",
        "url": "https://ui.vatse.dev/motion/templates/imobiliaria/"
      }
    ],
    "presets": [
      {
        "name": "fade",
        "aliases": [
          "aparecer",
          "fade-in"
        ],
        "category": "reveal",
        "bundle": "core",
        "description": "Aparece suavemente (só opacidade).",
        "params": {
          "duration": {
            "attribute": "data-vm-duration",
            "attributeAliases": [
              "data-vm-duracao"
            ],
            "type": "time",
            "default": 1,
            "description": "Duração em segundos."
          },
          "delay": {
            "attribute": "data-vm-delay",
            "attributeAliases": [
              "data-vm-atraso"
            ],
            "type": "time",
            "default": 0,
            "description": "Atraso em segundos antes de começar."
          },
          "ease": {
            "attribute": "data-vm-ease",
            "attributeAliases": [
              "data-vm-curva"
            ],
            "type": "ease",
            "default": "expo.out",
            "description": "Curva de movimento (ex.: expo.out, power3.inOut, back.out(1.7), spring(1,90,12))."
          },
          "start": {
            "attribute": "data-vm-start",
            "attributeAliases": [
              "data-vm-inicio"
            ],
            "type": "string",
            "default": "top 85%",
            "description": "Quando começa: \"[borda do elemento] [posição na tela]\", ex.: \"top 80%\", \"center center\"."
          },
          "once": {
            "attribute": "data-vm-once",
            "attributeAliases": [
              "data-vm-uma-vez"
            ],
            "type": "boolean",
            "default": true,
            "description": "Anima só na primeira vez que aparece (false = volta ao sair por cima)."
          },
          "trigger": {
            "attribute": "data-vm-trigger",
            "attributeAliases": [
              "data-vm-gatilho"
            ],
            "type": "enum",
            "default": "scroll",
            "values": [
              "scroll",
              "load",
              "hover",
              "click",
              "manual"
            ],
            "description": "O que dispara: entrar na tela, carregar a página, passar o mouse, clicar ou só via código."
          }
        },
        "example": "<p data-vm=\"fade\">Texto</p>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#fade"
      },
      {
        "name": "fade-up",
        "aliases": [
          "subir",
          "fadeUp"
        ],
        "category": "reveal",
        "bundle": "core",
        "description": "Aparece deslizando de baixo para cima.",
        "params": {
          "duration": {
            "attribute": "data-vm-duration",
            "attributeAliases": [
              "data-vm-duracao"
            ],
            "type": "time",
            "default": 1,
            "description": "Duração em segundos."
          },
          "delay": {
            "attribute": "data-vm-delay",
            "attributeAliases": [
              "data-vm-atraso"
            ],
            "type": "time",
            "default": 0,
            "description": "Atraso em segundos antes de começar."
          },
          "ease": {
            "attribute": "data-vm-ease",
            "attributeAliases": [
              "data-vm-curva"
            ],
            "type": "ease",
            "default": "expo.out",
            "description": "Curva de movimento (ex.: expo.out, power3.inOut, back.out(1.7), spring(1,90,12))."
          },
          "start": {
            "attribute": "data-vm-start",
            "attributeAliases": [
              "data-vm-inicio"
            ],
            "type": "string",
            "default": "top 85%",
            "description": "Quando começa: \"[borda do elemento] [posição na tela]\", ex.: \"top 80%\", \"center center\"."
          },
          "once": {
            "attribute": "data-vm-once",
            "attributeAliases": [
              "data-vm-uma-vez"
            ],
            "type": "boolean",
            "default": true,
            "description": "Anima só na primeira vez que aparece (false = volta ao sair por cima)."
          },
          "trigger": {
            "attribute": "data-vm-trigger",
            "attributeAliases": [
              "data-vm-gatilho"
            ],
            "type": "enum",
            "default": "scroll",
            "values": [
              "scroll",
              "load",
              "hover",
              "click",
              "manual"
            ],
            "description": "O que dispara: entrar na tela, carregar a página, passar o mouse, clicar ou só via código."
          },
          "distance": {
            "attribute": "data-vm-distance",
            "attributeAliases": [
              "data-vm-distancia"
            ],
            "type": "length",
            "default": 32,
            "description": "Distância do deslocamento (px, %, vh)."
          }
        },
        "example": "<div data-vm=\"fade-up\" data-vm-distance=\"60\">Cartão</div>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#fade-up"
      },
      {
        "name": "fade-down",
        "aliases": [
          "descer",
          "fadeDown"
        ],
        "category": "reveal",
        "bundle": "core",
        "description": "Aparece deslizando de cima para baixo.",
        "params": {
          "duration": {
            "attribute": "data-vm-duration",
            "attributeAliases": [
              "data-vm-duracao"
            ],
            "type": "time",
            "default": 1,
            "description": "Duração em segundos."
          },
          "delay": {
            "attribute": "data-vm-delay",
            "attributeAliases": [
              "data-vm-atraso"
            ],
            "type": "time",
            "default": 0,
            "description": "Atraso em segundos antes de começar."
          },
          "ease": {
            "attribute": "data-vm-ease",
            "attributeAliases": [
              "data-vm-curva"
            ],
            "type": "ease",
            "default": "expo.out",
            "description": "Curva de movimento (ex.: expo.out, power3.inOut, back.out(1.7), spring(1,90,12))."
          },
          "start": {
            "attribute": "data-vm-start",
            "attributeAliases": [
              "data-vm-inicio"
            ],
            "type": "string",
            "default": "top 85%",
            "description": "Quando começa: \"[borda do elemento] [posição na tela]\", ex.: \"top 80%\", \"center center\"."
          },
          "once": {
            "attribute": "data-vm-once",
            "attributeAliases": [
              "data-vm-uma-vez"
            ],
            "type": "boolean",
            "default": true,
            "description": "Anima só na primeira vez que aparece (false = volta ao sair por cima)."
          },
          "trigger": {
            "attribute": "data-vm-trigger",
            "attributeAliases": [
              "data-vm-gatilho"
            ],
            "type": "enum",
            "default": "scroll",
            "values": [
              "scroll",
              "load",
              "hover",
              "click",
              "manual"
            ],
            "description": "O que dispara: entrar na tela, carregar a página, passar o mouse, clicar ou só via código."
          },
          "distance": {
            "attribute": "data-vm-distance",
            "attributeAliases": [
              "data-vm-distancia"
            ],
            "type": "length",
            "default": 32,
            "description": "Distância do deslocamento (px, %, vh)."
          }
        },
        "example": "<div data-vm=\"fade-down\" data-vm-distance=\"60\">Cartão</div>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#fade-down"
      },
      {
        "name": "fade-left",
        "aliases": [
          "da-direita",
          "fadeLeft"
        ],
        "category": "reveal",
        "bundle": "core",
        "description": "Aparece deslizando da direita para a esquerda.",
        "params": {
          "duration": {
            "attribute": "data-vm-duration",
            "attributeAliases": [
              "data-vm-duracao"
            ],
            "type": "time",
            "default": 1,
            "description": "Duração em segundos."
          },
          "delay": {
            "attribute": "data-vm-delay",
            "attributeAliases": [
              "data-vm-atraso"
            ],
            "type": "time",
            "default": 0,
            "description": "Atraso em segundos antes de começar."
          },
          "ease": {
            "attribute": "data-vm-ease",
            "attributeAliases": [
              "data-vm-curva"
            ],
            "type": "ease",
            "default": "expo.out",
            "description": "Curva de movimento (ex.: expo.out, power3.inOut, back.out(1.7), spring(1,90,12))."
          },
          "start": {
            "attribute": "data-vm-start",
            "attributeAliases": [
              "data-vm-inicio"
            ],
            "type": "string",
            "default": "top 85%",
            "description": "Quando começa: \"[borda do elemento] [posição na tela]\", ex.: \"top 80%\", \"center center\"."
          },
          "once": {
            "attribute": "data-vm-once",
            "attributeAliases": [
              "data-vm-uma-vez"
            ],
            "type": "boolean",
            "default": true,
            "description": "Anima só na primeira vez que aparece (false = volta ao sair por cima)."
          },
          "trigger": {
            "attribute": "data-vm-trigger",
            "attributeAliases": [
              "data-vm-gatilho"
            ],
            "type": "enum",
            "default": "scroll",
            "values": [
              "scroll",
              "load",
              "hover",
              "click",
              "manual"
            ],
            "description": "O que dispara: entrar na tela, carregar a página, passar o mouse, clicar ou só via código."
          },
          "distance": {
            "attribute": "data-vm-distance",
            "attributeAliases": [
              "data-vm-distancia"
            ],
            "type": "length",
            "default": 32,
            "description": "Distância do deslocamento (px, %, vh)."
          }
        },
        "example": "<div data-vm=\"fade-left\" data-vm-distance=\"60\">Cartão</div>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#fade-left"
      },
      {
        "name": "fade-right",
        "aliases": [
          "da-esquerda",
          "fadeRight"
        ],
        "category": "reveal",
        "bundle": "core",
        "description": "Aparece deslizando da esquerda para a direita.",
        "params": {
          "duration": {
            "attribute": "data-vm-duration",
            "attributeAliases": [
              "data-vm-duracao"
            ],
            "type": "time",
            "default": 1,
            "description": "Duração em segundos."
          },
          "delay": {
            "attribute": "data-vm-delay",
            "attributeAliases": [
              "data-vm-atraso"
            ],
            "type": "time",
            "default": 0,
            "description": "Atraso em segundos antes de começar."
          },
          "ease": {
            "attribute": "data-vm-ease",
            "attributeAliases": [
              "data-vm-curva"
            ],
            "type": "ease",
            "default": "expo.out",
            "description": "Curva de movimento (ex.: expo.out, power3.inOut, back.out(1.7), spring(1,90,12))."
          },
          "start": {
            "attribute": "data-vm-start",
            "attributeAliases": [
              "data-vm-inicio"
            ],
            "type": "string",
            "default": "top 85%",
            "description": "Quando começa: \"[borda do elemento] [posição na tela]\", ex.: \"top 80%\", \"center center\"."
          },
          "once": {
            "attribute": "data-vm-once",
            "attributeAliases": [
              "data-vm-uma-vez"
            ],
            "type": "boolean",
            "default": true,
            "description": "Anima só na primeira vez que aparece (false = volta ao sair por cima)."
          },
          "trigger": {
            "attribute": "data-vm-trigger",
            "attributeAliases": [
              "data-vm-gatilho"
            ],
            "type": "enum",
            "default": "scroll",
            "values": [
              "scroll",
              "load",
              "hover",
              "click",
              "manual"
            ],
            "description": "O que dispara: entrar na tela, carregar a página, passar o mouse, clicar ou só via código."
          },
          "distance": {
            "attribute": "data-vm-distance",
            "attributeAliases": [
              "data-vm-distancia"
            ],
            "type": "length",
            "default": 32,
            "description": "Distância do deslocamento (px, %, vh)."
          }
        },
        "example": "<div data-vm=\"fade-right\" data-vm-distance=\"60\">Cartão</div>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#fade-right"
      },
      {
        "name": "zoom-in",
        "aliases": [
          "ampliar",
          "zoomIn",
          "scale-in"
        ],
        "category": "reveal",
        "bundle": "core",
        "description": "Aparece crescendo de um tamanho menor.",
        "params": {
          "duration": {
            "attribute": "data-vm-duration",
            "attributeAliases": [
              "data-vm-duracao"
            ],
            "type": "time",
            "default": 1,
            "description": "Duração em segundos."
          },
          "delay": {
            "attribute": "data-vm-delay",
            "attributeAliases": [
              "data-vm-atraso"
            ],
            "type": "time",
            "default": 0,
            "description": "Atraso em segundos antes de começar."
          },
          "ease": {
            "attribute": "data-vm-ease",
            "attributeAliases": [
              "data-vm-curva"
            ],
            "type": "ease",
            "default": "expo.out",
            "description": "Curva de movimento (ex.: expo.out, power3.inOut, back.out(1.7), spring(1,90,12))."
          },
          "start": {
            "attribute": "data-vm-start",
            "attributeAliases": [
              "data-vm-inicio"
            ],
            "type": "string",
            "default": "top 85%",
            "description": "Quando começa: \"[borda do elemento] [posição na tela]\", ex.: \"top 80%\", \"center center\"."
          },
          "once": {
            "attribute": "data-vm-once",
            "attributeAliases": [
              "data-vm-uma-vez"
            ],
            "type": "boolean",
            "default": true,
            "description": "Anima só na primeira vez que aparece (false = volta ao sair por cima)."
          },
          "trigger": {
            "attribute": "data-vm-trigger",
            "attributeAliases": [
              "data-vm-gatilho"
            ],
            "type": "enum",
            "default": "scroll",
            "values": [
              "scroll",
              "load",
              "hover",
              "click",
              "manual"
            ],
            "description": "O que dispara: entrar na tela, carregar a página, passar o mouse, clicar ou só via código."
          },
          "scale": {
            "attribute": "data-vm-scale",
            "attributeAliases": [
              "data-vm-escala"
            ],
            "type": "number",
            "default": 0.94,
            "description": "Escala inicial (1 = tamanho normal)."
          }
        },
        "example": "<img data-vm=\"zoom-in\" src=\"foto-1.jpg\" alt=\"\">",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#zoom-in"
      },
      {
        "name": "zoom-out",
        "aliases": [
          "reduzir",
          "zoomOut"
        ],
        "category": "reveal",
        "bundle": "core",
        "description": "Aparece encolhendo de um tamanho maior.",
        "params": {
          "duration": {
            "attribute": "data-vm-duration",
            "attributeAliases": [
              "data-vm-duracao"
            ],
            "type": "time",
            "default": 1,
            "description": "Duração em segundos."
          },
          "delay": {
            "attribute": "data-vm-delay",
            "attributeAliases": [
              "data-vm-atraso"
            ],
            "type": "time",
            "default": 0,
            "description": "Atraso em segundos antes de começar."
          },
          "ease": {
            "attribute": "data-vm-ease",
            "attributeAliases": [
              "data-vm-curva"
            ],
            "type": "ease",
            "default": "expo.out",
            "description": "Curva de movimento (ex.: expo.out, power3.inOut, back.out(1.7), spring(1,90,12))."
          },
          "start": {
            "attribute": "data-vm-start",
            "attributeAliases": [
              "data-vm-inicio"
            ],
            "type": "string",
            "default": "top 85%",
            "description": "Quando começa: \"[borda do elemento] [posição na tela]\", ex.: \"top 80%\", \"center center\"."
          },
          "once": {
            "attribute": "data-vm-once",
            "attributeAliases": [
              "data-vm-uma-vez"
            ],
            "type": "boolean",
            "default": true,
            "description": "Anima só na primeira vez que aparece (false = volta ao sair por cima)."
          },
          "trigger": {
            "attribute": "data-vm-trigger",
            "attributeAliases": [
              "data-vm-gatilho"
            ],
            "type": "enum",
            "default": "scroll",
            "values": [
              "scroll",
              "load",
              "hover",
              "click",
              "manual"
            ],
            "description": "O que dispara: entrar na tela, carregar a página, passar o mouse, clicar ou só via código."
          },
          "scale": {
            "attribute": "data-vm-scale",
            "attributeAliases": [
              "data-vm-escala"
            ],
            "type": "number",
            "default": 1.06,
            "description": "Escala inicial."
          }
        },
        "example": "<div data-vm=\"zoom-out\">...</div>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#zoom-out"
      },
      {
        "name": "blur-in",
        "aliases": [
          "desfocar",
          "blurIn"
        ],
        "category": "reveal",
        "bundle": "core",
        "description": "Aparece saindo do desfoque, com leve subida.",
        "params": {
          "duration": {
            "attribute": "data-vm-duration",
            "attributeAliases": [
              "data-vm-duracao"
            ],
            "type": "time",
            "default": 1,
            "description": "Duração em segundos."
          },
          "delay": {
            "attribute": "data-vm-delay",
            "attributeAliases": [
              "data-vm-atraso"
            ],
            "type": "time",
            "default": 0,
            "description": "Atraso em segundos antes de começar."
          },
          "ease": {
            "attribute": "data-vm-ease",
            "attributeAliases": [
              "data-vm-curva"
            ],
            "type": "ease",
            "default": "expo.out",
            "description": "Curva de movimento (ex.: expo.out, power3.inOut, back.out(1.7), spring(1,90,12))."
          },
          "start": {
            "attribute": "data-vm-start",
            "attributeAliases": [
              "data-vm-inicio"
            ],
            "type": "string",
            "default": "top 85%",
            "description": "Quando começa: \"[borda do elemento] [posição na tela]\", ex.: \"top 80%\", \"center center\"."
          },
          "once": {
            "attribute": "data-vm-once",
            "attributeAliases": [
              "data-vm-uma-vez"
            ],
            "type": "boolean",
            "default": true,
            "description": "Anima só na primeira vez que aparece (false = volta ao sair por cima)."
          },
          "trigger": {
            "attribute": "data-vm-trigger",
            "attributeAliases": [
              "data-vm-gatilho"
            ],
            "type": "enum",
            "default": "scroll",
            "values": [
              "scroll",
              "load",
              "hover",
              "click",
              "manual"
            ],
            "description": "O que dispara: entrar na tela, carregar a página, passar o mouse, clicar ou só via código."
          },
          "blur": {
            "attribute": "data-vm-blur",
            "attributeAliases": [
              "data-vm-desfoque"
            ],
            "type": "length",
            "default": 8,
            "description": "Desfoque inicial em px."
          }
        },
        "example": "<h2 data-vm=\"blur-in\">Título</h2>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#blur-in"
      },
      {
        "name": "rotate-in",
        "aliases": [
          "girar",
          "rotateIn"
        ],
        "category": "reveal",
        "bundle": "core",
        "description": "Aparece girando levemente.",
        "params": {
          "duration": {
            "attribute": "data-vm-duration",
            "attributeAliases": [
              "data-vm-duracao"
            ],
            "type": "time",
            "default": 1,
            "description": "Duração em segundos."
          },
          "delay": {
            "attribute": "data-vm-delay",
            "attributeAliases": [
              "data-vm-atraso"
            ],
            "type": "time",
            "default": 0,
            "description": "Atraso em segundos antes de começar."
          },
          "ease": {
            "attribute": "data-vm-ease",
            "attributeAliases": [
              "data-vm-curva"
            ],
            "type": "ease",
            "default": "expo.out",
            "description": "Curva de movimento (ex.: expo.out, power3.inOut, back.out(1.7), spring(1,90,12))."
          },
          "start": {
            "attribute": "data-vm-start",
            "attributeAliases": [
              "data-vm-inicio"
            ],
            "type": "string",
            "default": "top 85%",
            "description": "Quando começa: \"[borda do elemento] [posição na tela]\", ex.: \"top 80%\", \"center center\"."
          },
          "once": {
            "attribute": "data-vm-once",
            "attributeAliases": [
              "data-vm-uma-vez"
            ],
            "type": "boolean",
            "default": true,
            "description": "Anima só na primeira vez que aparece (false = volta ao sair por cima)."
          },
          "trigger": {
            "attribute": "data-vm-trigger",
            "attributeAliases": [
              "data-vm-gatilho"
            ],
            "type": "enum",
            "default": "scroll",
            "values": [
              "scroll",
              "load",
              "hover",
              "click",
              "manual"
            ],
            "description": "O que dispara: entrar na tela, carregar a página, passar o mouse, clicar ou só via código."
          },
          "angle": {
            "attribute": "data-vm-angle",
            "attributeAliases": [
              "data-vm-angulo"
            ],
            "type": "number",
            "default": -3,
            "description": "Ângulo inicial em graus."
          }
        },
        "example": "<div data-vm=\"rotate-in\">...</div>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#rotate-in"
      },
      {
        "name": "flip-up",
        "aliases": [
          "virar",
          "flipUp"
        ],
        "category": "reveal",
        "bundle": "core",
        "description": "Aparece virando em 3D, como uma carta levantando.",
        "params": {
          "duration": {
            "attribute": "data-vm-duration",
            "attributeAliases": [
              "data-vm-duracao"
            ],
            "type": "time",
            "default": 1,
            "description": "Duração em segundos."
          },
          "delay": {
            "attribute": "data-vm-delay",
            "attributeAliases": [
              "data-vm-atraso"
            ],
            "type": "time",
            "default": 0,
            "description": "Atraso em segundos antes de começar."
          },
          "ease": {
            "attribute": "data-vm-ease",
            "attributeAliases": [
              "data-vm-curva"
            ],
            "type": "ease",
            "default": "expo.out",
            "description": "Curva de movimento (ex.: expo.out, power3.inOut, back.out(1.7), spring(1,90,12))."
          },
          "start": {
            "attribute": "data-vm-start",
            "attributeAliases": [
              "data-vm-inicio"
            ],
            "type": "string",
            "default": "top 85%",
            "description": "Quando começa: \"[borda do elemento] [posição na tela]\", ex.: \"top 80%\", \"center center\"."
          },
          "once": {
            "attribute": "data-vm-once",
            "attributeAliases": [
              "data-vm-uma-vez"
            ],
            "type": "boolean",
            "default": true,
            "description": "Anima só na primeira vez que aparece (false = volta ao sair por cima)."
          },
          "trigger": {
            "attribute": "data-vm-trigger",
            "attributeAliases": [
              "data-vm-gatilho"
            ],
            "type": "enum",
            "default": "scroll",
            "values": [
              "scroll",
              "load",
              "hover",
              "click",
              "manual"
            ],
            "description": "O que dispara: entrar na tela, carregar a página, passar o mouse, clicar ou só via código."
          },
          "angle": {
            "attribute": "data-vm-angle",
            "attributeAliases": [
              "data-vm-angulo"
            ],
            "type": "number",
            "default": 14,
            "description": "Ângulo inicial em graus (sutil: 8 a 20)."
          }
        },
        "example": "<div data-vm=\"flip-up\">...</div>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#flip-up"
      },
      {
        "name": "skew-up",
        "aliases": [
          "inclinar",
          "skewUp"
        ],
        "category": "reveal",
        "bundle": "core",
        "description": "Sobe com inclinação que se desfaz, sensação de velocidade.",
        "params": {
          "duration": {
            "attribute": "data-vm-duration",
            "attributeAliases": [
              "data-vm-duracao"
            ],
            "type": "time",
            "default": 1,
            "description": "Duração em segundos."
          },
          "delay": {
            "attribute": "data-vm-delay",
            "attributeAliases": [
              "data-vm-atraso"
            ],
            "type": "time",
            "default": 0,
            "description": "Atraso em segundos antes de começar."
          },
          "ease": {
            "attribute": "data-vm-ease",
            "attributeAliases": [
              "data-vm-curva"
            ],
            "type": "ease",
            "default": "expo.out",
            "description": "Curva de movimento (ex.: expo.out, power3.inOut, back.out(1.7), spring(1,90,12))."
          },
          "start": {
            "attribute": "data-vm-start",
            "attributeAliases": [
              "data-vm-inicio"
            ],
            "type": "string",
            "default": "top 85%",
            "description": "Quando começa: \"[borda do elemento] [posição na tela]\", ex.: \"top 80%\", \"center center\"."
          },
          "once": {
            "attribute": "data-vm-once",
            "attributeAliases": [
              "data-vm-uma-vez"
            ],
            "type": "boolean",
            "default": true,
            "description": "Anima só na primeira vez que aparece (false = volta ao sair por cima)."
          },
          "trigger": {
            "attribute": "data-vm-trigger",
            "attributeAliases": [
              "data-vm-gatilho"
            ],
            "type": "enum",
            "default": "scroll",
            "values": [
              "scroll",
              "load",
              "hover",
              "click",
              "manual"
            ],
            "description": "O que dispara: entrar na tela, carregar a página, passar o mouse, clicar ou só via código."
          },
          "distance": {
            "attribute": "data-vm-distance",
            "attributeAliases": [
              "data-vm-distancia"
            ],
            "type": "length",
            "default": 48,
            "description": "Distância da subida em px."
          }
        },
        "example": "<h2 data-vm=\"skew-up\">Rápido</h2>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#skew-up"
      },
      {
        "name": "clip-up",
        "aliases": [
          "revelar-cima",
          "clipUp"
        ],
        "category": "reveal",
        "bundle": "core",
        "description": "Revela com uma máscara que se abre de baixo para cima. Ótimo para imagens.",
        "params": {
          "duration": {
            "attribute": "data-vm-duration",
            "attributeAliases": [
              "data-vm-duracao"
            ],
            "type": "time",
            "default": 1.2,
            "description": "Duração em segundos."
          },
          "delay": {
            "attribute": "data-vm-delay",
            "attributeAliases": [
              "data-vm-atraso"
            ],
            "type": "time",
            "default": 0,
            "description": "Atraso em segundos antes de começar."
          },
          "ease": {
            "attribute": "data-vm-ease",
            "attributeAliases": [
              "data-vm-curva"
            ],
            "type": "ease",
            "default": "expo.inOut",
            "description": "Curva de movimento (ex.: expo.out, power3.inOut, back.out(1.7), spring(1,90,12))."
          },
          "start": {
            "attribute": "data-vm-start",
            "attributeAliases": [
              "data-vm-inicio"
            ],
            "type": "string",
            "default": "top 85%",
            "description": "Quando começa: \"[borda do elemento] [posição na tela]\", ex.: \"top 80%\", \"center center\"."
          },
          "once": {
            "attribute": "data-vm-once",
            "attributeAliases": [
              "data-vm-uma-vez"
            ],
            "type": "boolean",
            "default": true,
            "description": "Anima só na primeira vez que aparece (false = volta ao sair por cima)."
          },
          "trigger": {
            "attribute": "data-vm-trigger",
            "attributeAliases": [
              "data-vm-gatilho"
            ],
            "type": "enum",
            "default": "scroll",
            "values": [
              "scroll",
              "load",
              "hover",
              "click",
              "manual"
            ],
            "description": "O que dispara: entrar na tela, carregar a página, passar o mouse, clicar ou só via código."
          }
        },
        "example": "<img data-vm=\"clip-up\" src=\"foto-1.jpg\" alt=\"\">",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#clip-up"
      },
      {
        "name": "clip-down",
        "aliases": [
          "revelar-baixo",
          "clipDown"
        ],
        "category": "reveal",
        "bundle": "core",
        "description": "Revela com uma máscara que se abre de cima para baixo. Ótimo para imagens.",
        "params": {
          "duration": {
            "attribute": "data-vm-duration",
            "attributeAliases": [
              "data-vm-duracao"
            ],
            "type": "time",
            "default": 1.2,
            "description": "Duração em segundos."
          },
          "delay": {
            "attribute": "data-vm-delay",
            "attributeAliases": [
              "data-vm-atraso"
            ],
            "type": "time",
            "default": 0,
            "description": "Atraso em segundos antes de começar."
          },
          "ease": {
            "attribute": "data-vm-ease",
            "attributeAliases": [
              "data-vm-curva"
            ],
            "type": "ease",
            "default": "expo.inOut",
            "description": "Curva de movimento (ex.: expo.out, power3.inOut, back.out(1.7), spring(1,90,12))."
          },
          "start": {
            "attribute": "data-vm-start",
            "attributeAliases": [
              "data-vm-inicio"
            ],
            "type": "string",
            "default": "top 85%",
            "description": "Quando começa: \"[borda do elemento] [posição na tela]\", ex.: \"top 80%\", \"center center\"."
          },
          "once": {
            "attribute": "data-vm-once",
            "attributeAliases": [
              "data-vm-uma-vez"
            ],
            "type": "boolean",
            "default": true,
            "description": "Anima só na primeira vez que aparece (false = volta ao sair por cima)."
          },
          "trigger": {
            "attribute": "data-vm-trigger",
            "attributeAliases": [
              "data-vm-gatilho"
            ],
            "type": "enum",
            "default": "scroll",
            "values": [
              "scroll",
              "load",
              "hover",
              "click",
              "manual"
            ],
            "description": "O que dispara: entrar na tela, carregar a página, passar o mouse, clicar ou só via código."
          }
        },
        "example": "<img data-vm=\"clip-down\" src=\"foto-1.jpg\" alt=\"\">",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#clip-down"
      },
      {
        "name": "clip-left",
        "aliases": [
          "revelar-esquerda",
          "clipLeft"
        ],
        "category": "reveal",
        "bundle": "core",
        "description": "Revela com uma máscara que se abre da direita para a esquerda. Ótimo para imagens.",
        "params": {
          "duration": {
            "attribute": "data-vm-duration",
            "attributeAliases": [
              "data-vm-duracao"
            ],
            "type": "time",
            "default": 1.2,
            "description": "Duração em segundos."
          },
          "delay": {
            "attribute": "data-vm-delay",
            "attributeAliases": [
              "data-vm-atraso"
            ],
            "type": "time",
            "default": 0,
            "description": "Atraso em segundos antes de começar."
          },
          "ease": {
            "attribute": "data-vm-ease",
            "attributeAliases": [
              "data-vm-curva"
            ],
            "type": "ease",
            "default": "expo.inOut",
            "description": "Curva de movimento (ex.: expo.out, power3.inOut, back.out(1.7), spring(1,90,12))."
          },
          "start": {
            "attribute": "data-vm-start",
            "attributeAliases": [
              "data-vm-inicio"
            ],
            "type": "string",
            "default": "top 85%",
            "description": "Quando começa: \"[borda do elemento] [posição na tela]\", ex.: \"top 80%\", \"center center\"."
          },
          "once": {
            "attribute": "data-vm-once",
            "attributeAliases": [
              "data-vm-uma-vez"
            ],
            "type": "boolean",
            "default": true,
            "description": "Anima só na primeira vez que aparece (false = volta ao sair por cima)."
          },
          "trigger": {
            "attribute": "data-vm-trigger",
            "attributeAliases": [
              "data-vm-gatilho"
            ],
            "type": "enum",
            "default": "scroll",
            "values": [
              "scroll",
              "load",
              "hover",
              "click",
              "manual"
            ],
            "description": "O que dispara: entrar na tela, carregar a página, passar o mouse, clicar ou só via código."
          }
        },
        "example": "<img data-vm=\"clip-left\" src=\"foto-1.jpg\" alt=\"\">",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#clip-left"
      },
      {
        "name": "clip-right",
        "aliases": [
          "revelar-direita",
          "clipRight"
        ],
        "category": "reveal",
        "bundle": "core",
        "description": "Revela com uma máscara que se abre da esquerda para a direita. Ótimo para imagens.",
        "params": {
          "duration": {
            "attribute": "data-vm-duration",
            "attributeAliases": [
              "data-vm-duracao"
            ],
            "type": "time",
            "default": 1.2,
            "description": "Duração em segundos."
          },
          "delay": {
            "attribute": "data-vm-delay",
            "attributeAliases": [
              "data-vm-atraso"
            ],
            "type": "time",
            "default": 0,
            "description": "Atraso em segundos antes de começar."
          },
          "ease": {
            "attribute": "data-vm-ease",
            "attributeAliases": [
              "data-vm-curva"
            ],
            "type": "ease",
            "default": "expo.inOut",
            "description": "Curva de movimento (ex.: expo.out, power3.inOut, back.out(1.7), spring(1,90,12))."
          },
          "start": {
            "attribute": "data-vm-start",
            "attributeAliases": [
              "data-vm-inicio"
            ],
            "type": "string",
            "default": "top 85%",
            "description": "Quando começa: \"[borda do elemento] [posição na tela]\", ex.: \"top 80%\", \"center center\"."
          },
          "once": {
            "attribute": "data-vm-once",
            "attributeAliases": [
              "data-vm-uma-vez"
            ],
            "type": "boolean",
            "default": true,
            "description": "Anima só na primeira vez que aparece (false = volta ao sair por cima)."
          },
          "trigger": {
            "attribute": "data-vm-trigger",
            "attributeAliases": [
              "data-vm-gatilho"
            ],
            "type": "enum",
            "default": "scroll",
            "values": [
              "scroll",
              "load",
              "hover",
              "click",
              "manual"
            ],
            "description": "O que dispara: entrar na tela, carregar a página, passar o mouse, clicar ou só via código."
          }
        },
        "example": "<img data-vm=\"clip-right\" src=\"foto-1.jpg\" alt=\"\">",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#clip-right"
      },
      {
        "name": "image-reveal",
        "aliases": [
          "revelar-imagem",
          "imageReveal"
        ],
        "category": "reveal",
        "bundle": "core",
        "description": "A moldura se abre enquanto a foto desfaz um zoom por dentro (efeito de revista).",
        "params": {
          "duration": {
            "attribute": "data-vm-duration",
            "attributeAliases": [
              "data-vm-duracao"
            ],
            "type": "time",
            "default": 1.4,
            "description": "Duração em segundos."
          },
          "delay": {
            "attribute": "data-vm-delay",
            "attributeAliases": [
              "data-vm-atraso"
            ],
            "type": "time",
            "default": 0,
            "description": "Atraso em segundos antes de começar."
          },
          "ease": {
            "attribute": "data-vm-ease",
            "attributeAliases": [
              "data-vm-curva"
            ],
            "type": "ease",
            "default": "expo.inOut",
            "description": "Curva de movimento (ex.: expo.out, power3.inOut, back.out(1.7), spring(1,90,12))."
          },
          "start": {
            "attribute": "data-vm-start",
            "attributeAliases": [
              "data-vm-inicio"
            ],
            "type": "string",
            "default": "top 85%",
            "description": "Quando começa: \"[borda do elemento] [posição na tela]\", ex.: \"top 80%\", \"center center\"."
          },
          "once": {
            "attribute": "data-vm-once",
            "attributeAliases": [
              "data-vm-uma-vez"
            ],
            "type": "boolean",
            "default": true,
            "description": "Anima só na primeira vez que aparece (false = volta ao sair por cima)."
          },
          "trigger": {
            "attribute": "data-vm-trigger",
            "attributeAliases": [
              "data-vm-gatilho"
            ],
            "type": "enum",
            "default": "scroll",
            "values": [
              "scroll",
              "load",
              "hover",
              "click",
              "manual"
            ],
            "description": "O que dispara: entrar na tela, carregar a página, passar o mouse, clicar ou só via código."
          },
          "scale": {
            "attribute": "data-vm-scale",
            "attributeAliases": [
              "data-vm-escala"
            ],
            "type": "number",
            "default": 1.3,
            "description": "Zoom inicial da imagem."
          }
        },
        "example": "<figure data-vm=\"image-reveal\"><img src=\"foto-1.jpg\" alt=\"\"></figure>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#image-reveal"
      },
      {
        "name": "curtain",
        "aliases": [
          "cortina"
        ],
        "category": "reveal",
        "bundle": "core",
        "description": "Uma faixa de cor passa por cima e revela o conteúdo (transição de cinema).",
        "params": {
          "duration": {
            "attribute": "data-vm-duration",
            "attributeAliases": [
              "data-vm-duracao"
            ],
            "type": "time",
            "default": 1,
            "description": "Duração em segundos."
          },
          "delay": {
            "attribute": "data-vm-delay",
            "attributeAliases": [
              "data-vm-atraso"
            ],
            "type": "time",
            "default": 0,
            "description": "Atraso em segundos antes de começar."
          },
          "ease": {
            "attribute": "data-vm-ease",
            "attributeAliases": [
              "data-vm-curva"
            ],
            "type": "ease",
            "default": "expo.out",
            "description": "Curva de movimento (ex.: expo.out, power3.inOut, back.out(1.7), spring(1,90,12))."
          },
          "start": {
            "attribute": "data-vm-start",
            "attributeAliases": [
              "data-vm-inicio"
            ],
            "type": "string",
            "default": "top 85%",
            "description": "Quando começa: \"[borda do elemento] [posição na tela]\", ex.: \"top 80%\", \"center center\"."
          },
          "once": {
            "attribute": "data-vm-once",
            "attributeAliases": [
              "data-vm-uma-vez"
            ],
            "type": "boolean",
            "default": true,
            "description": "Anima só na primeira vez que aparece (false = volta ao sair por cima)."
          },
          "trigger": {
            "attribute": "data-vm-trigger",
            "attributeAliases": [
              "data-vm-gatilho"
            ],
            "type": "enum",
            "default": "scroll",
            "values": [
              "scroll",
              "load",
              "hover",
              "click",
              "manual"
            ],
            "description": "O que dispara: entrar na tela, carregar a página, passar o mouse, clicar ou só via código."
          },
          "color": {
            "attribute": "data-vm-color",
            "attributeAliases": [
              "data-vm-cor"
            ],
            "type": "color",
            "default": "currentColor",
            "description": "Cor da faixa (aceita var(--sua-cor))."
          },
          "direction": {
            "attribute": "data-vm-direction",
            "attributeAliases": [
              "data-vm-direcao"
            ],
            "type": "enum",
            "default": "right",
            "values": [
              "left",
              "right",
              "up",
              "down"
            ],
            "description": "Para onde a faixa sai."
          }
        },
        "example": "<div data-vm=\"curtain\" data-vm-color=\"#ef650f\">Conteúdo</div>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#curtain"
      },
      {
        "name": "stagger",
        "aliases": [
          "cascata",
          "em-sequencia"
        ],
        "category": "group",
        "bundle": "core",
        "description": "Anima os filhos diretos um depois do outro com o efeito escolhido.",
        "params": {
          "duration": {
            "attribute": "data-vm-duration",
            "attributeAliases": [
              "data-vm-duracao"
            ],
            "type": "time",
            "default": 1,
            "description": "Duração em segundos."
          },
          "delay": {
            "attribute": "data-vm-delay",
            "attributeAliases": [
              "data-vm-atraso"
            ],
            "type": "time",
            "default": 0,
            "description": "Atraso em segundos antes de começar."
          },
          "ease": {
            "attribute": "data-vm-ease",
            "attributeAliases": [
              "data-vm-curva"
            ],
            "type": "ease",
            "default": "expo.out",
            "description": "Curva de movimento (ex.: expo.out, power3.inOut, back.out(1.7), spring(1,90,12))."
          },
          "start": {
            "attribute": "data-vm-start",
            "attributeAliases": [
              "data-vm-inicio"
            ],
            "type": "string",
            "default": "top 85%",
            "description": "Quando começa: \"[borda do elemento] [posição na tela]\", ex.: \"top 80%\", \"center center\"."
          },
          "once": {
            "attribute": "data-vm-once",
            "attributeAliases": [
              "data-vm-uma-vez"
            ],
            "type": "boolean",
            "default": true,
            "description": "Anima só na primeira vez que aparece (false = volta ao sair por cima)."
          },
          "trigger": {
            "attribute": "data-vm-trigger",
            "attributeAliases": [
              "data-vm-gatilho"
            ],
            "type": "enum",
            "default": "scroll",
            "values": [
              "scroll",
              "load",
              "hover",
              "click",
              "manual"
            ],
            "description": "O que dispara: entrar na tela, carregar a página, passar o mouse, clicar ou só via código."
          },
          "effect": {
            "attribute": "data-vm-effect",
            "attributeAliases": [
              "data-vm-efeito"
            ],
            "type": "enum",
            "default": "fade-up",
            "values": [
              "fade",
              "fade-up",
              "fade-left",
              "fade-right",
              "zoom-in",
              "blur-in",
              "flip-up"
            ],
            "description": "Efeito de cada filho."
          },
          "each": {
            "attribute": "data-vm-each",
            "attributeAliases": [
              "data-vm-intervalo"
            ],
            "type": "time",
            "default": 0.08,
            "description": "Intervalo entre um filho e o próximo."
          },
          "from": {
            "attribute": "data-vm-from",
            "attributeAliases": [
              "data-vm-origem",
              "data-vm-de"
            ],
            "type": "enum",
            "default": "start",
            "values": [
              "start",
              "center",
              "end",
              "edges",
              "random"
            ],
            "description": "De onde a cascata começa."
          },
          "selector": {
            "attribute": "data-vm-selector",
            "attributeAliases": [
              "data-vm-seletor"
            ],
            "type": "selector",
            "default": "",
            "description": "Quais filhos animar (padrão: filhos diretos)."
          }
        },
        "example": "<ul data-vm=\"stagger\" data-vm-each=\"0.08\">\n  <li>Agenda online</li>\n  <li>Lembretes por WhatsApp</li>\n  <li>Pagamento antecipado</li>\n  <li>Relatórios do mês</li>\n</ul>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#stagger"
      },
      {
        "name": "grid-wave",
        "aliases": [
          "onda",
          "gridWave"
        ],
        "category": "group",
        "bundle": "core",
        "description": "Os itens de uma grade aparecem em onda, a partir do centro ou de um canto.",
        "params": {
          "duration": {
            "attribute": "data-vm-duration",
            "attributeAliases": [
              "data-vm-duracao"
            ],
            "type": "time",
            "default": 1,
            "description": "Duração em segundos."
          },
          "delay": {
            "attribute": "data-vm-delay",
            "attributeAliases": [
              "data-vm-atraso"
            ],
            "type": "time",
            "default": 0,
            "description": "Atraso em segundos antes de começar."
          },
          "ease": {
            "attribute": "data-vm-ease",
            "attributeAliases": [
              "data-vm-curva"
            ],
            "type": "ease",
            "default": "expo.out",
            "description": "Curva de movimento (ex.: expo.out, power3.inOut, back.out(1.7), spring(1,90,12))."
          },
          "start": {
            "attribute": "data-vm-start",
            "attributeAliases": [
              "data-vm-inicio"
            ],
            "type": "string",
            "default": "top 85%",
            "description": "Quando começa: \"[borda do elemento] [posição na tela]\", ex.: \"top 80%\", \"center center\"."
          },
          "once": {
            "attribute": "data-vm-once",
            "attributeAliases": [
              "data-vm-uma-vez"
            ],
            "type": "boolean",
            "default": true,
            "description": "Anima só na primeira vez que aparece (false = volta ao sair por cima)."
          },
          "trigger": {
            "attribute": "data-vm-trigger",
            "attributeAliases": [
              "data-vm-gatilho"
            ],
            "type": "enum",
            "default": "scroll",
            "values": [
              "scroll",
              "load",
              "hover",
              "click",
              "manual"
            ],
            "description": "O que dispara: entrar na tela, carregar a página, passar o mouse, clicar ou só via código."
          },
          "from": {
            "attribute": "data-vm-from",
            "attributeAliases": [
              "data-vm-origem",
              "data-vm-de"
            ],
            "type": "enum",
            "default": "center",
            "values": [
              "center",
              "start",
              "end"
            ],
            "description": "Origem da onda."
          },
          "amount": {
            "attribute": "data-vm-amount",
            "attributeAliases": [
              "data-vm-quantidade"
            ],
            "type": "time",
            "default": 0.6,
            "description": "Tempo total da onda."
          }
        },
        "example": "<div data-vm=\"grid-wave\" style=\"display:grid;grid-template-columns:repeat(4,1fr);gap:8px\">\n  <img src=\"foto-1.jpg\" alt=\"\">\n  <img src=\"foto-2.jpg\" alt=\"\">\n  <img src=\"foto-3.jpg\" alt=\"\">\n  <img src=\"foto-4.jpg\" alt=\"\">\n  <img src=\"foto-5.jpg\" alt=\"\">\n  <img src=\"foto-6.jpg\" alt=\"\">\n  <img src=\"foto-7.jpg\" alt=\"\">\n  <img src=\"foto-8.jpg\" alt=\"\">\n</div>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#grid-wave"
      },
      {
        "name": "text-reveal",
        "aliases": [
          "texto-revelar",
          "textReveal",
          "split-reveal"
        ],
        "category": "text",
        "bundle": "core",
        "description": "O texto sobe de dentro de uma máscara, por linha, palavra ou letra (título de cinema).",
        "params": {
          "duration": {
            "attribute": "data-vm-duration",
            "attributeAliases": [
              "data-vm-duracao"
            ],
            "type": "time",
            "default": 1.15,
            "description": "Duração em segundos."
          },
          "delay": {
            "attribute": "data-vm-delay",
            "attributeAliases": [
              "data-vm-atraso"
            ],
            "type": "time",
            "default": 0,
            "description": "Atraso em segundos antes de começar."
          },
          "ease": {
            "attribute": "data-vm-ease",
            "attributeAliases": [
              "data-vm-curva"
            ],
            "type": "ease",
            "default": "expo.out",
            "description": "Curva de movimento (ex.: expo.out, power3.inOut, back.out(1.7), spring(1,90,12))."
          },
          "start": {
            "attribute": "data-vm-start",
            "attributeAliases": [
              "data-vm-inicio"
            ],
            "type": "string",
            "default": "top 85%",
            "description": "Quando começa: \"[borda do elemento] [posição na tela]\", ex.: \"top 80%\", \"center center\"."
          },
          "once": {
            "attribute": "data-vm-once",
            "attributeAliases": [
              "data-vm-uma-vez"
            ],
            "type": "boolean",
            "default": true,
            "description": "Anima só na primeira vez que aparece (false = volta ao sair por cima)."
          },
          "trigger": {
            "attribute": "data-vm-trigger",
            "attributeAliases": [
              "data-vm-gatilho"
            ],
            "type": "enum",
            "default": "scroll",
            "values": [
              "scroll",
              "load",
              "hover",
              "click",
              "manual"
            ],
            "description": "O que dispara: entrar na tela, carregar a página, passar o mouse, clicar ou só via código."
          },
          "by": {
            "attribute": "data-vm-by",
            "attributeAliases": [
              "data-vm-por"
            ],
            "type": "enum",
            "default": "lines",
            "values": [
              "lines",
              "words",
              "chars"
            ],
            "description": "Unidade animada."
          },
          "each": {
            "attribute": "data-vm-each",
            "attributeAliases": [
              "data-vm-intervalo"
            ],
            "type": "time",
            "default": null,
            "description": "Intervalo entre unidades (padrão: 0,1 linhas, 0,045 palavras, 0,018 letras)."
          }
        },
        "example": "<h1 data-vm=\"text-reveal\" data-vm-by=\"words\">Uma frase que entra</h1>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#text-reveal"
      },
      {
        "name": "text-fade",
        "aliases": [
          "texto-surgir",
          "textFade"
        ],
        "category": "text",
        "bundle": "core",
        "description": "As letras surgem uma a uma com leve desfoque.",
        "params": {
          "duration": {
            "attribute": "data-vm-duration",
            "attributeAliases": [
              "data-vm-duracao"
            ],
            "type": "time",
            "default": 1,
            "description": "Duração em segundos."
          },
          "delay": {
            "attribute": "data-vm-delay",
            "attributeAliases": [
              "data-vm-atraso"
            ],
            "type": "time",
            "default": 0,
            "description": "Atraso em segundos antes de começar."
          },
          "ease": {
            "attribute": "data-vm-ease",
            "attributeAliases": [
              "data-vm-curva"
            ],
            "type": "ease",
            "default": "expo.out",
            "description": "Curva de movimento (ex.: expo.out, power3.inOut, back.out(1.7), spring(1,90,12))."
          },
          "start": {
            "attribute": "data-vm-start",
            "attributeAliases": [
              "data-vm-inicio"
            ],
            "type": "string",
            "default": "top 85%",
            "description": "Quando começa: \"[borda do elemento] [posição na tela]\", ex.: \"top 80%\", \"center center\"."
          },
          "once": {
            "attribute": "data-vm-once",
            "attributeAliases": [
              "data-vm-uma-vez"
            ],
            "type": "boolean",
            "default": true,
            "description": "Anima só na primeira vez que aparece (false = volta ao sair por cima)."
          },
          "trigger": {
            "attribute": "data-vm-trigger",
            "attributeAliases": [
              "data-vm-gatilho"
            ],
            "type": "enum",
            "default": "scroll",
            "values": [
              "scroll",
              "load",
              "hover",
              "click",
              "manual"
            ],
            "description": "O que dispara: entrar na tela, carregar a página, passar o mouse, clicar ou só via código."
          },
          "each": {
            "attribute": "data-vm-each",
            "attributeAliases": [
              "data-vm-intervalo"
            ],
            "type": "time",
            "default": 0.02,
            "description": "Intervalo entre letras."
          }
        },
        "example": "<p data-vm=\"text-fade\">Letra por letra</p>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#text-fade"
      },
      {
        "name": "scroll-text",
        "aliases": [
          "texto-rolagem",
          "scrollText",
          "text-scrub"
        ],
        "category": "text",
        "bundle": "core",
        "description": "Parágrafo que vai \"acendendo\" palavra por palavra conforme a página rola.",
        "params": {
          "start": {
            "attribute": "data-vm-start",
            "attributeAliases": [
              "data-vm-inicio"
            ],
            "type": "string",
            "default": "top 80%",
            "description": "Quando começa: \"[borda do elemento] [posição na tela]\", ex.: \"top 80%\", \"center center\"."
          },
          "end": {
            "attribute": "data-vm-end",
            "attributeAliases": [
              "data-vm-fim"
            ],
            "type": "string",
            "default": "bottom 40%",
            "description": "Onde termina de acender."
          },
          "dim": {
            "attribute": "data-vm-dim",
            "attributeAliases": [
              "data-vm-apagado"
            ],
            "type": "number",
            "default": 0.18,
            "description": "Opacidade das palavras ainda apagadas."
          }
        },
        "example": "<p data-vm=\"scroll-text\">Um manifesto que acende conforme você lê.</p>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#scroll-text"
      },
      {
        "name": "scramble",
        "aliases": [
          "embaralhar",
          "text-scramble"
        ],
        "category": "text",
        "bundle": "core",
        "description": "O texto aparece embaralhado e se revela letra a letra (estilo terminal/hacker).",
        "params": {
          "duration": {
            "attribute": "data-vm-duration",
            "attributeAliases": [
              "data-vm-duracao"
            ],
            "type": "time",
            "default": 1.2,
            "description": "Duração em segundos."
          },
          "delay": {
            "attribute": "data-vm-delay",
            "attributeAliases": [
              "data-vm-atraso"
            ],
            "type": "time",
            "default": 0,
            "description": "Atraso em segundos antes de começar."
          },
          "ease": {
            "attribute": "data-vm-ease",
            "attributeAliases": [
              "data-vm-curva"
            ],
            "type": "ease",
            "default": "expo.out",
            "description": "Curva de movimento (ex.: expo.out, power3.inOut, back.out(1.7), spring(1,90,12))."
          },
          "start": {
            "attribute": "data-vm-start",
            "attributeAliases": [
              "data-vm-inicio"
            ],
            "type": "string",
            "default": "top 85%",
            "description": "Quando começa: \"[borda do elemento] [posição na tela]\", ex.: \"top 80%\", \"center center\"."
          },
          "once": {
            "attribute": "data-vm-once",
            "attributeAliases": [
              "data-vm-uma-vez"
            ],
            "type": "boolean",
            "default": true,
            "description": "Anima só na primeira vez que aparece (false = volta ao sair por cima)."
          },
          "trigger": {
            "attribute": "data-vm-trigger",
            "attributeAliases": [
              "data-vm-gatilho"
            ],
            "type": "enum",
            "default": "scroll",
            "values": [
              "scroll",
              "load",
              "hover",
              "click",
              "manual"
            ],
            "description": "O que dispara: entrar na tela, carregar a página, passar o mouse, clicar ou só via código."
          }
        },
        "example": "<span data-vm=\"scramble\">SISTEMA ONLINE</span>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#scramble"
      },
      {
        "name": "typewriter",
        "aliases": [
          "maquina-de-escrever",
          "digitar"
        ],
        "category": "text",
        "bundle": "core",
        "description": "Digita o texto como uma máquina de escrever, com cursor piscando.",
        "params": {
          "duration": {
            "attribute": "data-vm-duration",
            "attributeAliases": [
              "data-vm-duracao"
            ],
            "type": "time",
            "default": 1,
            "description": "Duração em segundos."
          },
          "delay": {
            "attribute": "data-vm-delay",
            "attributeAliases": [
              "data-vm-atraso"
            ],
            "type": "time",
            "default": 0,
            "description": "Atraso em segundos antes de começar."
          },
          "ease": {
            "attribute": "data-vm-ease",
            "attributeAliases": [
              "data-vm-curva"
            ],
            "type": "ease",
            "default": "expo.out",
            "description": "Curva de movimento (ex.: expo.out, power3.inOut, back.out(1.7), spring(1,90,12))."
          },
          "start": {
            "attribute": "data-vm-start",
            "attributeAliases": [
              "data-vm-inicio"
            ],
            "type": "string",
            "default": "top 85%",
            "description": "Quando começa: \"[borda do elemento] [posição na tela]\", ex.: \"top 80%\", \"center center\"."
          },
          "once": {
            "attribute": "data-vm-once",
            "attributeAliases": [
              "data-vm-uma-vez"
            ],
            "type": "boolean",
            "default": true,
            "description": "Anima só na primeira vez que aparece (false = volta ao sair por cima)."
          },
          "trigger": {
            "attribute": "data-vm-trigger",
            "attributeAliases": [
              "data-vm-gatilho"
            ],
            "type": "enum",
            "default": "scroll",
            "values": [
              "scroll",
              "load",
              "hover",
              "click",
              "manual"
            ],
            "description": "O que dispara: entrar na tela, carregar a página, passar o mouse, clicar ou só via código."
          },
          "speed": {
            "attribute": "data-vm-speed",
            "attributeAliases": [
              "data-vm-velocidade"
            ],
            "type": "number",
            "default": 28,
            "description": "Letras por segundo."
          },
          "cursor": {
            "attribute": "data-vm-cursor",
            "attributeAliases": [],
            "type": "enum",
            "default": "true",
            "values": [
              "true",
              "false",
              "hide"
            ],
            "description": "Mostrar o cursor (hide = some ao terminar)."
          }
        },
        "example": "<p data-vm=\"typewriter\">Olá, eu sou digitado.</p>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#typewriter"
      },
      {
        "name": "counter",
        "aliases": [
          "contador",
          "count-up"
        ],
        "category": "text",
        "bundle": "core",
        "description": "Conta do zero até o número escrito no elemento (formatação local, ex.: 1.250).",
        "params": {
          "duration": {
            "attribute": "data-vm-duration",
            "attributeAliases": [
              "data-vm-duracao"
            ],
            "type": "time",
            "default": 1.8,
            "description": "Duração em segundos."
          },
          "delay": {
            "attribute": "data-vm-delay",
            "attributeAliases": [
              "data-vm-atraso"
            ],
            "type": "time",
            "default": 0,
            "description": "Atraso em segundos antes de começar."
          },
          "ease": {
            "attribute": "data-vm-ease",
            "attributeAliases": [
              "data-vm-curva"
            ],
            "type": "ease",
            "default": "expo.out",
            "description": "Curva de movimento (ex.: expo.out, power3.inOut, back.out(1.7), spring(1,90,12))."
          },
          "start": {
            "attribute": "data-vm-start",
            "attributeAliases": [
              "data-vm-inicio"
            ],
            "type": "string",
            "default": "top 85%",
            "description": "Quando começa: \"[borda do elemento] [posição na tela]\", ex.: \"top 80%\", \"center center\"."
          },
          "once": {
            "attribute": "data-vm-once",
            "attributeAliases": [
              "data-vm-uma-vez"
            ],
            "type": "boolean",
            "default": true,
            "description": "Anima só na primeira vez que aparece (false = volta ao sair por cima)."
          },
          "trigger": {
            "attribute": "data-vm-trigger",
            "attributeAliases": [
              "data-vm-gatilho"
            ],
            "type": "enum",
            "default": "scroll",
            "values": [
              "scroll",
              "load",
              "hover",
              "click",
              "manual"
            ],
            "description": "O que dispara: entrar na tela, carregar a página, passar o mouse, clicar ou só via código."
          },
          "from": {
            "attribute": "data-vm-from",
            "attributeAliases": [
              "data-vm-origem",
              "data-vm-de"
            ],
            "type": "number",
            "default": 0,
            "description": "Valor inicial."
          },
          "to": {
            "attribute": "data-vm-to",
            "attributeAliases": [
              "data-vm-para"
            ],
            "type": "number",
            "default": null,
            "description": "Valor final (padrão: o número do texto)."
          },
          "prefix": {
            "attribute": "data-vm-prefix",
            "attributeAliases": [
              "data-vm-prefixo"
            ],
            "type": "string",
            "default": "",
            "description": "Texto antes (ex.: R$ )."
          },
          "suffix": {
            "attribute": "data-vm-suffix",
            "attributeAliases": [
              "data-vm-sufixo"
            ],
            "type": "string",
            "default": "",
            "description": "Texto depois (ex.: +, %)."
          },
          "decimals": {
            "attribute": "data-vm-decimals",
            "attributeAliases": [
              "data-vm-decimais"
            ],
            "type": "number",
            "default": null,
            "description": "Casas decimais."
          }
        },
        "example": "<strong data-vm=\"counter\" data-vm-suffix=\"+\">1250</strong>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#counter"
      },
      {
        "name": "highlight",
        "aliases": [
          "marca-texto",
          "grifar"
        ],
        "category": "text",
        "bundle": "core",
        "description": "Um marca-texto ou sublinhado se desenha por trás da palavra.",
        "params": {
          "duration": {
            "attribute": "data-vm-duration",
            "attributeAliases": [
              "data-vm-duracao"
            ],
            "type": "time",
            "default": 1,
            "description": "Duração em segundos."
          },
          "delay": {
            "attribute": "data-vm-delay",
            "attributeAliases": [
              "data-vm-atraso"
            ],
            "type": "time",
            "default": 0,
            "description": "Atraso em segundos antes de começar."
          },
          "ease": {
            "attribute": "data-vm-ease",
            "attributeAliases": [
              "data-vm-curva"
            ],
            "type": "ease",
            "default": "expo.out",
            "description": "Curva de movimento (ex.: expo.out, power3.inOut, back.out(1.7), spring(1,90,12))."
          },
          "start": {
            "attribute": "data-vm-start",
            "attributeAliases": [
              "data-vm-inicio"
            ],
            "type": "string",
            "default": "top 85%",
            "description": "Quando começa: \"[borda do elemento] [posição na tela]\", ex.: \"top 80%\", \"center center\"."
          },
          "once": {
            "attribute": "data-vm-once",
            "attributeAliases": [
              "data-vm-uma-vez"
            ],
            "type": "boolean",
            "default": true,
            "description": "Anima só na primeira vez que aparece (false = volta ao sair por cima)."
          },
          "trigger": {
            "attribute": "data-vm-trigger",
            "attributeAliases": [
              "data-vm-gatilho"
            ],
            "type": "enum",
            "default": "scroll",
            "values": [
              "scroll",
              "load",
              "hover",
              "click",
              "manual"
            ],
            "description": "O que dispara: entrar na tela, carregar a página, passar o mouse, clicar ou só via código."
          },
          "color": {
            "attribute": "data-vm-color",
            "attributeAliases": [
              "data-vm-cor"
            ],
            "type": "color",
            "default": "rgba(239,101,15,.28)",
            "description": "Cor do marca-texto."
          },
          "style": {
            "attribute": "data-vm-style",
            "attributeAliases": [
              "data-vm-estilo"
            ],
            "type": "enum",
            "default": "marker",
            "values": [
              "marker",
              "underline"
            ],
            "description": "Marca-texto cheio ou sublinhado."
          }
        },
        "example": "Somos <mark data-vm=\"highlight\">rápidos</mark> de verdade.",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#highlight"
      },
      {
        "name": "parallax",
        "aliases": [
          "paralaxe",
          "profundidade"
        ],
        "category": "scroll",
        "bundle": "core",
        "description": "O elemento rola numa velocidade diferente da página, criando profundidade.",
        "params": {
          "speed": {
            "attribute": "data-vm-speed",
            "attributeAliases": [
              "data-vm-velocidade"
            ],
            "type": "number",
            "default": 0.2,
            "description": "Intensidade: positivo anda mais devagar (fica para trás), negativo mais rápido."
          },
          "axis": {
            "attribute": "data-vm-axis",
            "attributeAliases": [
              "data-vm-eixo"
            ],
            "type": "enum",
            "default": "y",
            "values": [
              "y",
              "x"
            ],
            "description": "Eixo."
          }
        },
        "example": "<img data-vm=\"parallax\" data-vm-speed=\"0.3\" src=\"foto-2.jpg\" alt=\"\">",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#parallax"
      },
      {
        "name": "scrub",
        "aliases": [
          "rolagem",
          "scroll-scrub"
        ],
        "category": "scroll",
        "bundle": "core",
        "description": "Anima de um estado para outro presa à rolagem. Use data-vm-from e data-vm-to com propriedades (ex.: \"x:-200; rotate:-10; opacity:0\").",
        "params": {
          "from": {
            "attribute": "data-vm-from",
            "attributeAliases": [
              "data-vm-origem",
              "data-vm-de"
            ],
            "type": "props",
            "default": "",
            "description": "Estado no início da cena, \"prop: valor; prop: valor\"."
          },
          "to": {
            "attribute": "data-vm-to",
            "attributeAliases": [
              "data-vm-para"
            ],
            "type": "props",
            "default": "",
            "description": "Estado no fim da cena."
          },
          "start": {
            "attribute": "data-vm-start",
            "attributeAliases": [
              "data-vm-inicio"
            ],
            "type": "string",
            "default": "top bottom",
            "description": "Quando começa: \"[borda do elemento] [posição na tela]\", ex.: \"top 80%\", \"center center\"."
          },
          "end": {
            "attribute": "data-vm-end",
            "attributeAliases": [
              "data-vm-fim"
            ],
            "type": "string",
            "default": "bottom top",
            "description": "Fim da cena."
          },
          "smooth": {
            "attribute": "data-vm-smooth",
            "attributeAliases": [
              "data-vm-suavizacao"
            ],
            "type": "number",
            "default": 0.5,
            "description": "Suavização da agulha em segundos (0 = colada na rolagem)."
          },
          "ease": {
            "attribute": "data-vm-ease",
            "attributeAliases": [
              "data-vm-curva"
            ],
            "type": "ease",
            "default": "linear",
            "description": "Curva de movimento (ex.: expo.out, power3.inOut, back.out(1.7), spring(1,90,12))."
          }
        },
        "example": "<div data-vm=\"scrub\" data-vm-from=\"x: -30vw; rotate: -8\" data-vm-to=\"x: 30vw; rotate: 8\">...</div>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#scrub"
      },
      {
        "name": "scale-on-scroll",
        "aliases": [
          "zoom-rolagem",
          "scaleOnScroll"
        ],
        "category": "scroll",
        "bundle": "core",
        "description": "A imagem cresce (ou abre de cartão para tela cheia) enquanto você rola.",
        "params": {
          "from": {
            "attribute": "data-vm-from",
            "attributeAliases": [
              "data-vm-origem",
              "data-vm-de"
            ],
            "type": "number",
            "default": 0.8,
            "description": "Escala inicial."
          },
          "to": {
            "attribute": "data-vm-to",
            "attributeAliases": [
              "data-vm-para"
            ],
            "type": "number",
            "default": 1,
            "description": "Escala final."
          },
          "radius": {
            "attribute": "data-vm-radius",
            "attributeAliases": [
              "data-vm-raio",
              "data-vm-arredondamento"
            ],
            "type": "length",
            "default": 24,
            "description": "Arredondamento inicial dos cantos (vai a 0)."
          },
          "start": {
            "attribute": "data-vm-start",
            "attributeAliases": [
              "data-vm-inicio"
            ],
            "type": "string",
            "default": "top bottom",
            "description": "Quando começa: \"[borda do elemento] [posição na tela]\", ex.: \"top 80%\", \"center center\"."
          },
          "end": {
            "attribute": "data-vm-end",
            "attributeAliases": [
              "data-vm-fim"
            ],
            "type": "string",
            "default": "center center",
            "description": "Fim da cena."
          }
        },
        "example": "<figure data-vm=\"scale-on-scroll\"><img src=\"foto-3.jpg\" alt=\"\"></figure>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#scale-on-scroll"
      },
      {
        "name": "progress",
        "aliases": [
          "barra-de-progresso",
          "reading-progress"
        ],
        "category": "scroll",
        "bundle": "core",
        "description": "Barra que enche conforme a leitura da página (ou de uma seção com data-vm-target).",
        "params": {
          "target": {
            "attribute": "data-vm-target",
            "attributeAliases": [
              "data-vm-alvo"
            ],
            "type": "selector",
            "default": "",
            "description": "Seção medida (padrão: a página inteira)."
          },
          "axis": {
            "attribute": "data-vm-axis",
            "attributeAliases": [
              "data-vm-eixo"
            ],
            "type": "enum",
            "default": "x",
            "values": [
              "x",
              "y"
            ],
            "description": "Direção do preenchimento."
          }
        },
        "example": "<div class=\"barra\" data-vm=\"progress\"></div>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#progress"
      },
      {
        "name": "pin-scene",
        "aliases": [
          "cena-fixa",
          "cena",
          "pinScene",
          "scrollytelling"
        ],
        "category": "scroll",
        "bundle": "core",
        "description": "A seção fica parada na tela enquanto você rola, e os passos dentro dela ([data-vm-step]) vão se revezando como cenas de um filme.",
        "params": {
          "length": {
            "attribute": "data-vm-length",
            "attributeAliases": [
              "data-vm-comprimento"
            ],
            "type": "length",
            "default": "300%",
            "description": "Quanto rolar para atravessar a cena (em % da altura da tela)."
          },
          "transition": {
            "attribute": "data-vm-transition",
            "attributeAliases": [
              "data-vm-transicao"
            ],
            "type": "enum",
            "default": "fade",
            "values": [
              "fade",
              "slide",
              "zoom",
              "blur"
            ],
            "description": "Como um passo dá lugar ao próximo."
          },
          "smooth": {
            "attribute": "data-vm-smooth",
            "attributeAliases": [
              "data-vm-suavizacao"
            ],
            "type": "number",
            "default": 0.4,
            "description": "Suavização da agulha."
          },
          "progressVar": {
            "attribute": "data-vm-progress-var",
            "attributeAliases": [
              "data-vm-variavel-de-progresso"
            ],
            "type": "boolean",
            "default": true,
            "description": "Expõe --vm-progress (0..1) na seção para o seu CSS usar."
          }
        },
        "example": "<section data-vm=\"pin-scene\" data-vm-length=\"400%\">\n  <div data-vm-step>Capítulo 1</div>\n  <div data-vm-step>Capítulo 2</div>\n  <div data-vm-step>Capítulo 3</div>\n</section>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#pin-scene"
      },
      {
        "name": "horizontal",
        "aliases": [
          "trilho-horizontal",
          "horizontal-scroll"
        ],
        "category": "scroll",
        "bundle": "core",
        "description": "A seção fica parada e o trilho interno ([data-vm-track] ou o primeiro filho) anda para o lado conforme você rola.",
        "params": {
          "smooth": {
            "attribute": "data-vm-smooth",
            "attributeAliases": [
              "data-vm-suavizacao"
            ],
            "type": "number",
            "default": 0.3,
            "description": "Suavização da agulha."
          }
        },
        "example": "<section data-vm=\"horizontal\">\n  <div data-vm-track style=\"display:flex;gap:2rem\">...cartões...</div>\n</section>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#horizontal"
      },
      {
        "name": "sequence",
        "aliases": [
          "sequencia-de-imagens",
          "image-sequence",
          "frames"
        ],
        "category": "scroll",
        "bundle": "core",
        "description": "Toca uma sequência de imagens (quadros de vídeo) presa à rolagem num <canvas>, como nas páginas de produto da Apple.",
        "params": {
          "src": {
            "attribute": "data-vm-src",
            "attributeAliases": [
              "data-vm-imagem"
            ],
            "type": "string",
            "default": "",
            "description": "Padrão do arquivo com {n}, ex.: /frames/cena-{n}.webp"
          },
          "frames": {
            "attribute": "data-vm-frames",
            "attributeAliases": [
              "data-vm-quadros"
            ],
            "type": "number",
            "default": 60,
            "description": "Quantidade de quadros."
          },
          "pad": {
            "attribute": "data-vm-pad",
            "attributeAliases": [
              "data-vm-digitos"
            ],
            "type": "number",
            "default": 3,
            "description": "Dígitos do número (3 => 001)."
          },
          "length": {
            "attribute": "data-vm-length",
            "attributeAliases": [
              "data-vm-comprimento"
            ],
            "type": "length",
            "default": "300%",
            "description": "Quanto rolar para tocar tudo."
          }
        },
        "example": "<canvas data-vm=\"sequence\" data-vm-src=\"/frames/carro-{n}.webp\" data-vm-frames=\"120\"></canvas>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#sequence"
      },
      {
        "name": "bg-color",
        "aliases": [
          "cor-de-fundo",
          "theme-switch"
        ],
        "category": "scroll",
        "bundle": "core",
        "description": "Quando a seção chega ao meio da tela, o fundo e o texto da página mudam de cor suavemente (troca de \"clima\" entre capítulos).",
        "params": {
          "bg": {
            "attribute": "data-vm-bg",
            "attributeAliases": [
              "data-vm-fundo"
            ],
            "type": "color",
            "default": "#0a0a0a",
            "description": "Cor de fundo da página nesta seção."
          },
          "color": {
            "attribute": "data-vm-color",
            "attributeAliases": [
              "data-vm-cor"
            ],
            "type": "color",
            "default": "#ffffff",
            "description": "Cor do texto nesta seção."
          },
          "target": {
            "attribute": "data-vm-target",
            "attributeAliases": [
              "data-vm-alvo"
            ],
            "type": "selector",
            "default": "body",
            "description": "Quem muda de cor."
          }
        },
        "example": "<section data-vm=\"bg-color\" data-vm-bg=\"#111\" data-vm-color=\"#fff\">...</section>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#bg-color"
      },
      {
        "name": "velocity-skew",
        "aliases": [
          "inclinar-na-rolagem",
          "velocitySkew"
        ],
        "category": "scroll",
        "bundle": "core",
        "description": "Os elementos inclinam conforme a velocidade da rolagem e voltam ao parar (sensação de inércia).",
        "params": {
          "max": {
            "attribute": "data-vm-max",
            "attributeAliases": [
              "data-vm-maximo"
            ],
            "type": "number",
            "default": 8,
            "description": "Inclinação máxima em graus."
          }
        },
        "example": "<div data-vm=\"velocity-skew\"><img src=\"foto-3.jpg\" alt=\"\"><img src=\"foto-6.jpg\" alt=\"\"></div>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#velocity-skew"
      },
      {
        "name": "marquee",
        "aliases": [
          "letreiro",
          "ticker"
        ],
        "category": "scroll",
        "bundle": "core",
        "description": "Faixa que rola sem fim (logos, palavras). Acelera e inverte com a rolagem da página.",
        "params": {
          "speed": {
            "attribute": "data-vm-speed",
            "attributeAliases": [
              "data-vm-velocidade"
            ],
            "type": "number",
            "default": 60,
            "description": "Velocidade em px por segundo."
          },
          "direction": {
            "attribute": "data-vm-direction",
            "attributeAliases": [
              "data-vm-direcao"
            ],
            "type": "enum",
            "default": "left",
            "values": [
              "left",
              "right"
            ],
            "description": "Direção."
          },
          "scrollBoost": {
            "attribute": "data-vm-scroll-boost",
            "attributeAliases": [
              "data-vm-impulso-da-rolagem"
            ],
            "type": "boolean",
            "default": true,
            "description": "A rolagem acelera/inverte a faixa."
          }
        },
        "example": "<div data-vm=\"marquee\" style=\"font-size:4rem;gap:3rem\">\n  <span>Design</span><span>Código</span><span>Movimento</span><span>Marca</span>\n</div>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#marquee"
      },
      {
        "name": "draw",
        "aliases": [
          "desenhar",
          "svg-draw"
        ],
        "category": "svg",
        "bundle": "core",
        "description": "Desenha o traço de um SVG (path, line, circle...). Com data-vm-scrub=\"true\" o traço acompanha a rolagem.",
        "params": {
          "duration": {
            "attribute": "data-vm-duration",
            "attributeAliases": [
              "data-vm-duracao"
            ],
            "type": "time",
            "default": 1.6,
            "description": "Duração em segundos."
          },
          "delay": {
            "attribute": "data-vm-delay",
            "attributeAliases": [
              "data-vm-atraso"
            ],
            "type": "time",
            "default": 0,
            "description": "Atraso em segundos antes de começar."
          },
          "ease": {
            "attribute": "data-vm-ease",
            "attributeAliases": [
              "data-vm-curva"
            ],
            "type": "ease",
            "default": "power2.inOut",
            "description": "Curva de movimento (ex.: expo.out, power3.inOut, back.out(1.7), spring(1,90,12))."
          },
          "start": {
            "attribute": "data-vm-start",
            "attributeAliases": [
              "data-vm-inicio"
            ],
            "type": "string",
            "default": "top 85%",
            "description": "Quando começa: \"[borda do elemento] [posição na tela]\", ex.: \"top 80%\", \"center center\"."
          },
          "once": {
            "attribute": "data-vm-once",
            "attributeAliases": [
              "data-vm-uma-vez"
            ],
            "type": "boolean",
            "default": true,
            "description": "Anima só na primeira vez que aparece (false = volta ao sair por cima)."
          },
          "trigger": {
            "attribute": "data-vm-trigger",
            "attributeAliases": [
              "data-vm-gatilho"
            ],
            "type": "enum",
            "default": "scroll",
            "values": [
              "scroll",
              "load",
              "hover",
              "click",
              "manual"
            ],
            "description": "O que dispara: entrar na tela, carregar a página, passar o mouse, clicar ou só via código."
          },
          "scrub": {
            "attribute": "data-vm-scrub",
            "attributeAliases": [],
            "type": "boolean",
            "default": false,
            "description": "Prender o desenho à rolagem."
          }
        },
        "example": "<svg data-vm=\"draw\" viewBox=\"0 0 200 50\"><path d=\"M0 25 C50 0 150 50 200 25\" stroke=\"currentColor\" fill=\"none\"/></svg>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#draw"
      },
      {
        "name": "magnetic",
        "aliases": [
          "magnetico",
          "ima"
        ],
        "category": "interaction",
        "bundle": "core",
        "description": "O botão é atraído pelo cursor quando ele chega perto.",
        "params": {
          "strength": {
            "attribute": "data-vm-strength",
            "attributeAliases": [
              "data-vm-forca"
            ],
            "type": "number",
            "default": 0.35,
            "description": "Força da atração (0 a 1)."
          },
          "radius": {
            "attribute": "data-vm-radius",
            "attributeAliases": [
              "data-vm-raio",
              "data-vm-arredondamento"
            ],
            "type": "number",
            "default": 80,
            "description": "Distância (px) em que a atração começa."
          }
        },
        "example": "<a class=\"botao\" data-vm=\"magnetic\" href=\"#\">Fale com a gente</a>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#magnetic"
      },
      {
        "name": "tilt",
        "aliases": [
          "inclinacao-3d",
          "tilt-3d"
        ],
        "category": "interaction",
        "bundle": "core",
        "description": "O cartão inclina em 3D seguindo o cursor. Expõe --vm-glare-x/--vm-glare-y para um brilho em CSS.",
        "params": {
          "max": {
            "attribute": "data-vm-max",
            "attributeAliases": [
              "data-vm-maximo"
            ],
            "type": "number",
            "default": 10,
            "description": "Inclinação máxima em graus."
          },
          "perspective": {
            "attribute": "data-vm-perspective",
            "attributeAliases": [
              "data-vm-perspectiva"
            ],
            "type": "number",
            "default": 900,
            "description": "Profundidade da perspectiva em px."
          }
        },
        "example": "<article data-vm=\"tilt\">\n  <h3>Plano Pro</h3>\n  <p>Tudo do Essencial, mais relatórios e equipe.</p>\n</article>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#tilt"
      },
      {
        "name": "follow",
        "aliases": [
          "seguir-cursor",
          "hover-image"
        ],
        "category": "interaction",
        "bundle": "core",
        "description": "O elemento segue o cursor dentro da área do pai (ex.: foto que aparece sobre uma lista).",
        "params": {
          "speed": {
            "attribute": "data-vm-speed",
            "attributeAliases": [
              "data-vm-velocidade"
            ],
            "type": "number",
            "default": 9,
            "description": "Rapidez com que alcança o cursor."
          }
        },
        "example": "<ul class=\"lista\"><img data-vm=\"follow\" src=\"foto-4.jpg\" alt=\"\"></ul>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#follow"
      },
      {
        "name": "float",
        "aliases": [
          "flutuar",
          "flutuante",
          "floating"
        ],
        "category": "interaction",
        "bundle": "core",
        "description": "O elemento flutua sozinho num balanço lento (sobe, desce e gira de leve) e, com mouse, se afasta do cursor com profundidade. Usa as propriedades translate/rotate do CSS, então combina com parallax, tilt e entradas no mesmo elemento.",
        "params": {
          "amplitude": {
            "attribute": "data-vm-amplitude",
            "attributeAliases": [],
            "type": "number",
            "default": 14,
            "description": "Quanto sobe e desce (px)."
          },
          "duration": {
            "attribute": "data-vm-duration",
            "attributeAliases": [
              "data-vm-duracao"
            ],
            "type": "time",
            "default": 6,
            "description": "Segundos por balanço completo."
          },
          "rotate": {
            "attribute": "data-vm-rotate",
            "attributeAliases": [],
            "type": "number",
            "default": 2,
            "description": "Giro máximo (graus)."
          },
          "depth": {
            "attribute": "data-vm-depth",
            "attributeAliases": [
              "data-vm-profundidade"
            ],
            "type": "number",
            "default": 18,
            "description": "Quanto reage ao mouse (px; 0 desliga)."
          }
        },
        "example": "<img data-vm=\"float\" data-vm-depth=\"30\" src=\"foto-2.jpg\" alt=\"\" style=\"width:240px\">",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#float"
      },
      {
        "name": "cursor",
        "aliases": [
          "cursor-proprio"
        ],
        "category": "interaction",
        "bundle": "core",
        "description": "Liga o cursor próprio (ponto + anel). Coloque no <body>. Use data-vm-cursor=\"Ver\" nos elementos para mostrar um texto no anel.",
        "params": {
          "lag": {
            "attribute": "data-vm-lag",
            "attributeAliases": [
              "data-vm-atraso_do_anel"
            ],
            "type": "number",
            "default": 14,
            "description": "Rapidez do anel."
          }
        },
        "example": "<body data-vm=\"cursor\">",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#cursor"
      },
      {
        "name": "zoom-gallery",
        "aliases": [
          "galeria-zoom",
          "entrar-na-galeria",
          "zoomGallery",
          "dive"
        ],
        "category": "experience",
        "bundle": "core",
        "description": "Galeria parada na tela; ao rolar, a câmera mergulha no item em foco ([data-vm-focus]) até ele ocupar a tela inteira e virar a próxima seção, que continua rolando. Para emendar sem costura, comece a próxima seção com a mesma imagem em tela cheia.",
        "params": {
          "length": {
            "attribute": "data-vm-length",
            "attributeAliases": [
              "data-vm-comprimento"
            ],
            "type": "length",
            "default": "250%",
            "description": "Quanto rolar para completar o mergulho."
          },
          "ease": {
            "attribute": "data-vm-ease",
            "attributeAliases": [
              "data-vm-curva"
            ],
            "type": "ease",
            "default": "power2.inOut",
            "description": "Curva do mergulho."
          },
          "fadeOthers": {
            "attribute": "data-vm-fade-others",
            "attributeAliases": [],
            "type": "boolean",
            "default": true,
            "description": "Os outros itens somem durante o mergulho."
          },
          "handoff": {
            "attribute": "data-vm-handoff",
            "attributeAliases": [],
            "type": "boolean",
            "default": true,
            "description": "A próxima seção fica por baixo no fim, para a troca ser invisível."
          },
          "smooth": {
            "attribute": "data-vm-smooth",
            "attributeAliases": [
              "data-vm-suavizacao"
            ],
            "type": "number",
            "default": 0.35,
            "description": "Suavização da agulha."
          }
        },
        "example": "<section data-vm=\"zoom-gallery\">\n  <div class=\"grade\">\n    <img data-vm-item src=\"foto-3.jpg\" alt=\"\">\n    <img data-vm-item data-vm-focus src=\"foto-6.jpg\" alt=\"\">\n    <img data-vm-item src=\"foto-6.jpg\" alt=\"\">\n  </div>\n</section>\n<section class=\"pagina\"><img class=\"capa-cheia\" src=\"foto-6.jpg\" alt=\"\">...</section>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#zoom-gallery"
      },
      {
        "name": "depth-gallery",
        "aliases": [
          "tunel",
          "túnel",
          "galeria-profundidade",
          "depthGallery",
          "tunnel"
        ],
        "category": "experience",
        "bundle": "core",
        "description": "Túnel: os itens ([data-vm-item]) ficam espalhados em profundidade e a rolagem move a câmera para dentro, passando por eles (sensação de entrar no lugar).",
        "params": {
          "length": {
            "attribute": "data-vm-length",
            "attributeAliases": [
              "data-vm-comprimento"
            ],
            "type": "length",
            "default": "400%",
            "description": "Quanto rolar para atravessar o túnel."
          },
          "depth": {
            "attribute": "data-vm-depth",
            "attributeAliases": [
              "data-vm-profundidade"
            ],
            "type": "number",
            "default": 480,
            "description": "Distância (px) entre um item e o próximo."
          },
          "spread": {
            "attribute": "data-vm-spread",
            "attributeAliases": [],
            "type": "number",
            "default": 0.36,
            "description": "Quanto os itens se afastam do centro (fração da tela)."
          },
          "perspective": {
            "attribute": "data-vm-perspective",
            "attributeAliases": [
              "data-vm-perspectiva"
            ],
            "type": "number",
            "default": 900,
            "description": "Perspectiva da câmera em px."
          },
          "smooth": {
            "attribute": "data-vm-smooth",
            "attributeAliases": [
              "data-vm-suavizacao"
            ],
            "type": "number",
            "default": 0.4,
            "description": "Suavização da agulha."
          }
        },
        "example": "<section data-vm=\"depth-gallery\">\n  <img data-vm-item src=\"foto-4.jpg\" alt=\"\">\n  <img data-vm-item src=\"foto-6.jpg\" alt=\"\">\n  <h2 data-vm-item>Texto no meio do caminho</h2>\n</section>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#depth-gallery"
      },
      {
        "name": "stack-cards",
        "aliases": [
          "pilha",
          "empilhar",
          "cartoes-empilhados",
          "stackCards"
        ],
        "category": "experience",
        "bundle": "core",
        "description": "Cartões (filhos diretos) que grudam no topo e se empilham: cada um encolhe e escurece atrás do próximo que chega.",
        "params": {
          "top": {
            "attribute": "data-vm-top",
            "attributeAliases": [],
            "type": "length",
            "default": "12vh",
            "description": "Distância do topo onde os cartões grudam."
          },
          "gap": {
            "attribute": "data-vm-gap",
            "attributeAliases": [],
            "type": "number",
            "default": 18,
            "description": "Degrau (px) entre cartões empilhados."
          },
          "scale": {
            "attribute": "data-vm-scale",
            "attributeAliases": [
              "data-vm-escala"
            ],
            "type": "number",
            "default": 0.06,
            "description": "Quanto cada cartão encolhe por cartão à frente."
          }
        },
        "example": "<div data-vm=\"stack-cards\">\n  <article class=\"cartao\">1</article>\n  <article class=\"cartao\">2</article>\n  <article class=\"cartao\">3</article>\n</div>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#stack-cards"
      },
      {
        "name": "expand",
        "aliases": [
          "expandir",
          "abrir-tela-cheia",
          "expand-media"
        ],
        "category": "experience",
        "bundle": "core",
        "description": "A mídia começa como um cartão no meio da seção e, ao rolar, abre até a tela cheia (com a seção parada). Conteúdo marcado com [data-vm-reveal] aparece no fim.",
        "params": {
          "length": {
            "attribute": "data-vm-length",
            "attributeAliases": [
              "data-vm-comprimento"
            ],
            "type": "length",
            "default": "150%",
            "description": "Quanto rolar para abrir."
          },
          "inset": {
            "attribute": "data-vm-inset",
            "attributeAliases": [],
            "type": "string",
            "default": "18% 22%",
            "description": "Recorte inicial (vertical horizontal), como no inset do CSS."
          },
          "radius": {
            "attribute": "data-vm-radius",
            "attributeAliases": [
              "data-vm-raio",
              "data-vm-arredondamento"
            ],
            "type": "length",
            "default": 28,
            "description": "Arredondamento inicial dos cantos."
          },
          "smooth": {
            "attribute": "data-vm-smooth",
            "attributeAliases": [
              "data-vm-suavizacao"
            ],
            "type": "number",
            "default": 0.35,
            "description": "Suavização da agulha."
          }
        },
        "example": "<section data-vm=\"expand\">\n  <img src=\"foto-1.jpg\" alt=\"\" style=\"width:100%;height:100vh;object-fit:cover\">\n  <h2 data-vm-reveal>Bem-vindo</h2>\n</section>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#expand"
      },
      {
        "name": "card-expand",
        "aliases": [
          "cartao-expande",
          "abrir-cartao",
          "cardExpand",
          "app-card"
        ],
        "category": "experience",
        "bundle": "core",
        "description": "Ao clicar, o cartão cresce até ocupar a tela e vira uma página com rolagem própria (conteúdo em [data-vm-detail]). Esc, o botão [data-vm-close] ou o voltar do navegador fecham, e ele volta ao lugar.",
        "params": {
          "duration": {
            "attribute": "data-vm-duration",
            "attributeAliases": [
              "data-vm-duracao"
            ],
            "type": "time",
            "default": 0.7,
            "description": "Duração da abertura."
          },
          "ease": {
            "attribute": "data-vm-ease",
            "attributeAliases": [
              "data-vm-curva"
            ],
            "type": "ease",
            "default": "expo.inOut",
            "description": "Curva da abertura."
          },
          "radius": {
            "attribute": "data-vm-radius",
            "attributeAliases": [
              "data-vm-raio",
              "data-vm-arredondamento"
            ],
            "type": "length",
            "default": 0,
            "description": "Arredondamento do cartão aberto."
          },
          "history": {
            "attribute": "data-vm-history",
            "attributeAliases": [],
            "type": "boolean",
            "default": true,
            "description": "O voltar do navegador fecha o cartão."
          }
        },
        "example": "<article data-vm=\"card-expand\" class=\"cartao\">\n  <img src=\"foto-2.jpg\" alt=\"\">\n  <h3>Título</h3>\n  <div data-vm-detail hidden>\n    <button data-vm-close>Fechar</button>\n    <p>Conteúdo completo...</p>\n  </div>\n</article>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#card-expand"
      },
      {
        "name": "morph-link",
        "aliases": [
          "link-que-vira-pagina",
          "morphLink",
          "shared-element"
        ],
        "category": "experience",
        "bundle": "core",
        "description": "Link com imagem: ao clicar, a imagem cresce até a tela cheia e a navegação acontece; na página de destino, o elemento data-vm=\"morph-target\" com o mesmo data-vm-id continua o movimento até o lugar dele (a foto \"vira\" a capa da outra página).",
        "params": {
          "id": {
            "attribute": "data-vm-id",
            "attributeAliases": [],
            "type": "string",
            "default": "",
            "description": "Identificador compartilhado com o morph-target da página de destino."
          },
          "duration": {
            "attribute": "data-vm-duration",
            "attributeAliases": [
              "data-vm-duracao"
            ],
            "type": "time",
            "default": 0.6,
            "description": "Duração do crescimento antes de navegar."
          },
          "ease": {
            "attribute": "data-vm-ease",
            "attributeAliases": [
              "data-vm-curva"
            ],
            "type": "ease",
            "default": "expo.inOut",
            "description": "Curva."
          }
        },
        "example": "<a href=\"/projeto.html\" data-vm=\"morph-link\" data-vm-id=\"projeto-1\"><img src=\"foto-2.jpg\" alt=\"\"></a>\n<!-- em /projeto.html -->\n<img data-vm=\"morph-target\" data-vm-id=\"projeto-1\" src=\"foto-2.jpg\" alt=\"\">",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#morph-link"
      },
      {
        "name": "morph-target",
        "aliases": [
          "destino-do-link",
          "morphTarget"
        ],
        "category": "experience",
        "bundle": "core",
        "description": "Elemento da página de destino de um morph-link: se a navegação veio do link com o mesmo data-vm-id, ele começa em tela cheia e anima até o próprio lugar.",
        "params": {
          "id": {
            "attribute": "data-vm-id",
            "attributeAliases": [],
            "type": "string",
            "default": "",
            "description": "O mesmo identificador do morph-link."
          },
          "duration": {
            "attribute": "data-vm-duration",
            "attributeAliases": [
              "data-vm-duracao"
            ],
            "type": "time",
            "default": 0.8,
            "description": "Duração da chegada."
          },
          "ease": {
            "attribute": "data-vm-ease",
            "attributeAliases": [
              "data-vm-curva"
            ],
            "type": "ease",
            "default": "expo.out",
            "description": "Curva."
          }
        },
        "example": "<img data-vm=\"morph-target\" data-vm-id=\"projeto-1\" src=\"foto-2.jpg\" alt=\"\">",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#morph-target"
      },
      {
        "name": "drag-slider",
        "aliases": [
          "carrossel-arrastar",
          "arrastar",
          "dragSlider",
          "draggable"
        ],
        "category": "experience",
        "bundle": "core",
        "description": "Trilho horizontal que se arrasta com o mouse ou o dedo, com inércia, retorno elástico nas pontas e encaixe em cada item. As setas do teclado também movem.",
        "params": {
          "snap": {
            "attribute": "data-vm-snap",
            "attributeAliases": [],
            "type": "boolean",
            "default": true,
            "description": "Encaixar no item mais próximo ao soltar."
          },
          "friction": {
            "attribute": "data-vm-friction",
            "attributeAliases": [],
            "type": "number",
            "default": 0.9,
            "description": "Atrito da inércia (0,8 desliza pouco, 0,96 desliza muito)."
          }
        },
        "example": "<div data-vm=\"drag-slider\">\n  <div data-vm-track style=\"display:flex;gap:16px\">\n    <img src=\"foto-1.jpg\" alt=\"\" style=\"width:280px;height:200px;object-fit:cover;border-radius:16px\">\n    <img src=\"foto-2.jpg\" alt=\"\" style=\"width:280px;height:200px;object-fit:cover;border-radius:16px\">\n    <img src=\"foto-3.jpg\" alt=\"\" style=\"width:280px;height:200px;object-fit:cover;border-radius:16px\">\n    <img src=\"foto-4.jpg\" alt=\"\" style=\"width:280px;height:200px;object-fit:cover;border-radius:16px\">\n    <img src=\"foto-5.jpg\" alt=\"\" style=\"width:280px;height:200px;object-fit:cover;border-radius:16px\">\n    <img src=\"foto-6.jpg\" alt=\"\" style=\"width:280px;height:200px;object-fit:cover;border-radius:16px\">\n  </div>\n</div>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#drag-slider"
      },
      {
        "name": "split-screen",
        "aliases": [
          "tela-dividida",
          "splitScreen",
          "opposite-scroll"
        ],
        "category": "experience",
        "bundle": "core",
        "description": "Duas colunas (filhos diretos) dentro de uma seção parada: a da esquerda sobe e a da direita desce enquanto você rola.",
        "params": {
          "smooth": {
            "attribute": "data-vm-smooth",
            "attributeAliases": [
              "data-vm-suavizacao"
            ],
            "type": "number",
            "default": 0.3,
            "description": "Suavização da agulha."
          }
        },
        "example": "<section data-vm=\"split-screen\" style=\"display:grid;grid-template-columns:1fr 1fr;gap:16px\">\n  <div>\n    <img src=\"foto-1.jpg\" alt=\"\"><img src=\"foto-2.jpg\" alt=\"\"><img src=\"foto-3.jpg\" alt=\"\">\n  </div>\n  <div>\n    <img src=\"foto-4.jpg\" alt=\"\"><img src=\"foto-5.jpg\" alt=\"\"><img src=\"foto-6.jpg\" alt=\"\">\n  </div>\n</section>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#split-screen"
      },
      {
        "name": "video-scrub",
        "aliases": [
          "video-na-rolagem",
          "videoScrub"
        ],
        "category": "experience",
        "bundle": "core",
        "description": "O vídeo avança e volta quadro a quadro com a rolagem, com a seção parada. Expõe --vm-progress (0 a 1) na seção para legendas em CSS. Use vídeo com muitos quadros-chave (ex.: ffmpeg -g 1) para ficar fluido.",
        "params": {
          "length": {
            "attribute": "data-vm-length",
            "attributeAliases": [
              "data-vm-comprimento"
            ],
            "type": "length",
            "default": "300%",
            "description": "Quanto rolar para tocar o vídeo inteiro."
          },
          "smooth": {
            "attribute": "data-vm-smooth",
            "attributeAliases": [
              "data-vm-suavizacao"
            ],
            "type": "number",
            "default": 0.2,
            "description": "Suavização da agulha."
          }
        },
        "example": "<section data-vm=\"video-scrub\"><video src=\"produto.mp4\" muted playsinline preload=\"auto\"></video></section>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#video-scrub"
      },
      {
        "name": "shiny-text",
        "aliases": [
          "texto-brilhante",
          "brilho",
          "shinyText"
        ],
        "category": "component",
        "bundle": "components",
        "description": "Um brilho atravessa o texto de tempos em tempos (como reflexo em metal).",
        "params": {
          "speed": {
            "attribute": "data-vm-speed",
            "attributeAliases": [
              "data-vm-velocidade"
            ],
            "type": "time",
            "default": 3,
            "description": "Segundos por passada do brilho."
          },
          "color": {
            "attribute": "data-vm-color",
            "attributeAliases": [
              "data-vm-cor"
            ],
            "type": "color",
            "default": "rgba(255,255,255,.9)",
            "description": "Cor do brilho."
          }
        },
        "example": "<span data-vm=\"shiny-text\">Novo lançamento</span>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#shiny-text"
      },
      {
        "name": "gradient-text",
        "aliases": [
          "texto-degrade",
          "degrade",
          "gradientText"
        ],
        "category": "component",
        "bundle": "components",
        "description": "Texto preenchido por um degradê que flui continuamente.",
        "params": {
          "colors": {
            "attribute": "data-vm-colors",
            "attributeAliases": [],
            "type": "string",
            "default": "",
            "description": "Cores separadas por vírgula (padrão: acento da marca e variações)."
          },
          "speed": {
            "attribute": "data-vm-speed",
            "attributeAliases": [
              "data-vm-velocidade"
            ],
            "type": "time",
            "default": 6,
            "description": "Segundos por ciclo."
          }
        },
        "example": "<h2 data-vm=\"gradient-text\" data-vm-colors=\"#ef650f, #f7b267, #7c3aed\">Título vivo</h2>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#gradient-text"
      },
      {
        "name": "glitch-text",
        "aliases": [
          "texto-falha",
          "glitch",
          "glitchText"
        ],
        "category": "component",
        "bundle": "components",
        "description": "Efeito de falha digital: duas cópias deslocadas em cores tremem por cima do texto. Pode ficar só no hover.",
        "params": {
          "hover": {
            "attribute": "data-vm-hover",
            "attributeAliases": [],
            "type": "boolean",
            "default": false,
            "description": "Só tremer com o mouse em cima."
          },
          "speed": {
            "attribute": "data-vm-speed",
            "attributeAliases": [
              "data-vm-velocidade"
            ],
            "type": "time",
            "default": 2.5,
            "description": "Duração do ciclo da falha."
          }
        },
        "example": "<h2 data-vm=\"glitch-text\">SISTEMA</h2>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#glitch-text"
      },
      {
        "name": "decrypt-text",
        "aliases": [
          "decodificar",
          "texto-decodifica",
          "decryptText"
        ],
        "category": "component",
        "bundle": "components",
        "description": "O texto aparece decodificando (letras aleatórias que assentam da esquerda para a direita). Ao aparecer na tela ou ao passar o mouse.",
        "params": {
          "on": {
            "attribute": "data-vm-on",
            "attributeAliases": [],
            "type": "enum",
            "default": "view",
            "values": [
              "view",
              "hover",
              "both"
            ],
            "description": "Quando decodifica."
          },
          "speed": {
            "attribute": "data-vm-speed",
            "attributeAliases": [
              "data-vm-velocidade"
            ],
            "type": "number",
            "default": 40,
            "description": "Letras assentadas por segundo."
          }
        },
        "example": "<p data-vm=\"decrypt-text\" data-vm-on=\"hover\">Acesso liberado</p>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#decrypt-text"
      },
      {
        "name": "rotating-text",
        "aliases": [
          "palavras-que-giram",
          "texto-rotativo",
          "rotatingText",
          "word-rotate"
        ],
        "category": "component",
        "bundle": "components",
        "description": "Troca palavras em sequência no mesmo lugar (ex.: \"feito para barbearias / clínicas / academias\"). As palavras ficam nos filhos <span> ou em data-vm-words separadas por |.",
        "params": {
          "words": {
            "attribute": "data-vm-words",
            "attributeAliases": [],
            "type": "string",
            "default": "",
            "description": "Palavras separadas por | (se não houver filhos <span>)."
          },
          "interval": {
            "attribute": "data-vm-interval",
            "attributeAliases": [],
            "type": "time",
            "default": 2.2,
            "description": "Segundos que cada palavra fica."
          },
          "effect": {
            "attribute": "data-vm-effect",
            "attributeAliases": [
              "data-vm-efeito"
            ],
            "type": "enum",
            "default": "slide",
            "values": [
              "slide",
              "fade",
              "blur",
              "flip"
            ],
            "description": "Como a troca acontece."
          }
        },
        "example": "Feito para <span data-vm=\"rotating-text\" data-vm-words=\"barbearias|clínicas|academias\">barbearias</span>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#rotating-text"
      },
      {
        "name": "circular-text",
        "aliases": [
          "texto-circular",
          "circularText"
        ],
        "category": "component",
        "bundle": "components",
        "description": "Texto distribuído num círculo que gira devagar (selo, carimbo). Acelera com o mouse em cima.",
        "params": {
          "speed": {
            "attribute": "data-vm-speed",
            "attributeAliases": [
              "data-vm-velocidade"
            ],
            "type": "time",
            "default": 18,
            "description": "Segundos por volta."
          },
          "size": {
            "attribute": "data-vm-size",
            "attributeAliases": [],
            "type": "length",
            "default": 140,
            "description": "Diâmetro em px."
          }
        },
        "example": "<div data-vm=\"circular-text\">VATSE • MOTION • VATSE • MOTION •</div>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#circular-text"
      },
      {
        "name": "proximity-text",
        "aliases": [
          "texto-proximidade",
          "variable-proximity",
          "proximityText"
        ],
        "category": "component",
        "bundle": "components",
        "description": "Cada letra fica mais pesada e maior conforme o cursor se aproxima (fonte variável funciona melhor; sem ela, usa escala).",
        "params": {
          "radius": {
            "attribute": "data-vm-radius",
            "attributeAliases": [
              "data-vm-raio",
              "data-vm-arredondamento"
            ],
            "type": "number",
            "default": 140,
            "description": "Raio de influência do cursor em px."
          },
          "weightFrom": {
            "attribute": "data-vm-weight-from",
            "attributeAliases": [],
            "type": "number",
            "default": 300,
            "description": "Peso longe do cursor."
          },
          "weightTo": {
            "attribute": "data-vm-weight-to",
            "attributeAliases": [],
            "type": "number",
            "default": 900,
            "description": "Peso perto do cursor."
          }
        },
        "example": "<h2 data-vm=\"proximity-text\">Passe o mouse</h2>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#proximity-text"
      },
      {
        "name": "aurora",
        "aliases": [
          "aurora-boreal",
          "fundo-aurora"
        ],
        "category": "component",
        "bundle": "components",
        "description": "Fundo de aurora: manchas de luz desfocadas que se movem devagar atrás do conteúdo. Só CSS, leve.",
        "params": {
          "colors": {
            "attribute": "data-vm-colors",
            "attributeAliases": [],
            "type": "string",
            "default": "",
            "description": "Até 3 cores separadas por vírgula (padrão: acento da marca)."
          },
          "speed": {
            "attribute": "data-vm-speed",
            "attributeAliases": [
              "data-vm-velocidade"
            ],
            "type": "time",
            "default": 18,
            "description": "Segundos por ciclo."
          },
          "intensity": {
            "attribute": "data-vm-intensity",
            "attributeAliases": [],
            "type": "number",
            "default": 0.55,
            "description": "Opacidade da luz (0 a 1)."
          }
        },
        "example": "<section data-vm=\"aurora\" style=\"min-height:70vh;display:grid;place-items:center;color:#fff\">\n  <h2>Seu título aqui</h2>\n</section>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#aurora"
      },
      {
        "name": "particles",
        "aliases": [
          "particulas",
          "partículas",
          "constelacao"
        ],
        "category": "component",
        "bundle": "components",
        "description": "Partículas flutuando no fundo, ligadas por linhas quando estão perto (constelação). O cursor afasta as partículas.",
        "params": {
          "count": {
            "attribute": "data-vm-count",
            "attributeAliases": [],
            "type": "number",
            "default": 70,
            "description": "Quantidade (reduz sozinho no celular)."
          },
          "links": {
            "attribute": "data-vm-links",
            "attributeAliases": [],
            "type": "boolean",
            "default": true,
            "description": "Desenhar linhas entre partículas próximas."
          },
          "color": {
            "attribute": "data-vm-color",
            "attributeAliases": [
              "data-vm-cor"
            ],
            "type": "color",
            "default": "",
            "description": "Cor (padrão: acento da marca)."
          },
          "speed": {
            "attribute": "data-vm-speed",
            "attributeAliases": [
              "data-vm-velocidade"
            ],
            "type": "number",
            "default": 0.3,
            "description": "Velocidade de deriva."
          }
        },
        "example": "<section data-vm=\"particles\" style=\"min-height:70vh;display:grid;place-items:center;color:#fff\">\n  <h2>Seu título aqui</h2>\n</section>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#particles"
      },
      {
        "name": "dot-grid",
        "aliases": [
          "grade-de-pontos",
          "pontos",
          "dotGrid"
        ],
        "category": "component",
        "bundle": "components",
        "description": "Grade de pontos no fundo que acende e cresce em volta do cursor, como uma lanterna.",
        "params": {
          "gap": {
            "attribute": "data-vm-gap",
            "attributeAliases": [],
            "type": "number",
            "default": 26,
            "description": "Distância entre pontos em px."
          },
          "radius": {
            "attribute": "data-vm-radius",
            "attributeAliases": [
              "data-vm-raio",
              "data-vm-arredondamento"
            ],
            "type": "number",
            "default": 160,
            "description": "Raio da luz do cursor."
          },
          "color": {
            "attribute": "data-vm-color",
            "attributeAliases": [
              "data-vm-cor"
            ],
            "type": "color",
            "default": "",
            "description": "Cor dos pontos acesos (padrão: acento)."
          }
        },
        "example": "<section data-vm=\"dot-grid\" style=\"min-height:70vh;display:grid;place-items:center;color:#fff\">\n  <h2>Seu título aqui</h2>\n</section>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#dot-grid"
      },
      {
        "name": "grain",
        "aliases": [
          "grao",
          "grão",
          "ruido",
          "film-grain"
        ],
        "category": "component",
        "bundle": "components",
        "description": "Grão de filme animado por cima da seção (textura de cinema). Só CSS.",
        "params": {
          "opacity": {
            "attribute": "data-vm-opacity",
            "attributeAliases": [],
            "type": "number",
            "default": 0.08,
            "description": "Intensidade do grão (0 a 1)."
          }
        },
        "example": "<section data-vm=\"grain\" style=\"min-height:70vh;display:grid;place-items:center;color:#fff\">\n  <h2>Seu título aqui</h2>\n</section>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#grain"
      },
      {
        "name": "circular-gallery",
        "aliases": [
          "galeria-circular",
          "carrossel-3d",
          "circularGallery"
        ],
        "category": "component",
        "bundle": "components",
        "description": "Imagens (filhos diretos) num anel 3D que gira devagar; arraste para girar com inércia.",
        "params": {
          "radius": {
            "attribute": "data-vm-radius",
            "attributeAliases": [
              "data-vm-raio",
              "data-vm-arredondamento"
            ],
            "type": "number",
            "default": 0,
            "description": "Raio do anel em px (0 = automático)."
          },
          "speed": {
            "attribute": "data-vm-speed",
            "attributeAliases": [
              "data-vm-velocidade"
            ],
            "type": "number",
            "default": 6,
            "description": "Graus por segundo do giro automático (0 = parado)."
          },
          "tilt": {
            "attribute": "data-vm-tilt",
            "attributeAliases": [],
            "type": "number",
            "default": -8,
            "description": "Inclinação do anel em graus."
          }
        },
        "example": "<div data-vm=\"circular-gallery\">\n  <img src=\"foto-1.jpg\" alt=\"\">\n  <img src=\"foto-2.jpg\" alt=\"\">\n  <img src=\"foto-3.jpg\" alt=\"\">\n  <img src=\"foto-4.jpg\" alt=\"\">\n  <img src=\"foto-5.jpg\" alt=\"\">\n  <img src=\"foto-6.jpg\" alt=\"\">\n  <img src=\"foto-7.jpg\" alt=\"\">\n  <img src=\"foto-8.jpg\" alt=\"\">\n</div>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#circular-gallery"
      },
      {
        "name": "dock",
        "aliases": [
          "doca",
          "dock-magnify"
        ],
        "category": "component",
        "bundle": "components",
        "description": "Barra de ícones que amplia o item sob o cursor e os vizinhos, como o Dock do macOS.",
        "params": {
          "magnify": {
            "attribute": "data-vm-magnify",
            "attributeAliases": [],
            "type": "number",
            "default": 1.45,
            "description": "Ampliação máxima do item sob o cursor."
          },
          "range": {
            "attribute": "data-vm-range",
            "attributeAliases": [],
            "type": "number",
            "default": 150,
            "description": "Distância (px) que afeta os vizinhos."
          }
        },
        "example": "<nav data-vm=\"dock\" aria-label=\"Atalhos\">\n  <a href=\"#\" aria-label=\"Início\"><svg width=\"22\" height=\"22\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.6\"><path d=\"M3 10.5 12 3l9 7.5V20a1 1 0 0 1-1 1h-5v-6h-6v6H4a1 1 0 0 1-1-1z\"/></svg></a>\n  <a href=\"#\" aria-label=\"Agenda\"><svg width=\"22\" height=\"22\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.6\"><rect x=\"3\" y=\"5\" width=\"18\" height=\"16\" rx=\"2\"/><path d=\"M3 10h18M8 3v4M16 3v4\"/></svg></a>\n  <a href=\"#\" aria-label=\"Clientes\"><svg width=\"22\" height=\"22\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.6\"><circle cx=\"9\" cy=\"8\" r=\"3\"/><path d=\"M3 20c0-3 3-5 6-5s6 2 6 5\"/></svg></a>\n  <a href=\"#\" aria-label=\"Ajustes\"><svg width=\"22\" height=\"22\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.6\"><circle cx=\"12\" cy=\"12\" r=\"3\"/><path d=\"M12 2v3M12 19v3M2 12h3M19 12h3\"/></svg></a>\n</nav>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#dock"
      },
      {
        "name": "click-spark",
        "aliases": [
          "faisca",
          "faísca",
          "clickSpark"
        ],
        "category": "component",
        "bundle": "components",
        "description": "Faíscas saem do ponto do clique dentro do elemento (ou na página toda, se colocado no <body>).",
        "params": {
          "count": {
            "attribute": "data-vm-count",
            "attributeAliases": [],
            "type": "number",
            "default": 8,
            "description": "Faíscas por clique."
          },
          "size": {
            "attribute": "data-vm-size",
            "attributeAliases": [],
            "type": "number",
            "default": 12,
            "description": "Comprimento das faíscas em px."
          },
          "color": {
            "attribute": "data-vm-color",
            "attributeAliases": [
              "data-vm-cor"
            ],
            "type": "color",
            "default": "",
            "description": "Cor (padrão: acento)."
          }
        },
        "example": "<body data-vm=\"click-spark\">",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#click-spark"
      },
      {
        "name": "image-trail",
        "aliases": [
          "rastro-de-imagens",
          "imageTrail"
        ],
        "category": "component",
        "bundle": "components",
        "description": "Ao mover o cursor sobre a área, imagens (de data-vm-images, separadas por |, ou das <img> filhas escondidas) vão aparecendo e sumindo no rastro.",
        "params": {
          "images": {
            "attribute": "data-vm-images",
            "attributeAliases": [],
            "type": "string",
            "default": "",
            "description": "URLs separadas por |."
          },
          "distance": {
            "attribute": "data-vm-distance",
            "attributeAliases": [
              "data-vm-distancia"
            ],
            "type": "number",
            "default": 120,
            "description": "Distância do cursor (px) entre uma imagem e a próxima."
          },
          "size": {
            "attribute": "data-vm-size",
            "attributeAliases": [],
            "type": "number",
            "default": 200,
            "description": "Largura das imagens em px."
          }
        },
        "example": "<section data-vm=\"image-trail\" data-vm-images=\"foto-1.jpg|foto-2.jpg|foto-3.jpg|foto-4.jpg\" style=\"min-height:60vh;display:grid;place-items:center\">\n  <h2>Passe o mouse</h2>\n</section>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#image-trail"
      },
      {
        "name": "spotlight",
        "aliases": [
          "holofote",
          "spotlight-card"
        ],
        "category": "component",
        "bundle": "components",
        "description": "Um holofote de luz suave segue o cursor dentro do cartão (borda e fundo acendem perto do mouse).",
        "params": {
          "size": {
            "attribute": "data-vm-size",
            "attributeAliases": [],
            "type": "number",
            "default": 320,
            "description": "Diâmetro do holofote em px."
          },
          "color": {
            "attribute": "data-vm-color",
            "attributeAliases": [
              "data-vm-cor"
            ],
            "type": "color",
            "default": "",
            "description": "Cor da luz (padrão: acento)."
          }
        },
        "example": "<article data-vm=\"spotlight\">\n  <h3>Suporte humano</h3>\n  <p>Gente de verdade responde em minutos.</p>\n</article>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#spotlight"
      },
      {
        "name": "split-flap",
        "aliases": [
          "letreiro-aeroporto",
          "flap",
          "splitFlap"
        ],
        "category": "text",
        "bundle": "components",
        "description": "Letreiro de aeroporto: cada letra gira por caracteres até parar na certa, da esquerda para a direita.",
        "params": {
          "speed": {
            "attribute": "data-vm-speed",
            "attributeAliases": [
              "data-vm-velocidade"
            ],
            "type": "number",
            "default": 22,
            "description": "Trocas por segundo em cada letra."
          },
          "each": {
            "attribute": "data-vm-each",
            "attributeAliases": [
              "data-vm-intervalo"
            ],
            "type": "time",
            "default": 0.06,
            "description": "Atraso entre uma letra e a próxima."
          },
          "chars": {
            "attribute": "data-vm-chars",
            "attributeAliases": [],
            "type": "string",
            "default": "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789",
            "description": "Caracteres que passam no giro."
          }
        },
        "example": "<h2 data-vm=\"split-flap\">PARTIDA 18:45</h2>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#split-flap"
      },
      {
        "name": "scroll-float",
        "aliases": [
          "letras-flutuam",
          "scrollFloat"
        ],
        "category": "text",
        "bundle": "components",
        "description": "As letras sobem esticadas e assentam conforme a página rola (presas à rolagem).",
        "params": {
          "start": {
            "attribute": "data-vm-start",
            "attributeAliases": [
              "data-vm-inicio"
            ],
            "type": "string",
            "default": "top 90%",
            "description": "Início da cena."
          },
          "end": {
            "attribute": "data-vm-end",
            "attributeAliases": [
              "data-vm-fim"
            ],
            "type": "string",
            "default": "center 55%",
            "description": "Fim da cena."
          }
        },
        "example": "<h2 data-vm=\"scroll-float\">Leve como o ar</h2>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#scroll-float"
      },
      {
        "name": "true-focus",
        "aliases": [
          "foco",
          "trueFocus"
        ],
        "category": "text",
        "bundle": "components",
        "description": "Uma palavra por vez fica nítida e emoldurada por cantos; as outras ficam desfocadas. O foco passeia sozinho ou segue o mouse.",
        "params": {
          "blur": {
            "attribute": "data-vm-blur",
            "attributeAliases": [
              "data-vm-desfoque"
            ],
            "type": "number",
            "default": 5,
            "description": "Desfoque das palavras fora do foco (px)."
          },
          "interval": {
            "attribute": "data-vm-interval",
            "attributeAliases": [],
            "type": "time",
            "default": 1.6,
            "description": "Tempo em cada palavra."
          },
          "manual": {
            "attribute": "data-vm-manual",
            "attributeAliases": [],
            "type": "boolean",
            "default": false,
            "description": "O foco segue o mouse em vez de passear sozinho."
          }
        },
        "example": "<h2 data-vm=\"true-focus\">Atenção ao que importa</h2>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#true-focus"
      },
      {
        "name": "curved-loop",
        "aliases": [
          "texto-em-curva",
          "curvedLoop",
          "texto-curvo"
        ],
        "category": "text",
        "bundle": "components",
        "description": "Uma faixa de texto corre sem fim ao longo de uma curva suave. A rolagem acelera; dá para arrastar.",
        "params": {
          "speed": {
            "attribute": "data-vm-speed",
            "attributeAliases": [
              "data-vm-velocidade"
            ],
            "type": "number",
            "default": 60,
            "description": "Velocidade em px por segundo."
          },
          "curve": {
            "attribute": "data-vm-curve",
            "attributeAliases": [],
            "type": "number",
            "default": 80,
            "description": "Altura da curva em px (0 = reta)."
          },
          "direction": {
            "attribute": "data-vm-direction",
            "attributeAliases": [
              "data-vm-direcao"
            ],
            "type": "enum",
            "default": "left",
            "values": [
              "left",
              "right"
            ],
            "description": "Direção."
          }
        },
        "example": "<div data-vm=\"curved-loop\">Design ✦ Código ✦ Movimento ✦</div>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#curved-loop"
      },
      {
        "name": "stroke-text",
        "aliases": [
          "texto-contorno",
          "contorno",
          "strokeText"
        ],
        "category": "text",
        "bundle": "components",
        "description": "O contorno das letras é desenhado como caneta e depois o preenchimento aparece.",
        "params": {
          "duration": {
            "attribute": "data-vm-duration",
            "attributeAliases": [
              "data-vm-duracao"
            ],
            "type": "time",
            "default": 2.2,
            "description": "Duração do desenho."
          },
          "fill": {
            "attribute": "data-vm-fill",
            "attributeAliases": [],
            "type": "boolean",
            "default": true,
            "description": "Preencher depois de desenhar."
          }
        },
        "example": "<h2 data-vm=\"stroke-text\">Assinatura</h2>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#stroke-text"
      },
      {
        "name": "star-border",
        "aliases": [
          "borda-estrela",
          "starBorder"
        ],
        "category": "component",
        "bundle": "components",
        "description": "Uma luz percorre a borda do botão ou cartão continuamente, como um cometa.",
        "params": {
          "speed": {
            "attribute": "data-vm-speed",
            "attributeAliases": [
              "data-vm-velocidade"
            ],
            "type": "time",
            "default": 5,
            "description": "Segundos por volta."
          },
          "color": {
            "attribute": "data-vm-color",
            "attributeAliases": [
              "data-vm-cor"
            ],
            "type": "color",
            "default": "",
            "description": "Cor da luz (padrão: acento)."
          }
        },
        "example": "<a class=\"botao\" data-vm=\"star-border\" href=\"#\">Começar</a>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#star-border"
      },
      {
        "name": "border-glow",
        "aliases": [
          "borda-brilhante",
          "borderGlow"
        ],
        "category": "component",
        "bundle": "components",
        "description": "A borda do cartão acende no trecho mais perto do cursor (luz que segue o mouse pela borda).",
        "params": {
          "size": {
            "attribute": "data-vm-size",
            "attributeAliases": [],
            "type": "number",
            "default": 260,
            "description": "Tamanho da área de luz em px."
          },
          "color": {
            "attribute": "data-vm-color",
            "attributeAliases": [
              "data-vm-cor"
            ],
            "type": "color",
            "default": "",
            "description": "Cor (padrão: acento)."
          }
        },
        "example": "<article data-vm=\"border-glow\">\n  <h3>Plano Empresa</h3>\n  <p>Equipe, permissões e vários CNPJs.</p>\n</article>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#border-glow"
      },
      {
        "name": "glare-hover",
        "aliases": [
          "reflexo",
          "glareHover"
        ],
        "category": "component",
        "bundle": "components",
        "description": "Um reflexo de luz atravessa o elemento na diagonal quando o mouse entra.",
        "params": {
          "duration": {
            "attribute": "data-vm-duration",
            "attributeAliases": [
              "data-vm-duracao"
            ],
            "type": "time",
            "default": 0.8,
            "description": "Duração da passada."
          },
          "opacity": {
            "attribute": "data-vm-opacity",
            "attributeAliases": [],
            "type": "number",
            "default": 0.35,
            "description": "Intensidade do reflexo."
          }
        },
        "example": "<figure data-vm=\"glare-hover\"><img src=\"foto-4.jpg\" alt=\"\"></figure>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#glare-hover"
      },
      {
        "name": "gradual-blur",
        "aliases": [
          "desfoque-gradual",
          "gradualBlur",
          "edge-blur"
        ],
        "category": "component",
        "bundle": "components",
        "description": "Desfoque progressivo na borda da área (o conteúdo some suavemente ao rolar por baixo), como nos apps da Apple.",
        "params": {
          "position": {
            "attribute": "data-vm-position",
            "attributeAliases": [],
            "type": "enum",
            "default": "bottom",
            "values": [
              "bottom",
              "top"
            ],
            "description": "Borda com o desfoque."
          },
          "height": {
            "attribute": "data-vm-height",
            "attributeAliases": [],
            "type": "length",
            "default": "7rem",
            "description": "Altura da faixa."
          },
          "strength": {
            "attribute": "data-vm-strength",
            "attributeAliases": [
              "data-vm-forca"
            ],
            "type": "number",
            "default": 8,
            "description": "Desfoque máximo em px."
          }
        },
        "example": "<div data-vm=\"gradual-blur\" style=\"max-height:320px;overflow:auto\">\n  <p>Texto longo que rola por baixo de um desfoque suave na borda inferior. Continue lendo e veja o conteúdo sumir com elegância, sem corte seco.</p>\n  <p>Funciona bem em listas, chats, termos de uso e qualquer área com rolagem própria.</p>\n  <p>A borda pode ficar em cima ou em baixo.</p>\n</div>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#gradual-blur"
      },
      {
        "name": "logo-loop",
        "aliases": [
          "faixa-de-logos",
          "logoLoop",
          "logos"
        ],
        "category": "component",
        "bundle": "components",
        "description": "Faixa infinita de logos com as pontas esmaecidas; pausa (e fica mais lenta) com o mouse em cima.",
        "params": {
          "speed": {
            "attribute": "data-vm-speed",
            "attributeAliases": [
              "data-vm-velocidade"
            ],
            "type": "number",
            "default": 40,
            "description": "Velocidade em px por segundo."
          },
          "direction": {
            "attribute": "data-vm-direction",
            "attributeAliases": [
              "data-vm-direcao"
            ],
            "type": "enum",
            "default": "left",
            "values": [
              "left",
              "right"
            ],
            "description": "Direção."
          },
          "gap": {
            "attribute": "data-vm-gap",
            "attributeAliases": [],
            "type": "length",
            "default": 56,
            "description": "Espaço entre logos."
          },
          "fade": {
            "attribute": "data-vm-fade",
            "attributeAliases": [],
            "type": "boolean",
            "default": true,
            "description": "Esmaecer as pontas."
          }
        },
        "example": "<div data-vm=\"logo-loop\">\n  <span>Aurora</span><span>Litoral</span><span>Casa Alta</span><span>Pedra Azul</span><span>Norte Sul</span>\n</div>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#logo-loop"
      },
      {
        "name": "target-cursor",
        "aliases": [
          "cursor-mira",
          "targetCursor"
        ],
        "category": "component",
        "bundle": "components",
        "description": "Cursor de mira: quatro cantos giram devagar e, sobre links e botões, se encaixam em volta do elemento. Coloque no <body>.",
        "params": {
          "selector": {
            "attribute": "data-vm-selector",
            "attributeAliases": [
              "data-vm-seletor"
            ],
            "type": "selector",
            "default": "a, button, [data-vm-target]",
            "description": "O que a mira abraça."
          }
        },
        "example": "<body data-vm=\"target-cursor\">",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#target-cursor"
      },
      {
        "name": "blob-cursor",
        "aliases": [
          "cursor-gota",
          "blobCursor"
        ],
        "category": "component",
        "bundle": "components",
        "description": "Gotas líquidas seguem o cursor e se fundem (efeito gooey).",
        "params": {
          "color": {
            "attribute": "data-vm-color",
            "attributeAliases": [
              "data-vm-cor"
            ],
            "type": "color",
            "default": "",
            "description": "Cor (padrão: acento)."
          },
          "size": {
            "attribute": "data-vm-size",
            "attributeAliases": [],
            "type": "number",
            "default": 54,
            "description": "Tamanho da gota principal."
          }
        },
        "example": "<section data-vm=\"blob-cursor\" style=\"min-height:60vh;display:grid;place-items:center\">\n  <h2>Passe o mouse</h2>\n</section>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#blob-cursor"
      },
      {
        "name": "magnet-lines",
        "aliases": [
          "linhas-ima",
          "magnetLines"
        ],
        "category": "component",
        "bundle": "components",
        "description": "Grade de tracinhos que giram para apontar para o cursor, como limalha perto de um ímã.",
        "params": {
          "rows": {
            "attribute": "data-vm-rows",
            "attributeAliases": [],
            "type": "number",
            "default": 9,
            "description": "Linhas da grade."
          },
          "columns": {
            "attribute": "data-vm-columns",
            "attributeAliases": [
              "data-vm-colunas"
            ],
            "type": "number",
            "default": 9,
            "description": "Colunas da grade."
          },
          "color": {
            "attribute": "data-vm-color",
            "attributeAliases": [
              "data-vm-cor"
            ],
            "type": "color",
            "default": "",
            "description": "Cor dos traços (padrão: acento)."
          }
        },
        "example": "<div data-vm=\"magnet-lines\" style=\"width:340px;height:340px\"></div>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#magnet-lines"
      },
      {
        "name": "pixel-transition",
        "aliases": [
          "transicao-pixel",
          "pixelTransition"
        ],
        "category": "component",
        "bundle": "components",
        "description": "No hover, uma grade de pixels cobre o cartão e revela o conteúdo de trás ([data-vm-back]).",
        "params": {
          "grid": {
            "attribute": "data-vm-grid",
            "attributeAliases": [],
            "type": "number",
            "default": 12,
            "description": "Pixels por lado."
          },
          "duration": {
            "attribute": "data-vm-duration",
            "attributeAliases": [
              "data-vm-duracao"
            ],
            "type": "time",
            "default": 0.45,
            "description": "Duração da cobertura."
          },
          "color": {
            "attribute": "data-vm-color",
            "attributeAliases": [
              "data-vm-cor"
            ],
            "type": "color",
            "default": "",
            "description": "Cor dos pixels (padrão: acento)."
          }
        },
        "example": "<div data-vm=\"pixel-transition\" style=\"width:320px;height:220px;border-radius:16px\">\n  <img src=\"foto-1.jpg\" alt=\"\" style=\"width:100%;height:100%;object-fit:cover\">\n  <div data-vm-back style=\"display:grid;place-items:center;background:#111;color:#fff\">Ver detalhes</div>\n</div>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#pixel-transition"
      },
      {
        "name": "flowing-menu",
        "aliases": [
          "menu-fluido",
          "flowingMenu"
        ],
        "category": "component",
        "bundle": "components",
        "description": "Menu em lista grande: no hover, uma faixa com texto e imagem corre por dentro do item, entrando pelo lado de onde o mouse veio.",
        "params": {
          "speed": {
            "attribute": "data-vm-speed",
            "attributeAliases": [
              "data-vm-velocidade"
            ],
            "type": "number",
            "default": 80,
            "description": "Velocidade da faixa em px/s."
          }
        },
        "example": "<nav data-vm=\"flowing-menu\">\n  <a href=\"#\" data-vm-image=\"foto-1.jpg\">Projetos</a>\n  <a href=\"#\" data-vm-image=\"foto-2.jpg\">Estúdio</a>\n  <a href=\"#\" data-vm-image=\"foto-3.jpg\">Contato</a>\n</nav>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#flowing-menu"
      },
      {
        "name": "accordion-gallery",
        "aliases": [
          "galeria-sanfona",
          "accordionGallery",
          "expanding-panels"
        ],
        "category": "component",
        "bundle": "components",
        "description": "Painéis lado a lado: o que está sob o mouse (ou com foco) se abre e os outros encolhem, com legenda aparecendo.",
        "params": {
          "grow": {
            "attribute": "data-vm-grow",
            "attributeAliases": [],
            "type": "number",
            "default": 4,
            "description": "Quanto o painel aberto cresce em relação aos outros."
          }
        },
        "example": "<div data-vm=\"accordion-gallery\" style=\"height:420px\">\n  <figure><img src=\"foto-1.jpg\" alt=\"\"><figcaption>Cortes</figcaption></figure>\n  <figure><img src=\"foto-2.jpg\" alt=\"\"><figcaption>Barba</figcaption></figure>\n  <figure><img src=\"foto-3.jpg\" alt=\"\"><figcaption>Tratamentos</figcaption></figure>\n  <figure><img src=\"foto-4.jpg\" alt=\"\"><figcaption>Produtos</figcaption></figure>\n</div>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#accordion-gallery"
      },
      {
        "name": "magic-bento",
        "aliases": [
          "bento-magico",
          "bento",
          "magicBento"
        ],
        "category": "component",
        "bundle": "components",
        "description": "Grade bento: cada cartão tem holofote que segue o mouse, borda que acende e uma leve inclinação.",
        "params": {
          "tilt": {
            "attribute": "data-vm-tilt",
            "attributeAliases": [],
            "type": "number",
            "default": 4,
            "description": "Inclinação máxima em graus."
          }
        },
        "example": "<div data-vm=\"magic-bento\">\n  <article><h3>Agenda</h3><p>Horários sem conflito.</p></article>\n  <article><h3>Pagamentos</h3><p>Pix e cartão.</p></article>\n  <article><h3>Clientes</h3><p>Histórico completo.</p></article>\n  <article><h3>Relatórios</h3><p>O mês numa tela.</p></article>\n</div>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#magic-bento"
      },
      {
        "name": "card-swap",
        "aliases": [
          "troca-de-cartoes",
          "cardSwap",
          "card-stack"
        ],
        "category": "component",
        "bundle": "components",
        "description": "Pilha de cartões em perspectiva: de tempos em tempos o da frente cai e volta para o fundo. Clique avança.",
        "params": {
          "interval": {
            "attribute": "data-vm-interval",
            "attributeAliases": [],
            "type": "time",
            "default": 3.2,
            "description": "Segundos entre trocas."
          },
          "offset": {
            "attribute": "data-vm-offset",
            "attributeAliases": [],
            "type": "number",
            "default": 34,
            "description": "Deslocamento entre cartões em px."
          }
        },
        "example": "<div data-vm=\"card-swap\">\n  <article><h3>Agenda</h3><p>Horários sem conflito.</p></article>\n  <article><h3>Pagamentos</h3><p>Pix e cartão no agendamento.</p></article>\n  <article><h3>Relatórios</h3><p>O mês inteiro numa tela.</p></article>\n</div>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#card-swap"
      },
      {
        "name": "bounce-cards",
        "aliases": [
          "cartoes-em-leque",
          "bounceCards",
          "fan-cards"
        ],
        "category": "component",
        "bundle": "components",
        "description": "Cartões abertos em leque que entram quicando; no hover, o cartão sobe e os vizinhos se afastam.",
        "params": {
          "spread": {
            "attribute": "data-vm-spread",
            "attributeAliases": [],
            "type": "number",
            "default": 9,
            "description": "Abertura do leque em graus por cartão."
          }
        },
        "example": "<div data-vm=\"bounce-cards\">\n  <img src=\"foto-1.jpg\" alt=\"\">\n  <img src=\"foto-2.jpg\" alt=\"\">\n  <img src=\"foto-3.jpg\" alt=\"\">\n  <img src=\"foto-4.jpg\" alt=\"\">\n  <img src=\"foto-5.jpg\" alt=\"\">\n</div>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#bounce-cards"
      },
      {
        "name": "masonry",
        "aliases": [
          "alvenaria",
          "grade-masonry",
          "pinterest"
        ],
        "category": "component",
        "bundle": "components",
        "description": "Grade estilo Pinterest (colunas de alturas diferentes) que se monta com entrada em cascata e se reorganiza animando quando a largura muda.",
        "params": {
          "columns": {
            "attribute": "data-vm-columns",
            "attributeAliases": [
              "data-vm-colunas"
            ],
            "type": "number",
            "default": 0,
            "description": "Colunas (0 = automático pela largura)."
          },
          "gap": {
            "attribute": "data-vm-gap",
            "attributeAliases": [],
            "type": "number",
            "default": 14,
            "description": "Espaço em px."
          },
          "minWidth": {
            "attribute": "data-vm-min-width",
            "attributeAliases": [],
            "type": "number",
            "default": 240,
            "description": "Largura mínima da coluna no modo automático."
          }
        },
        "example": "<div data-vm=\"masonry\">\n  <img src=\"foto-1.jpg\" alt=\"\">\n  <img src=\"foto-2.jpg\" alt=\"\">\n  <img src=\"foto-3.jpg\" alt=\"\">\n  <img src=\"foto-4.jpg\" alt=\"\">\n  <img src=\"foto-5.jpg\" alt=\"\">\n  <img src=\"foto-6.jpg\" alt=\"\">\n  <img src=\"foto-7.jpg\" alt=\"\">\n  <img src=\"foto-8.jpg\" alt=\"\">\n  <img src=\"foto-9.jpg\" alt=\"\">\n</div>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#masonry"
      },
      {
        "name": "dome-gallery",
        "aliases": [
          "galeria-cupula",
          "domeGallery",
          "sphere-gallery"
        ],
        "category": "component",
        "bundle": "components",
        "description": "Imagens montadas por dentro de uma cúpula 3D; arraste para girar com inércia (exposição imersiva).",
        "params": {
          "radius": {
            "attribute": "data-vm-radius",
            "attributeAliases": [
              "data-vm-raio",
              "data-vm-arredondamento"
            ],
            "type": "number",
            "default": 560,
            "description": "Raio da cúpula em px."
          },
          "columns": {
            "attribute": "data-vm-columns",
            "attributeAliases": [
              "data-vm-colunas"
            ],
            "type": "number",
            "default": 12,
            "description": "Imagens por volta."
          }
        },
        "example": "<div data-vm=\"dome-gallery\" style=\"height:560px\">\n  <img src=\"foto-1.jpg\" alt=\"\">\n  <img src=\"foto-2.jpg\" alt=\"\">\n  <img src=\"foto-3.jpg\" alt=\"\">\n  <img src=\"foto-4.jpg\" alt=\"\">\n  <img src=\"foto-5.jpg\" alt=\"\">\n  <img src=\"foto-6.jpg\" alt=\"\">\n  <img src=\"foto-7.jpg\" alt=\"\">\n  <img src=\"foto-8.jpg\" alt=\"\">\n  <img src=\"foto-9.jpg\" alt=\"\">\n  <img src=\"foto-10.jpg\" alt=\"\">\n  <img src=\"foto-11.jpg\" alt=\"\">\n  <img src=\"foto-12.jpg\" alt=\"\">\n  <img src=\"foto-13.jpg\" alt=\"\">\n  <img src=\"foto-14.jpg\" alt=\"\">\n  <img src=\"foto-15.jpg\" alt=\"\">\n  <img src=\"foto-16.jpg\" alt=\"\">\n  <img src=\"foto-17.jpg\" alt=\"\">\n  <img src=\"foto-18.jpg\" alt=\"\">\n  <img src=\"foto-19.jpg\" alt=\"\">\n  <img src=\"foto-20.jpg\" alt=\"\">\n  <img src=\"foto-21.jpg\" alt=\"\">\n  <img src=\"foto-22.jpg\" alt=\"\">\n  <img src=\"foto-23.jpg\" alt=\"\">\n  <img src=\"foto-24.jpg\" alt=\"\">\n</div>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#dome-gallery"
      },
      {
        "name": "orbit-images",
        "aliases": [
          "imagens-em-orbita",
          "orbitImages",
          "orbit"
        ],
        "category": "component",
        "bundle": "components",
        "description": "Imagens orbitando em elipse ao redor do conteúdo central, com profundidade (as de trás ficam menores e apagadas).",
        "params": {
          "speed": {
            "attribute": "data-vm-speed",
            "attributeAliases": [
              "data-vm-velocidade"
            ],
            "type": "time",
            "default": 26,
            "description": "Segundos por volta."
          },
          "rx": {
            "attribute": "data-vm-rx",
            "attributeAliases": [],
            "type": "number",
            "default": 0.38,
            "description": "Raio horizontal (fração da largura)."
          },
          "ry": {
            "attribute": "data-vm-ry",
            "attributeAliases": [],
            "type": "number",
            "default": 0.14,
            "description": "Raio vertical (fração da altura)."
          }
        },
        "example": "<div data-vm=\"orbit-images\" style=\"height:480px\">\n  <h2 data-vm-center>Nossos clientes</h2>\n  <img src=\"foto-1.jpg\" alt=\"\">\n  <img src=\"foto-2.jpg\" alt=\"\">\n  <img src=\"foto-3.jpg\" alt=\"\">\n  <img src=\"foto-4.jpg\" alt=\"\">\n  <img src=\"foto-5.jpg\" alt=\"\">\n  <img src=\"foto-6.jpg\" alt=\"\">\n</div>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#orbit-images"
      },
      {
        "name": "pill-nav",
        "aliases": [
          "menu-pilula",
          "pillNav"
        ],
        "category": "component",
        "bundle": "components",
        "description": "Menu com uma pílula de fundo que desliza até o item sob o mouse e volta para o item ativo ([aria-current] ou .is-active).",
        "params": {},
        "example": "<nav data-vm=\"pill-nav\">\n  <a href=\"#\" aria-current=\"page\">Início</a><a href=\"#\">Sobre</a><a href=\"#\">Contato</a>\n</nav>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#pill-nav"
      },
      {
        "name": "elastic-slider",
        "aliases": [
          "controle-elastico",
          "elasticSlider"
        ],
        "category": "component",
        "bundle": "components",
        "description": "Controle deslizante (input range) com elástico: puxado além das pontas, estica e volta com mola. Mantém o <input> nativo, acessível.",
        "params": {
          "stretch": {
            "attribute": "data-vm-stretch",
            "attributeAliases": [],
            "type": "number",
            "default": 0.12,
            "description": "Quanto estica nas pontas (fração)."
          }
        },
        "example": "<input type=\"range\" data-vm=\"elastic-slider\" min=\"0\" max=\"100\" value=\"40\" aria-label=\"Volume\">",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#elastic-slider"
      },
      {
        "name": "animated-list",
        "aliases": [
          "lista-animada",
          "animatedList"
        ],
        "category": "component",
        "bundle": "components",
        "description": "Lista com rolagem própria: itens entram em cascata e crescem levemente ao ficar no centro; setas do teclado navegam.",
        "params": {
          "height": {
            "attribute": "data-vm-height",
            "attributeAliases": [],
            "type": "length",
            "default": "420px",
            "description": "Altura visível da lista."
          }
        },
        "example": "<ul data-vm=\"animated-list\" data-vm-height=\"320px\">\n  <li>Ana Souza, corte 14h</li>\n  <li>Bruno Lima, barba 14h30</li>\n  <li>Carla Dias, coloração 15h</li>\n  <li>Diego Reis, corte 16h</li>\n  <li>Eva Matos, escova 16h30</li>\n  <li>Felipe Alves, corte 17h</li>\n</ul>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#animated-list"
      },
      {
        "name": "blur-text",
        "aliases": [
          "texto-desfocado",
          "blurText"
        ],
        "category": "text",
        "bundle": "components",
        "description": "As palavras (ou letras) chegam saindo do desfoque, em cascata, com leve subida. Elegante para títulos de abertura.",
        "params": {
          "by": {
            "attribute": "data-vm-by",
            "attributeAliases": [
              "data-vm-por"
            ],
            "type": "enum",
            "default": "words",
            "values": [
              "words",
              "chars"
            ],
            "description": "Unidade."
          },
          "direction": {
            "attribute": "data-vm-direction",
            "attributeAliases": [
              "data-vm-direcao"
            ],
            "type": "enum",
            "default": "top",
            "values": [
              "top",
              "bottom"
            ],
            "description": "De onde as unidades vêm."
          },
          "each": {
            "attribute": "data-vm-each",
            "attributeAliases": [
              "data-vm-intervalo"
            ],
            "type": "time",
            "default": 0.07,
            "description": "Intervalo entre unidades."
          }
        },
        "example": "<h2 data-vm=\"blur-text\">Simples por fora, completo por dentro.</h2>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#blur-text"
      },
      {
        "name": "shuffle-text",
        "aliases": [
          "embaralhar-hover",
          "shuffle"
        ],
        "category": "text",
        "bundle": "components",
        "description": "No hover (e ao aparecer), as letras trocam por símbolos e voltam ao lugar uma a uma, da esquerda para a direita.",
        "params": {
          "chars": {
            "attribute": "data-vm-chars",
            "attributeAliases": [],
            "type": "string",
            "default": "01!<>-_\\/[]{}=+*^?#ABCDEFGHIJKLMNOPQRSTUVWXYZ",
            "description": "Caracteres usados no embaralhamento."
          },
          "speed": {
            "attribute": "data-vm-speed",
            "attributeAliases": [
              "data-vm-velocidade"
            ],
            "type": "number",
            "default": 45,
            "description": "Letras assentadas por segundo."
          }
        },
        "example": "<a href=\"#\" data-vm=\"shuffle-text\">Ver o projeto</a>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#shuffle-text"
      },
      {
        "name": "wave-text",
        "aliases": [
          "texto-onda",
          "waveText"
        ],
        "category": "text",
        "bundle": "components",
        "description": "Uma onda suave percorre as letras continuamente (ou só no hover). Bom para chamadas curtas e selos.",
        "params": {
          "amplitude": {
            "attribute": "data-vm-amplitude",
            "attributeAliases": [],
            "type": "number",
            "default": 0.12,
            "description": "Altura da onda em em (0,12 = 12% da fonte)."
          },
          "speed": {
            "attribute": "data-vm-speed",
            "attributeAliases": [
              "data-vm-velocidade"
            ],
            "type": "number",
            "default": 2.2,
            "description": "Ciclos por segundo."
          },
          "hover": {
            "attribute": "data-vm-hover",
            "attributeAliases": [],
            "type": "boolean",
            "default": false,
            "description": "Só ondular com o mouse em cima."
          }
        },
        "example": "<p data-vm=\"wave-text\" style=\"font-size:2.6rem;font-weight:650;letter-spacing:-.03em\">Agende em 30 segundos</p>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#wave-text"
      },
      {
        "name": "falling-text",
        "aliases": [
          "texto-cai",
          "fallingText",
          "gravity-text"
        ],
        "category": "text",
        "bundle": "components",
        "description": "Ao clicar (ou passar o mouse), as palavras se soltam e caem com gravidade, quicam no chão do bloco e se espalham. Clique de novo para voltar.",
        "params": {
          "trigger": {
            "attribute": "data-vm-trigger",
            "attributeAliases": [
              "data-vm-gatilho"
            ],
            "type": "enum",
            "default": "click",
            "values": [
              "click",
              "hover",
              "view",
              "load"
            ],
            "description": "O que solta as palavras (load = logo ao abrir)."
          },
          "gravity": {
            "attribute": "data-vm-gravity",
            "attributeAliases": [],
            "type": "number",
            "default": 2200,
            "description": "Gravidade em px/s²."
          }
        },
        "example": "<div data-vm=\"falling-text\" style=\"height:320px;font-size:2.2rem;font-weight:650;letter-spacing:-.03em;line-height:1.1\">Clique e veja as palavras caírem com gravidade de verdade</div>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#falling-text"
      },
      {
        "name": "echo-text",
        "aliases": [
          "texto-eco",
          "echoText"
        ],
        "category": "text",
        "bundle": "components",
        "description": "Cópias do título em camadas, deslocadas e cada vez mais apagadas, que acompanham o cursor (efeito de profundidade e eco).",
        "params": {
          "layers": {
            "attribute": "data-vm-layers",
            "attributeAliases": [],
            "type": "number",
            "default": 5,
            "description": "Quantidade de ecos."
          },
          "distance": {
            "attribute": "data-vm-distance",
            "attributeAliases": [
              "data-vm-distancia"
            ],
            "type": "number",
            "default": 8,
            "description": "Distância máxima entre ecos (px)."
          }
        },
        "example": "<h2 data-vm=\"echo-text\" style=\"font-size:8rem;font-weight:800;letter-spacing:-.05em;line-height:1\">ECO</h2>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#echo-text"
      },
      {
        "name": "masked-text",
        "aliases": [
          "texto-com-imagem",
          "image-text",
          "maskedText"
        ],
        "category": "text",
        "bundle": "components",
        "description": "A imagem (ou degradê animado) aparece dentro das letras e desliza devagar. Use em títulos grandes e grossos.",
        "params": {
          "image": {
            "attribute": "data-vm-image",
            "attributeAliases": [],
            "type": "string",
            "default": "",
            "description": "Imagem dentro das letras (padrão: degradê da cor do tema)."
          },
          "speed": {
            "attribute": "data-vm-speed",
            "attributeAliases": [
              "data-vm-velocidade"
            ],
            "type": "time",
            "default": 14,
            "description": "Segundos por passada da imagem."
          }
        },
        "example": "<h2 data-vm=\"masked-text\" data-vm-image=\"foto-1.jpg\" style=\"font-size:8rem;font-weight:800\">VERÃO</h2>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#masked-text"
      },
      {
        "name": "odometer",
        "aliases": [
          "odometro",
          "contador-rolante",
          "rolling-number"
        ],
        "category": "text",
        "bundle": "components",
        "description": "Número com dígitos que rolam como num odômetro até o valor (cada casa gira na sua velocidade). Mais vivo que um contador comum.",
        "params": {
          "duration": {
            "attribute": "data-vm-duration",
            "attributeAliases": [
              "data-vm-duracao"
            ],
            "type": "time",
            "default": 1.8,
            "description": "Duração."
          },
          "prefix": {
            "attribute": "data-vm-prefix",
            "attributeAliases": [
              "data-vm-prefixo"
            ],
            "type": "string",
            "default": "",
            "description": "Texto antes (ex.: R$ )."
          },
          "suffix": {
            "attribute": "data-vm-suffix",
            "attributeAliases": [
              "data-vm-sufixo"
            ],
            "type": "string",
            "default": "",
            "description": "Texto depois (ex.: +)."
          }
        },
        "example": "<strong data-vm=\"odometer\" data-vm-suffix=\"+\" style=\"font-size:4rem\">12.480</strong>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#odometer"
      },
      {
        "name": "text-pressure",
        "aliases": [
          "pressao-de-texto",
          "textPressure"
        ],
        "category": "text",
        "bundle": "components",
        "description": "Título largo cujas letras engrossam e esticam conforme a distância do cursor (fonte variável fica ainda melhor). Bom para heróis tipográficos.",
        "params": {
          "radius": {
            "attribute": "data-vm-radius",
            "attributeAliases": [
              "data-vm-raio",
              "data-vm-arredondamento"
            ],
            "type": "number",
            "default": 260,
            "description": "Raio de influência do cursor."
          },
          "min": {
            "attribute": "data-vm-min",
            "attributeAliases": [],
            "type": "number",
            "default": 300,
            "description": "Peso em repouso (longe do cursor). Pode ser maior que max para afinar perto do cursor."
          },
          "max": {
            "attribute": "data-vm-max",
            "attributeAliases": [
              "data-vm-maximo"
            ],
            "type": "number",
            "default": 800,
            "description": "Peso bem embaixo do cursor (limite da sua fonte)."
          }
        },
        "example": "<h1 data-vm=\"text-pressure\" style=\"font-size:7rem\">PRESSÃO</h1>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#text-pressure"
      },
      {
        "name": "electric-border",
        "aliases": [
          "borda-eletrica",
          "electricBorder"
        ],
        "category": "component",
        "bundle": "components",
        "description": "Borda elétrica: um contorno de energia trêmulo e brilhante em volta do cartão (turbulência em SVG animada).",
        "params": {
          "color": {
            "attribute": "data-vm-color",
            "attributeAliases": [
              "data-vm-cor"
            ],
            "type": "color",
            "default": "",
            "description": "Cor da energia (padrão: acento)."
          },
          "intensity": {
            "attribute": "data-vm-intensity",
            "attributeAliases": [],
            "type": "number",
            "default": 1,
            "description": "Força da tremedeira (0,5 a 2)."
          }
        },
        "example": "<article data-vm=\"electric-border\" style=\"max-width:340px\">\n  <h3>Plano Turbo</h3>\n  <p>Tudo ilimitado, com prioridade.</p>\n</article>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#electric-border"
      },
      {
        "name": "sticker-peel",
        "aliases": [
          "adesivo",
          "stickerPeel"
        ],
        "category": "component",
        "bundle": "components",
        "description": "Adesivo (imagem ou selo) que descola pelo canto no hover, mostrando o verso, e volta ao sair.",
        "params": {
          "peel": {
            "attribute": "data-vm-peel",
            "attributeAliases": [],
            "type": "number",
            "default": 0.32,
            "description": "Quanto descola (0 a 0,6)."
          }
        },
        "example": "<figure data-vm=\"sticker-peel\" style=\"width:220px\"><img src=\"foto-1.jpg\" alt=\"\"></figure>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#sticker-peel"
      },
      {
        "name": "chroma-grid",
        "aliases": [
          "grade-cromatica",
          "chromaGrid",
          "reveal-color"
        ],
        "category": "component",
        "bundle": "components",
        "description": "Grade de fotos em preto e branco: em volta do cursor elas ganham cor, como uma lanterna de cor.",
        "params": {
          "radius": {
            "attribute": "data-vm-radius",
            "attributeAliases": [
              "data-vm-raio",
              "data-vm-arredondamento"
            ],
            "type": "number",
            "default": 280,
            "description": "Raio da área colorida em px."
          }
        },
        "example": "<div data-vm=\"chroma-grid\" style=\"display:grid;grid-template-columns:repeat(3,1fr);gap:10px\">\n  <img src=\"foto-1.jpg\" alt=\"\"><img src=\"foto-2.jpg\" alt=\"\"><img src=\"foto-3.jpg\" alt=\"\">\n  <img src=\"foto-4.jpg\" alt=\"\"><img src=\"foto-5.jpg\" alt=\"\"><img src=\"foto-6.jpg\" alt=\"\">\n</div>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#chroma-grid"
      },
      {
        "name": "pixel-trail",
        "aliases": [
          "rastro-de-pixels",
          "pixelTrail"
        ],
        "category": "component",
        "bundle": "components",
        "description": "Ao mover o cursor, uma trilha de pixels acende na grade e apaga devagar (estética digital).",
        "params": {
          "size": {
            "attribute": "data-vm-size",
            "attributeAliases": [],
            "type": "number",
            "default": 22,
            "description": "Tamanho do pixel em px."
          },
          "fade": {
            "attribute": "data-vm-fade",
            "attributeAliases": [],
            "type": "time",
            "default": 0.6,
            "description": "Tempo para apagar."
          }
        },
        "example": "<section data-vm=\"pixel-trail\" style=\"min-height:60vh;display:grid;place-items:center\">\n  <h2>Passe o mouse</h2>\n</section>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#pixel-trail"
      },
      {
        "name": "glow-cursor",
        "aliases": [
          "luz-do-cursor",
          "glowCursor",
          "cursor-light"
        ],
        "category": "component",
        "bundle": "components",
        "description": "Uma luz macia e grande segue o cursor por trás do conteúdo da seção (iluminação ambiente).",
        "params": {
          "size": {
            "attribute": "data-vm-size",
            "attributeAliases": [],
            "type": "number",
            "default": 520,
            "description": "Diâmetro da luz em px."
          },
          "opacity": {
            "attribute": "data-vm-opacity",
            "attributeAliases": [],
            "type": "number",
            "default": 0.22,
            "description": "Intensidade."
          }
        },
        "example": "<section data-vm=\"glow-cursor\" style=\"min-height:60vh;display:grid;place-items:center\">\n  <h2>Luz que acompanha</h2>\n</section>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#glow-cursor"
      },
      {
        "name": "crosshair",
        "aliases": [
          "mira-cruzada",
          "crosshair-cursor"
        ],
        "category": "component",
        "bundle": "components",
        "description": "Linhas finas horizontal e vertical cruzam a área no ponto do cursor, com as coordenadas ao lado (estética técnica/editorial).",
        "params": {
          "coords": {
            "attribute": "data-vm-coords",
            "attributeAliases": [],
            "type": "boolean",
            "default": true,
            "description": "Mostrar coordenadas."
          }
        },
        "example": "<section data-vm=\"crosshair\" style=\"min-height:60vh;display:grid;place-items:center\">\n  <h2>Precisão</h2>\n</section>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#crosshair"
      },
      {
        "name": "cubes",
        "aliases": [
          "cubos",
          "cubos-3d"
        ],
        "category": "component",
        "bundle": "components",
        "description": "Grade de cubos 3D que giram e acendem quando o cursor passa por perto, voltando devagar ao lugar.",
        "params": {
          "grid": {
            "attribute": "data-vm-grid",
            "attributeAliases": [],
            "type": "number",
            "default": 8,
            "description": "Cubos por lado."
          },
          "radius": {
            "attribute": "data-vm-radius",
            "attributeAliases": [
              "data-vm-raio",
              "data-vm-arredondamento"
            ],
            "type": "number",
            "default": 2.2,
            "description": "Raio de influência (em cubos)."
          }
        },
        "example": "<div data-vm=\"cubes\" style=\"width:420px;aspect-ratio:1\"></div>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#cubes"
      },
      {
        "name": "metaballs",
        "aliases": [
          "gotas-metalicas",
          "meta-balls",
          "blobs"
        ],
        "category": "component",
        "bundle": "components",
        "description": "Bolhas que flutuam e se fundem como lava (gooey), atrás do conteúdo; uma delas segue o cursor.",
        "params": {
          "count": {
            "attribute": "data-vm-count",
            "attributeAliases": [],
            "type": "number",
            "default": 6,
            "description": "Quantidade de bolhas."
          },
          "color": {
            "attribute": "data-vm-color",
            "attributeAliases": [
              "data-vm-cor"
            ],
            "type": "color",
            "default": "",
            "description": "Cor (padrão: acento)."
          }
        },
        "example": "<section data-vm=\"metaballs\" style=\"min-height:60vh;display:grid;place-items:center\">\n  <h2>Fluido</h2>\n</section>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#metaballs"
      },
      {
        "name": "swipe-stack",
        "aliases": [
          "baralho",
          "pilha-arrastavel",
          "tinder-stack",
          "stack"
        ],
        "category": "component",
        "bundle": "components",
        "description": "Baralho de cartões: arraste o de cima para o lado (ou use as setas) e ele voa, revelando o próximo; o último volta para o fundo.",
        "params": {
          "rotate": {
            "attribute": "data-vm-rotate",
            "attributeAliases": [],
            "type": "number",
            "default": 8,
            "description": "Giro máximo dos cartões de trás (graus)."
          }
        },
        "example": "<div data-vm=\"swipe-stack\" style=\"height:440px\">\n  <img src=\"foto-1.jpg\" alt=\"\"><img src=\"foto-2.jpg\" alt=\"\"><img src=\"foto-3.jpg\" alt=\"\"><img src=\"foto-4.jpg\" alt=\"\">\n</div>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#swipe-stack"
      },
      {
        "name": "folder",
        "aliases": [
          "pasta",
          "folder-open"
        ],
        "category": "component",
        "bundle": "components",
        "description": "Pasta de arquivo: no hover/clique ela abre e as folhas de dentro (filhos) sobem em leque. Ótimo para portfólio e documentos.",
        "params": {
          "color": {
            "attribute": "data-vm-color",
            "attributeAliases": [
              "data-vm-cor"
            ],
            "type": "color",
            "default": "",
            "description": "Cor da pasta (padrão: acento)."
          }
        },
        "example": "<div data-vm=\"folder\">\n  <img src=\"foto-1.jpg\" alt=\"\"><img src=\"foto-2.jpg\" alt=\"\"><img src=\"foto-3.jpg\" alt=\"\">\n</div>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#folder"
      },
      {
        "name": "holo-card",
        "aliases": [
          "cartao-holografico",
          "holoCard",
          "profile-card"
        ],
        "category": "component",
        "bundle": "components",
        "description": "Cartão holográfico (como carta colecionável): inclina em 3D e ganha reflexo furta-cor e brilho que seguem o cursor.",
        "params": {
          "max": {
            "attribute": "data-vm-max",
            "attributeAliases": [
              "data-vm-maximo"
            ],
            "type": "number",
            "default": 14,
            "description": "Inclinação máxima (graus)."
          }
        },
        "example": "<article data-vm=\"holo-card\" style=\"width:300px\">\n  <img src=\"foto-1.jpg\" alt=\"\" style=\"aspect-ratio:3/4;object-fit:cover;width:100%\">\n  <h3>Ana Souza</h3>\n  <p>Barbeira desde 2014</p>\n</article>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#holo-card"
      },
      {
        "name": "glass-card",
        "aliases": [
          "cartao-de-vidro",
          "glassCard",
          "glass-surface",
          "fluid-glass"
        ],
        "category": "component",
        "bundle": "components",
        "description": "Cartão de vidro fosco com borda de luz, reflexo que segue o cursor e leve distorção do fundo (bom sobre fotos e fundos animados).",
        "params": {
          "blur": {
            "attribute": "data-vm-blur",
            "attributeAliases": [
              "data-vm-desfoque"
            ],
            "type": "number",
            "default": 18,
            "description": "Desfoque do vidro em px."
          }
        },
        "example": "<article data-vm=\"glass-card\">\n  <h3>Vidro</h3>\n  <p>Fica lindo em cima de fotos e fundos animados.</p>\n</article>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#glass-card"
      },
      {
        "name": "stepper",
        "aliases": [
          "passo-a-passo",
          "etapas",
          "wizard"
        ],
        "category": "component",
        "bundle": "components",
        "description": "Passo a passo com indicador animado: os filhos são as etapas; botões Voltar/Continuar com transição deslizante e barra de progresso. Acessível pelo teclado.",
        "params": {
          "next": {
            "attribute": "data-vm-next",
            "attributeAliases": [],
            "type": "string",
            "default": "Continuar",
            "description": "Texto do botão de avançar."
          },
          "back": {
            "attribute": "data-vm-back",
            "attributeAliases": [],
            "type": "string",
            "default": "Voltar",
            "description": "Texto do botão de voltar."
          },
          "done": {
            "attribute": "data-vm-done",
            "attributeAliases": [],
            "type": "string",
            "default": "Concluir",
            "description": "Texto do último passo."
          }
        },
        "example": "<div data-vm=\"stepper\">\n  <section><h3>Escolha o serviço</h3><p>Corte, barba ou os dois.</p></section>\n  <section><h3>Escolha o horário</h3><p>Hoje às 15h ou amanhã às 10h.</p></section>\n  <section><h3>Confirme</h3><p>Pronto, enviamos um lembrete.</p></section>\n</div>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#stepper"
      },
      {
        "name": "staggered-menu",
        "aliases": [
          "menu-cascata",
          "menu-tela-cheia",
          "staggeredMenu",
          "fullscreen-menu"
        ],
        "category": "component",
        "bundle": "components",
        "description": "Botão de menu que abre um painel de tela cheia: camadas de cor deslizam e os links entram em cascata; Esc fecha. Use num <nav> com links.",
        "params": {
          "label": {
            "attribute": "data-vm-label",
            "attributeAliases": [],
            "type": "string",
            "default": "Menu",
            "description": "Texto do botão."
          },
          "side": {
            "attribute": "data-vm-side",
            "attributeAliases": [],
            "type": "enum",
            "default": "right",
            "values": [
              "right",
              "left"
            ],
            "description": "De que lado o painel entra."
          }
        },
        "example": "<nav data-vm=\"staggered-menu\">\n  <a href=\"#\">Início</a><a href=\"#\">Serviços</a><a href=\"#\">Preços</a><a href=\"#\">Contato</a>\n</nav>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#staggered-menu"
      },
      {
        "name": "specular-button",
        "aliases": [
          "botao-especular",
          "shiny-button",
          "specularButton"
        ],
        "category": "component",
        "bundle": "components",
        "description": "Botão premium com reflexo especular que segue o cursor, borda luminosa e leve afundamento ao clicar.",
        "params": {},
        "example": "<a href=\"#\" class=\"botao\" data-vm=\"specular-button\">Assinar agora</a>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#specular-button"
      },
      {
        "name": "coverflow",
        "aliases": [
          "fluxo-de-capas",
          "carousel-3d",
          "coverFlow",
          "carrossel-3d-capas"
        ],
        "category": "component",
        "bundle": "components",
        "description": "Carrossel de capas em 3D (como álbuns): a do centro em destaque e as laterais inclinadas. Arraste, use as setas ou clique numa capa.",
        "params": {
          "gap": {
            "attribute": "data-vm-gap",
            "attributeAliases": [],
            "type": "number",
            "default": 0.42,
            "description": "Espaço entre capas (fração da largura da capa)."
          },
          "angle": {
            "attribute": "data-vm-angle",
            "attributeAliases": [
              "data-vm-angulo"
            ],
            "type": "number",
            "default": 48,
            "description": "Inclinação das capas laterais (graus)."
          }
        },
        "example": "<div data-vm=\"coverflow\">\n  <img src=\"foto-1.jpg\" alt=\"\"><img src=\"foto-2.jpg\" alt=\"\"><img src=\"foto-3.jpg\" alt=\"\"><img src=\"foto-4.jpg\" alt=\"\"><img src=\"foto-5.jpg\" alt=\"\">\n</div>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#coverflow"
      },
      {
        "name": "fuzzy-text",
        "aliases": [
          "texto-difuso",
          "fuzzyText",
          "texto-tremido"
        ],
        "category": "text",
        "bundle": "components",
        "description": "Texto com interferência: as linhas horizontais das letras tremem de lado, sutil parado e forte com o mouse em cima (estética de sinal analógico).",
        "params": {
          "base": {
            "attribute": "data-vm-base",
            "attributeAliases": [],
            "type": "number",
            "default": 0.12,
            "description": "Tremor parado (0 a 1)."
          },
          "hover": {
            "attribute": "data-vm-hover",
            "attributeAliases": [],
            "type": "number",
            "default": 0.6,
            "description": "Tremor com o mouse em cima (0 a 1)."
          }
        },
        "example": "<h2 data-vm=\"fuzzy-text\" style=\"font-size:6rem;font-weight:800\">404</h2>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#fuzzy-text"
      },
      {
        "name": "countdown",
        "aliases": [
          "contagem-regressiva",
          "cronometro",
          "timer"
        ],
        "category": "text",
        "bundle": "components",
        "description": "Contagem regressiva até uma data, com dias, horas, minutos e segundos; cada dígito que muda rola com desfoque. Ao zerar, dispara o evento vm:done.",
        "params": {
          "to": {
            "attribute": "data-vm-to",
            "attributeAliases": [
              "data-vm-para"
            ],
            "type": "string",
            "default": "",
            "description": "Data e hora alvo (ISO, ex.: 2026-11-14T09:00)."
          },
          "labels": {
            "attribute": "data-vm-labels",
            "attributeAliases": [],
            "type": "string",
            "default": "dias|horas|min|seg",
            "description": "Rótulos separados por |."
          }
        },
        "example": "<div data-vm=\"countdown\" data-vm-to=\"2026-12-31T23:59\"></div>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#countdown"
      },
      {
        "name": "gooey-nav",
        "aliases": [
          "nav-gosmenta",
          "gooeyNav",
          "nav-liquida"
        ],
        "category": "component",
        "bundle": "components",
        "description": "Navegação com pílula líquida: ao clicar, a pílula escorre até o item e solta gotas que se fundem (filtro gooey). Use num <nav> com links.",
        "params": {
          "particles": {
            "attribute": "data-vm-particles",
            "attributeAliases": [],
            "type": "number",
            "default": 10,
            "description": "Gotas soltas a cada clique."
          }
        },
        "example": "<nav data-vm=\"gooey-nav\">\n  <a href=\"#\" aria-current=\"page\">Início</a><a href=\"#\">Sobre</a><a href=\"#\">Serviços</a><a href=\"#\">Contato</a>\n</nav>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#gooey-nav"
      },
      {
        "name": "bubble-menu",
        "aliases": [
          "menu-bolhas",
          "bubbleMenu"
        ],
        "category": "component",
        "bundle": "components",
        "description": "Botão redondo que abre o menu em bolhas grandes coloridas, que pulam com mola e se inclinam de leve. Esc ou clicar fora fecha. Use num <nav> com links.",
        "params": {
          "label": {
            "attribute": "data-vm-label",
            "attributeAliases": [],
            "type": "string",
            "default": "Menu",
            "description": "Nome acessível do botão."
          }
        },
        "example": "<nav data-vm=\"bubble-menu\">\n  <a href=\"#\">Início</a><a href=\"#\">Trabalhos</a><a href=\"#\">Estúdio</a><a href=\"#\">Contato</a>\n</nav>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#bubble-menu"
      },
      {
        "name": "card-nav",
        "aliases": [
          "nav-de-cartoes",
          "cardNav"
        ],
        "category": "component",
        "bundle": "components",
        "description": "Barra de navegação que se expande em cartões: o botão abre a barra para baixo e cada grupo de links vira um cartão que sobe em cascata. Filhos: [data-vm-brand] e grupos <div> com título e links.",
        "params": {},
        "example": "<nav data-vm=\"card-nav\">\n  <a data-vm-brand href=\"#\">Marca</a>\n  <div><h4>Produto</h4><a href=\"#\">Recursos</a><a href=\"#\">Preços</a></div>\n  <div><h4>Empresa</h4><a href=\"#\">Sobre</a><a href=\"#\">Carreiras</a></div>\n  <div><h4>Contato</h4><a href=\"#\">E-mail</a><a href=\"#\">WhatsApp</a></div>\n</nav>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#card-nav"
      },
      {
        "name": "animated-tabs",
        "aliases": [
          "abas-animadas",
          "abas",
          "tabs"
        ],
        "category": "component",
        "bundle": "components",
        "description": "Abas com indicador que desliza até a aba escolhida e conteúdo que troca com fade e ajuste de altura. Botões [data-vm-tab] e painéis [data-vm-panel] na mesma ordem. Setas do teclado navegam.",
        "params": {},
        "example": "<div data-vm=\"animated-tabs\">\n  <button data-vm-tab>Mensal</button><button data-vm-tab>Anual</button><button data-vm-tab>Vitalício</button>\n  <section data-vm-panel><h3>R$ 49 por mês</h3><p>Cancele quando quiser.</p></section>\n  <section data-vm-panel><h3>R$ 490 por ano</h3><p>Dois meses de presente.</p></section>\n  <section data-vm-panel><h3>R$ 1.490 uma vez</h3><p>Acesso para sempre.</p></section>\n</div>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#animated-tabs"
      },
      {
        "name": "infinite-scroll",
        "aliases": [
          "rolagem-infinita",
          "lista-infinita",
          "infiniteScroll"
        ],
        "category": "component",
        "bundle": "components",
        "description": "Coluna de itens que rola sozinha sem fim (e com a roda ou arrastando), com bordas que somem e leve inclinação 3D opcional. Bom para depoimentos, feeds e recursos.",
        "params": {
          "speed": {
            "attribute": "data-vm-speed",
            "attributeAliases": [
              "data-vm-velocidade"
            ],
            "type": "number",
            "default": 30,
            "description": "Velocidade automática (px/s; 0 desliga)."
          },
          "tilt": {
            "attribute": "data-vm-tilt",
            "attributeAliases": [],
            "type": "boolean",
            "default": false,
            "description": "Inclinação 3D da coluna."
          }
        },
        "example": "<div data-vm=\"infinite-scroll\" style=\"height:420px\">\n  <article>Agendamento online</article><article>Lembretes no WhatsApp</article><article>Pagamento por Pix</article><article>Relatórios do mês</article><article>Clube de assinatura</article>\n</div>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#infinite-scroll"
      },
      {
        "name": "decay-card",
        "aliases": [
          "cartao-deformado",
          "decayCard"
        ],
        "category": "component",
        "bundle": "components",
        "description": "Cartão com foto que se deforma como água quando o cursor passa rápido e volta ao normal quando para (deslocamento em SVG).",
        "params": {
          "strength": {
            "attribute": "data-vm-strength",
            "attributeAliases": [
              "data-vm-forca"
            ],
            "type": "number",
            "default": 60,
            "description": "Força máxima da deformação."
          }
        },
        "example": "<figure data-vm=\"decay-card\" style=\"width:300px\"><img src=\"foto-1.jpg\" alt=\"\"></figure>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#decay-card"
      },
      {
        "name": "reveal-lens",
        "aliases": [
          "lente-revela",
          "lente",
          "image-lens",
          "revelar-com-cursor"
        ],
        "category": "component",
        "bundle": "components",
        "description": "Duas imagens empilhadas: o cursor vira uma lente redonda que revela a segunda (antes e depois, dia e noite, rascunho e final).",
        "params": {
          "size": {
            "attribute": "data-vm-size",
            "attributeAliases": [],
            "type": "number",
            "default": 220,
            "description": "Diâmetro da lente em px."
          }
        },
        "example": "<figure data-vm=\"reveal-lens\" style=\"width:520px;aspect-ratio:4/3\">\n  <img src=\"foto-1.jpg\" alt=\"Antes\"><img src=\"foto-2.jpg\" alt=\"Depois\">\n</figure>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#reveal-lens"
      },
      {
        "name": "beam-connect",
        "aliases": [
          "feixe-conectado",
          "conexoes",
          "animated-beam",
          "integracoes"
        ],
        "category": "component",
        "bundle": "components",
        "description": "Liga vários elementos [data-vm-node] a um central [data-vm-hub] com curvas finas e pulsos de luz viajando por elas (ótimo para integrações e fluxos).",
        "params": {
          "duration": {
            "attribute": "data-vm-duration",
            "attributeAliases": [
              "data-vm-duracao"
            ],
            "type": "time",
            "default": 2.4,
            "description": "Tempo de cada pulso."
          },
          "curve": {
            "attribute": "data-vm-curve",
            "attributeAliases": [],
            "type": "number",
            "default": 0.25,
            "description": "Curvatura das linhas (0 = reta)."
          }
        },
        "example": "<div data-vm=\"beam-connect\" style=\"display:flex;justify-content:space-between;align-items:center;gap:40px;padding:40px\">\n  <div style=\"display:grid;gap:24px\"><span data-vm-node>WhatsApp</span><span data-vm-node>Pix</span><span data-vm-node>Agenda</span></div>\n  <strong data-vm-hub>Vatse</strong>\n  <div style=\"display:grid;gap:24px\"><span data-vm-node>E-mail</span><span data-vm-node>Relatórios</span></div>\n</div>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#beam-connect"
      },
      {
        "name": "dot-globe",
        "aliases": [
          "globo-de-pontos",
          "globo",
          "globe"
        ],
        "category": "component",
        "bundle": "components",
        "description": "Globo 3D feito de pontos girando devagar, com cidades pulsando na cor do tema. Arraste para girar. Ótimo para alcance, regiões e presença.",
        "params": {
          "points": {
            "attribute": "data-vm-points",
            "attributeAliases": [],
            "type": "number",
            "default": 900,
            "description": "Quantidade de pontos."
          },
          "speed": {
            "attribute": "data-vm-speed",
            "attributeAliases": [
              "data-vm-velocidade"
            ],
            "type": "number",
            "default": 0.12,
            "description": "Velocidade de giro (voltas por... rad/s)."
          }
        },
        "example": "<div data-vm=\"dot-globe\" style=\"width:420px;aspect-ratio:1\"></div>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#dot-globe"
      },
      {
        "name": "confetti",
        "aliases": [
          "confete",
          "celebrar"
        ],
        "category": "component",
        "bundle": "components",
        "description": "Chuva de confete saindo do elemento ao clicar (ou ao aparecer), com física e cores do tema. Bom para \"pedido confirmado\" e \"assinatura feita\".",
        "params": {
          "count": {
            "attribute": "data-vm-count",
            "attributeAliases": [],
            "type": "number",
            "default": 90,
            "description": "Quantidade de pedaços."
          },
          "on": {
            "attribute": "data-vm-on",
            "attributeAliases": [],
            "type": "enum",
            "default": "click",
            "values": [
              "click",
              "view",
              "manual"
            ],
            "description": "Quando dispara (manual: dispare o evento vm:confetti no elemento)."
          }
        },
        "example": "<button data-vm=\"confetti\" style=\"padding:14px 26px;border-radius:999px;border:0;background:#ef650f;color:#fff;font-weight:600;cursor:pointer\">Confirmar pedido</button>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#confetti"
      },
      {
        "name": "ribbons",
        "aliases": [
          "fitas",
          "fitas-do-cursor",
          "cursor-ribbons"
        ],
        "category": "component",
        "bundle": "components",
        "description": "Fitas coloridas que seguem o cursor com atraso e mola, desenhando curvas suaves pela seção.",
        "params": {
          "count": {
            "attribute": "data-vm-count",
            "attributeAliases": [],
            "type": "number",
            "default": 3,
            "description": "Quantidade de fitas."
          },
          "width": {
            "attribute": "data-vm-width",
            "attributeAliases": [],
            "type": "number",
            "default": 10,
            "description": "Espessura máxima."
          }
        },
        "example": "<section data-vm=\"ribbons\" style=\"min-height:60vh;display:grid;place-items:center\">\n  <h2>Mexa o mouse</h2>\n</section>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#ribbons"
      },
      {
        "name": "letter-glitch",
        "aliases": [
          "letras-glitch",
          "matriz-de-letras",
          "letterGlitch"
        ],
        "category": "background",
        "bundle": "components",
        "description": "Fundo de letras e símbolos numa grade que trocam e mudam de cor sem parar, com vinheta nas bordas (estética hacker/dados).",
        "params": {
          "size": {
            "attribute": "data-vm-size",
            "attributeAliases": [],
            "type": "number",
            "default": 16,
            "description": "Tamanho do caractere em px."
          },
          "speed": {
            "attribute": "data-vm-speed",
            "attributeAliases": [
              "data-vm-velocidade"
            ],
            "type": "number",
            "default": 1,
            "description": "Ritmo das trocas."
          }
        },
        "example": "<section data-vm=\"letter-glitch\" style=\"min-height:70vh;display:grid;place-items:center;color:#fff\">\n  <h2>Seu título aqui</h2>\n</section>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#letter-glitch"
      },
      {
        "name": "squares",
        "aliases": [
          "quadrados",
          "grade-de-quadrados",
          "squares-bg"
        ],
        "category": "background",
        "bundle": "components",
        "description": "Grade de quadrados que desliza na diagonal; o quadrado sob o cursor acende. Fundo discreto para seções técnicas.",
        "params": {
          "size": {
            "attribute": "data-vm-size",
            "attributeAliases": [],
            "type": "number",
            "default": 44,
            "description": "Lado do quadrado em px."
          },
          "direction": {
            "attribute": "data-vm-direction",
            "attributeAliases": [
              "data-vm-direcao"
            ],
            "type": "enum",
            "default": "diagonal",
            "values": [
              "diagonal",
              "up",
              "down",
              "left",
              "right"
            ],
            "description": "Direção do movimento."
          },
          "speed": {
            "attribute": "data-vm-speed",
            "attributeAliases": [
              "data-vm-velocidade"
            ],
            "type": "number",
            "default": 0.4,
            "description": "Velocidade."
          }
        },
        "example": "<section data-vm=\"squares\" style=\"min-height:70vh;display:grid;place-items:center;color:#fff\">\n  <h2>Seu título aqui</h2>\n</section>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#squares"
      },
      {
        "name": "meteors",
        "aliases": [
          "meteoros",
          "estrelas-cadentes"
        ],
        "category": "background",
        "bundle": "components",
        "description": "Meteoros finos riscando a seção na diagonal, com rastro que some. CSS puro e leve.",
        "params": {
          "count": {
            "attribute": "data-vm-count",
            "attributeAliases": [],
            "type": "number",
            "default": 18,
            "description": "Quantidade de meteoros."
          }
        },
        "example": "<section data-vm=\"meteors\" style=\"min-height:70vh;display:grid;place-items:center;color:#fff\">\n  <h2>Seu título aqui</h2>\n</section>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#meteors"
      },
      {
        "name": "retro-grid",
        "aliases": [
          "grade-retro",
          "grade-perspectiva",
          "retroGrid"
        ],
        "category": "background",
        "bundle": "components",
        "description": "Chão de grade em perspectiva correndo em direção ao horizonte (synthwave), com brilho no fim. CSS puro.",
        "params": {
          "angle": {
            "attribute": "data-vm-angle",
            "attributeAliases": [
              "data-vm-angulo"
            ],
            "type": "number",
            "default": 65,
            "description": "Inclinação do chão (graus)."
          },
          "size": {
            "attribute": "data-vm-size",
            "attributeAliases": [],
            "type": "number",
            "default": 60,
            "description": "Tamanho da célula em px."
          }
        },
        "example": "<section data-vm=\"retro-grid\" style=\"min-height:70vh;display:grid;place-items:center;color:#fff\">\n  <h2>Seu título aqui</h2>\n</section>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#retro-grid"
      },
      {
        "name": "ripple-rings",
        "aliases": [
          "ondas-circulares",
          "aneis",
          "ripple-bg"
        ],
        "category": "background",
        "bundle": "components",
        "description": "Anéis concêntricos que pulsam do centro para fora, como ondas numa poça (ótimo atrás de um ícone ou logo).",
        "params": {
          "rings": {
            "attribute": "data-vm-rings",
            "attributeAliases": [],
            "type": "number",
            "default": 6,
            "description": "Quantidade de anéis."
          },
          "size": {
            "attribute": "data-vm-size",
            "attributeAliases": [],
            "type": "number",
            "default": 160,
            "description": "Diâmetro do anel menor em px."
          }
        },
        "example": "<section data-vm=\"ripple-rings\" style=\"min-height:70vh;display:grid;place-items:center;color:#fff\">\n  <h2>Seu título aqui</h2>\n</section>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#ripple-rings"
      },
      {
        "name": "motion-path",
        "aliases": [
          "trajetoria",
          "caminho",
          "seguir-caminho",
          "motionPath"
        ],
        "category": "svg",
        "bundle": "components",
        "description": "Um elemento [data-vm-follower] percorre o path de um SVG (o primeiro, ou o marcado com [data-vm-path]), virando na direção da curva. Pela rolagem (scroll) ou em volta contínua (loop); o traço pode ir se desenhando atrás.",
        "params": {
          "mode": {
            "attribute": "data-vm-mode",
            "attributeAliases": [],
            "type": "enum",
            "default": "scroll",
            "values": [
              "scroll",
              "loop"
            ],
            "description": "scroll: a rolagem move; loop: anda sozinho."
          },
          "duration": {
            "attribute": "data-vm-duration",
            "attributeAliases": [
              "data-vm-duracao"
            ],
            "type": "time",
            "default": 6,
            "description": "Tempo de uma volta (modo loop)."
          },
          "rotate": {
            "attribute": "data-vm-rotate",
            "attributeAliases": [],
            "type": "boolean",
            "default": true,
            "description": "Gira o elemento na direção da curva."
          },
          "trail": {
            "attribute": "data-vm-trail",
            "attributeAliases": [],
            "type": "boolean",
            "default": true,
            "description": "Desenha o traço até onde o elemento chegou."
          },
          "smooth": {
            "attribute": "data-vm-smooth",
            "attributeAliases": [
              "data-vm-suavizacao"
            ],
            "type": "number",
            "default": 0.4,
            "description": "Suavização da agulha no modo scroll."
          }
        },
        "example": "<div data-vm=\"motion-path\" style=\"position:relative;height:420px\">\n  <svg viewBox=\"0 0 800 400\" style=\"width:100%;height:100%\"><path d=\"M20,340 C200,40 360,380 520,180 S760,60 780,40\" fill=\"none\" stroke=\"currentColor\" stroke-opacity=\".25\" stroke-width=\"2\"/></svg>\n  <span data-vm-follower style=\"font-size:2rem\">✈</span>\n</div>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#motion-path"
      },
      {
        "name": "morph-shape",
        "aliases": [
          "morfar-forma",
          "transformar-forma",
          "morphSVG",
          "shape-morph"
        ],
        "category": "svg",
        "bundle": "components",
        "description": "Um path de SVG se transforma suavemente em outras formas, mesmo com número de pontos diferente. As formas vão em data-vm-shapes, separadas por \"|\". Em ciclo, pela rolagem ou ao passar o mouse.",
        "params": {
          "shapes": {
            "attribute": "data-vm-shapes",
            "attributeAliases": [],
            "type": "string",
            "default": "",
            "description": "Os \"d\" das outras formas, separados por |."
          },
          "mode": {
            "attribute": "data-vm-mode",
            "attributeAliases": [],
            "type": "enum",
            "default": "loop",
            "values": [
              "loop",
              "scroll",
              "hover"
            ],
            "description": "Quando morfar."
          },
          "duration": {
            "attribute": "data-vm-duration",
            "attributeAliases": [
              "data-vm-duracao"
            ],
            "type": "time",
            "default": 1.2,
            "description": "Tempo de cada transformação."
          },
          "hold": {
            "attribute": "data-vm-hold",
            "attributeAliases": [],
            "type": "time",
            "default": 1.2,
            "description": "Pausa em cada forma (modo loop)."
          },
          "points": {
            "attribute": "data-vm-points",
            "attributeAliases": [],
            "type": "number",
            "default": 120,
            "description": "Precisão do contorno (pontos)."
          }
        },
        "example": "<svg data-vm=\"morph-shape\" viewBox=\"0 0 200 200\" width=\"240\" data-vm-shapes=\"M100,10 L190,100 L100,190 L10,100 Z|M100,20 C150,20 180,60 180,100 C180,150 140,180 100,180 C50,180 20,140 20,100 C20,55 55,20 100,20 Z\">\n  <path d=\"M30,30 H170 V170 H30 Z\" fill=\"currentColor\"/>\n</svg>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#morph-shape"
      },
      {
        "name": "preloader",
        "aliases": [
          "carregamento",
          "tela-de-abertura",
          "loader",
          "intro-counter"
        ],
        "category": "experience",
        "bundle": "components",
        "description": "Tela de abertura que cobre a página com um contador de 0 a 100 que acompanha o carregamento real das imagens e sai com uma cortina. Use um elemento por página; [data-vm-count] recebe o número. Ao terminar, dispara o evento vm:loaded no document.",
        "params": {
          "exit": {
            "attribute": "data-vm-exit",
            "attributeAliases": [],
            "type": "enum",
            "default": "curtain",
            "values": [
              "curtain",
              "split",
              "fade"
            ],
            "description": "Saída: cortina para cima, abrindo ao meio, ou esmaecendo."
          },
          "min": {
            "attribute": "data-vm-min",
            "attributeAliases": [],
            "type": "time",
            "default": 1.2,
            "description": "Tempo mínimo na tela (para o contador ser visto)."
          },
          "max": {
            "attribute": "data-vm-max",
            "attributeAliases": [
              "data-vm-maximo"
            ],
            "type": "time",
            "default": 6,
            "description": "Tempo máximo: sai mesmo se algo não carregar."
          }
        },
        "example": "<div data-vm=\"preloader\" style=\"background:#0a0a0a;color:#fff\">\n  <strong data-vm-count style=\"font-size:12vw\">0</strong>\n</div>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#preloader"
      },
      {
        "name": "page-transition",
        "aliases": [
          "transicao-de-pagina",
          "troca-de-pagina",
          "pageTransition",
          "barba"
        ],
        "category": "experience",
        "bundle": "components",
        "description": "Ao clicar num link do mesmo site, uma cortina cobre a tela antes de trocar de página, e na página nova ela sai. Respeita nova aba, download, âncora e teclas modificadoras. Coloque o elemento (a cortina) uma vez por página.",
        "params": {
          "direction": {
            "attribute": "data-vm-direction",
            "attributeAliases": [
              "data-vm-direcao"
            ],
            "type": "enum",
            "default": "up",
            "values": [
              "up",
              "down",
              "left",
              "right"
            ],
            "description": "Para onde a cortina corre."
          },
          "duration": {
            "attribute": "data-vm-duration",
            "attributeAliases": [
              "data-vm-duracao"
            ],
            "type": "time",
            "default": 0.7,
            "description": "Duração de cada metade."
          },
          "exclude": {
            "attribute": "data-vm-exclude",
            "attributeAliases": [],
            "type": "string",
            "default": "[data-vm-no-transition]",
            "description": "Links que não fazem a transição."
          }
        },
        "example": "<div data-vm=\"page-transition\" style=\"background:#ef650f\"></div>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#page-transition"
      },
      {
        "name": "button-fx",
        "aliases": [
          "botao-efeito",
          "efeito-de-botao",
          "buttonHover",
          "btn-fx"
        ],
        "category": "interaction",
        "bundle": "components",
        "description": "Efeitos de hover para botões e links com cara de botão: fill (a cor enche a partir do cursor), shine (brilho atravessa), arrow (a seta sai e volta), roll (o texto rola para cima e volta por baixo), press (afunda ao clicar, com mola).",
        "params": {
          "variant": {
            "attribute": "data-vm-variant",
            "attributeAliases": [],
            "type": "enum",
            "default": "fill",
            "values": [
              "fill",
              "shine",
              "arrow",
              "roll",
              "press"
            ],
            "description": "O efeito."
          }
        },
        "example": "<a href=\"#\" data-vm=\"button-fx\" data-vm-variant=\"fill\" style=\"display:inline-flex;width:fit-content;align-items:center;padding:14px 26px;border-radius:999px;background:#ef650f;color:#fff;font-weight:600;text-decoration:none;border:0;cursor:pointer\">Começar agora</a>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#button-fx"
      },
      {
        "name": "link-underline",
        "aliases": [
          "sublinhado",
          "sublinhado-animado",
          "underline"
        ],
        "category": "interaction",
        "bundle": "components",
        "description": "Sublinhado animado para links: grow (cresce da esquerda), center (abre do meio), swap (o traço sai pela direita e entra pela esquerda), wave (vira onda). Funciona em vários links de uma vez se aplicado ao contêiner.",
        "params": {
          "variant": {
            "attribute": "data-vm-variant",
            "attributeAliases": [],
            "type": "enum",
            "default": "swap",
            "values": [
              "grow",
              "center",
              "swap",
              "wave"
            ],
            "description": "O estilo."
          },
          "thickness": {
            "attribute": "data-vm-thickness",
            "attributeAliases": [],
            "type": "length",
            "default": 2,
            "description": "Espessura do traço."
          }
        },
        "example": "<nav data-vm=\"link-underline\" data-vm-variant=\"swap\" style=\"display:flex;gap:24px\">\n  <a href=\"#\">Sistemas</a><a href=\"#\">Preços</a><a href=\"#\">Contato</a>\n</nav>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#link-underline"
      },
      {
        "name": "hamburger",
        "aliases": [
          "menu-hamburguer",
          "botao-menu",
          "menu-toggle"
        ],
        "category": "interaction",
        "bundle": "components",
        "description": "Botão de menu de três traços que vira X ao abrir (e volta). Cuida de aria-expanded; com data-vm-target abre e fecha o alvo (classe is-open e atributo hidden) e fecha com Esc.",
        "params": {
          "target": {
            "attribute": "data-vm-target",
            "attributeAliases": [
              "data-vm-alvo"
            ],
            "type": "selector",
            "default": "",
            "description": "O menu que o botão abre."
          },
          "variant": {
            "attribute": "data-vm-variant",
            "attributeAliases": [],
            "type": "enum",
            "default": "cross",
            "values": [
              "cross",
              "arrow",
              "squeeze"
            ],
            "description": "Como os traços se transformam."
          }
        },
        "example": "<button data-vm=\"hamburger\" data-vm-target=\"#menu\" aria-label=\"Abrir menu\"></button>\n<nav id=\"menu\" hidden>...</nav>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#hamburger"
      },
      {
        "name": "toggle-switch",
        "aliases": [
          "chave",
          "interruptor",
          "switch"
        ],
        "category": "interaction",
        "bundle": "components",
        "description": "Transforma um checkbox numa chave liga/desliga com mola e brilho. O input continua lá (teclado, formulário e leitor de tela funcionam igual).",
        "params": {
          "size": {
            "attribute": "data-vm-size",
            "attributeAliases": [],
            "type": "length",
            "default": 28,
            "description": "Altura da chave."
          }
        },
        "example": "<label data-vm=\"toggle-switch\" style=\"display:inline-flex;gap:10px;align-items:center\">\n  <input type=\"checkbox\" name=\"avisos\"> Receber avisos\n</label>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#toggle-switch"
      },
      {
        "name": "progress-ring",
        "aliases": [
          "anel-de-progresso",
          "grafico-circular",
          "radial-progress"
        ],
        "category": "component",
        "bundle": "components",
        "description": "Anel que se preenche até o valor quando aparece, com o número contando no centro. O valor vem do texto do elemento (ex.: 87) ou de data-vm-value.",
        "params": {
          "value": {
            "attribute": "data-vm-value",
            "attributeAliases": [],
            "type": "number",
            "default": -1,
            "description": "Valor de 0 a 100 (sem ele, usa o texto)."
          },
          "size": {
            "attribute": "data-vm-size",
            "attributeAliases": [],
            "type": "number",
            "default": 160,
            "description": "Diâmetro em px."
          },
          "stroke": {
            "attribute": "data-vm-stroke",
            "attributeAliases": [],
            "type": "number",
            "default": 10,
            "description": "Espessura do anel."
          },
          "duration": {
            "attribute": "data-vm-duration",
            "attributeAliases": [
              "data-vm-duracao"
            ],
            "type": "time",
            "default": 1.6,
            "description": "Duração."
          },
          "suffix": {
            "attribute": "data-vm-suffix",
            "attributeAliases": [
              "data-vm-sufixo"
            ],
            "type": "string",
            "default": "%",
            "description": "Texto depois do número."
          }
        },
        "example": "<div data-vm=\"progress-ring\">87</div>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#progress-ring"
      },
      {
        "name": "skeleton",
        "aliases": [
          "esqueleto",
          "carregando-imagem",
          "shimmer"
        ],
        "category": "component",
        "bundle": "components",
        "description": "Enquanto as imagens de dentro carregam, um brilho de carregamento ocupa o lugar; quando chegam, entram com um esmaecer. Evita o \"pulo\" de imagem aparecendo aos pedaços.",
        "params": {
          "radius": {
            "attribute": "data-vm-radius",
            "attributeAliases": [
              "data-vm-raio",
              "data-vm-arredondamento"
            ],
            "type": "length",
            "default": 12,
            "description": "Cantos do brilho."
          }
        },
        "example": "<figure data-vm=\"skeleton\" style=\"aspect-ratio:4/3\">\n  <img src=\"foto-2.jpg\" alt=\"\" style=\"width:100%;height:100%;object-fit:cover\">\n</figure>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#skeleton"
      },
      {
        "name": "ripple",
        "aliases": [
          "onda-de-toque",
          "ondulacao",
          "ink"
        ],
        "category": "interaction",
        "bundle": "components",
        "description": "Onda que se espalha a partir do ponto do toque ou clique (como no Material), na cor do texto do elemento.",
        "params": {
          "duration": {
            "attribute": "data-vm-duration",
            "attributeAliases": [
              "data-vm-duracao"
            ],
            "type": "time",
            "default": 0.6,
            "description": "Duração da onda."
          },
          "opacity": {
            "attribute": "data-vm-opacity",
            "attributeAliases": [],
            "type": "number",
            "default": 0.28,
            "description": "Intensidade."
          }
        },
        "example": "<button data-vm=\"ripple\" style=\"display:inline-flex;width:fit-content;align-items:center;padding:14px 26px;border-radius:999px;background:#ef650f;color:#fff;font-weight:600;text-decoration:none;border:0;cursor:pointer\">Toque aqui</button>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#ripple"
      },
      {
        "name": "mouse-parallax",
        "aliases": [
          "paralaxe-do-mouse",
          "camadas-com-mouse",
          "mouseParallax",
          "depth-layers"
        ],
        "category": "interaction",
        "bundle": "components",
        "description": "As camadas [data-vm-depth=\"0.1\"…\"1\"] se deslocam com o mouse, cada uma na sua profundidade, dando volume à cena. Quanto maior o número, mais a camada anda. No celular, fica parado.",
        "params": {
          "strength": {
            "attribute": "data-vm-strength",
            "attributeAliases": [
              "data-vm-forca"
            ],
            "type": "number",
            "default": 40,
            "description": "Deslocamento máximo em px (camada de profundidade 1)."
          },
          "smooth": {
            "attribute": "data-vm-smooth",
            "attributeAliases": [
              "data-vm-suavizacao"
            ],
            "type": "number",
            "default": 6,
            "description": "Suavidade (maior = mais rápido)."
          },
          "invert": {
            "attribute": "data-vm-invert",
            "attributeAliases": [],
            "type": "boolean",
            "default": false,
            "description": "Move a favor do mouse em vez de contra."
          }
        },
        "example": "<div data-vm=\"mouse-parallax\" style=\"position:relative;height:420px;overflow:hidden\">\n  <img data-vm-depth=\"0.2\" src=\"foto-3.jpg\" alt=\"\" style=\"position:absolute;inset:-40px\">\n  <h2 data-vm-depth=\"0.8\" style=\"position:relative\">Profundidade</h2>\n</div>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#mouse-parallax"
      },
      {
        "name": "image-distort",
        "aliases": [
          "distorcer-imagem",
          "imagem-liquida",
          "liquid-hover",
          "displacement"
        ],
        "category": "component",
        "bundle": "components",
        "description": "Ao passar o mouse, a imagem ondula como líquido e assenta de novo (filtro de deslocamento do SVG, sem WebGL). Também serve para vídeo e fundos.",
        "params": {
          "strength": {
            "attribute": "data-vm-strength",
            "attributeAliases": [
              "data-vm-forca"
            ],
            "type": "number",
            "default": 28,
            "description": "Força da ondulação."
          },
          "scale": {
            "attribute": "data-vm-scale",
            "attributeAliases": [
              "data-vm-escala"
            ],
            "type": "number",
            "default": 0.012,
            "description": "Tamanho das ondas (menor = ondas maiores)."
          },
          "duration": {
            "attribute": "data-vm-duration",
            "attributeAliases": [
              "data-vm-duracao"
            ],
            "type": "time",
            "default": 0.9,
            "description": "Duração da ida e da volta."
          }
        },
        "example": "<img data-vm=\"image-distort\" src=\"foto-4.jpg\" alt=\"\" style=\"width:100%\">",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#image-distort"
      },
      {
        "name": "tile-reveal",
        "aliases": [
          "revelar-em-blocos",
          "mosaico",
          "tiles",
          "grid-reveal"
        ],
        "category": "reveal",
        "bundle": "components",
        "description": "A imagem aparece montada em blocos que viram ou caem no lugar, em onda a partir de um canto ou do centro, quando entra na tela.",
        "params": {
          "rows": {
            "attribute": "data-vm-rows",
            "attributeAliases": [],
            "type": "number",
            "default": 5,
            "description": "Linhas de blocos."
          },
          "cols": {
            "attribute": "data-vm-cols",
            "attributeAliases": [],
            "type": "number",
            "default": 8,
            "description": "Colunas de blocos."
          },
          "from": {
            "attribute": "data-vm-from",
            "attributeAliases": [
              "data-vm-origem",
              "data-vm-de"
            ],
            "type": "enum",
            "default": "start",
            "values": [
              "start",
              "center",
              "end",
              "random"
            ],
            "description": "De onde a onda começa."
          },
          "effect": {
            "attribute": "data-vm-effect",
            "attributeAliases": [
              "data-vm-efeito"
            ],
            "type": "enum",
            "default": "flip",
            "values": [
              "flip",
              "fade",
              "drop"
            ],
            "description": "Como cada bloco chega."
          },
          "duration": {
            "attribute": "data-vm-duration",
            "attributeAliases": [
              "data-vm-duracao"
            ],
            "type": "time",
            "default": 1.4,
            "description": "Tempo total da montagem."
          }
        },
        "example": "<figure data-vm=\"tile-reveal\" style=\"aspect-ratio:16/9;margin:0\">\n  <img src=\"foto-5.jpg\" alt=\"Descrição\" style=\"width:100%;height:100%;object-fit:cover\">\n</figure>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#tile-reveal"
      },
      {
        "name": "text-roll",
        "aliases": [
          "rolar-letras",
          "letras-rolando",
          "textRoll",
          "letter-roll"
        ],
        "category": "text",
        "bundle": "components",
        "description": "No hover, cada letra rola para cima e é substituída por uma cópia vinda de baixo, em cascata. Para menus e links curtos.",
        "params": {
          "each": {
            "attribute": "data-vm-each",
            "attributeAliases": [
              "data-vm-intervalo"
            ],
            "type": "time",
            "default": 0.025,
            "description": "Intervalo entre letras."
          },
          "duration": {
            "attribute": "data-vm-duration",
            "attributeAliases": [
              "data-vm-duracao"
            ],
            "type": "time",
            "default": 0.45,
            "description": "Tempo de cada letra."
          }
        },
        "example": "<a href=\"#\" data-vm=\"text-roll\" style=\"font-size:2rem;text-transform:uppercase\">Portfólio</a>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#text-roll"
      },
      {
        "name": "list-reveal",
        "aliases": [
          "lista-revelada",
          "lista-com-linhas",
          "table-reveal"
        ],
        "category": "group",
        "bundle": "components",
        "description": "Lista (ou linhas de tabela, ou cartões) que se monta item por item: a linha divisória se desenha da esquerda e o conteúdo sobe logo atrás. Para listas de serviços, preços e etapas.",
        "params": {
          "each": {
            "attribute": "data-vm-each",
            "attributeAliases": [
              "data-vm-intervalo"
            ],
            "type": "time",
            "default": 0.09,
            "description": "Intervalo entre itens."
          },
          "line": {
            "attribute": "data-vm-line",
            "attributeAliases": [],
            "type": "boolean",
            "default": true,
            "description": "Desenha a linha divisória."
          }
        },
        "example": "<ul data-vm=\"list-reveal\" style=\"list-style:none;padding:0\">\n  <li>Corte masculino <b>R$ 45</b></li>\n  <li>Barba completa <b>R$ 35</b></li>\n  <li>Corte + barba <b>R$ 70</b></li>\n</ul>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#list-reveal"
      },
      {
        "name": "deal-cards",
        "aliases": [
          "distribuir-cartas",
          "cartas-do-monte",
          "dealCards"
        ],
        "category": "group",
        "bundle": "components",
        "description": "Os filhos começam empilhados no centro como um monte de cartas, meio tortos, e são distribuídos um a um até o lugar de cada um, quando a área aparece.",
        "params": {
          "each": {
            "attribute": "data-vm-each",
            "attributeAliases": [
              "data-vm-intervalo"
            ],
            "type": "time",
            "default": 0.08,
            "description": "Intervalo entre cartas."
          },
          "spread": {
            "attribute": "data-vm-spread",
            "attributeAliases": [],
            "type": "number",
            "default": 10,
            "description": "Quanto as cartas ficam tortas no monte (graus)."
          },
          "duration": {
            "attribute": "data-vm-duration",
            "attributeAliases": [
              "data-vm-duracao"
            ],
            "type": "time",
            "default": 0.9,
            "description": "Tempo de cada carta."
          }
        },
        "example": "<div data-vm=\"deal-cards\" style=\"display:grid;grid-template-columns:repeat(3,1fr);gap:16px\">\n  <article class=\"cartao\">Plano Essencial</article>\n  <article class=\"cartao\">Plano Profissional</article>\n  <article class=\"cartao\">Plano Completo</article>\n</div>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#deal-cards"
      },
      {
        "name": "stagger-3d",
        "aliases": [
          "cascata-3d",
          "entrada-3d",
          "depth-stagger"
        ],
        "category": "group",
        "bundle": "components",
        "description": "Os filhos chegam de dentro da tela, inclinados em 3D, em onda a partir do início ou do centro. Dá profundidade a grades de cartões e galerias.",
        "params": {
          "from": {
            "attribute": "data-vm-from",
            "attributeAliases": [
              "data-vm-origem",
              "data-vm-de"
            ],
            "type": "enum",
            "default": "start",
            "values": [
              "start",
              "center",
              "end"
            ],
            "description": "De onde a onda começa."
          },
          "angle": {
            "attribute": "data-vm-angle",
            "attributeAliases": [
              "data-vm-angulo"
            ],
            "type": "number",
            "default": 55,
            "description": "Inclinação inicial (graus)."
          },
          "each": {
            "attribute": "data-vm-each",
            "attributeAliases": [
              "data-vm-intervalo"
            ],
            "type": "time",
            "default": 0.07,
            "description": "Intervalo entre filhos."
          }
        },
        "example": "<div data-vm=\"stagger-3d\" data-vm-from=\"center\" style=\"display:grid;grid-template-columns:repeat(3,1fr);gap:16px\">\n  <article class=\"cartao\">1</article><article class=\"cartao\">2</article><article class=\"cartao\">3</article>\n  <article class=\"cartao\">4</article><article class=\"cartao\">5</article><article class=\"cartao\">6</article>\n</div>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#stagger-3d"
      },
      {
        "name": "text-on-path",
        "aliases": [
          "texto-na-curva",
          "texto-em-onda",
          "textPath"
        ],
        "category": "svg",
        "bundle": "components",
        "description": "O texto corre sobre uma curva (onda ou arco) que ocupa a largura do elemento. A rolagem empurra o texto, ou ele anda sozinho em loop.",
        "params": {
          "shape": {
            "attribute": "data-vm-shape",
            "attributeAliases": [],
            "type": "enum",
            "default": "wave",
            "values": [
              "wave",
              "arc",
              "arc-down"
            ],
            "description": "Forma da curva."
          },
          "mode": {
            "attribute": "data-vm-mode",
            "attributeAliases": [],
            "type": "enum",
            "default": "scroll",
            "values": [
              "scroll",
              "loop"
            ],
            "description": "O que move o texto."
          },
          "speed": {
            "attribute": "data-vm-speed",
            "attributeAliases": [
              "data-vm-velocidade"
            ],
            "type": "number",
            "default": 40,
            "description": "Velocidade no loop (px por segundo)."
          },
          "size": {
            "attribute": "data-vm-size",
            "attributeAliases": [],
            "type": "number",
            "default": 36,
            "description": "Tamanho da letra (px)."
          }
        },
        "example": "<div data-vm=\"text-on-path\" style=\"height:220px\">Agenda online · Pagamento no Pix · Lembrete no WhatsApp ·</div>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#text-on-path"
      },
      {
        "name": "sketch",
        "aliases": [
          "desenho-a-mao",
          "rabisco",
          "draw-sequence"
        ],
        "category": "svg",
        "bundle": "components",
        "description": "Desenha os traços do SVG um depois do outro, como alguém desenhando à mão (cada traço leva o tempo do seu tamanho), e só no fim pinta os preenchimentos. Para ilustrações de linha, assinaturas e ícones grandes.",
        "params": {
          "duration": {
            "attribute": "data-vm-duration",
            "attributeAliases": [
              "data-vm-duracao"
            ],
            "type": "time",
            "default": 2.4,
            "description": "Tempo total do desenho."
          },
          "fill": {
            "attribute": "data-vm-fill",
            "attributeAliases": [],
            "type": "boolean",
            "default": true,
            "description": "Pinta os preenchimentos no fim."
          }
        },
        "example": "<svg data-vm=\"sketch\" viewBox=\"0 0 200 120\" width=\"320\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n  <path d=\"M20 100 L60 30 L100 100 Z\"/>\n  <circle cx=\"140\" cy=\"60\" r=\"30\"/>\n  <path d=\"M10 110 C60 90 140 130 190 105\"/>\n</svg>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#sketch"
      },
      {
        "name": "wave-divider",
        "aliases": [
          "divisoria-onda",
          "onda-de-secao",
          "waveDivider"
        ],
        "category": "svg",
        "bundle": "components",
        "description": "Borda em onda viva entre duas seções: duas ondas sobrepostas balançam devagar no topo ou no pé da seção. A cor padrão é a do fundo da seção vizinha (defina com data-vm-color).",
        "params": {
          "position": {
            "attribute": "data-vm-position",
            "attributeAliases": [],
            "type": "enum",
            "default": "bottom",
            "values": [
              "bottom",
              "top"
            ],
            "description": "Em que borda da seção."
          },
          "color": {
            "attribute": "data-vm-color",
            "attributeAliases": [
              "data-vm-cor"
            ],
            "type": "color",
            "default": "currentColor",
            "description": "Cor da onda (o fundo da seção vizinha)."
          },
          "height": {
            "attribute": "data-vm-height",
            "attributeAliases": [],
            "type": "number",
            "default": 80,
            "description": "Altura da onda (px)."
          },
          "speed": {
            "attribute": "data-vm-speed",
            "attributeAliases": [
              "data-vm-velocidade"
            ],
            "type": "number",
            "default": 0.6,
            "description": "Velocidade do balanço."
          }
        },
        "example": "<section data-vm=\"wave-divider\" data-vm-color=\"#0b0b0c\" style=\"background:#ef650f;height:260px\"></section>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#wave-divider"
      },
      {
        "name": "stack-sections",
        "aliases": [
          "secoes-empilhadas",
          "paineis-empilhados",
          "stacking-sections"
        ],
        "category": "scroll",
        "bundle": "components",
        "description": "As seções filhas ficam paradas e a seguinte desliza por cima delas, como folhas empilhadas. A de baixo encolhe e escurece um pouco enquanto é coberta.",
        "params": {
          "scale": {
            "attribute": "data-vm-scale",
            "attributeAliases": [
              "data-vm-escala"
            ],
            "type": "number",
            "default": 0.92,
            "description": "Tamanho final da seção coberta."
          },
          "dim": {
            "attribute": "data-vm-dim",
            "attributeAliases": [
              "data-vm-apagado"
            ],
            "type": "number",
            "default": 0.45,
            "description": "Quanto escurece (0 a 1)."
          }
        },
        "example": "<div data-vm=\"stack-sections\">\n  <section style=\"min-height:100vh;background:#111\">Um</section>\n  <section style=\"min-height:100vh;background:#ef650f\">Dois</section>\n  <section style=\"min-height:100vh;background:#1d4ed8\">Três</section>\n</div>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#stack-sections"
      },
      {
        "name": "circle-reveal",
        "aliases": [
          "revelar-em-circulo",
          "circulo-que-abre",
          "iris"
        ],
        "category": "scroll",
        "bundle": "components",
        "description": "A seção aparece por um círculo que cresce enquanto ela entra na tela, a partir do centro ou de um canto. Bom para virar o clima da página (fundo escuro depois de claro).",
        "params": {
          "origin": {
            "attribute": "data-vm-origin",
            "attributeAliases": [],
            "type": "enum",
            "default": "center",
            "values": [
              "center",
              "top",
              "bottom",
              "left",
              "right"
            ],
            "description": "De onde o círculo nasce."
          },
          "start": {
            "attribute": "data-vm-start",
            "attributeAliases": [
              "data-vm-inicio"
            ],
            "type": "string",
            "default": "top bottom",
            "description": "Onde começa a abrir."
          },
          "end": {
            "attribute": "data-vm-end",
            "attributeAliases": [
              "data-vm-fim"
            ],
            "type": "string",
            "default": "top 15%",
            "description": "Onde termina de abrir."
          }
        },
        "example": "<section data-vm=\"circle-reveal\" style=\"min-height:80vh;background:#0b0b0c;color:#fff\">...</section>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#circle-reveal"
      },
      {
        "name": "float-label",
        "aliases": [
          "rotulo-flutuante",
          "label-flutuante",
          "floating-label"
        ],
        "category": "interaction",
        "bundle": "components",
        "description": "Nos campos com <label> e <input>/<textarea>/<select>, o rótulo fica dentro do campo e sobe para a borda ao focar ou preencher; uma linha de destaque cresce embaixo. Aplique num formulário ou num campo.",
        "params": {},
        "example": "<form data-vm=\"float-label\" style=\"display:grid;gap:18px;max-width:360px\">\n  <label>Nome <input name=\"nome\" required></label>\n  <label>WhatsApp <input name=\"tel\" type=\"tel\"></label>\n  <label>Mensagem <textarea name=\"msg\" rows=\"3\"></textarea></label>\n</form>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#float-label"
      },
      {
        "name": "form-feedback",
        "aliases": [
          "retorno-do-formulario",
          "validacao-animada",
          "form-shake"
        ],
        "category": "interaction",
        "bundle": "components",
        "description": "Validação com movimento: o campo inválido balança e a mensagem do navegador aparece embaixo deslizando (marcando aria-invalid); ao corrigir, some. No envio válido, o botão mostra que está enviando.",
        "params": {
          "sending": {
            "attribute": "data-vm-sending",
            "attributeAliases": [],
            "type": "string",
            "default": "Enviando…",
            "description": "Texto do botão durante o envio."
          }
        },
        "example": "<form data-vm=\"form-feedback\" style=\"display:grid;gap:14px;max-width:360px\">\n  <input name=\"email\" type=\"email\" required placeholder=\"Seu e-mail\" style=\"padding:14px;border-radius:12px;border:1px solid #3f3f46;background:transparent;color:inherit;font:inherit\">\n  <button type=\"submit\" style=\"padding:14px;border-radius:12px;border:0;background:#ef650f;color:#fff;font:inherit;font-weight:600;cursor:pointer\">Quero receber</button>\n</form>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#form-feedback"
      },
      {
        "name": "flip-card",
        "aliases": [
          "cartao-que-vira",
          "virar-cartao",
          "flipCard"
        ],
        "category": "component",
        "bundle": "components",
        "description": "Cartão com frente e verso que vira em 3D no hover (com mouse) ou no toque/clique e no Enter. Frente e verso são os dois primeiros filhos (ou [data-vm-front] e [data-vm-back]).",
        "params": {
          "mode": {
            "attribute": "data-vm-mode",
            "attributeAliases": [],
            "type": "enum",
            "default": "hover",
            "values": [
              "hover",
              "click"
            ],
            "description": "O que vira o cartão (no celular, sempre o toque)."
          },
          "axis": {
            "attribute": "data-vm-axis",
            "attributeAliases": [
              "data-vm-eixo"
            ],
            "type": "enum",
            "default": "y",
            "values": [
              "y",
              "x"
            ],
            "description": "Eixo do giro."
          }
        },
        "example": "<article data-vm=\"flip-card\" style=\"height:260px\">\n  <div style=\"background:#18181b;padding:24px;border-radius:16px\">Frente</div>\n  <div style=\"background:#ef650f;padding:24px;border-radius:16px\">Verso</div>\n</article>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#flip-card"
      },
      {
        "name": "ring-carousel",
        "aliases": [
          "carrossel-anel-3d",
          "carrossel-em-anel",
          "cylinder-carousel"
        ],
        "category": "component",
        "bundle": "components",
        "description": "Os filhos ficam num anel em 3D que gira devagar sozinho; dá para arrastar com inércia (mouse ou dedo) e usar as setas do teclado. Para depoimentos, produtos e galerias.",
        "params": {
          "speed": {
            "attribute": "data-vm-speed",
            "attributeAliases": [
              "data-vm-velocidade"
            ],
            "type": "number",
            "default": 6,
            "description": "Giro automático (graus por segundo; 0 desliga)."
          },
          "tilt": {
            "attribute": "data-vm-tilt",
            "attributeAliases": [],
            "type": "number",
            "default": -6,
            "description": "Inclinação do anel (graus)."
          },
          "gap": {
            "attribute": "data-vm-gap",
            "attributeAliases": [],
            "type": "number",
            "default": 24,
            "description": "Espaço entre itens (px)."
          }
        },
        "example": "<div data-vm=\"ring-carousel\" style=\"height:360px\">\n  <img src=\"foto-1.jpg\" alt=\"\"><img src=\"foto-2.jpg\" alt=\"\"><img src=\"foto-3.jpg\" alt=\"\">\n  <img src=\"foto-4.jpg\" alt=\"\"><img src=\"foto-5.jpg\" alt=\"\"><img src=\"foto-6.jpg\" alt=\"\">\n</div>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#ring-carousel"
      },
      {
        "name": "video-text",
        "aliases": [
          "video-no-texto",
          "texto-com-video",
          "videoText"
        ],
        "category": "text",
        "bundle": "components",
        "description": "Um vídeo toca dentro das letras de um título grande, sobre qualquer fundo (claro, escuro, degradê ou foto). As letras viram o recorte do vídeo com a fonte da própria página; o texto continua real para leitores de tela e buscadores.",
        "params": {
          "src": {
            "attribute": "data-vm-src",
            "attributeAliases": [
              "data-vm-imagem"
            ],
            "type": "string",
            "default": "",
            "description": "Endereço do vídeo (mp4 ou webm, sem som)."
          },
          "poster": {
            "attribute": "data-vm-poster",
            "attributeAliases": [],
            "type": "string",
            "default": "",
            "description": "Imagem enquanto o vídeo carrega."
          }
        },
        "example": "<h1 data-vm=\"video-text\" data-vm-src=\"video.mp4\" style=\"font-size:16vw;font-weight:900;line-height:.9;margin:0\">ONDA</h1>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#video-text"
      },
      {
        "name": "slideshow",
        "aliases": [
          "apresentacao",
          "galeria-com-transicao",
          "slider-de-fotos",
          "hero-slider"
        ],
        "category": "component",
        "bundle": "components",
        "description": "Galeria de fotos que troca sozinha com transições de cinema: zoom suave (Ken Burns), cortina, persianas ou abertura ao meio. Setas, pontos, arraste no celular, teclado e pausa ao passar o mouse.",
        "params": {
          "effect": {
            "attribute": "data-vm-effect",
            "attributeAliases": [
              "data-vm-efeito"
            ],
            "type": "enum",
            "default": "zoom",
            "values": [
              "zoom",
              "wipe",
              "blinds",
              "split"
            ],
            "description": "A transição."
          },
          "interval": {
            "attribute": "data-vm-interval",
            "attributeAliases": [],
            "type": "time",
            "default": 5,
            "description": "Segundos por foto (0 desliga o automático)."
          },
          "duration": {
            "attribute": "data-vm-duration",
            "attributeAliases": [
              "data-vm-duracao"
            ],
            "type": "time",
            "default": 1.1,
            "description": "Duração da transição."
          },
          "controls": {
            "attribute": "data-vm-controls",
            "attributeAliases": [],
            "type": "boolean",
            "default": true,
            "description": "Setas e pontos."
          }
        },
        "example": "<div data-vm=\"slideshow\" data-vm-effect=\"blinds\" style=\"aspect-ratio:16/9\">\n  <img src=\"foto-1.jpg\" alt=\"Salão\"><img src=\"foto-2.jpg\" alt=\"Equipe\"><img src=\"foto-3.jpg\" alt=\"Detalhe\">\n</div>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#slideshow"
      },
      {
        "name": "kpi-card",
        "aliases": [
          "indicador",
          "cartao-indicador",
          "stat-card",
          "kpi"
        ],
        "category": "component",
        "bundle": "components",
        "description": "Cartão de indicador de painel: rótulo, número que conta até o valor, variação colorida (verde subindo, vermelho caindo; dá para inverter) e minigráfico que se desenha. Tudo por atributos.",
        "params": {
          "label": {
            "attribute": "data-vm-label",
            "attributeAliases": [],
            "type": "string",
            "default": "",
            "description": "Nome do indicador."
          },
          "value": {
            "attribute": "data-vm-value",
            "attributeAliases": [],
            "type": "string",
            "default": "",
            "description": "O valor (sem ele, usa o texto do elemento)."
          },
          "prefix": {
            "attribute": "data-vm-prefix",
            "attributeAliases": [
              "data-vm-prefixo"
            ],
            "type": "string",
            "default": "",
            "description": "Antes do número (ex.: R$ )."
          },
          "suffix": {
            "attribute": "data-vm-suffix",
            "attributeAliases": [
              "data-vm-sufixo"
            ],
            "type": "string",
            "default": "",
            "description": "Depois do número (ex.: %)."
          },
          "decimals": {
            "attribute": "data-vm-decimals",
            "attributeAliases": [
              "data-vm-decimais"
            ],
            "type": "number",
            "default": 0,
            "description": "Casas decimais."
          },
          "delta": {
            "attribute": "data-vm-delta",
            "attributeAliases": [],
            "type": "number",
            "default": 0,
            "description": "Variação em % (positivo ou negativo)."
          },
          "invert": {
            "attribute": "data-vm-invert",
            "attributeAliases": [],
            "type": "boolean",
            "default": false,
            "description": "Cair é bom (ex.: cancelamentos)."
          },
          "trend": {
            "attribute": "data-vm-trend",
            "attributeAliases": [],
            "type": "string",
            "default": "",
            "description": "Valores do minigráfico separados por vírgula."
          },
          "caption": {
            "attribute": "data-vm-caption",
            "attributeAliases": [],
            "type": "string",
            "default": "vs. mês anterior",
            "description": "Texto ao lado da variação."
          }
        },
        "example": "<div data-vm=\"kpi-card\" data-vm-label=\"Receita do mês\" data-vm-prefix=\"R$ \" data-vm-value=\"26940\" data-vm-delta=\"12.4\" data-vm-trend=\"18,21,19,24,23,27\"></div>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#kpi-card"
      },
      {
        "name": "before-after",
        "aliases": [
          "antes-e-depois",
          "comparar-imagens",
          "image-compare",
          "comparison"
        ],
        "category": "component",
        "bundle": "components",
        "description": "Compara duas fotos (antes e depois) com um divisor arrastável. O controle é um input de faixa real (teclado e leitor de tela funcionam). Ao aparecer, o divisor balança uma vez para mostrar que se mexe.",
        "params": {
          "start": {
            "attribute": "data-vm-start",
            "attributeAliases": [
              "data-vm-inicio"
            ],
            "type": "number",
            "default": 50,
            "description": "Posição inicial do divisor (%)."
          },
          "before": {
            "attribute": "data-vm-before",
            "attributeAliases": [],
            "type": "string",
            "default": "Antes",
            "description": "Rótulo da primeira foto."
          },
          "after": {
            "attribute": "data-vm-after",
            "attributeAliases": [],
            "type": "string",
            "default": "Depois",
            "description": "Rótulo da segunda foto."
          }
        },
        "example": "<div data-vm=\"before-after\" style=\"aspect-ratio:4/3\">\n  <img src=\"foto-1.jpg\" alt=\"Antes da reforma\">\n  <img src=\"foto-2.jpg\" alt=\"Depois da reforma\">\n</div>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#before-after"
      },
      {
        "name": "lightbox",
        "aliases": [
          "ampliar-foto",
          "galeria-tela-cheia",
          "zoom-de-foto"
        ],
        "category": "component",
        "bundle": "components",
        "description": "Clique numa foto da galeria e ela cresce da miniatura até a tela cheia (sem salto), com legenda do alt, setas, teclado, arraste no celular e Esc para fechar. Use data-vm-full para uma versão maior da foto.",
        "params": {
          "selector": {
            "attribute": "data-vm-selector",
            "attributeAliases": [
              "data-vm-seletor"
            ],
            "type": "string",
            "default": "img",
            "description": "Quais imagens abrem."
          }
        },
        "example": "<div data-vm=\"lightbox\" style=\"display:grid;grid-template-columns:repeat(3,1fr);gap:10px\">\n  <img src=\"foto-1.jpg\" alt=\"Fachada\"><img src=\"foto-2.jpg\" alt=\"Recepção\"><img src=\"foto-3.jpg\" alt=\"Sala de atendimento\">\n</div>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#lightbox"
      },
      {
        "name": "timeline",
        "aliases": [
          "linha-do-tempo",
          "linha-de-etapas",
          "historia",
          "process"
        ],
        "category": "scroll",
        "bundle": "components",
        "description": "Linha do tempo vertical: a linha enche conforme a página rola e cada etapa acende (bolinha colorida e conteúdo entrando) quando a linha chega nela. Os filhos são as etapas.",
        "params": {
          "side": {
            "attribute": "data-vm-side",
            "attributeAliases": [],
            "type": "enum",
            "default": "left",
            "values": [
              "left",
              "alternate"
            ],
            "description": "Etapas todas à direita da linha, ou alternando lados (no celular, sempre à direita)."
          }
        },
        "example": "<ol data-vm=\"timeline\">\n  <li><h3>Agendamento</h3><p>O cliente escolhe o horário pelo site.</p></li>\n  <li><h3>Lembrete</h3><p>Aviso no WhatsApp um dia antes.</p></li>\n  <li><h3>Atendimento</h3><p>Check-in e pagamento no Pix.</p></li>\n</ol>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#timeline"
      },
      {
        "name": "chat-demo",
        "aliases": [
          "conversa-encenada",
          "chat-animado",
          "whatsapp-demo",
          "mensagens"
        ],
        "category": "component",
        "bundle": "components",
        "description": "Conversa encenada (estilo WhatsApp): as mensagens aparecem uma a uma, com \"digitando…\" antes de cada resposta, quando a área entra na tela. Cada filho é uma mensagem; data-vm-from=\"me\" marca as suas.",
        "params": {
          "speed": {
            "attribute": "data-vm-speed",
            "attributeAliases": [
              "data-vm-velocidade"
            ],
            "type": "number",
            "default": 1,
            "description": "Velocidade da conversa (2 = duas vezes mais rápida)."
          },
          "loop": {
            "attribute": "data-vm-loop",
            "attributeAliases": [],
            "type": "boolean",
            "default": false,
            "description": "Recomeça depois de alguns segundos."
          }
        },
        "example": "<div data-vm=\"chat-demo\" style=\"max-width:360px\">\n  <p>Oi! Tem horário amanhã à tarde?</p>\n  <p data-vm-from=\"me\">Tenho às 15h e às 16h30. Qual prefere?</p>\n  <p>15h, por favor 🙌</p>\n  <p data-vm-from=\"me\">Agendado! Te mando um lembrete 1h antes.</p>\n</div>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#chat-demo"
      },
      {
        "name": "price-toggle",
        "aliases": [
          "preco-mensal-anual",
          "alternar-preco",
          "pricing-toggle",
          "billing-switch"
        ],
        "category": "interaction",
        "bundle": "components",
        "description": "Chave Mensal/Anual com pílula deslizante: os preços marcados com data-vm-monthly e data-vm-yearly rolam até o novo valor, e trechos com data-vm-period=\"yearly\" ou \"monthly\" aparecem e somem. Mostra a economia do anual.",
        "params": {
          "monthly": {
            "attribute": "data-vm-monthly",
            "attributeAliases": [],
            "type": "string",
            "default": "Mensal",
            "description": "Rótulo do mensal."
          },
          "yearly": {
            "attribute": "data-vm-yearly",
            "attributeAliases": [],
            "type": "string",
            "default": "Anual",
            "description": "Rótulo do anual."
          },
          "badge": {
            "attribute": "data-vm-badge",
            "attributeAliases": [],
            "type": "string",
            "default": "",
            "description": "Selo no anual (ex.: -20%)."
          },
          "start": {
            "attribute": "data-vm-start",
            "attributeAliases": [
              "data-vm-inicio"
            ],
            "type": "enum",
            "default": "monthly",
            "values": [
              "monthly",
              "yearly"
            ],
            "description": "Período inicial."
          }
        },
        "example": "<section data-vm=\"price-toggle\" data-vm-badge=\"-20%\">\n  <article><h3>Profissional</h3><strong>R$ <span data-vm-monthly=\"149\" data-vm-yearly=\"119\">149</span>/mês</strong>\n  <small data-vm-period=\"yearly\">cobrado R$ 1.428 por ano</small></article>\n</section>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#price-toggle"
      },
      {
        "name": "columns-parallax",
        "aliases": [
          "colunas-em-paralaxe",
          "colunas-opostas",
          "parallax-columns"
        ],
        "category": "scroll",
        "bundle": "components",
        "description": "Colunas de fotos que andam em sentidos opostos enquanto a página rola (as ímpares sobem, as pares descem). Cada filho é uma coluna; coloque fotos que somem mais que a altura da área.",
        "params": {
          "distance": {
            "attribute": "data-vm-distance",
            "attributeAliases": [
              "data-vm-distancia"
            ],
            "type": "number",
            "default": 18,
            "description": "Quanto cada coluna anda (% da altura da área)."
          }
        },
        "example": "<div data-vm=\"columns-parallax\" style=\"display:grid;grid-template-columns:repeat(3,1fr);gap:16px;height:80vh;overflow:hidden\">\n  <div><img src=\"foto-1.jpg\" alt=\"\"><img src=\"foto-2.jpg\" alt=\"\"></div>\n  <div><img src=\"foto-3.jpg\" alt=\"\"><img src=\"foto-4.jpg\" alt=\"\"></div>\n  <div><img src=\"foto-5.jpg\" alt=\"\"><img src=\"foto-6.jpg\" alt=\"\"></div>\n</div>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#columns-parallax"
      },
      {
        "name": "zoom-through-text",
        "aliases": [
          "mergulhar-no-texto",
          "atravessar-letra",
          "zoom-text",
          "text-zoom-reveal"
        ],
        "category": "scroll",
        "bundle": "components",
        "description": "A seção fica parada e a câmera mergulha numa letra de um título gigante até ela ocupar a tela; aí o título some e aparece o conteúdo marcado com [data-vm-reveal] (uma foto, um vídeo, outro título).",
        "params": {
          "letter": {
            "attribute": "data-vm-letter",
            "attributeAliases": [],
            "type": "number",
            "default": -1,
            "description": "Posição da letra por onde entrar (0 = primeira; -1 = a do meio)."
          },
          "scale": {
            "attribute": "data-vm-scale",
            "attributeAliases": [
              "data-vm-escala"
            ],
            "type": "number",
            "default": 70,
            "description": "Zoom final."
          },
          "length": {
            "attribute": "data-vm-length",
            "attributeAliases": [
              "data-vm-comprimento"
            ],
            "type": "string",
            "default": "+=160%",
            "description": "Quanto rolar durante o mergulho."
          }
        },
        "example": "<section data-vm=\"zoom-through-text\" style=\"height:100vh;background:#0b0b0c;color:#fff;display:grid;place-items:center\">\n  <h2 style=\"font-size:18vw;font-weight:900;margin:0\">VATSE</h2>\n  <img data-vm-reveal src=\"foto-1.jpg\" alt=\"\" style=\"position:absolute;inset:0;width:100%;height:100%;object-fit:cover\">\n</section>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#zoom-through-text"
      },
      {
        "name": "card-fan",
        "aliases": [
          "leque",
          "cartas-em-leque",
          "card-spread"
        ],
        "category": "interaction",
        "bundle": "components",
        "description": "Cartões empilhados que se abrem em leque quando aparecem (ou ao passar o mouse); o cartão sob o cursor sobe um pouco. Bom para planos, depoimentos e capas.",
        "params": {
          "mode": {
            "attribute": "data-vm-mode",
            "attributeAliases": [],
            "type": "enum",
            "default": "view",
            "values": [
              "view",
              "hover"
            ],
            "description": "Abre ao aparecer ou ao passar o mouse."
          },
          "spread": {
            "attribute": "data-vm-spread",
            "attributeAliases": [],
            "type": "number",
            "default": 12,
            "description": "Abertura entre cartões (graus)."
          }
        },
        "example": "<div data-vm=\"card-fan\" style=\"height:340px\">\n  <img src=\"foto-1.jpg\" alt=\"\"><img src=\"foto-2.jpg\" alt=\"\"><img src=\"foto-3.jpg\" alt=\"\"><img src=\"foto-4.jpg\" alt=\"\"><img src=\"foto-5.jpg\" alt=\"\">\n</div>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#card-fan"
      },
      {
        "name": "back-to-top",
        "aliases": [
          "voltar-ao-topo",
          "ir-ao-topo",
          "scroll-top"
        ],
        "category": "interaction",
        "bundle": "components",
        "description": "Botão de voltar ao topo que aparece depois de rolar uma tela, com um anel que mostra quanto da página já foi lido. Coloque num <button> ou <a href=\"#\">.",
        "params": {
          "after": {
            "attribute": "data-vm-after",
            "attributeAliases": [],
            "type": "number",
            "default": 1,
            "description": "Aparece depois de quantas telas."
          }
        },
        "example": "<button data-vm=\"back-to-top\" aria-label=\"Voltar ao topo\"></button>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#back-to-top"
      },
      {
        "name": "placeholder-typer",
        "aliases": [
          "placeholder-digitado",
          "exemplos-na-busca",
          "typing-placeholder"
        ],
        "category": "text",
        "bundle": "components",
        "description": "O placeholder do campo vai digitando e apagando exemplos (separe com |). Para buscas e formulários de cadastro. Para quando a pessoa clica ou digita.",
        "params": {
          "words": {
            "attribute": "data-vm-words",
            "attributeAliases": [],
            "type": "string",
            "default": "",
            "description": "Exemplos separados por |."
          },
          "prefix": {
            "attribute": "data-vm-prefix",
            "attributeAliases": [
              "data-vm-prefixo"
            ],
            "type": "string",
            "default": "",
            "description": "Texto fixo antes (ex.: Buscar )."
          },
          "speed": {
            "attribute": "data-vm-speed",
            "attributeAliases": [
              "data-vm-velocidade"
            ],
            "type": "number",
            "default": 1,
            "description": "Velocidade."
          }
        },
        "example": "<input data-vm=\"placeholder-typer\" data-vm-prefix=\"Buscar \" data-vm-words=\"corte masculino|limpeza de pele|massagem relaxante\" style=\"padding:14px 16px;border-radius:12px;width:min(420px,100%)\">",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#placeholder-typer"
      },
      {
        "name": "star-rating",
        "aliases": [
          "estrelas-de-avaliacao",
          "avaliacao",
          "nota",
          "rating"
        ],
        "category": "component",
        "bundle": "components",
        "description": "Estrelas de avaliação que se preenchem até a nota (aceita frações, ex.: 4,8) quando aparecem, com a nota contando e o total de avaliações.",
        "params": {
          "value": {
            "attribute": "data-vm-value",
            "attributeAliases": [],
            "type": "number",
            "default": -1,
            "description": "A nota (sem ela, usa o texto)."
          },
          "max": {
            "attribute": "data-vm-max",
            "attributeAliases": [
              "data-vm-maximo"
            ],
            "type": "number",
            "default": 5,
            "description": "Número de estrelas."
          },
          "count": {
            "attribute": "data-vm-count",
            "attributeAliases": [],
            "type": "string",
            "default": "",
            "description": "Texto do total (ex.: 1.284 avaliações)."
          }
        },
        "example": "<div data-vm=\"star-rating\" data-vm-count=\"1.284 avaliações no Google\">4,8</div>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#star-rating"
      },
      {
        "name": "pulse-dot",
        "aliases": [
          "ponto-pulsante",
          "ao-vivo",
          "live-dot",
          "status-dot"
        ],
        "category": "component",
        "bundle": "components",
        "description": "Ponto com ondas que pulsam, para indicar algo ao vivo ou online (vagas abertas, atendimento disponível, sistema no ar). O texto do elemento vira o rótulo.",
        "params": {
          "color": {
            "attribute": "data-vm-color",
            "attributeAliases": [
              "data-vm-cor"
            ],
            "type": "color",
            "default": "#10b981",
            "description": "Cor do ponto."
          }
        },
        "example": "<span data-vm=\"pulse-dot\">Atendimento online agora</span>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#pulse-dot"
      },
      {
        "name": "progress-bars",
        "aliases": [
          "barras-de-progresso",
          "barras-de-habilidade",
          "skill-bars"
        ],
        "category": "component",
        "bundle": "components",
        "description": "Barras que se preenchem em cascata quando aparecem, com a porcentagem contando. Cada filho é uma barra: o texto é o rótulo e data-vm-value o valor (0 a 100).",
        "params": {
          "each": {
            "attribute": "data-vm-each",
            "attributeAliases": [
              "data-vm-intervalo"
            ],
            "type": "time",
            "default": 0.12,
            "description": "Intervalo entre barras."
          },
          "suffix": {
            "attribute": "data-vm-suffix",
            "attributeAliases": [
              "data-vm-sufixo"
            ],
            "type": "string",
            "default": "%",
            "description": "Depois do número."
          }
        },
        "example": "<div data-vm=\"progress-bars\" style=\"max-width:520px\">\n  <p data-vm-value=\"92\">Satisfação dos clientes</p>\n  <p data-vm-value=\"76\">Retorno em 30 dias</p>\n  <p data-vm-value=\"58\">Agendamentos pelo celular</p>\n</div>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#progress-bars"
      },
      {
        "name": "scrollspy",
        "aliases": [
          "menu-que-segue",
          "secao-ativa",
          "indicador-de-secao"
        ],
        "category": "interaction",
        "bundle": "components",
        "description": "Num menu com links para seções (#id), o link da seção que está sendo lida fica marcado e uma pílula desliza até ele. Marca aria-current para leitores de tela.",
        "params": {
          "style": {
            "attribute": "data-vm-style",
            "attributeAliases": [
              "data-vm-estilo"
            ],
            "type": "enum",
            "default": "pill",
            "values": [
              "pill",
              "underline"
            ],
            "description": "Pílula de fundo ou sublinhado."
          }
        },
        "example": "<nav data-vm=\"scrollspy\" style=\"display:flex;gap:8px\">\n  <a href=\"#painel\">Painel</a><a href=\"#como\">Como funciona</a><a href=\"#planos\">Planos</a>\n</nav>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#scrollspy"
      },
      {
        "name": "faq",
        "aliases": [
          "perguntas-frequentes",
          "sanfona",
          "accordion"
        ],
        "category": "component",
        "bundle": "components",
        "description": "Perguntas frequentes a partir de <details>/<summary> (funciona sem JavaScript): a resposta abre e fecha com altura suave e o ícone + vira ×. Com data-vm-single=\"true\", abrir uma fecha as outras.",
        "params": {
          "single": {
            "attribute": "data-vm-single",
            "attributeAliases": [],
            "type": "boolean",
            "default": false,
            "description": "Só uma aberta por vez."
          },
          "duration": {
            "attribute": "data-vm-duration",
            "attributeAliases": [
              "data-vm-duracao"
            ],
            "type": "time",
            "default": 0.42,
            "description": "Duração."
          }
        },
        "example": "<div data-vm=\"faq\" data-vm-single=\"true\">\n  <details><summary>Preciso instalar alguma coisa?</summary><p>Não. Funciona no navegador do computador e do celular.</p></details>\n  <details><summary>Posso cancelar quando quiser?</summary><p>Sim, sem multa. O acesso segue até o fim do período pago.</p></details>\n</div>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#faq"
      },
      {
        "name": "dialog",
        "aliases": [
          "modal",
          "janela",
          "popup"
        ],
        "category": "component",
        "bundle": "components",
        "description": "Janela modal animada a partir de um <dialog> nativo (foco preso, Esc e leitor de tela do navegador): entra com escala e o fundo desfoca. Qualquer elemento com data-vm-open=\"#id\" abre; [data-vm-close] ou clique fora fecham.",
        "params": {},
        "example": "<button data-vm-open=\"#ajuda\">Abrir</button>\n<dialog id=\"ajuda\" data-vm=\"dialog\">\n  <h2>Como funciona</h2><p>Explique aqui.</p>\n  <button data-vm-close>Fechar</button>\n</dialog>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#dialog"
      },
      {
        "name": "drawer",
        "aliases": [
          "gaveta",
          "painel-lateral",
          "side-sheet"
        ],
        "category": "component",
        "bundle": "components",
        "description": "Painel que desliza da lateral (ou de baixo, no estilo de folha do celular) a partir de um <dialog> nativo. Mesmos gatilhos do dialog: data-vm-open=\"#id\" abre, [data-vm-close], Esc ou clique fora fecham.",
        "params": {
          "side": {
            "attribute": "data-vm-side",
            "attributeAliases": [],
            "type": "enum",
            "default": "right",
            "values": [
              "right",
              "left",
              "bottom"
            ],
            "description": "De onde o painel sai."
          }
        },
        "example": "<button data-vm-open=\"#carrinho\">Ver carrinho</button>\n<dialog id=\"carrinho\" data-vm=\"drawer\">\n  <h2>Seu carrinho</h2><p>2 itens</p>\n  <button data-vm-close>Fechar</button>\n</dialog>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#drawer"
      },
      {
        "name": "tooltip",
        "aliases": [
          "dica",
          "balao-de-ajuda"
        ],
        "category": "interaction",
        "bundle": "components",
        "description": "Balão de dica que aparece com uma pequena mola no hover e no foco do teclado (ligado por aria-describedby), em cima ou embaixo conforme o espaço. O texto vem de data-vm-text.",
        "params": {
          "text": {
            "attribute": "data-vm-text",
            "attributeAliases": [],
            "type": "string",
            "default": "",
            "description": "O texto da dica."
          },
          "placement": {
            "attribute": "data-vm-placement",
            "attributeAliases": [],
            "type": "enum",
            "default": "top",
            "values": [
              "top",
              "bottom"
            ],
            "description": "Posição preferida."
          }
        },
        "example": "<button data-vm=\"tooltip\" data-vm-text=\"Recebe no Pix na hora\">Pix</button>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#tooltip"
      },
      {
        "name": "copy-button",
        "aliases": [
          "copiar",
          "botao-copiar"
        ],
        "category": "interaction",
        "bundle": "components",
        "description": "Botão que copia um texto (data-vm-text) ou o conteúdo de outro elemento (data-vm-target) e confirma com o ícone virando ✓ e o rótulo \"Copiado\". Bom para chave Pix, cupom, código e link de indicação.",
        "params": {
          "text": {
            "attribute": "data-vm-text",
            "attributeAliases": [],
            "type": "string",
            "default": "",
            "description": "O texto a copiar."
          },
          "target": {
            "attribute": "data-vm-target",
            "attributeAliases": [
              "data-vm-alvo"
            ],
            "type": "selector",
            "default": "",
            "description": "Ou copia o conteúdo deste elemento."
          },
          "done": {
            "attribute": "data-vm-done",
            "attributeAliases": [],
            "type": "string",
            "default": "Copiado!",
            "description": "Rótulo de confirmação."
          }
        },
        "example": "<button data-vm=\"copy-button\" data-vm-text=\"pix@seunegocio.com.br\">Copiar chave Pix</button>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#copy-button"
      },
      {
        "name": "heart-burst",
        "aliases": [
          "curtir",
          "like",
          "coracao"
        ],
        "category": "interaction",
        "bundle": "components",
        "description": "Botão de curtir: o coração enche com um pulo e solta uma explosão de partículas; clicar de novo desfaz. Marca aria-pressed e, com data-vm-count, atualiza o número.",
        "params": {
          "count": {
            "attribute": "data-vm-count",
            "attributeAliases": [],
            "type": "number",
            "default": -1,
            "description": "Contador inicial (-1 esconde)."
          },
          "color": {
            "attribute": "data-vm-color",
            "attributeAliases": [
              "data-vm-cor"
            ],
            "type": "color",
            "default": "#ef4444",
            "description": "Cor do coração."
          }
        },
        "example": "<button data-vm=\"heart-burst\" data-vm-count=\"128\" aria-label=\"Curtir\"></button>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#heart-burst"
      },
      {
        "name": "search-expand",
        "aliases": [
          "busca-expansivel",
          "lupa"
        ],
        "category": "interaction",
        "bundle": "components",
        "description": "Busca recolhida num ícone de lupa que se expande num campo ao clicar (e recolhe com Esc ou ao sair vazia). Envolva um <input type=\"search\">; com <form>, o envio continua normal.",
        "params": {
          "width": {
            "attribute": "data-vm-width",
            "attributeAliases": [],
            "type": "length",
            "default": 260,
            "description": "Largura aberta."
          }
        },
        "example": "<form data-vm=\"search-expand\" action=\"/busca\">\n  <input type=\"search\" name=\"q\" placeholder=\"Buscar serviço\" aria-label=\"Buscar serviço\">\n</form>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#search-expand"
      },
      {
        "name": "dropdown",
        "aliases": [
          "menu-suspenso",
          "lista-suspensa"
        ],
        "category": "interaction",
        "bundle": "components",
        "description": "Menu suspenso: o botão abre a lista (o elemento seguinte, ou [data-vm-list]) com escala e esmaecer. Setas navegam, Esc e clique fora fecham, aria-expanded acompanha.",
        "params": {},
        "example": "<div data-vm=\"dropdown\">\n  <button>Minha conta</button>\n  <ul data-vm-list><li><a href=\"#\">Perfil</a></li><li><a href=\"#\">Assinatura</a></li><li><a href=\"#\">Sair</a></li></ul>\n</div>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#dropdown"
      },
      {
        "name": "cookie-banner",
        "aliases": [
          "aviso-de-cookies",
          "lgpd",
          "consentimento"
        ],
        "category": "component",
        "bundle": "components",
        "description": "Aviso de cookies (LGPD) que sobe do rodapé depois de um instante e some ao escolher. Botões [data-vm-accept] e [data-vm-reject]; a escolha fica guardada no navegador e dispara o evento vm:consent (detail.accepted) para você ligar ou não as tags de medição.",
        "params": {
          "key": {
            "attribute": "data-vm-key",
            "attributeAliases": [],
            "type": "string",
            "default": "vm-consentimento",
            "description": "Nome da escolha guardada."
          },
          "delay": {
            "attribute": "data-vm-delay",
            "attributeAliases": [
              "data-vm-atraso"
            ],
            "type": "time",
            "default": 1.2,
            "description": "Espera antes de aparecer."
          }
        },
        "example": "<div data-vm=\"cookie-banner\">\n  <p>Usamos cookies para medir visitas e melhorar o site.</p>\n  <button data-vm-reject>Recusar</button>\n  <button data-vm-accept>Aceitar</button>\n</div>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#cookie-banner"
      },
      {
        "name": "form-steps",
        "aliases": [
          "formulario-em-etapas",
          "multi-step",
          "etapas-do-formulario"
        ],
        "category": "component",
        "bundle": "components",
        "description": "Formulário em etapas: cada [data-vm-step] vira uma tela, com barra de progresso e contador. [data-vm-next] avança só se os campos obrigatórios da etapa estiverem válidos (o navegador mostra o erro); [data-vm-prev] volta. O último passo envia o <form> normalmente.",
        "params": {
          "labels": {
            "attribute": "data-vm-labels",
            "attributeAliases": [],
            "type": "string",
            "default": "",
            "description": "Nomes das etapas separados por vírgula (aparecem acima da barra)."
          },
          "duration": {
            "attribute": "data-vm-duration",
            "attributeAliases": [
              "data-vm-duracao"
            ],
            "type": "time",
            "default": 0.45,
            "description": "Duração da troca."
          }
        },
        "example": "<form data-vm=\"form-steps\" data-vm-labels=\"Serviço,Horário,Contato\">\n  <div data-vm-step><label>Serviço <select required><option></option><option>Corte</option></select></label><button type=\"button\" data-vm-next>Continuar</button></div>\n  <div data-vm-step><label>Data <input type=\"date\" required></label><button type=\"button\" data-vm-prev>Voltar</button> <button type=\"button\" data-vm-next>Continuar</button></div>\n  <div data-vm-step><label>WhatsApp <input type=\"tel\" required></label><button type=\"button\" data-vm-prev>Voltar</button> <button>Confirmar</button></div>\n</form>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#form-steps"
      },
      {
        "name": "otp-input",
        "aliases": [
          "codigo-de-verificacao",
          "codigo-sms",
          "pin-input"
        ],
        "category": "interaction",
        "bundle": "components",
        "description": "Código de verificação em caixinhas: digitar pula para a próxima, apagar volta, colar o código inteiro preenche tudo e o último dígito dispara o evento vm:complete. O <input> original (com name) recebe o valor e vai no envio do formulário.",
        "params": {
          "length": {
            "attribute": "data-vm-length",
            "attributeAliases": [
              "data-vm-comprimento"
            ],
            "type": "number",
            "default": 6,
            "description": "Quantidade de dígitos."
          }
        },
        "example": "<div data-vm=\"otp-input\" data-vm-length=\"6\">\n  <input name=\"codigo\" aria-label=\"Código de verificação\">\n</div>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#otp-input"
      },
      {
        "name": "password-meter",
        "aliases": [
          "forca-da-senha",
          "senha-forte"
        ],
        "category": "interaction",
        "bundle": "components",
        "description": "Medidor de força de senha sob o campo: a barra cresce e muda de cor (fraca, média, boa, forte) e uma lista mostra o que falta (8 caracteres, letra maiúscula, número, símbolo). Também põe o botão de mostrar e esconder a senha.",
        "params": {
          "min": {
            "attribute": "data-vm-min",
            "attributeAliases": [],
            "type": "number",
            "default": 8,
            "description": "Tamanho mínimo."
          },
          "toggle": {
            "attribute": "data-vm-toggle",
            "attributeAliases": [],
            "type": "boolean",
            "default": true,
            "description": "Botão de mostrar a senha."
          }
        },
        "example": "<label data-vm=\"password-meter\">Crie uma senha\n  <input type=\"password\" name=\"senha\" autocomplete=\"new-password\">\n</label>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#password-meter"
      },
      {
        "name": "dropzone",
        "aliases": [
          "enviar-arquivos",
          "area-de-upload",
          "arrastar-arquivos"
        ],
        "category": "interaction",
        "bundle": "components",
        "description": "Área de enviar arquivos: arrastar por cima acende a borda, soltar (ou clicar e escolher) lista cada arquivo num cartão com nome, tamanho e miniatura de imagem, e cada um pode ser removido. Os arquivos ficam no <input type=\"file\"> original, então o formulário envia normalmente.",
        "params": {
          "text": {
            "attribute": "data-vm-text",
            "attributeAliases": [],
            "type": "string",
            "default": "Arraste arquivos aqui ou clique para escolher",
            "description": "Chamada da área."
          },
          "max": {
            "attribute": "data-vm-max",
            "attributeAliases": [
              "data-vm-maximo"
            ],
            "type": "number",
            "default": 10,
            "description": "Tamanho máximo por arquivo, em MB."
          }
        },
        "example": "<div data-vm=\"dropzone\" data-vm-max=\"5\">\n  <input type=\"file\" name=\"fotos\" accept=\"image/*\" multiple>\n</div>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#dropzone"
      },
      {
        "name": "fly-to-cart",
        "aliases": [
          "voar-para-o-carrinho",
          "adicionar-ao-carrinho"
        ],
        "category": "interaction",
        "bundle": "components",
        "description": "No botão de comprar: uma cópia da foto do produto voa num arco até o carrinho (data-vm-target), que dá um pulo e soma o contador. A foto é a <img> do cartão mais próximo com [data-vm-item]. Dispara vm:add com o total.",
        "params": {
          "target": {
            "attribute": "data-vm-target",
            "attributeAliases": [
              "data-vm-alvo"
            ],
            "type": "selector",
            "default": "[data-vm-cart]",
            "description": "O ícone do carrinho."
          },
          "duration": {
            "attribute": "data-vm-duration",
            "attributeAliases": [
              "data-vm-duracao"
            ],
            "type": "time",
            "default": 0.75,
            "description": "Duração do voo."
          }
        },
        "example": "<a href=\"#\" data-vm-cart aria-label=\"Carrinho\">🛒 <span data-vm-count>0</span></a>\n<article data-vm-item>\n  <img src=\"produto.jpg\" alt=\"Kit barba\">\n  <button data-vm=\"fly-to-cart\" data-vm-target=\"[data-vm-cart]\">Adicionar</button>\n</article>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#fly-to-cart"
      },
      {
        "name": "quantity",
        "aliases": [
          "quantidade",
          "seletor-de-quantidade",
          "qty"
        ],
        "category": "interaction",
        "bundle": "components",
        "description": "Seletor de quantidade com botões − e + em volta de um <input type=\"number\">: o número rola para cima ou para baixo ao mudar e os botões travam no mínimo e no máximo (min e max do input).",
        "params": {},
        "example": "<div data-vm=\"quantity\">\n  <input type=\"number\" name=\"qtd\" value=\"1\" min=\"1\" max=\"10\" aria-label=\"Quantidade\">\n</div>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#quantity"
      },
      {
        "name": "sticky-bar",
        "aliases": [
          "barra-fixa",
          "barra-de-compra",
          "sticky-cta"
        ],
        "category": "scroll",
        "bundle": "components",
        "description": "Barra fixa de compra que sobe da borda quando o botão principal (data-vm-target) sai da tela e desce de volta quando ele reaparece. Ideal para página de produto e página de venda no celular.",
        "params": {
          "target": {
            "attribute": "data-vm-target",
            "attributeAliases": [
              "data-vm-alvo"
            ],
            "type": "selector",
            "default": "",
            "description": "O botão principal que, fora da tela, faz a barra aparecer."
          },
          "side": {
            "attribute": "data-vm-side",
            "attributeAliases": [],
            "type": "enum",
            "default": "bottom",
            "values": [
              "bottom",
              "top"
            ],
            "description": "Borda de onde sai."
          }
        },
        "example": "<a id=\"comprar\" href=\"#planos\">Assinar agora</a>\n<div data-vm=\"sticky-bar\" data-vm-target=\"#comprar\">\n  <span>Plano Pro <b>R$ 89/mês</b></span><a href=\"#planos\">Assinar</a>\n</div>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#sticky-bar"
      },
      {
        "name": "avatar-stack",
        "aliases": [
          "rostos-empilhados",
          "avatares",
          "avatar-group"
        ],
        "category": "component",
        "bundle": "components",
        "description": "Fotos de clientes sobrepostas que entram uma a uma e se afastam no hover, com uma bolha \"+N\" no fim (data-vm-more). Prova social compacta para o topo da página ou ao lado do botão.",
        "params": {
          "more": {
            "attribute": "data-vm-more",
            "attributeAliases": [],
            "type": "number",
            "default": 0,
            "description": "Número da bolha final (0 esconde)."
          },
          "size": {
            "attribute": "data-vm-size",
            "attributeAliases": [],
            "type": "length",
            "default": 44,
            "description": "Tamanho de cada foto."
          }
        },
        "example": "<div data-vm=\"avatar-stack\" data-vm-more=\"120\">\n  <img src=\"a.jpg\" alt=\"Ana\"><img src=\"b.jpg\" alt=\"Bruno\"><img src=\"c.jpg\" alt=\"Carla\">\n</div>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#avatar-stack"
      },
      {
        "name": "toast-stack",
        "aliases": [
          "avisos-empilhados",
          "notificacoes",
          "toast"
        ],
        "category": "component",
        "bundle": "components",
        "description": "Avisos que entram pelo canto, empilham (no máximo 4), pausam com o mouse em cima e somem sozinhos com uma barra de tempo. Qualquer elemento com data-vm-toast=\"texto\" mostra um ao clicar; por código, VatseMotion.toast({ text, type }) ou o evento vm:toast. Tipos: info, success, warning, error.",
        "params": {
          "side": {
            "attribute": "data-vm-side",
            "attributeAliases": [],
            "type": "enum",
            "default": "bottom-right",
            "values": [
              "bottom-right",
              "bottom-left",
              "top-right",
              "top-left",
              "bottom-center"
            ],
            "description": "Canto da tela."
          },
          "duration": {
            "attribute": "data-vm-duration",
            "attributeAliases": [
              "data-vm-duracao"
            ],
            "type": "time",
            "default": 4,
            "description": "Tempo na tela (0 = até fechar)."
          }
        },
        "example": "<div data-vm=\"toast-stack\" data-vm-side=\"bottom-right\"></div>\n<button data-vm-toast=\"Horário reservado para sábado, 10h\" data-vm-type=\"success\">Reservar</button>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#toast-stack"
      },
      {
        "name": "silk",
        "aliases": [
          "seda",
          "bg-silk"
        ],
        "category": "background",
        "bundle": "backgrounds",
        "description": "Seda em movimento: dobras suaves de tecido com brilho, na cor do tema. WebGL leve, pausa fora da tela, movimento reduzido mostra um quadro parado e sem WebGL vira degradê em CSS.",
        "params": {
          "colors": {
            "attribute": "data-vm-colors",
            "attributeAliases": [],
            "type": "string",
            "default": "",
            "description": "Até 3 cores separadas por vírgula (padrão: acento do tema e variações)."
          },
          "speed": {
            "attribute": "data-vm-speed",
            "attributeAliases": [
              "data-vm-velocidade"
            ],
            "type": "number",
            "default": 1,
            "description": "Velocidade da animação (1 = normal)."
          },
          "intensity": {
            "attribute": "data-vm-intensity",
            "attributeAliases": [],
            "type": "number",
            "default": 1,
            "description": "Intensidade do brilho/cor (0 a 1,5)."
          }
        },
        "example": "<section data-vm=\"silk\" style=\"min-height:70vh;display:grid;place-items:center;color:#fff\">\n  <h2>Seu título aqui</h2>\n</section>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#silk"
      },
      {
        "name": "plasma",
        "aliases": [
          "plasma-fluido",
          "bg-plasma"
        ],
        "category": "background",
        "bundle": "backgrounds",
        "description": "Plasma: ondas de cor que se misturam continuamente. WebGL leve, pausa fora da tela, movimento reduzido mostra um quadro parado e sem WebGL vira degradê em CSS.",
        "params": {
          "colors": {
            "attribute": "data-vm-colors",
            "attributeAliases": [],
            "type": "string",
            "default": "",
            "description": "Até 3 cores separadas por vírgula (padrão: acento do tema e variações)."
          },
          "speed": {
            "attribute": "data-vm-speed",
            "attributeAliases": [
              "data-vm-velocidade"
            ],
            "type": "number",
            "default": 1,
            "description": "Velocidade da animação (1 = normal)."
          },
          "intensity": {
            "attribute": "data-vm-intensity",
            "attributeAliases": [],
            "type": "number",
            "default": 1,
            "description": "Intensidade do brilho/cor (0 a 1,5)."
          }
        },
        "example": "<section data-vm=\"plasma\" style=\"min-height:70vh;display:grid;place-items:center;color:#fff\">\n  <h2>Seu título aqui</h2>\n</section>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#plasma"
      },
      {
        "name": "iridescence",
        "aliases": [
          "iridescente",
          "furta-cor",
          "bg-iridescence"
        ],
        "category": "background",
        "bundle": "backgrounds",
        "description": "Película furta-cor (bolha de sabão, holograma) que muda com o tempo e o cursor. WebGL leve, pausa fora da tela, movimento reduzido mostra um quadro parado e sem WebGL vira degradê em CSS.",
        "params": {
          "colors": {
            "attribute": "data-vm-colors",
            "attributeAliases": [],
            "type": "string",
            "default": "",
            "description": "Até 3 cores separadas por vírgula (padrão: acento do tema e variações)."
          },
          "speed": {
            "attribute": "data-vm-speed",
            "attributeAliases": [
              "data-vm-velocidade"
            ],
            "type": "number",
            "default": 1,
            "description": "Velocidade da animação (1 = normal)."
          },
          "intensity": {
            "attribute": "data-vm-intensity",
            "attributeAliases": [],
            "type": "number",
            "default": 1,
            "description": "Intensidade do brilho/cor (0 a 1,5)."
          }
        },
        "example": "<section data-vm=\"iridescence\" style=\"min-height:70vh;display:grid;place-items:center;color:#fff\">\n  <h2>Seu título aqui</h2>\n</section>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#iridescence"
      },
      {
        "name": "liquid-chrome",
        "aliases": [
          "cromo-liquido",
          "metal-liquido",
          "bg-liquid-chrome"
        ],
        "category": "background",
        "bundle": "backgrounds",
        "description": "Metal líquido cromado com reflexos ondulando (o cursor deforma). WebGL leve, pausa fora da tela, movimento reduzido mostra um quadro parado e sem WebGL vira degradê em CSS.",
        "params": {
          "colors": {
            "attribute": "data-vm-colors",
            "attributeAliases": [],
            "type": "string",
            "default": "",
            "description": "Até 3 cores separadas por vírgula (padrão: acento do tema e variações)."
          },
          "speed": {
            "attribute": "data-vm-speed",
            "attributeAliases": [
              "data-vm-velocidade"
            ],
            "type": "number",
            "default": 1,
            "description": "Velocidade da animação (1 = normal)."
          },
          "intensity": {
            "attribute": "data-vm-intensity",
            "attributeAliases": [],
            "type": "number",
            "default": 1,
            "description": "Intensidade do brilho/cor (0 a 1,5)."
          }
        },
        "example": "<section data-vm=\"liquid-chrome\" style=\"min-height:70vh;display:grid;place-items:center;color:#fff\">\n  <h2>Seu título aqui</h2>\n</section>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#liquid-chrome"
      },
      {
        "name": "light-rays",
        "aliases": [
          "raios-de-luz",
          "feixes-de-luz",
          "bg-light-rays"
        ],
        "category": "background",
        "bundle": "backgrounds",
        "description": "Raios de luz caindo do alto, como sol entrando por uma janela, com poeira sutil. WebGL leve, pausa fora da tela, movimento reduzido mostra um quadro parado e sem WebGL vira degradê em CSS.",
        "params": {
          "colors": {
            "attribute": "data-vm-colors",
            "attributeAliases": [],
            "type": "string",
            "default": "",
            "description": "Até 3 cores separadas por vírgula (padrão: acento do tema e variações)."
          },
          "speed": {
            "attribute": "data-vm-speed",
            "attributeAliases": [
              "data-vm-velocidade"
            ],
            "type": "number",
            "default": 1,
            "description": "Velocidade da animação (1 = normal)."
          },
          "intensity": {
            "attribute": "data-vm-intensity",
            "attributeAliases": [],
            "type": "number",
            "default": 1,
            "description": "Intensidade do brilho/cor (0 a 1,5)."
          }
        },
        "example": "<section data-vm=\"light-rays\" style=\"min-height:70vh;display:grid;place-items:center;color:#fff\">\n  <h2>Seu título aqui</h2>\n</section>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#light-rays"
      },
      {
        "name": "gradient-waves",
        "aliases": [
          "ondas-degrade",
          "ondas",
          "bg-gradient-waves"
        ],
        "category": "background",
        "bundle": "backgrounds",
        "description": "Faixas de degradê ondulando lentamente (fundo de produto, calmo e elegante). WebGL leve, pausa fora da tela, movimento reduzido mostra um quadro parado e sem WebGL vira degradê em CSS.",
        "params": {
          "colors": {
            "attribute": "data-vm-colors",
            "attributeAliases": [],
            "type": "string",
            "default": "",
            "description": "Até 3 cores separadas por vírgula (padrão: acento do tema e variações)."
          },
          "speed": {
            "attribute": "data-vm-speed",
            "attributeAliases": [
              "data-vm-velocidade"
            ],
            "type": "number",
            "default": 1,
            "description": "Velocidade da animação (1 = normal)."
          },
          "intensity": {
            "attribute": "data-vm-intensity",
            "attributeAliases": [],
            "type": "number",
            "default": 1,
            "description": "Intensidade do brilho/cor (0 a 1,5)."
          }
        },
        "example": "<section data-vm=\"gradient-waves\" style=\"min-height:70vh;display:grid;place-items:center;color:#fff\">\n  <h2>Seu título aqui</h2>\n</section>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#gradient-waves"
      },
      {
        "name": "galaxy",
        "aliases": [
          "galaxia",
          "estrelas",
          "universo",
          "bg-galaxy"
        ],
        "category": "background",
        "bundle": "backgrounds",
        "description": "Campo de estrelas em camadas com nebulosa colorida; o cursor dá paralaxe. WebGL leve, pausa fora da tela, movimento reduzido mostra um quadro parado e sem WebGL vira degradê em CSS.",
        "params": {
          "colors": {
            "attribute": "data-vm-colors",
            "attributeAliases": [],
            "type": "string",
            "default": "",
            "description": "Até 3 cores separadas por vírgula (padrão: acento do tema e variações)."
          },
          "speed": {
            "attribute": "data-vm-speed",
            "attributeAliases": [
              "data-vm-velocidade"
            ],
            "type": "number",
            "default": 1,
            "description": "Velocidade da animação (1 = normal)."
          },
          "intensity": {
            "attribute": "data-vm-intensity",
            "attributeAliases": [],
            "type": "number",
            "default": 1,
            "description": "Intensidade do brilho/cor (0 a 1,5)."
          }
        },
        "example": "<section data-vm=\"galaxy\" style=\"min-height:70vh;display:grid;place-items:center;color:#fff\">\n  <h2>Seu título aqui</h2>\n</section>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#galaxy"
      },
      {
        "name": "dither",
        "aliases": [
          "pontilhado",
          "retro",
          "bg-dither"
        ],
        "category": "background",
        "bundle": "backgrounds",
        "description": "Degradê animado em pontilhado ordenado (estética retrô de 1 bit). WebGL leve, pausa fora da tela, movimento reduzido mostra um quadro parado e sem WebGL vira degradê em CSS.",
        "params": {
          "colors": {
            "attribute": "data-vm-colors",
            "attributeAliases": [],
            "type": "string",
            "default": "",
            "description": "Até 3 cores separadas por vírgula (padrão: acento do tema e variações)."
          },
          "speed": {
            "attribute": "data-vm-speed",
            "attributeAliases": [
              "data-vm-velocidade"
            ],
            "type": "number",
            "default": 1,
            "description": "Velocidade da animação (1 = normal)."
          },
          "intensity": {
            "attribute": "data-vm-intensity",
            "attributeAliases": [],
            "type": "number",
            "default": 1,
            "description": "Intensidade do brilho/cor (0 a 1,5)."
          }
        },
        "example": "<section data-vm=\"dither\" style=\"min-height:70vh;display:grid;place-items:center;color:#fff\">\n  <h2>Seu título aqui</h2>\n</section>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#dither"
      },
      {
        "name": "grainient",
        "aliases": [
          "degrade-granulado",
          "grao-degrade",
          "bg-grainient"
        ],
        "category": "background",
        "bundle": "backgrounds",
        "description": "Degradê de manchas suaves com grão fino de filme (muito usado em sites de agência). WebGL leve, pausa fora da tela, movimento reduzido mostra um quadro parado e sem WebGL vira degradê em CSS.",
        "params": {
          "colors": {
            "attribute": "data-vm-colors",
            "attributeAliases": [],
            "type": "string",
            "default": "",
            "description": "Até 3 cores separadas por vírgula (padrão: acento do tema e variações)."
          },
          "speed": {
            "attribute": "data-vm-speed",
            "attributeAliases": [
              "data-vm-velocidade"
            ],
            "type": "number",
            "default": 1,
            "description": "Velocidade da animação (1 = normal)."
          },
          "intensity": {
            "attribute": "data-vm-intensity",
            "attributeAliases": [],
            "type": "number",
            "default": 1,
            "description": "Intensidade do brilho/cor (0 a 1,5)."
          }
        },
        "example": "<section data-vm=\"grainient\" style=\"min-height:70vh;display:grid;place-items:center;color:#fff\">\n  <h2>Seu título aqui</h2>\n</section>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#grainient"
      },
      {
        "name": "beams",
        "aliases": [
          "feixes",
          "colunas-de-luz",
          "bg-beams"
        ],
        "category": "background",
        "bundle": "backgrounds",
        "description": "Feixes verticais de luz deslizando devagar, como em palco. WebGL leve, pausa fora da tela, movimento reduzido mostra um quadro parado e sem WebGL vira degradê em CSS.",
        "params": {
          "colors": {
            "attribute": "data-vm-colors",
            "attributeAliases": [],
            "type": "string",
            "default": "",
            "description": "Até 3 cores separadas por vírgula (padrão: acento do tema e variações)."
          },
          "speed": {
            "attribute": "data-vm-speed",
            "attributeAliases": [
              "data-vm-velocidade"
            ],
            "type": "number",
            "default": 1,
            "description": "Velocidade da animação (1 = normal)."
          },
          "intensity": {
            "attribute": "data-vm-intensity",
            "attributeAliases": [],
            "type": "number",
            "default": 1,
            "description": "Intensidade do brilho/cor (0 a 1,5)."
          }
        },
        "example": "<section data-vm=\"beams\" style=\"min-height:70vh;display:grid;place-items:center;color:#fff\">\n  <h2>Seu título aqui</h2>\n</section>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#beams"
      },
      {
        "name": "threads",
        "aliases": [
          "fios",
          "linhas-flutuantes",
          "bg-threads"
        ],
        "category": "background",
        "bundle": "backgrounds",
        "description": "Fios finos ondulando em conjunto, que se curvam em direção ao cursor. WebGL leve, pausa fora da tela, movimento reduzido mostra um quadro parado e sem WebGL vira degradê em CSS.",
        "params": {
          "colors": {
            "attribute": "data-vm-colors",
            "attributeAliases": [],
            "type": "string",
            "default": "",
            "description": "Até 3 cores separadas por vírgula (padrão: acento do tema e variações)."
          },
          "speed": {
            "attribute": "data-vm-speed",
            "attributeAliases": [
              "data-vm-velocidade"
            ],
            "type": "number",
            "default": 1,
            "description": "Velocidade da animação (1 = normal)."
          },
          "intensity": {
            "attribute": "data-vm-intensity",
            "attributeAliases": [],
            "type": "number",
            "default": 1,
            "description": "Intensidade do brilho/cor (0 a 1,5)."
          }
        },
        "example": "<section data-vm=\"threads\" style=\"min-height:70vh;display:grid;place-items:center;color:#fff\">\n  <h2>Seu título aqui</h2>\n</section>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#threads"
      },
      {
        "name": "orb",
        "aliases": [
          "esfera",
          "orbe",
          "bg-orb"
        ],
        "category": "background",
        "bundle": "backgrounds",
        "description": "Esfera de energia que pulsa no centro e segue o cursor de leve. WebGL leve, pausa fora da tela, movimento reduzido mostra um quadro parado e sem WebGL vira degradê em CSS.",
        "params": {
          "colors": {
            "attribute": "data-vm-colors",
            "attributeAliases": [],
            "type": "string",
            "default": "",
            "description": "Até 3 cores separadas por vírgula (padrão: acento do tema e variações)."
          },
          "speed": {
            "attribute": "data-vm-speed",
            "attributeAliases": [
              "data-vm-velocidade"
            ],
            "type": "number",
            "default": 1,
            "description": "Velocidade da animação (1 = normal)."
          },
          "intensity": {
            "attribute": "data-vm-intensity",
            "attributeAliases": [],
            "type": "number",
            "default": 1,
            "description": "Intensidade do brilho/cor (0 a 1,5)."
          }
        },
        "example": "<section data-vm=\"orb\" style=\"min-height:70vh;display:grid;place-items:center;color:#fff\">\n  <h2>Seu título aqui</h2>\n</section>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#orb"
      },
      {
        "name": "dark-veil",
        "aliases": [
          "veu-escuro",
          "fumaca",
          "bg-dark-veil"
        ],
        "category": "background",
        "bundle": "backgrounds",
        "description": "Véu escuro de fumaça com brilhos discretos na cor do tema (fundo sóbrio e premium). WebGL leve, pausa fora da tela, movimento reduzido mostra um quadro parado e sem WebGL vira degradê em CSS.",
        "params": {
          "colors": {
            "attribute": "data-vm-colors",
            "attributeAliases": [],
            "type": "string",
            "default": "",
            "description": "Até 3 cores separadas por vírgula (padrão: acento do tema e variações)."
          },
          "speed": {
            "attribute": "data-vm-speed",
            "attributeAliases": [
              "data-vm-velocidade"
            ],
            "type": "number",
            "default": 1,
            "description": "Velocidade da animação (1 = normal)."
          },
          "intensity": {
            "attribute": "data-vm-intensity",
            "attributeAliases": [],
            "type": "number",
            "default": 1,
            "description": "Intensidade do brilho/cor (0 a 1,5)."
          }
        },
        "example": "<section data-vm=\"dark-veil\" style=\"min-height:70vh;display:grid;place-items:center;color:#fff\">\n  <h2>Seu título aqui</h2>\n</section>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#dark-veil"
      },
      {
        "name": "ripple-grid",
        "aliases": [
          "grade-ondulada",
          "bg-ripple-grid"
        ],
        "category": "background",
        "bundle": "backgrounds",
        "description": "Grade de linhas finas que ondula a partir do cursor, como água. WebGL leve, pausa fora da tela, movimento reduzido mostra um quadro parado e sem WebGL vira degradê em CSS.",
        "params": {
          "colors": {
            "attribute": "data-vm-colors",
            "attributeAliases": [],
            "type": "string",
            "default": "",
            "description": "Até 3 cores separadas por vírgula (padrão: acento do tema e variações)."
          },
          "speed": {
            "attribute": "data-vm-speed",
            "attributeAliases": [
              "data-vm-velocidade"
            ],
            "type": "number",
            "default": 1,
            "description": "Velocidade da animação (1 = normal)."
          },
          "intensity": {
            "attribute": "data-vm-intensity",
            "attributeAliases": [],
            "type": "number",
            "default": 1,
            "description": "Intensidade do brilho/cor (0 a 1,5)."
          }
        },
        "example": "<section data-vm=\"ripple-grid\" style=\"min-height:70vh;display:grid;place-items:center;color:#fff\">\n  <h2>Seu título aqui</h2>\n</section>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#ripple-grid"
      },
      {
        "name": "hyperspeed",
        "aliases": [
          "velocidade-da-luz",
          "tunel-de-luz",
          "bg-hyperspeed"
        ],
        "category": "background",
        "bundle": "backgrounds",
        "description": "Túnel de rastros de luz em alta velocidade (sensação de viagem). WebGL leve, pausa fora da tela, movimento reduzido mostra um quadro parado e sem WebGL vira degradê em CSS.",
        "params": {
          "colors": {
            "attribute": "data-vm-colors",
            "attributeAliases": [],
            "type": "string",
            "default": "",
            "description": "Até 3 cores separadas por vírgula (padrão: acento do tema e variações)."
          },
          "speed": {
            "attribute": "data-vm-speed",
            "attributeAliases": [
              "data-vm-velocidade"
            ],
            "type": "number",
            "default": 1,
            "description": "Velocidade da animação (1 = normal)."
          },
          "intensity": {
            "attribute": "data-vm-intensity",
            "attributeAliases": [],
            "type": "number",
            "default": 1,
            "description": "Intensidade do brilho/cor (0 a 1,5)."
          }
        },
        "example": "<section data-vm=\"hyperspeed\" style=\"min-height:70vh;display:grid;place-items:center;color:#fff\">\n  <h2>Seu título aqui</h2>\n</section>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#hyperspeed"
      },
      {
        "name": "topography",
        "aliases": [
          "topografia",
          "curvas-de-nivel",
          "bg-topography"
        ],
        "category": "background",
        "bundle": "backgrounds",
        "description": "Curvas de nível de um mapa topográfico, derivando devagar. WebGL leve, pausa fora da tela, movimento reduzido mostra um quadro parado e sem WebGL vira degradê em CSS.",
        "params": {
          "colors": {
            "attribute": "data-vm-colors",
            "attributeAliases": [],
            "type": "string",
            "default": "",
            "description": "Até 3 cores separadas por vírgula (padrão: acento do tema e variações)."
          },
          "speed": {
            "attribute": "data-vm-speed",
            "attributeAliases": [
              "data-vm-velocidade"
            ],
            "type": "number",
            "default": 1,
            "description": "Velocidade da animação (1 = normal)."
          },
          "intensity": {
            "attribute": "data-vm-intensity",
            "attributeAliases": [],
            "type": "number",
            "default": 1,
            "description": "Intensidade do brilho/cor (0 a 1,5)."
          }
        },
        "example": "<section data-vm=\"topography\" style=\"min-height:70vh;display:grid;place-items:center;color:#fff\">\n  <h2>Seu título aqui</h2>\n</section>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#topography"
      },
      {
        "name": "radar",
        "aliases": [
          "radar-de-varredura",
          "bg-radar"
        ],
        "category": "background",
        "bundle": "backgrounds",
        "description": "Radar com varredura girando, anéis e pontos que acendem quando a linha passa. WebGL leve, pausa fora da tela, movimento reduzido mostra um quadro parado e sem WebGL vira degradê em CSS.",
        "params": {
          "colors": {
            "attribute": "data-vm-colors",
            "attributeAliases": [],
            "type": "string",
            "default": "",
            "description": "Até 3 cores separadas por vírgula (padrão: acento do tema e variações)."
          },
          "speed": {
            "attribute": "data-vm-speed",
            "attributeAliases": [
              "data-vm-velocidade"
            ],
            "type": "number",
            "default": 1,
            "description": "Velocidade da animação (1 = normal)."
          },
          "intensity": {
            "attribute": "data-vm-intensity",
            "attributeAliases": [],
            "type": "number",
            "default": 1,
            "description": "Intensidade do brilho/cor (0 a 1,5)."
          }
        },
        "example": "<section data-vm=\"radar\" style=\"min-height:70vh;display:grid;place-items:center;color:#fff\">\n  <h2>Seu título aqui</h2>\n</section>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#radar"
      },
      {
        "name": "color-bends",
        "aliases": [
          "curvas-de-cor",
          "faixas-curvas",
          "bg-color-bends"
        ],
        "category": "background",
        "bundle": "backgrounds",
        "description": "Faixas largas de cor que se curvam e torcem, bem gráficas. WebGL leve, pausa fora da tela, movimento reduzido mostra um quadro parado e sem WebGL vira degradê em CSS.",
        "params": {
          "colors": {
            "attribute": "data-vm-colors",
            "attributeAliases": [],
            "type": "string",
            "default": "",
            "description": "Até 3 cores separadas por vírgula (padrão: acento do tema e variações)."
          },
          "speed": {
            "attribute": "data-vm-speed",
            "attributeAliases": [
              "data-vm-velocidade"
            ],
            "type": "number",
            "default": 1,
            "description": "Velocidade da animação (1 = normal)."
          },
          "intensity": {
            "attribute": "data-vm-intensity",
            "attributeAliases": [],
            "type": "number",
            "default": 1,
            "description": "Intensidade do brilho/cor (0 a 1,5)."
          }
        },
        "example": "<section data-vm=\"color-bends\" style=\"min-height:70vh;display:grid;place-items:center;color:#fff\">\n  <h2>Seu título aqui</h2>\n</section>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#color-bends"
      },
      {
        "name": "lightning",
        "aliases": [
          "relampago",
          "raio",
          "bg-lightning"
        ],
        "category": "background",
        "bundle": "backgrounds",
        "description": "Relâmpago: um raio de energia serpenteando de cima a baixo, com brilho e cintilação. WebGL leve, pausa fora da tela, movimento reduzido mostra um quadro parado e sem WebGL vira degradê em CSS.",
        "params": {
          "colors": {
            "attribute": "data-vm-colors",
            "attributeAliases": [],
            "type": "string",
            "default": "",
            "description": "Até 3 cores separadas por vírgula (padrão: acento do tema e variações)."
          },
          "speed": {
            "attribute": "data-vm-speed",
            "attributeAliases": [
              "data-vm-velocidade"
            ],
            "type": "number",
            "default": 1,
            "description": "Velocidade da animação (1 = normal)."
          },
          "intensity": {
            "attribute": "data-vm-intensity",
            "attributeAliases": [],
            "type": "number",
            "default": 1,
            "description": "Intensidade do brilho/cor (0 a 1,5)."
          }
        },
        "example": "<section data-vm=\"lightning\" style=\"min-height:70vh;display:grid;place-items:center;color:#fff\">\n  <h2>Seu título aqui</h2>\n</section>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#lightning"
      },
      {
        "name": "prism",
        "aliases": [
          "prisma",
          "bg-prism"
        ],
        "category": "background",
        "bundle": "backgrounds",
        "description": "Prisma: um triângulo de vidro girando devagar que abre a luz branca num leque de arco-íris. WebGL leve, pausa fora da tela, movimento reduzido mostra um quadro parado e sem WebGL vira degradê em CSS.",
        "params": {
          "colors": {
            "attribute": "data-vm-colors",
            "attributeAliases": [],
            "type": "string",
            "default": "",
            "description": "Até 3 cores separadas por vírgula (padrão: acento do tema e variações)."
          },
          "speed": {
            "attribute": "data-vm-speed",
            "attributeAliases": [
              "data-vm-velocidade"
            ],
            "type": "number",
            "default": 1,
            "description": "Velocidade da animação (1 = normal)."
          },
          "intensity": {
            "attribute": "data-vm-intensity",
            "attributeAliases": [],
            "type": "number",
            "default": 1,
            "description": "Intensidade do brilho/cor (0 a 1,5)."
          }
        },
        "example": "<section data-vm=\"prism\" style=\"min-height:70vh;display:grid;place-items:center;color:#fff\">\n  <h2>Seu título aqui</h2>\n</section>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#prism"
      },
      {
        "name": "balatro",
        "aliases": [
          "tinta-girando",
          "redemoinho",
          "bg-balatro"
        ],
        "category": "background",
        "bundle": "backgrounds",
        "description": "Tinta em redemoinho: cores do tema girando como tinta líquida misturada (estilo cartaz psicodélico). WebGL leve, pausa fora da tela, movimento reduzido mostra um quadro parado e sem WebGL vira degradê em CSS.",
        "params": {
          "colors": {
            "attribute": "data-vm-colors",
            "attributeAliases": [],
            "type": "string",
            "default": "",
            "description": "Até 3 cores separadas por vírgula (padrão: acento do tema e variações)."
          },
          "speed": {
            "attribute": "data-vm-speed",
            "attributeAliases": [
              "data-vm-velocidade"
            ],
            "type": "number",
            "default": 1,
            "description": "Velocidade da animação (1 = normal)."
          },
          "intensity": {
            "attribute": "data-vm-intensity",
            "attributeAliases": [],
            "type": "number",
            "default": 1,
            "description": "Intensidade do brilho/cor (0 a 1,5)."
          }
        },
        "example": "<section data-vm=\"balatro\" style=\"min-height:70vh;display:grid;place-items:center;color:#fff\">\n  <h2>Seu título aqui</h2>\n</section>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#balatro"
      },
      {
        "name": "light-pillar",
        "aliases": [
          "pilar-de-luz",
          "coluna-de-luz",
          "bg-light-pillar"
        ],
        "category": "background",
        "bundle": "backgrounds",
        "description": "Pilar de luz: uma coluna vertical brilhante com névoa e faíscas subindo (bom atrás de um título). WebGL leve, pausa fora da tela, movimento reduzido mostra um quadro parado e sem WebGL vira degradê em CSS.",
        "params": {
          "colors": {
            "attribute": "data-vm-colors",
            "attributeAliases": [],
            "type": "string",
            "default": "",
            "description": "Até 3 cores separadas por vírgula (padrão: acento do tema e variações)."
          },
          "speed": {
            "attribute": "data-vm-speed",
            "attributeAliases": [
              "data-vm-velocidade"
            ],
            "type": "number",
            "default": 1,
            "description": "Velocidade da animação (1 = normal)."
          },
          "intensity": {
            "attribute": "data-vm-intensity",
            "attributeAliases": [],
            "type": "number",
            "default": 1,
            "description": "Intensidade do brilho/cor (0 a 1,5)."
          }
        },
        "example": "<section data-vm=\"light-pillar\" style=\"min-height:70vh;display:grid;place-items:center;color:#fff\">\n  <h2>Seu título aqui</h2>\n</section>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#light-pillar"
      },
      {
        "name": "line-waves",
        "aliases": [
          "linhas-em-onda",
          "ondas-de-linhas",
          "bg-line-waves"
        ],
        "category": "background",
        "bundle": "backgrounds",
        "description": "Linhas finas em onda que se deslocam devagar e se curvam perto do cursor (fundo técnico e elegante). WebGL leve, pausa fora da tela, movimento reduzido mostra um quadro parado e sem WebGL vira degradê em CSS.",
        "params": {
          "colors": {
            "attribute": "data-vm-colors",
            "attributeAliases": [],
            "type": "string",
            "default": "",
            "description": "Até 3 cores separadas por vírgula (padrão: acento do tema e variações)."
          },
          "speed": {
            "attribute": "data-vm-speed",
            "attributeAliases": [
              "data-vm-velocidade"
            ],
            "type": "number",
            "default": 1,
            "description": "Velocidade da animação (1 = normal)."
          },
          "intensity": {
            "attribute": "data-vm-intensity",
            "attributeAliases": [],
            "type": "number",
            "default": 1,
            "description": "Intensidade do brilho/cor (0 a 1,5)."
          }
        },
        "example": "<section data-vm=\"line-waves\" style=\"min-height:70vh;display:grid;place-items:center;color:#fff\">\n  <h2>Seu título aqui</h2>\n</section>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#line-waves"
      },
      {
        "name": "faulty-terminal",
        "aliases": [
          "terminal-com-defeito",
          "terminal",
          "crt",
          "bg-faulty-terminal"
        ],
        "category": "background",
        "bundle": "backgrounds",
        "description": "Terminal antigo com defeito: grade de caracteres piscando, linhas de varredura e faixa de interferência (use cor verde ou âmbar). WebGL leve, pausa fora da tela, movimento reduzido mostra um quadro parado e sem WebGL vira degradê em CSS.",
        "params": {
          "colors": {
            "attribute": "data-vm-colors",
            "attributeAliases": [],
            "type": "string",
            "default": "",
            "description": "Até 3 cores separadas por vírgula (padrão: acento do tema e variações)."
          },
          "speed": {
            "attribute": "data-vm-speed",
            "attributeAliases": [
              "data-vm-velocidade"
            ],
            "type": "number",
            "default": 1,
            "description": "Velocidade da animação (1 = normal)."
          },
          "intensity": {
            "attribute": "data-vm-intensity",
            "attributeAliases": [],
            "type": "number",
            "default": 1,
            "description": "Intensidade do brilho/cor (0 a 1,5)."
          }
        },
        "example": "<section data-vm=\"faulty-terminal\" style=\"min-height:70vh;display:grid;place-items:center;color:#fff\">\n  <h2>Seu título aqui</h2>\n</section>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#faulty-terminal"
      },
      {
        "name": "chart",
        "aliases": [
          "grafico",
          "graficos",
          "apex",
          "dashboard-chart"
        ],
        "category": "chart",
        "bundle": "charts",
        "description": "Gráfico completo em SVG no estilo ApexCharts: linha, área, coluna, barra, empilhado, combinado (series[i].type), segundo eixo (series[i].yAxis: 1), rosca, pizza, radial, mapa de calor, candlestick ([abertura, máxima, mínima, fechamento]), treemap e sparkline. Zoom por seleção, anotações (annotations.xaxis/yaxis/points), exportar PNG/SVG/CSV. Eixos com escala automática, grade, tooltip compartilhado com linha-guia, legenda que liga e desliga séries, meta, rótulos, entrada e atualização animadas, claro/escuro e tabela para leitor de tela. Os dados vêm de um <script type=\"application/json\">, de data-vm-config ou de uma <table> comum (que continua lá para quem não tem JavaScript). Por código: VatseMotion.chart(el, opções) devolve { update(), toggleSeries(), destroy() }.",
        "params": {
          "type": {
            "attribute": "data-vm-type",
            "attributeAliases": [],
            "type": "enum",
            "default": "line",
            "values": [
              "line",
              "area",
              "column",
              "bar",
              "donut",
              "pie",
              "radial",
              "heatmap",
              "candlestick",
              "treemap"
            ],
            "description": "Tipo do gráfico."
          },
          "height": {
            "attribute": "data-vm-height",
            "attributeAliases": [],
            "type": "number",
            "default": 320,
            "description": "Altura em px."
          },
          "stacked": {
            "attribute": "data-vm-stacked",
            "attributeAliases": [],
            "type": "boolean",
            "default": false,
            "description": "Empilha as séries (coluna, barra e área)."
          },
          "curve": {
            "attribute": "data-vm-curve",
            "attributeAliases": [],
            "type": "enum",
            "default": "smooth",
            "values": [
              "smooth",
              "straight",
              "step"
            ],
            "description": "Forma da linha."
          },
          "legend": {
            "attribute": "data-vm-legend",
            "attributeAliases": [],
            "type": "enum",
            "default": "bottom",
            "values": [
              "bottom",
              "top",
              "none"
            ],
            "description": "Onde fica a legenda (clicável)."
          },
          "dataLabels": {
            "attribute": "data-vm-data-labels",
            "attributeAliases": [],
            "type": "boolean",
            "default": false,
            "description": "Mostra o valor em cada ponto, barra ou fatia."
          },
          "markers": {
            "attribute": "data-vm-markers",
            "attributeAliases": [],
            "type": "boolean",
            "default": true,
            "description": "Pontos nas linhas."
          },
          "grid": {
            "attribute": "data-vm-grid",
            "attributeAliases": [],
            "type": "boolean",
            "default": true,
            "description": "Grade e eixos."
          },
          "sparkline": {
            "attribute": "data-vm-sparkline",
            "attributeAliases": [],
            "type": "boolean",
            "default": false,
            "description": "Versão mínima, sem eixos nem legenda (para cartões de indicador)."
          },
          "prefix": {
            "attribute": "data-vm-prefix",
            "attributeAliases": [
              "data-vm-prefixo"
            ],
            "type": "string",
            "default": "",
            "description": "Antes do número (ex.: R$ )."
          },
          "suffix": {
            "attribute": "data-vm-suffix",
            "attributeAliases": [
              "data-vm-sufixo"
            ],
            "type": "string",
            "default": "",
            "description": "Depois do número (ex.: %)."
          },
          "decimals": {
            "attribute": "data-vm-decimals",
            "attributeAliases": [
              "data-vm-decimais"
            ],
            "type": "number",
            "default": 2,
            "description": "Casas decimais máximas."
          },
          "compact": {
            "attribute": "data-vm-compact",
            "attributeAliases": [],
            "type": "boolean",
            "default": false,
            "description": "Números curtos (1,2 mil; 3,4 mi)."
          },
          "goal": {
            "attribute": "data-vm-goal",
            "attributeAliases": [],
            "type": "number",
            "default": -1,
            "description": "Linha de meta (valor); -1 desliga."
          },
          "title": {
            "attribute": "data-vm-title",
            "attributeAliases": [],
            "type": "string",
            "default": "",
            "description": "Título lido pelo leitor de tela (e nome do arquivo exportado)."
          },
          "zoom": {
            "attribute": "data-vm-zoom",
            "attributeAliases": [],
            "type": "boolean",
            "default": false,
            "description": "Arraste na horizontal para ampliar uma faixa; duplo clique ou Ver tudo volta."
          },
          "toolbar": {
            "attribute": "data-vm-toolbar",
            "attributeAliases": [],
            "type": "boolean",
            "default": false,
            "description": "Botões para baixar PNG, SVG e CSV (e Ver tudo no zoom)."
          },
          "config": {
            "attribute": "data-vm-config",
            "attributeAliases": [],
            "type": "string",
            "default": "",
            "description": "Dados e opções em JSON (alternativa ao <script type=\"application/json\">)."
          }
        },
        "example": "<div data-vm=\"chart\" data-vm-type=\"area\" data-vm-prefix=\"R$ \">\n  <script type=\"application/json\">\n  {\"categories\":[\"Jan\",\"Fev\",\"Mar\",\"Abr\",\"Mai\",\"Jun\"],\n   \"series\":[{\"name\":\"Receita\",\"data\":[12400,15800,14100,19600,22300,26900]},\n             {\"name\":\"Custos\",\"data\":[8200,9100,8800,10400,11200,12100]}]}\n  </script>\n</div>",
        "playground": "https://ui.vatse.dev/motion/demo/laboratorio.html#chart"
      }
    ]
  }
}
