Adicionar ao bloco 'products' => ['catalog' => ...] do portal principal:

'nvr' => [
    'display_name' => (string) Environment::get('PRODUCT_NVR_DISPLAY_NAME', 'NVR'),
    'family_label' => (string) Environment::get('PRODUCT_NVR_FAMILY_LABEL', 'Monitoramento e gravação'),
    'tagline' => (string) Environment::get('PRODUCT_NVR_TAGLINE', 'Monitoramento ao vivo, gravações e acesso remoto com handoff central assinado.'),
    'instance_label' => (string) Environment::get('PRODUCT_NVR_INSTANCE_LABEL', 'ambiente'),
    'launch_enabled' => (bool) Environment::get('PRODUCT_NVR_LAUNCH_ENABLED', true),
    'feature_flag' => 'PRODUCT_NVR_LAUNCH_ENABLED',
    'portal_url' => (string) Environment::get('PRODUCT_NVR_PORTAL_URL', (string) Environment::get('NVR_BASE_URL', '')),
    'app_url' => (string) Environment::get('PRODUCT_NVR_APP_URL', (string) Environment::get('NVR_BASE_URL', '')),
    'api_url' => (string) Environment::get('PRODUCT_NVR_API_URL', ''),
    'instance_url_template' => (string) Environment::get('PRODUCT_NVR_INSTANCE_URL_TEMPLATE', (string) Environment::get('NVR_BASE_URL', '')),
    'product_url_template' => (string) Environment::get('PRODUCT_NVR_PRODUCT_URL_TEMPLATE', (string) Environment::get('NVR_BASE_URL', '')),
    'fallback_message' => (string) Environment::get('PRODUCT_NVR_FALLBACK_MESSAGE', 'O NVR está aguardando configuração final de acesso central neste ambiente.'),
    'integration_note' => (string) Environment::get('PRODUCT_NVR_INTEGRATION_NOTE', 'Abertura central do NVR via launch ticket assinado e entrada controlada em /launch.php.'),
],
