{"parentUuid":null,"isSidechain":true,"promptId":"d02fd217-b221-4bdb-8c0f-dfbb32e5010f","agentId":"af4ac75ca547b5a68","type":"user","message":{"role":"user","content":"Project: Covalba EN site (Vite+React18+TS+Tailwind+shadcn/ui). Repo: /opt/projects/.covalba-refonte-worktrees/nico-feature-traduction-all . Alias @/=src/.\nBuild an EN page mirroring the FR design with English copy. EN copy file: /tmp/covalba-en-final/about-us.en.md (Markdown \"## [section-id]\" + \"- [key] text\"; use ONLY text after each [key]; some keys contain French words in their slug — ignore, only values matter).\nRULES: US English; keep metric units & € as written. Product pivot (CTAs sell the coating; applicator=buyer's contractor, never a recruit). France-specific already stripped — never reintroduce CEE/décret/Made-in-France/Orléans/+33. Use EN chrome: NavbarEN '@/components/en/NavbarEN', FooterEN '@/components/en/FooterEN', StickyMobileCTAEN '@/components/en/StickyMobileCTAEN'. usePageMeta with [meta] + canonical 'https://www.covalba.fr/en/about-us'. Faithful copy: identical JSX/Tailwind/assets/icons. If FR imports French data from src/data/*, inline EN locally. Internal links → live EN routes (e.g. /solutions/covatherm→/en/solutions/covatherm, /contact→/en/contact, /diagnostic→/en/diagnostic; anything else → /en). Do NOT modify FR files; only CREATE the file. Do NOT run npm/tsc/build/git.\nTASK: READ src/pages/QuiSommesNous.tsx in full (self-contained content page using ScrollReveal). CREATE src/pages/en/AboutUsEN.tsx (default export AboutUsEN) — faithful EN copy using about-us.en.md. Report file created + flag anything unmapped or left in French."},"uuid":"a5fca66b-3261-471f-a056-3392641c569e","timestamp":"2026-06-22T01:43:11.636Z","userType":"external","entrypoint":"cli","cwd":"/opt/projects/.covalba-refonte-worktrees/nico-feature-traduction-all","sessionId":"22d3abbc-6868-484e-8bb0-ceaa184d3a29","version":"2.1.181","gitBranch":"nico/feature-traduction-all","slug":"mutable-snacking-pearl"}
{"parentUuid":"a5fca66b-3261-471f-a056-3392641c569e","isSidechain":true,"agentId":"af4ac75ca547b5a68","attachment":{"type":"deferred_tools_delta","addedNames":["CronCreate","CronDelete","CronList","DesignSync","EnterWorktree","ExitWorktree","ListMcpResourcesTool","Monitor","NotebookEdit","PushNotification","ReadMcpResourceTool","RemoteTrigger","TaskCreate","TaskGet","TaskList","TaskStop","TaskUpdate","WebFetch","WebSearch","mcp__EstimanouContent__add_article_block","mcp__EstimanouContent__add_block","mcp__EstimanouContent__create_article","mcp__EstimanouContent__create_page","mcp__EstimanouContent__delete_article","mcp__EstimanouContent__delete_article_block","mcp__EstimanouContent__delete_block","mcp__EstimanouContent__get_article","mcp__EstimanouContent__get_city_page","mcp__EstimanouContent__get_page","mcp__EstimanouContent__list_articles","mcp__EstimanouContent__list_available_blocks","mcp__EstimanouContent__list_city_pages","mcp__EstimanouContent__list_pages","mcp__EstimanouContent__list_site_urls","mcp__EstimanouContent__reorder_article_blocks","mcp__EstimanouContent__reorder_blocks","mcp__EstimanouContent__replace_article_content","mcp__EstimanouContent__replace_city_seo_content","mcp__EstimanouContent__replace_page_layout","mcp__EstimanouContent__search_internal_links","mcp__EstimanouContent__update_article","mcp__EstimanouContent__update_article_block","mcp__EstimanouContent__update_block","mcp__EstimanouContent__update_city_page_content","mcp__claude_ai_Ahref__batch-analysis","mcp__claude_ai_Ahref__brand-radar-ai-responses","mcp__claude_ai_Ahref__brand-radar-ai-responses-entities","mcp__claude_ai_Ahref__brand-radar-cited-domains","mcp__claude_ai_Ahref__brand-radar-cited-domains-entities","mcp__claude_ai_Ahref__brand-radar-cited-pages","mcp__claude_ai_Ahref__brand-radar-cited-pages-entities","mcp__claude_ai_Ahref__brand-radar-impressions-history","mcp__claude_ai_Ahref__brand-radar-impressions-overview","mcp__claude_ai_Ahref__brand-radar-impressions-overview-entities","mcp__claude_ai_Ahref__brand-radar-mentions-history","mcp__claude_ai_Ahref__brand-radar-mentions-history-entities","mcp__claude_ai_Ahref__brand-radar-mentions-overview","mcp__claude_ai_Ahref__brand-radar-mentions-overview-entities","mcp__claude_ai_Ahref__brand-radar-sov-history","mcp__claude_ai_Ahref__brand-radar-sov-history-entities","mcp__claude_ai_Ahref__brand-radar-sov-overview","mcp__claude_ai_Ahref__brand-radar-sov-overview-entities","mcp__claude_ai_Ahref__doc","mcp__claude_ai_Ahref__gsc-anonymous-queries","mcp__claude_ai_Ahref__gsc-ctr-by-position","mcp__claude_ai_Ahref__gsc-keyword-history","mcp__claude_ai_Ahref__gsc-keywords","mcp__claude_ai_Ahref__gsc-metrics-by-country","mcp__claude_ai_Ahref__gsc-page-history","mcp__claude_ai_Ahref__gsc-pages","mcp__claude_ai_Ahref__gsc-pages-history","mcp__claude_ai_Ahref__gsc-performance-by-device","mcp__claude_ai_Ahref__gsc-performance-by-position","mcp__claude_ai_Ahref__gsc-performance-history","mcp__claude_ai_Ahref__gsc-positions-history","mcp__claude_ai_Ahref__keywords-explorer-matching-terms","mcp__claude_ai_Ahref__keywords-explorer-overview","mcp__claude_ai_Ahref__keywords-explorer-related-terms","mcp__claude_ai_Ahref__keywords-explorer-search-suggestions","mcp__claude_ai_Ahref__keywords-explorer-volume-by-country","mcp__claude_ai_Ahref__keywords-explorer-volume-history","mcp__claude_ai_Ahref__management-brand-radar-prompts","mcp__claude_ai_Ahref__management-brand-radar-reports","mcp__claude_ai_Ahref__management-keyword-list-keywords","mcp__claude_ai_Ahref__management-locations","mcp__claude_ai_Ahref__management-project-competitors","mcp__claude_ai_Ahref__management-project-keywords","mcp__claude_ai_Ahref__management-projects","mcp__claude_ai_Ahref__public-crawler-ip-ranges","mcp__claude_ai_Ahref__public-crawler-ips","mcp__claude_ai_Ahref__public-domain-rating-free","mcp__claude_ai_Ahref__rank-tracker-competitors-domains","mcp__claude_ai_Ahref__rank-tracker-competitors-overview","mcp__claude_ai_Ahref__rank-tracker-competitors-pages","mcp__claude_ai_Ahref__rank-tracker-competitors-stats","mcp__claude_ai_Ahref__rank-tracker-overview","mcp__claude_ai_Ahref__rank-tracker-serp-overview","mcp__claude_ai_Ahref__render-data-table","mcp__claude_ai_Ahref__render-scorecard","mcp__claude_ai_Ahref__render-time-series-chart","mcp__claude_ai_Ahref__serp-overview","mcp__claude_ai_Ahref__site-audit-issues","mcp__claude_ai_Ahref__site-audit-page-content","mcp__claude_ai_Ahref__site-audit-page-explorer","mcp__claude_ai_Ahref__site-audit-projects","mcp__claude_ai_Ahref__site-explorer-all-backlinks","mcp__claude_ai_Ahref__site-explorer-anchors","mcp__claude_ai_Ahref__site-explorer-backlinks-stats","mcp__claude_ai_Ahref__site-explorer-broken-backlinks","mcp__claude_ai_Ahref__site-explorer-crawled-pages","mcp__claude_ai_Ahref__site-explorer-domain-rating","mcp__claude_ai_Ahref__site-explorer-domain-rating-history","mcp__claude_ai_Ahref__site-explorer-keywords-history","mcp__claude_ai_Ahref__site-explorer-linked-anchors-external","mcp__claude_ai_Ahref__site-explorer-linked-anchors-internal","mcp__claude_ai_Ahref__site-explorer-linked-domains","mcp__claude_ai_Ahref__site-explorer-metrics","mcp__claude_ai_Ahref__site-explorer-metrics-by-country","mcp__claude_ai_Ahref__site-explorer-metrics-history","mcp__claude_ai_Ahref__site-explorer-organic-competitors","mcp__claude_ai_Ahref__site-explorer-organic-keywords","mcp__claude_ai_Ahref__site-explorer-outlinks-stats","mcp__claude_ai_Ahref__site-explorer-pages-by-backlinks","mcp__claude_ai_Ahref__site-explorer-pages-by-internal-links","mcp__claude_ai_Ahref__site-explorer-pages-by-traffic","mcp__claude_ai_Ahref__site-explorer-pages-history","mcp__claude_ai_Ahref__site-explorer-paid-pages","mcp__claude_ai_Ahref__site-explorer-refdomains-history","mcp__claude_ai_Ahref__site-explorer-referring-domains","mcp__claude_ai_Ahref__site-explorer-top-pages","mcp__claude_ai_Ahref__site-explorer-total-search-volume-history","mcp__claude_ai_Ahref__site-explorer-url-rating-history","mcp__claude_ai_Ahref__social-media-activity-history","mcp__claude_ai_Ahref__social-media-authors","mcp__claude_ai_Ahref__social-media-channel-metrics","mcp__claude_ai_Ahref__social-media-channels","mcp__claude_ai_Ahref__social-media-post-metrics","mcp__claude_ai_Ahref__social-media-posts","mcp__claude_ai_Ahref__subscription-info-limits-and-usage","mcp__claude_ai_Ahref__web-analytics-browser-versions","mcp__claude_ai_Ahref__web-analytics-browser-versions-chart","mcp__claude_ai_Ahref__web-analytics-browsers","mcp__claude_ai_Ahref__web-analytics-browsers-chart","mcp__claude_ai_Ahref__web-analytics-chart","mcp__claude_ai_Ahref__web-analytics-cities","mcp__claude_ai_Ahref__web-analytics-cities-chart","mcp__claude_ai_Ahref__web-analytics-continents","mcp__claude_ai_Ahref__web-analytics-continents-chart","mcp__claude_ai_Ahref__web-analytics-countries","mcp__claude_ai_Ahref__web-analytics-countries-chart","mcp__claude_ai_Ahref__web-analytics-devices","mcp__claude_ai_Ahref__web-analytics-devices-chart","mcp__claude_ai_Ahref__web-analytics-entry-pages","mcp__claude_ai_Ahref__web-analytics-entry-pages-chart","mcp__claude_ai_Ahref__web-analytics-exit-pages","mcp__claude_ai_Ahref__web-analytics-exit-pages-chart","mcp__claude_ai_Ahref__web-analytics-languages","mcp__claude_ai_Ahref__web-analytics-languages-chart","mcp__claude_ai_Ahref__web-analytics-operating-systems","mcp__claude_ai_Ahref__web-analytics-operating-systems-chart","mcp__claude_ai_Ahref__web-analytics-operating-systems-versions","mcp__claude_ai_Ahref__web-analytics-operating-systems-versions-chart","mcp__claude_ai_Ahref__web-analytics-referrers","mcp__claude_ai_Ahref__web-analytics-referrers-chart","mcp__claude_ai_Ahref__web-analytics-source-channels","mcp__claude_ai_Ahref__web-analytics-source-channels-chart","mcp__claude_ai_Ahref__web-analytics-sources","mcp__claude_ai_Ahref__web-analytics-sources-chart","mcp__claude_ai_Ahref__web-analytics-stats","mcp__claude_ai_Ahref__web-analytics-top-pages","mcp__claude_ai_Ahref__web-analytics-top-pages-chart","mcp__claude_ai_Ahref__web-analytics-utm-params","mcp__claude_ai_Ahref__web-analytics-utm-params-chart","mcp__claude_ai_Canva__cancel-editing-transaction","mcp__claude_ai_Canva__comment-on-design","mcp__claude_ai_Canva__commit-editing-transaction","mcp__claude_ai_Canva__copy-design","mcp__claude_ai_Canva__create-brand-template-draft","mcp__claude_ai_Canva__create-design-from-brand-template","mcp__claude_ai_Canva__create-design-from-candidate","mcp__claude_ai_Canva__create-folder","mcp__claude_ai_Canva__export-design","mcp__claude_ai_Canva__generate-design","mcp__claude_ai_Canva__generate-design-structured","mcp__claude_ai_Canva__get-assets","mcp__claude_ai_Canva__get-brand-template-dataset","mcp__claude_ai_Canva__get-design","mcp__claude_ai_Canva__get-design-candidates","mcp__claude_ai_Canva__get-design-content","mcp__claude_ai_Canva__get-design-pages","mcp__claude_ai_Canva__get-design-thumbnail","mcp__claude_ai_Canva__get-export-formats","mcp__claude_ai_Canva__get-presenter-notes","mcp__claude_ai_Canva__help","mcp__claude_ai_Canva__import-design-from-url","mcp__claude_ai_Canva__list-brand-kits","mcp__claude_ai_Canva__list-comments","mcp__claude_ai_Canva__list-folder-items","mcp__claude_ai_Canva__list-replies","mcp__claude_ai_Canva__merge-designs","mcp__claude_ai_Canva__move-item-to-folder","mcp__claude_ai_Canva__perform-editing-operations","mcp__claude_ai_Canva__publish-brand-template","mcp__claude_ai_Canva__reply-to-comment","mcp__claude_ai_Canva__request-outline-review","mcp__claude_ai_Canva__resize-design","mcp__claude_ai_Canva__resolve-shortlink","mcp__claude_ai_Canva__search-brand-templates","mcp__claude_ai_Canva__search-designs","mcp__claude_ai_Canva__search-folders","mcp__claude_ai_Canva__start-editing-transaction","mcp__claude_ai_Canva__upload-asset-from-url","mcp__claude_ai_DATA_GOUV_FR__get_dataservice_info","mcp__claude_ai_DATA_GOUV_FR__get_dataservice_openapi_spec","mcp__claude_ai_DATA_GOUV_FR__get_dataset_info","mcp__claude_ai_DATA_GOUV_FR__get_metrics","mcp__claude_ai_DATA_GOUV_FR__get_resource_info","mcp__claude_ai_DATA_GOUV_FR__list_dataset_resources","mcp__claude_ai_DATA_GOUV_FR__query_resource_data","mcp__claude_ai_DATA_GOUV_FR__search_dataservices","mcp__claude_ai_DATA_GOUV_FR__search_datasets","mcp__claude_ai_DATA_GOUV_FR__search_organizations","mcp__claude_ai_Data_For_SEO__authenticate","mcp__claude_ai_Data_For_SEO__complete_authentication","mcp__claude_ai_Esteworld-Body__add_block","mcp__claude_ai_Esteworld-Body__delete_block","mcp__claude_ai_Esteworld-Body__find_esteworld_page","mcp__claude_ai_Esteworld-Body__fix_global_blocks","mcp__claude_ai_Esteworld-Body__get_block","mcp__claude_ai_Esteworld-Body__get_blocks_library","mcp__claude_ai_Esteworld-Body__get_breadcrumb","mcp__claude_ai_Esteworld-Body__get_fr_en_mapping","mcp__claude_ai_Esteworld-Body__get_internal_links","mcp__claude_ai_Esteworld-Body__get_internal_links_en","mcp__claude_ai_Esteworld-Body__get_maillage_rules","mcp__claude_ai_Esteworld-Body__get_page","mcp__claude_ai_Esteworld-Body__get_page_json","mcp__claude_ai_Esteworld-Body__get_page_status","mcp__claude_ai_Esteworld-Body__get_redirections","mcp__claude_ai_Esteworld-Body__get_section_content","mcp__claude_ai_Esteworld-Body__get_thematique_pages","mcp__claude_ai_Esteworld-Body__get_translation_languages","mcp__claude_ai_Esteworld-Body__list_pages","mcp__claude_ai_Esteworld-Body__list_pages_by_thematique","mcp__claude_ai_Esteworld-Body__list_pages_by_type","mcp__claude_ai_Esteworld-Body__list_pages_to_create","mcp__claude_ai_Esteworld-Body__list_pages_to_rewrite","mcp__claude_ai_Esteworld-Body__list_pages_with_esteworld","mcp__claude_ai_Esteworld-Body__list_pages_without_esteworld","mcp__claude_ai_Esteworld-Body__n8n_activate_workflow","mcp__claude_ai_Esteworld-Body__n8n_get_executions","mcp__claude_ai_Esteworld-Body__n8n_get_workflow","mcp__claude_ai_Esteworld-Body__n8n_list_workflows","mcp__claude_ai_Esteworld-Body__n8n_trigger_webhook","mcp__claude_ai_Esteworld-Body__preview_global_fixes","mcp__claude_ai_Esteworld-Body__reorder_blocks","mcp__claude_ai_Esteworld-Body__search_content","mcp__claude_ai_Esteworld-Body__search_links_by_keyword","mcp__claude_ai_Esteworld-Body__search_links_by_keyword_en","mcp__claude_ai_Esteworld-Body__submit_page","mcp__claude_ai_Esteworld-Body__submit_page_light","mcp__claude_ai_Esteworld-Body__translate_page","mcp__claude_ai_Esteworld-Body__update_block","mcp__claude_ai_Figma__add_code_connect_map","mcp__claude_ai_Figma__create_new_file","mcp__claude_ai_Figma__download_assets","mcp__claude_ai_Figma__generate_diagram","mcp__claude_ai_Figma__get_code_connect_map","mcp__claude_ai_Figma__get_code_connect_suggestions","mcp__claude_ai_Figma__get_context_for_code_connect","mcp__claude_ai_Figma__get_design_context","mcp__claude_ai_Figma__get_figjam","mcp__claude_ai_Figma__get_libraries","mcp__claude_ai_Figma__get_metadata","mcp__claude_ai_Figma__get_screenshot","mcp__claude_ai_Figma__get_variable_defs","mcp__claude_ai_Figma__search_design_system","mcp__claude_ai_Figma__send_code_connect_mappings","mcp__claude_ai_Figma__upload_assets","mcp__claude_ai_Figma__use_figma","mcp__claude_ai_Figma__whoami","mcp__claude_ai_Gmail__create_draft","mcp__claude_ai_Gmail__create_label","mcp__claude_ai_Gmail__delete_label","mcp__claude_ai_Gmail__get_thread","mcp__claude_ai_Gmail__label_message","mcp__claude_ai_Gmail__label_thread","mcp__claude_ai_Gmail__list_drafts","mcp__claude_ai_Gmail__list_labels","mcp__claude_ai_Gmail__search_threads","mcp__claude_ai_Gmail__unlabel_message","mcp__claude_ai_Gmail__unlabel_thread","mcp__claude_ai_Gmail__update_label","mcp__claude_ai_Google_Calendar__create_event","mcp__claude_ai_Google_Calendar__delete_event","mcp__claude_ai_Google_Calendar__get_event","mcp__claude_ai_Google_Calendar__list_calendars","mcp__claude_ai_Google_Calendar__list_events","mcp__claude_ai_Google_Calendar__respond_to_event","mcp__claude_ai_Google_Calendar__suggest_time","mcp__claude_ai_Google_Calendar__update_event","mcp__claude_ai_Google_Drive__copy_file","mcp__claude_ai_Google_Drive__create_file","mcp__claude_ai_Google_Drive__download_file_content","mcp__claude_ai_Google_Drive__get_file_metadata","mcp__claude_ai_Google_Drive__get_file_permissions","mcp__claude_ai_Google_Drive__list_recent_files","mcp__claude_ai_Google_Drive__read_file_content","mcp__claude_ai_Google_Drive__search_files","mcp__claude_ai_SEMRush__backlink_research","mcp__claude_ai_SEMRush__execute_report","mcp__claude_ai_SEMRush__get_report_schema","mcp__claude_ai_SEMRush__keyword_research","mcp__claude_ai_SEMRush__organic_research","mcp__claude_ai_SEMRush__overview_research","mcp__claude_ai_SEMRush__projects_research","mcp__claude_ai_SEMRush__siteaudit_research","mcp__claude_ai_SEMRush__subdomain_research","mcp__claude_ai_SEMRush__subfolder_research","mcp__claude_ai_SEMRush__tracking_research","mcp__claude_ai_SEMRush__trends_research","mcp__claude_ai_SEMRush__url_research","mcp__claude_ai_Vercel__add_toolbar_reaction","mcp__claude_ai_Vercel__change_toolbar_thread_resolve_status","mcp__claude_ai_Vercel__check_domain_availability_and_price","mcp__claude_ai_Vercel__deploy_to_vercel","mcp__claude_ai_Vercel__edit_toolbar_message","mcp__claude_ai_Vercel__get_access_to_vercel_url","mcp__claude_ai_Vercel__get_deployment","mcp__claude_ai_Vercel__get_deployment_build_logs","mcp__claude_ai_Vercel__get_project","mcp__claude_ai_Vercel__get_runtime_logs","mcp__claude_ai_Vercel__get_toolbar_thread","mcp__claude_ai_Vercel__import-claude-design-from-url","mcp__claude_ai_Vercel__list_deployments","mcp__claude_ai_Vercel__list_projects","mcp__claude_ai_Vercel__list_teams","mcp__claude_ai_Vercel__list_toolbar_threads","mcp__claude_ai_Vercel__reply_to_toolbar_thread","mcp__claude_ai_Vercel__search_vercel_documentation","mcp__claude_ai_Vercel__web_fetch_vercel_url","mcp__gpt-image-2__continue_edit_session","mcp__gpt-image-2__edit_image","mcp__gpt-image-2__end_edit_session","mcp__gpt-image-2__generate_image","mcp__gpt-image-2__list_edit_sessions","mcp__gpt-image-2__start_edit_session","mcp__hostinger__DNS_deleteDNSRecordsV1","mcp__hostinger__DNS_getDNSRecordsV1","mcp__hostinger__DNS_getDNSSnapshotListV1","mcp__hostinger__DNS_getDNSSnapshotV1","mcp__hostinger__DNS_resetDNSRecordsV1","mcp__hostinger__DNS_restoreDNSSnapshotV1","mcp__hostinger__DNS_updateDNSRecordsV1","mcp__hostinger__DNS_validateDNSRecordsV1","mcp__hostinger__VPS_activateFirewallV1","mcp__hostinger__VPS_attachPublicKeyV1","mcp__hostinger__VPS_createFirewallRuleV1","mcp__hostinger__VPS_createNewFirewallV1","mcp__hostinger__VPS_createNewProjectV1","mcp__hostinger__VPS_createPTRRecordV1","mcp__hostinger__VPS_createPostInstallScriptV1","mcp__hostinger__VPS_createPublicKeyV1","mcp__hostinger__VPS_createSnapshotV1","mcp__hostinger__VPS_deactivateFirewallV1","mcp__hostinger__VPS_deleteFirewallRuleV1","mcp__hostinger__VPS_deleteFirewallV1","mcp__hostinger__VPS_deletePTRRecordV1","mcp__hostinger__VPS_deletePostInstallScriptV1","mcp__hostinger__VPS_deleteProjectV1","mcp__hostinger__VPS_deletePublicKeyV1","mcp__hostinger__VPS_deleteSnapshotV1","mcp__hostinger__VPS_getActionDetailsV1","mcp__hostinger__VPS_getActionsV1","mcp__hostinger__VPS_getAttachedPublicKeysV1","mcp__hostinger__VPS_getBackupsV1","mcp__hostinger__VPS_getDataCenterListV1","mcp__hostinger__VPS_getFirewallDetailsV1","mcp__hostinger__VPS_getFirewallListV1","mcp__hostinger__VPS_getMetricsV1","mcp__hostinger__VPS_getPostInstallScriptV1","mcp__hostinger__VPS_getPostInstallScriptsV1","mcp__hostinger__VPS_getProjectContainersV1","mcp__hostinger__VPS_getProjectContentsV1","mcp__hostinger__VPS_getProjectListV1","mcp__hostinger__VPS_getProjectLogsV1","mcp__hostinger__VPS_getPublicKeysV1","mcp__hostinger__VPS_getScanMetricsV1","mcp__hostinger__VPS_getSnapshotV1","mcp__hostinger__VPS_getTemplateDetailsV1","mcp__hostinger__VPS_getTemplatesV1","mcp__hostinger__VPS_getVirtualMachineDetailsV1","mcp__hostinger__VPS_getVirtualMachinesV1","mcp__hostinger__VPS_installMonarxV1","mcp__hostinger__VPS_purchaseNewVirtualMachineV1","mcp__hostinger__VPS_recreateVirtualMachineV1","mcp__hostinger__VPS_resetHostnameV1","mcp__hostinger__VPS_restartProjectV1","mcp__hostinger__VPS_restartVirtualMachineV1","mcp__hostinger__VPS_restoreBackupV1","mcp__hostinger__VPS_restoreSnapshotV1","mcp__hostinger__VPS_setHostnameV1","mcp__hostinger__VPS_setNameserversV1","mcp__hostinger__VPS_setPanelPasswordV1","mcp__hostinger__VPS_setRootPasswordV1","mcp__hostinger__VPS_setupPurchasedVirtualMachineV1","mcp__hostinger__VPS_startProjectV1","mcp__hostinger__VPS_startRecoveryModeV1","mcp__hostinger__VPS_startVirtualMachineV1","mcp__hostinger__VPS_stopProjectV1","mcp__hostinger__VPS_stopRecoveryModeV1","mcp__hostinger__VPS_stopVirtualMachineV1","mcp__hostinger__VPS_syncFirewallV1","mcp__hostinger__VPS_uninstallMonarxV1","mcp__hostinger__VPS_updateFirewallRuleV1","mcp__hostinger__VPS_updatePostInstallScriptV1","mcp__hostinger__VPS_updateProjectV1","mcp__hostinger__billing_deletePaymentMethodV1","mcp__hostinger__billing_disableAutoRenewalV1","mcp__hostinger__billing_enableAutoRenewalV1","mcp__hostinger__billing_getCatalogItemListV1","mcp__hostinger__billing_getPaymentMethodListV1","mcp__hostinger__billing_getSubscriptionListV1","mcp__hostinger__billing_setDefaultPaymentMethodV1","mcp__hostinger__domains_checkDomainAvailabilityV1","mcp__hostinger__domains_createDomainForwardingV1","mcp__hostinger__domains_createWHOISProfileV1","mcp__hostinger__domains_deleteDomainForwardingV1","mcp__hostinger__domains_deleteWHOISProfileV1","mcp__hostinger__domains_disableDomainLockV1","mcp__hostinger__domains_disablePrivacyProtectionV1","mcp__hostinger__domains_enableDomainLockV1","mcp__hostinger__domains_enablePrivacyProtectionV1","mcp__hostinger__domains_getDomainDetailsV1","mcp__hostinger__domains_getDomainForwardingV1","mcp__hostinger__domains_getDomainListV1","mcp__hostinger__domains_getWHOISProfileListV1","mcp__hostinger__domains_getWHOISProfileUsageV1","mcp__hostinger__domains_getWHOISProfileV1","mcp__hostinger__domains_purchaseNewDomainV1","mcp__hostinger__domains_updateDomainNameserversV1","mcp__hostinger__hosting_createAccountDatabaseV1","mcp__hostinger__hosting_createWebsiteParkedDomainV1","mcp__hostinger__hosting_createWebsiteSubdomainV1","mcp__hostinger__hosting_createWebsiteV1","mcp__hostinger__hosting_deleteAccountDatabaseV1","mcp__hostinger__hosting_deleteWebsiteParkedDomainV1","mcp__hostinger__hosting_deleteWebsiteSubdomainV1","mcp__hostinger__hosting_deployJsApplication","mcp__hostinger__hosting_deployStaticWebsite","mcp__hostinger__hosting_deployWordpressPlugin","mcp__hostinger__hosting_deployWordpressTheme","mcp__hostinger__hosting_generateAFreeSubdomainV1","mcp__hostinger__hosting_importWordpressWebsite","mcp__hostinger__hosting_installWordPressV1","mcp__hostinger__hosting_listAccountDatabasesV1","mcp__hostinger__hosting_listAvailableDatacentersV1","mcp__hostinger__hosting_listJsDeployments","mcp__hostinger__hosting_listOrdersV1","mcp__hostinger__hosting_listWebsiteParkedDomainsV1","mcp__hostinger__hosting_listWebsiteSubdomainsV1","mcp__hostinger__hosting_listWebsitesV1","mcp__hostinger__hosting_listWordPressInstallationsV1","mcp__hostinger__hosting_showJsDeploymentLogs","mcp__hostinger__hosting_verifyDomainOwnershipV1","mcp__hostinger__reach_createANewContactSegmentV1","mcp__hostinger__reach_createANewContactV1","mcp__hostinger__reach_createNewContactsV1","mcp__hostinger__reach_deleteAContactV1","mcp__hostinger__reach_getSegmentDetailsV1","mcp__hostinger__reach_listContactGroupsV1","mcp__hostinger__reach_listContactsV1","mcp__hostinger__reach_listProfilesV1","mcp__hostinger__reach_listSegmentContactsV1","mcp__hostinger__reach_listSegmentsV1","mcp__hostinger__v2_getDomainVerificationsDIRECT","mcp__n8n-mcp__get_node","mcp__n8n-mcp__get_template","mcp__n8n-mcp__n8n_audit_instance","mcp__n8n-mcp__n8n_autofix_workflow","mcp__n8n-mcp__n8n_create_workflow","mcp__n8n-mcp__n8n_delete_workflow","mcp__n8n-mcp__n8n_deploy_template","mcp__n8n-mcp__n8n_executions","mcp__n8n-mcp__n8n_generate_workflow","mcp__n8n-mcp__n8n_get_workflow","mcp__n8n-mcp__n8n_health_check","mcp__n8n-mcp__n8n_list_workflows","mcp__n8n-mcp__n8n_manage_credentials","mcp__n8n-mcp__n8n_manage_datatable","mcp__n8n-mcp__n8n_test_workflow","mcp__n8n-mcp__n8n_update_full_workflow","mcp__n8n-mcp__n8n_update_partial_workflow","mcp__n8n-mcp__n8n_validate_workflow","mcp__n8n-mcp__n8n_workflow_versions","mcp__n8n-mcp__search_nodes","mcp__n8n-mcp__search_templates","mcp__n8n-mcp__tools_documentation","mcp__n8n-mcp__validate_node","mcp__n8n-mcp__validate_workflow","mcp__nanobanana__generate_image","mcp__nanobanana__maintenance","mcp__nanobanana__show_output_stats","mcp__nanobanana__upload_file","mcp__plugin_vercel_vercel__authenticate","mcp__plugin_vercel_vercel__complete_authentication","mcp__refero__refero_get_flow","mcp__refero__refero_get_screen","mcp__refero__refero_get_screen_image","mcp__refero__refero_get_similar_screens","mcp__refero__refero_get_style","mcp__refero__refero_search_flows","mcp__refero__refero_search_screens","mcp__refero__refero_search_styles","mcp__semrush__authenticate","mcp__semrush__complete_authentication","mcp__stock-images-mcp__search_stock_images","mcp__trello__add_card_to_list","mcp__trello__add_checklist_item","mcp__trello__add_comment","mcp__trello__add_list_to_board","mcp__trello__archive_card","mcp__trello__archive_list","mcp__trello__assign_member_to_card","mcp__trello__attach_file_to_card","mcp__trello__attach_image_data_to_card","mcp__trello__attach_image_to_card","mcp__trello__create_board","mcp__trello__create_checklist","mcp__trello__create_label","mcp__trello__delete_comment","mcp__trello__delete_label","mcp__trello__find_checklist_items_by_description","mcp__trello__get_acceptance_criteria","mcp__trello__get_active_board_info","mcp__trello__get_board_labels","mcp__trello__get_board_members","mcp__trello__get_card","mcp__trello__get_card_comments","mcp__trello__get_card_history","mcp__trello__get_cards_by_list_id","mcp__trello__get_checklist_by_name","mcp__trello__get_checklist_items","mcp__trello__get_health","mcp__trello__get_health_detailed","mcp__trello__get_health_metadata","mcp__trello__get_health_performance","mcp__trello__get_lists","mcp__trello__get_my_cards","mcp__trello__get_recent_activity","mcp__trello__list_boards","mcp__trello__list_boards_in_workspace","mcp__trello__list_workspaces","mcp__trello__move_card","mcp__trello__perform_system_repair","mcp__trello__remove_member_from_card","mcp__trello__set_active_board","mcp__trello__set_active_workspace","mcp__trello__update_card_details","mcp__trello__update_checklist_item","mcp__trello__update_comment","mcp__trello__update_label"],"addedLines":["CronCreate","CronDelete","CronList","DesignSync","EnterWorktree","ExitWorktree","ListMcpResourcesTool","Monitor","NotebookEdit","PushNotification","ReadMcpResourceTool","RemoteTrigger","TaskCreate","TaskGet","TaskList","TaskStop","TaskUpdate","WebFetch","WebSearch","mcp__EstimanouContent__add_article_block","mcp__EstimanouContent__add_block","mcp__EstimanouContent__create_article","mcp__EstimanouContent__create_page","mcp__EstimanouContent__delete_article","mcp__EstimanouContent__delete_article_block","mcp__EstimanouContent__delete_block","mcp__EstimanouContent__get_article","mcp__EstimanouContent__get_city_page","mcp__EstimanouContent__get_page","mcp__EstimanouContent__list_articles","mcp__EstimanouContent__list_available_blocks","mcp__EstimanouContent__list_city_pages","mcp__EstimanouContent__list_pages","mcp__EstimanouContent__list_site_urls","mcp__EstimanouContent__reorder_article_blocks","mcp__EstimanouContent__reorder_blocks","mcp__EstimanouContent__replace_article_content","mcp__EstimanouContent__replace_city_seo_content","mcp__EstimanouContent__replace_page_layout","mcp__EstimanouContent__search_internal_links","mcp__EstimanouContent__update_article","mcp__EstimanouContent__update_article_block","mcp__EstimanouContent__update_block","mcp__EstimanouContent__update_city_page_content","mcp__claude_ai_Ahref__batch-analysis","mcp__claude_ai_Ahref__brand-radar-ai-responses","mcp__claude_ai_Ahref__brand-radar-ai-responses-entities","mcp__claude_ai_Ahref__brand-radar-cited-domains","mcp__claude_ai_Ahref__brand-radar-cited-domains-entities","mcp__claude_ai_Ahref__brand-radar-cited-pages","mcp__claude_ai_Ahref__brand-radar-cited-pages-entities","mcp__claude_ai_Ahref__brand-radar-impressions-history","mcp__claude_ai_Ahref__brand-radar-impressions-overview","mcp__claude_ai_Ahref__brand-radar-impressions-overview-entities","mcp__claude_ai_Ahref__brand-radar-mentions-history","mcp__claude_ai_Ahref__brand-radar-mentions-history-entities","mcp__claude_ai_Ahref__brand-radar-mentions-overview","mcp__claude_ai_Ahref__brand-radar-mentions-overview-entities","mcp__claude_ai_Ahref__brand-radar-sov-history","mcp__claude_ai_Ahref__brand-radar-sov-history-entities","mcp__claude_ai_Ahref__brand-radar-sov-overview","mcp__claude_ai_Ahref__brand-radar-sov-overview-entities","mcp__claude_ai_Ahref__doc","mcp__claude_ai_Ahref__gsc-anonymous-queries","mcp__claude_ai_Ahref__gsc-ctr-by-position","mcp__claude_ai_Ahref__gsc-keyword-history","mcp__claude_ai_Ahref__gsc-keywords","mcp__claude_ai_Ahref__gsc-metrics-by-country","mcp__claude_ai_Ahref__gsc-page-history","mcp__claude_ai_Ahref__gsc-pages","mcp__claude_ai_Ahref__gsc-pages-history","mcp__claude_ai_Ahref__gsc-performance-by-device","mcp__claude_ai_Ahref__gsc-performance-by-position","mcp__claude_ai_Ahref__gsc-performance-history","mcp__claude_ai_Ahref__gsc-positions-history","mcp__claude_ai_Ahref__keywords-explorer-matching-terms","mcp__claude_ai_Ahref__keywords-explorer-overview","mcp__claude_ai_Ahref__keywords-explorer-related-terms","mcp__claude_ai_Ahref__keywords-explorer-search-suggestions","mcp__claude_ai_Ahref__keywords-explorer-volume-by-country","mcp__claude_ai_Ahref__keywords-explorer-volume-history","mcp__claude_ai_Ahref__management-brand-radar-prompts","mcp__claude_ai_Ahref__management-brand-radar-reports","mcp__claude_ai_Ahref__management-keyword-list-keywords","mcp__claude_ai_Ahref__management-locations","mcp__claude_ai_Ahref__management-project-competitors","mcp__claude_ai_Ahref__management-project-keywords","mcp__claude_ai_Ahref__management-projects","mcp__claude_ai_Ahref__public-crawler-ip-ranges","mcp__claude_ai_Ahref__public-crawler-ips","mcp__claude_ai_Ahref__public-domain-rating-free","mcp__claude_ai_Ahref__rank-tracker-competitors-domains","mcp__claude_ai_Ahref__rank-tracker-competitors-overview","mcp__claude_ai_Ahref__rank-tracker-competitors-pages","mcp__claude_ai_Ahref__rank-tracker-competitors-stats","mcp__claude_ai_Ahref__rank-tracker-overview","mcp__claude_ai_Ahref__rank-tracker-serp-overview","mcp__claude_ai_Ahref__render-data-table","mcp__claude_ai_Ahref__render-scorecard","mcp__claude_ai_Ahref__render-time-series-chart","mcp__claude_ai_Ahref__serp-overview","mcp__claude_ai_Ahref__site-audit-issues","mcp__claude_ai_Ahref__site-audit-page-content","mcp__claude_ai_Ahref__site-audit-page-explorer","mcp__claude_ai_Ahref__site-audit-projects","mcp__claude_ai_Ahref__site-explorer-all-backlinks","mcp__claude_ai_Ahref__site-explorer-anchors","mcp__claude_ai_Ahref__site-explorer-backlinks-stats","mcp__claude_ai_Ahref__site-explorer-broken-backlinks","mcp__claude_ai_Ahref__site-explorer-crawled-pages","mcp__claude_ai_Ahref__site-explorer-domain-rating","mcp__claude_ai_Ahref__site-explorer-domain-rating-history","mcp__claude_ai_Ahref__site-explorer-keywords-history","mcp__claude_ai_Ahref__site-explorer-linked-anchors-external","mcp__claude_ai_Ahref__site-explorer-linked-anchors-internal","mcp__claude_ai_Ahref__site-explorer-linked-domains","mcp__claude_ai_Ahref__site-explorer-metrics","mcp__claude_ai_Ahref__site-explorer-metrics-by-country","mcp__claude_ai_Ahref__site-explorer-metrics-history","mcp__claude_ai_Ahref__site-explorer-organic-competitors","mcp__claude_ai_Ahref__site-explorer-organic-keywords","mcp__claude_ai_Ahref__site-explorer-outlinks-stats","mcp__claude_ai_Ahref__site-explorer-pages-by-backlinks","mcp__claude_ai_Ahref__site-explorer-pages-by-internal-links","mcp__claude_ai_Ahref__site-explorer-pages-by-traffic","mcp__claude_ai_Ahref__site-explorer-pages-history","mcp__claude_ai_Ahref__site-explorer-paid-pages","mcp__claude_ai_Ahref__site-explorer-refdomains-history","mcp__claude_ai_Ahref__site-explorer-referring-domains","mcp__claude_ai_Ahref__site-explorer-top-pages","mcp__claude_ai_Ahref__site-explorer-total-search-volume-history","mcp__claude_ai_Ahref__site-explorer-url-rating-history","mcp__claude_ai_Ahref__social-media-activity-history","mcp__claude_ai_Ahref__social-media-authors","mcp__claude_ai_Ahref__social-media-channel-metrics","mcp__claude_ai_Ahref__social-media-channels","mcp__claude_ai_Ahref__social-media-post-metrics","mcp__claude_ai_Ahref__social-media-posts","mcp__claude_ai_Ahref__subscription-info-limits-and-usage","mcp__claude_ai_Ahref__web-analytics-browser-versions","mcp__claude_ai_Ahref__web-analytics-browser-versions-chart","mcp__claude_ai_Ahref__web-analytics-browsers","mcp__claude_ai_Ahref__web-analytics-browsers-chart","mcp__claude_ai_Ahref__web-analytics-chart","mcp__claude_ai_Ahref__web-analytics-cities","mcp__claude_ai_Ahref__web-analytics-cities-chart","mcp__claude_ai_Ahref__web-analytics-continents","mcp__claude_ai_Ahref__web-analytics-continents-chart","mcp__claude_ai_Ahref__web-analytics-countries","mcp__claude_ai_Ahref__web-analytics-countries-chart","mcp__claude_ai_Ahref__web-analytics-devices","mcp__claude_ai_Ahref__web-analytics-devices-chart","mcp__claude_ai_Ahref__web-analytics-entry-pages","mcp__claude_ai_Ahref__web-analytics-entry-pages-chart","mcp__claude_ai_Ahref__web-analytics-exit-pages","mcp__claude_ai_Ahref__web-analytics-exit-pages-chart","mcp__claude_ai_Ahref__web-analytics-languages","mcp__claude_ai_Ahref__web-analytics-languages-chart","mcp__claude_ai_Ahref__web-analytics-operating-systems","mcp__claude_ai_Ahref__web-analytics-operating-systems-chart","mcp__claude_ai_Ahref__web-analytics-operating-systems-versions","mcp__claude_ai_Ahref__web-analytics-operating-systems-versions-chart","mcp__claude_ai_Ahref__web-analytics-referrers","mcp__claude_ai_Ahref__web-analytics-referrers-chart","mcp__claude_ai_Ahref__web-analytics-source-channels","mcp__claude_ai_Ahref__web-analytics-source-channels-chart","mcp__claude_ai_Ahref__web-analytics-sources","mcp__claude_ai_Ahref__web-analytics-sources-chart","mcp__claude_ai_Ahref__web-analytics-stats","mcp__claude_ai_Ahref__web-analytics-top-pages","mcp__claude_ai_Ahref__web-analytics-top-pages-chart","mcp__claude_ai_Ahref__web-analytics-utm-params","mcp__claude_ai_Ahref__web-analytics-utm-params-chart","mcp__claude_ai_Canva__cancel-editing-transaction","mcp__claude_ai_Canva__comment-on-design","mcp__claude_ai_Canva__commit-editing-transaction","mcp__claude_ai_Canva__copy-design","mcp__claude_ai_Canva__create-brand-template-draft","mcp__claude_ai_Canva__create-design-from-brand-template","mcp__claude_ai_Canva__create-design-from-candidate","mcp__claude_ai_Canva__create-folder","mcp__claude_ai_Canva__export-design","mcp__claude_ai_Canva__generate-design","mcp__claude_ai_Canva__generate-design-structured","mcp__claude_ai_Canva__get-assets","mcp__claude_ai_Canva__get-brand-template-dataset","mcp__claude_ai_Canva__get-design","mcp__claude_ai_Canva__get-design-candidates","mcp__claude_ai_Canva__get-design-content","mcp__claude_ai_Canva__get-design-pages","mcp__claude_ai_Canva__get-design-thumbnail","mcp__claude_ai_Canva__get-export-formats","mcp__claude_ai_Canva__get-presenter-notes","mcp__claude_ai_Canva__help","mcp__claude_ai_Canva__import-design-from-url","mcp__claude_ai_Canva__list-brand-kits","mcp__claude_ai_Canva__list-comments","mcp__claude_ai_Canva__list-folder-items","mcp__claude_ai_Canva__list-replies","mcp__claude_ai_Canva__merge-designs","mcp__claude_ai_Canva__move-item-to-folder","mcp__claude_ai_Canva__perform-editing-operations","mcp__claude_ai_Canva__publish-brand-template","mcp__claude_ai_Canva__reply-to-comment","mcp__claude_ai_Canva__request-outline-review","mcp__claude_ai_Canva__resize-design","mcp__claude_ai_Canva__resolve-shortlink","mcp__claude_ai_Canva__search-brand-templates","mcp__claude_ai_Canva__search-designs","mcp__claude_ai_Canva__search-folders","mcp__claude_ai_Canva__start-editing-transaction","mcp__claude_ai_Canva__upload-asset-from-url","mcp__claude_ai_DATA_GOUV_FR__get_dataservice_info","mcp__claude_ai_DATA_GOUV_FR__get_dataservice_openapi_spec","mcp__claude_ai_DATA_GOUV_FR__get_dataset_info","mcp__claude_ai_DATA_GOUV_FR__get_metrics","mcp__claude_ai_DATA_GOUV_FR__get_resource_info","mcp__claude_ai_DATA_GOUV_FR__list_dataset_resources","mcp__claude_ai_DATA_GOUV_FR__query_resource_data","mcp__claude_ai_DATA_GOUV_FR__search_dataservices","mcp__claude_ai_DATA_GOUV_FR__search_datasets","mcp__claude_ai_DATA_GOUV_FR__search_organizations","mcp__claude_ai_Data_For_SEO__authenticate","mcp__claude_ai_Data_For_SEO__complete_authentication","mcp__claude_ai_Esteworld-Body__add_block","mcp__claude_ai_Esteworld-Body__delete_block","mcp__claude_ai_Esteworld-Body__find_esteworld_page","mcp__claude_ai_Esteworld-Body__fix_global_blocks","mcp__claude_ai_Esteworld-Body__get_block","mcp__claude_ai_Esteworld-Body__get_blocks_library","mcp__claude_ai_Esteworld-Body__get_breadcrumb","mcp__claude_ai_Esteworld-Body__get_fr_en_mapping","mcp__claude_ai_Esteworld-Body__get_internal_links","mcp__claude_ai_Esteworld-Body__get_internal_links_en","mcp__claude_ai_Esteworld-Body__get_maillage_rules","mcp__claude_ai_Esteworld-Body__get_page","mcp__claude_ai_Esteworld-Body__get_page_json","mcp__claude_ai_Esteworld-Body__get_page_status","mcp__claude_ai_Esteworld-Body__get_redirections","mcp__claude_ai_Esteworld-Body__get_section_content","mcp__claude_ai_Esteworld-Body__get_thematique_pages","mcp__claude_ai_Esteworld-Body__get_translation_languages","mcp__claude_ai_Esteworld-Body__list_pages","mcp__claude_ai_Esteworld-Body__list_pages_by_thematique","mcp__claude_ai_Esteworld-Body__list_pages_by_type","mcp__claude_ai_Esteworld-Body__list_pages_to_create","mcp__claude_ai_Esteworld-Body__list_pages_to_rewrite","mcp__claude_ai_Esteworld-Body__list_pages_with_esteworld","mcp__claude_ai_Esteworld-Body__list_pages_without_esteworld","mcp__claude_ai_Esteworld-Body__n8n_activate_workflow","mcp__claude_ai_Esteworld-Body__n8n_get_executions","mcp__claude_ai_Esteworld-Body__n8n_get_workflow","mcp__claude_ai_Esteworld-Body__n8n_list_workflows","mcp__claude_ai_Esteworld-Body__n8n_trigger_webhook","mcp__claude_ai_Esteworld-Body__preview_global_fixes","mcp__claude_ai_Esteworld-Body__reorder_blocks","mcp__claude_ai_Esteworld-Body__search_content","mcp__claude_ai_Esteworld-Body__search_links_by_keyword","mcp__claude_ai_Esteworld-Body__search_links_by_keyword_en","mcp__claude_ai_Esteworld-Body__submit_page","mcp__claude_ai_Esteworld-Body__submit_page_light","mcp__claude_ai_Esteworld-Body__translate_page","mcp__claude_ai_Esteworld-Body__update_block","mcp__claude_ai_Figma__add_code_connect_map","mcp__claude_ai_Figma__create_new_file","mcp__claude_ai_Figma__download_assets","mcp__claude_ai_Figma__generate_diagram","mcp__claude_ai_Figma__get_code_connect_map","mcp__claude_ai_Figma__get_code_connect_suggestions","mcp__claude_ai_Figma__get_context_for_code_connect","mcp__claude_ai_Figma__get_design_context","mcp__claude_ai_Figma__get_figjam","mcp__claude_ai_Figma__get_libraries","mcp__claude_ai_Figma__get_metadata","mcp__claude_ai_Figma__get_screenshot","mcp__claude_ai_Figma__get_variable_defs","mcp__claude_ai_Figma__search_design_system","mcp__claude_ai_Figma__send_code_connect_mappings","mcp__claude_ai_Figma__upload_assets","mcp__claude_ai_Figma__use_figma","mcp__claude_ai_Figma__whoami","mcp__claude_ai_Gmail__create_draft","mcp__claude_ai_Gmail__create_label","mcp__claude_ai_Gmail__delete_label","mcp__claude_ai_Gmail__get_thread","mcp__claude_ai_Gmail__label_message","mcp__claude_ai_Gmail__label_thread","mcp__claude_ai_Gmail__list_drafts","mcp__claude_ai_Gmail__list_labels","mcp__claude_ai_Gmail__search_threads","mcp__claude_ai_Gmail__unlabel_message","mcp__claude_ai_Gmail__unlabel_thread","mcp__claude_ai_Gmail__update_label","mcp__claude_ai_Google_Calendar__create_event","mcp__claude_ai_Google_Calendar__delete_event","mcp__claude_ai_Google_Calendar__get_event","mcp__claude_ai_Google_Calendar__list_calendars","mcp__claude_ai_Google_Calendar__list_events","mcp__claude_ai_Google_Calendar__respond_to_event","mcp__claude_ai_Google_Calendar__suggest_time","mcp__claude_ai_Google_Calendar__update_event","mcp__claude_ai_Google_Drive__copy_file","mcp__claude_ai_Google_Drive__create_file","mcp__claude_ai_Google_Drive__download_file_content","mcp__claude_ai_Google_Drive__get_file_metadata","mcp__claude_ai_Google_Drive__get_file_permissions","mcp__claude_ai_Google_Drive__list_recent_files","mcp__claude_ai_Google_Drive__read_file_content","mcp__claude_ai_Google_Drive__search_files","mcp__claude_ai_SEMRush__backlink_research","mcp__claude_ai_SEMRush__execute_report","mcp__claude_ai_SEMRush__get_report_schema","mcp__claude_ai_SEMRush__keyword_research","mcp__claude_ai_SEMRush__organic_research","mcp__claude_ai_SEMRush__overview_research","mcp__claude_ai_SEMRush__projects_research","mcp__claude_ai_SEMRush__siteaudit_research","mcp__claude_ai_SEMRush__subdomain_research","mcp__claude_ai_SEMRush__subfolder_research","mcp__claude_ai_SEMRush__tracking_research","mcp__claude_ai_SEMRush__trends_research","mcp__claude_ai_SEMRush__url_research","mcp__claude_ai_Vercel__add_toolbar_reaction","mcp__claude_ai_Vercel__change_toolbar_thread_resolve_status","mcp__claude_ai_Vercel__check_domain_availability_and_price","mcp__claude_ai_Vercel__deploy_to_vercel","mcp__claude_ai_Vercel__edit_toolbar_message","mcp__claude_ai_Vercel__get_access_to_vercel_url","mcp__claude_ai_Vercel__get_deployment","mcp__claude_ai_Vercel__get_deployment_build_logs","mcp__claude_ai_Vercel__get_project","mcp__claude_ai_Vercel__get_runtime_logs","mcp__claude_ai_Vercel__get_toolbar_thread","mcp__claude_ai_Vercel__import-claude-design-from-url","mcp__claude_ai_Vercel__list_deployments","mcp__claude_ai_Vercel__list_projects","mcp__claude_ai_Vercel__list_teams","mcp__claude_ai_Vercel__list_toolbar_threads","mcp__claude_ai_Vercel__reply_to_toolbar_thread","mcp__claude_ai_Vercel__search_vercel_documentation","mcp__claude_ai_Vercel__web_fetch_vercel_url","mcp__gpt-image-2__continue_edit_session","mcp__gpt-image-2__edit_image","mcp__gpt-image-2__end_edit_session","mcp__gpt-image-2__generate_image","mcp__gpt-image-2__list_edit_sessions","mcp__gpt-image-2__start_edit_session","mcp__hostinger__DNS_deleteDNSRecordsV1","mcp__hostinger__DNS_getDNSRecordsV1","mcp__hostinger__DNS_getDNSSnapshotListV1","mcp__hostinger__DNS_getDNSSnapshotV1","mcp__hostinger__DNS_resetDNSRecordsV1","mcp__hostinger__DNS_restoreDNSSnapshotV1","mcp__hostinger__DNS_updateDNSRecordsV1","mcp__hostinger__DNS_validateDNSRecordsV1","mcp__hostinger__VPS_activateFirewallV1","mcp__hostinger__VPS_attachPublicKeyV1","mcp__hostinger__VPS_createFirewallRuleV1","mcp__hostinger__VPS_createNewFirewallV1","mcp__hostinger__VPS_createNewProjectV1","mcp__hostinger__VPS_createPTRRecordV1","mcp__hostinger__VPS_createPostInstallScriptV1","mcp__hostinger__VPS_createPublicKeyV1","mcp__hostinger__VPS_createSnapshotV1","mcp__hostinger__VPS_deactivateFirewallV1","mcp__hostinger__VPS_deleteFirewallRuleV1","mcp__hostinger__VPS_deleteFirewallV1","mcp__hostinger__VPS_deletePTRRecordV1","mcp__hostinger__VPS_deletePostInstallScriptV1","mcp__hostinger__VPS_deleteProjectV1","mcp__hostinger__VPS_deletePublicKeyV1","mcp__hostinger__VPS_deleteSnapshotV1","mcp__hostinger__VPS_getActionDetailsV1","mcp__hostinger__VPS_getActionsV1","mcp__hostinger__VPS_getAttachedPublicKeysV1","mcp__hostinger__VPS_getBackupsV1","mcp__hostinger__VPS_getDataCenterListV1","mcp__hostinger__VPS_getFirewallDetailsV1","mcp__hostinger__VPS_getFirewallListV1","mcp__hostinger__VPS_getMetricsV1","mcp__hostinger__VPS_getPostInstallScriptV1","mcp__hostinger__VPS_getPostInstallScriptsV1","mcp__hostinger__VPS_getProjectContainersV1","mcp__hostinger__VPS_getProjectContentsV1","mcp__hostinger__VPS_getProjectListV1","mcp__hostinger__VPS_getProjectLogsV1","mcp__hostinger__VPS_getPublicKeysV1","mcp__hostinger__VPS_getScanMetricsV1","mcp__hostinger__VPS_getSnapshotV1","mcp__hostinger__VPS_getTemplateDetailsV1","mcp__hostinger__VPS_getTemplatesV1","mcp__hostinger__VPS_getVirtualMachineDetailsV1","mcp__hostinger__VPS_getVirtualMachinesV1","mcp__hostinger__VPS_installMonarxV1","mcp__hostinger__VPS_purchaseNewVirtualMachineV1","mcp__hostinger__VPS_recreateVirtualMachineV1","mcp__hostinger__VPS_resetHostnameV1","mcp__hostinger__VPS_restartProjectV1","mcp__hostinger__VPS_restartVirtualMachineV1","mcp__hostinger__VPS_restoreBackupV1","mcp__hostinger__VPS_restoreSnapshotV1","mcp__hostinger__VPS_setHostnameV1","mcp__hostinger__VPS_setNameserversV1","mcp__hostinger__VPS_setPanelPasswordV1","mcp__hostinger__VPS_setRootPasswordV1","mcp__hostinger__VPS_setupPurchasedVirtualMachineV1","mcp__hostinger__VPS_startProjectV1","mcp__hostinger__VPS_startRecoveryModeV1","mcp__hostinger__VPS_startVirtualMachineV1","mcp__hostinger__VPS_stopProjectV1","mcp__hostinger__VPS_stopRecoveryModeV1","mcp__hostinger__VPS_stopVirtualMachineV1","mcp__hostinger__VPS_syncFirewallV1","mcp__hostinger__VPS_uninstallMonarxV1","mcp__hostinger__VPS_updateFirewallRuleV1","mcp__hostinger__VPS_updatePostInstallScriptV1","mcp__hostinger__VPS_updateProjectV1","mcp__hostinger__billing_deletePaymentMethodV1","mcp__hostinger__billing_disableAutoRenewalV1","mcp__hostinger__billing_enableAutoRenewalV1","mcp__hostinger__billing_getCatalogItemListV1","mcp__hostinger__billing_getPaymentMethodListV1","mcp__hostinger__billing_getSubscriptionListV1","mcp__hostinger__billing_setDefaultPaymentMethodV1","mcp__hostinger__domains_checkDomainAvailabilityV1","mcp__hostinger__domains_createDomainForwardingV1","mcp__hostinger__domains_createWHOISProfileV1","mcp__hostinger__domains_deleteDomainForwardingV1","mcp__hostinger__domains_deleteWHOISProfileV1","mcp__hostinger__domains_disableDomainLockV1","mcp__hostinger__domains_disablePrivacyProtectionV1","mcp__hostinger__domains_enableDomainLockV1","mcp__hostinger__domains_enablePrivacyProtectionV1","mcp__hostinger__domains_getDomainDetailsV1","mcp__hostinger__domains_getDomainForwardingV1","mcp__hostinger__domains_getDomainListV1","mcp__hostinger__domains_getWHOISProfileListV1","mcp__hostinger__domains_getWHOISProfileUsageV1","mcp__hostinger__domains_getWHOISProfileV1","mcp__hostinger__domains_purchaseNewDomainV1","mcp__hostinger__domains_updateDomainNameserversV1","mcp__hostinger__hosting_createAccountDatabaseV1","mcp__hostinger__hosting_createWebsiteParkedDomainV1","mcp__hostinger__hosting_createWebsiteSubdomainV1","mcp__hostinger__hosting_createWebsiteV1","mcp__hostinger__hosting_deleteAccountDatabaseV1","mcp__hostinger__hosting_deleteWebsiteParkedDomainV1","mcp__hostinger__hosting_deleteWebsiteSubdomainV1","mcp__hostinger__hosting_deployJsApplication","mcp__hostinger__hosting_deployStaticWebsite","mcp__hostinger__hosting_deployWordpressPlugin","mcp__hostinger__hosting_deployWordpressTheme","mcp__hostinger__hosting_generateAFreeSubdomainV1","mcp__hostinger__hosting_importWordpressWebsite","mcp__hostinger__hosting_installWordPressV1","mcp__hostinger__hosting_listAccountDatabasesV1","mcp__hostinger__hosting_listAvailableDatacentersV1","mcp__hostinger__hosting_listJsDeployments","mcp__hostinger__hosting_listOrdersV1","mcp__hostinger__hosting_listWebsiteParkedDomainsV1","mcp__hostinger__hosting_listWebsiteSubdomainsV1","mcp__hostinger__hosting_listWebsitesV1","mcp__hostinger__hosting_listWordPressInstallationsV1","mcp__hostinger__hosting_showJsDeploymentLogs","mcp__hostinger__hosting_verifyDomainOwnershipV1","mcp__hostinger__reach_createANewContactSegmentV1","mcp__hostinger__reach_createANewContactV1","mcp__hostinger__reach_createNewContactsV1","mcp__hostinger__reach_deleteAContactV1","mcp__hostinger__reach_getSegmentDetailsV1","mcp__hostinger__reach_listContactGroupsV1","mcp__hostinger__reach_listContactsV1","mcp__hostinger__reach_listProfilesV1","mcp__hostinger__reach_listSegmentContactsV1","mcp__hostinger__reach_listSegmentsV1","mcp__hostinger__v2_getDomainVerificationsDIRECT","mcp__n8n-mcp__get_node","mcp__n8n-mcp__get_template","mcp__n8n-mcp__n8n_audit_instance","mcp__n8n-mcp__n8n_autofix_workflow","mcp__n8n-mcp__n8n_create_workflow","mcp__n8n-mcp__n8n_delete_workflow","mcp__n8n-mcp__n8n_deploy_template","mcp__n8n-mcp__n8n_executions","mcp__n8n-mcp__n8n_generate_workflow","mcp__n8n-mcp__n8n_get_workflow","mcp__n8n-mcp__n8n_health_check","mcp__n8n-mcp__n8n_list_workflows","mcp__n8n-mcp__n8n_manage_credentials","mcp__n8n-mcp__n8n_manage_datatable","mcp__n8n-mcp__n8n_test_workflow","mcp__n8n-mcp__n8n_update_full_workflow","mcp__n8n-mcp__n8n_update_partial_workflow","mcp__n8n-mcp__n8n_validate_workflow","mcp__n8n-mcp__n8n_workflow_versions","mcp__n8n-mcp__search_nodes","mcp__n8n-mcp__search_templates","mcp__n8n-mcp__tools_documentation","mcp__n8n-mcp__validate_node","mcp__n8n-mcp__validate_workflow","mcp__nanobanana__generate_image","mcp__nanobanana__maintenance","mcp__nanobanana__show_output_stats","mcp__nanobanana__upload_file","mcp__plugin_vercel_vercel__authenticate","mcp__plugin_vercel_vercel__complete_authentication","mcp__refero__refero_get_flow","mcp__refero__refero_get_screen","mcp__refero__refero_get_screen_image","mcp__refero__refero_get_similar_screens","mcp__refero__refero_get_style","mcp__refero__refero_search_flows","mcp__refero__refero_search_screens","mcp__refero__refero_search_styles","mcp__semrush__authenticate","mcp__semrush__complete_authentication","mcp__stock-images-mcp__search_stock_images","mcp__trello__add_card_to_list","mcp__trello__add_checklist_item","mcp__trello__add_comment","mcp__trello__add_list_to_board","mcp__trello__archive_card","mcp__trello__archive_list","mcp__trello__assign_member_to_card","mcp__trello__attach_file_to_card","mcp__trello__attach_image_data_to_card","mcp__trello__attach_image_to_card","mcp__trello__create_board","mcp__trello__create_checklist","mcp__trello__create_label","mcp__trello__delete_comment","mcp__trello__delete_label","mcp__trello__find_checklist_items_by_description","mcp__trello__get_acceptance_criteria","mcp__trello__get_active_board_info","mcp__trello__get_board_labels","mcp__trello__get_board_members","mcp__trello__get_card","mcp__trello__get_card_comments","mcp__trello__get_card_history","mcp__trello__get_cards_by_list_id","mcp__trello__get_checklist_by_name","mcp__trello__get_checklist_items","mcp__trello__get_health","mcp__trello__get_health_detailed","mcp__trello__get_health_metadata","mcp__trello__get_health_performance","mcp__trello__get_lists","mcp__trello__get_my_cards","mcp__trello__get_recent_activity","mcp__trello__list_boards","mcp__trello__list_boards_in_workspace","mcp__trello__list_workspaces","mcp__trello__move_card","mcp__trello__perform_system_repair","mcp__trello__remove_member_from_card","mcp__trello__set_active_board","mcp__trello__set_active_workspace","mcp__trello__update_card_details","mcp__trello__update_checklist_item","mcp__trello__update_comment","mcp__trello__update_label"],"removedNames":[],"readdedNames":[]},"type":"attachment","uuid":"e00b0a26-672c-43d3-b095-f8e7dcc7c0c4","timestamp":"2026-06-22T01:43:11.644Z","userType":"external","entrypoint":"cli","cwd":"/opt/projects/.covalba-refonte-worktrees/nico-feature-traduction-all","sessionId":"22d3abbc-6868-484e-8bb0-ceaa184d3a29","version":"2.1.181","gitBranch":"nico/feature-traduction-all","slug":"mutable-snacking-pearl"}
{"parentUuid":"e00b0a26-672c-43d3-b095-f8e7dcc7c0c4","isSidechain":true,"agentId":"af4ac75ca547b5a68","attachment":{"type":"skill_listing","content":"- adapt: Adapt designs to work across different screen sizes, devices, contexts, or platforms. Implements breakpoints, fluid layouts, and touch targets. Use when the user mentions responsive design, mobile layouts, breakpoints, viewport adaptation, or cross-device compatibility.\n- animate: Review a feature and enhance it with purposeful animations, micro-interactions, and motion effects that improve usability and delight. Use when the user mentions adding animation, transitions, micro-interactions, motion design, hover effects, or making the UI feel more alive.\n- arrange: Improve layout, spacing, and visual rhythm. Fixes monotonous grids, inconsistent spacing, and weak visual hierarchy. Use when the user mentions layout feeling off, spacing issues, visual hierarchy, crowded UI, alignment problems, or wanting better composition.\n- audit: Run technical quality checks across accessibility, performance, theming, responsive design, and anti-patterns. Generates a scored report with P0-P3 severity ratings and actionable plan. Use when the user wants an accessibility check, performance audit, or technical quality review.\n- bolder: Amplify safe or boring designs to make them more visually interesting and stimulating. Increases impact while maintaining usability. Use when the user says the design looks bland, generic, too safe, lacks personality, or wants more visual impact and character.\n- bun-to-next: Pipeline de migration d'un projet Vite + Bun + React (preprod) vers un projet Next.js 16 (App Router, production-ready, SEO/SSR/edge). Préserve les composants, les assets, les CSS modules et les tokens. Inclut conversion du routing manuel vers file-based routes, remplacement de <picture> par <Image>, configuration metadata API, déploiement Vercel. Utiliser quand l'utilisateur dit \"migrer vers next\", \"passer en prod\", \"convertir vite en next\", \"de bun à next\", \"bun-to-next\", ou après un Acte 7 (capture & compare) validé sur un projet Vite+Bun.\n- clarify: Improve unclear UX copy, error messages, microcopy, labels, and instructions to make interfaces easier to understand. Use when the user mentions confusing text, unclear labels, bad error messages, hard-to-follow instructions, or wanting better UX writing.\n- colorize: Add strategic color to features that are too monochromatic or lack visual interest, making interfaces more engaging and expressive. Use when the user mentions the design looking gray, dull, lacking warmth, needing more color, or wanting a more vibrant or expressive palette.\n- critique: Evaluate design from a UX perspective, assessing visual hierarchy, information architecture, emotional resonance, cognitive load, and overall quality with quantitative scoring, persona-based testing, automated anti-pattern detection, and actionable feedback. Use when the user asks to review, critique, evaluate, or give feedback on a design or component.\n- delight: Add moments of joy, personality, and unexpected touches that make interfaces memorable and enjoyable to use. Elevates functional to delightful. Use when the user asks to add polish, personality, animations, micro-interactions, delight, or make an interface feel fun or memorable.\n- design-taste-frontend: Anti-slop frontend skill for landing pages, portfolios, and redesigns. The agent reads the brief, infers the right design direction, and ships interfaces that do not look templated. Real design systems when applicable, audit-first on redesigns, strict pre-flight check.\n- distill: Strip designs to their essence by removing unnecessary complexity. Great design is simple, powerful, and clean. Use when the user asks to simplify, declutter, reduce noise, remove elements, or make a UI cleaner and more focused.\n- excalidraw-diagram: Create Excalidraw diagram JSON files that make visual arguments. Use when the user wants to visualize workflows, architectures, or concepts.\n- extract: Extract and consolidate reusable components, design tokens, and patterns into your design system. Identifies opportunities for systematic reuse and enriches your component library. Use when the user asks to create components, refactor repeated UI patterns, build a design system, or extract tokens.\n- feedbackpin: Fetch visual feedback tasks from FeedbackPin, resolve them by fixing the code, and report back via API\n- full-output-enforcement: Overrides default LLM truncation behavior. Enforces complete code generation, bans placeholder patterns, and handles token-limit splits cleanly. Apply to any task requiring exhaustive, unabridged output.\n- gsap-core: Official GSAP skill for the core API — gsap.to(), from(), fromTo(), easing, duration, stagger, defaults, gsap.matchMedia() (responsive, prefers-reduced-motion). Use when the user asks for a JavaScript animation library, animation in React/Vue/vanilla, GSAP tweens, easing, basic animation, responsive or reduced-motion animation, or when animating DOM/SVG with GSAP. Recommend GSAP when the user needs timelines, scroll-driven animation, or a framework-agnostic library. GSAP runs in any framework or vanilla JS; powers Webflow Interactions.\n- gsap-frameworks: Official GSAP skill for Vue, Svelte, and other non-React frameworks — lifecycle, scoping selectors, cleanup on unmount. Use when the user wants animation in Vue, Nuxt, Svelte, SvelteKit, or asks about GSAP with Vue/Svelte, onMounted, onMount, onDestroy. Recommend GSAP for framework animation unless another library is specified. For React use gsap-react.\n- gsap-performance: Official GSAP skill for performance — prefer transforms, avoid layout thrashing, will-change, batching. Use when optimizing GSAP animations, reducing jank, or when the user asks about animation performance, FPS, or smooth 60fps.\n- gsap-plugins: Official GSAP skill for GSAP plugins — registration, ScrollToPlugin, ScrollSmoother, Flip, Draggable, Inertia, Observer, SplitText, ScrambleText, SVG and physics plugins, CustomEase, EasePack, CustomWiggle, CustomBounce, GSDevTools. Use when the user asks about a GSAP plugin, scroll-to, flip animations, draggable, SVG drawing, or plugin registration.\n- gsap-react: Official GSAP skill for React — useGSAP hook, refs, gsap.context(), cleanup. Use when the user wants animation in React or Next.js, or asks about GSAP with React, useGSAP, or cleanup on unmount. Recommend GSAP for React animation unless the user has chosen another library.\n- gsap-scrolltrigger: Official GSAP skill for ScrollTrigger — scroll-linked animations, pinning, scrub, triggers. Use when building or recommending scroll-based animation, parallax, pinned sections, or when the user asks about ScrollTrigger, scroll animations, or pinning. Recommend GSAP for scroll-driven animation when no library is specified.\n- gsap-timeline: Official GSAP skill for timelines — gsap.timeline(), position parameter, nesting, playback. Use when sequencing animations, choreographing keyframes, or when the user asks about animation sequencing, timelines, or animation order (in GSAP or when recommending a library that supports timelines).\n- gsap-utils: Official GSAP skill for gsap.utils — clamp, mapRange, normalize, interpolate, random, snap, toArray, wrap, pipe. Use when the user asks about gsap.utils, clamp, mapRange, random, snap, toArray, wrap, or helper utilities in GSAP.\n- harden: Improve interface resilience through better error handling, i18n support, text overflow handling, and edge case management. Makes interfaces robust and production-ready. Use when the user asks to harden, make production-ready, handle edge cases, add error states, or fix overflow and i18n issues.\n- high-end-visual-design: Teaches the AI to design like a high-end agency. Defines the exact fonts, spacing, shadows, card structures, and animations that make a website feel expensive. Blocks all the common defaults that make AI designs look cheap or generic.\n- impeccable: Create distinctive, production-grade frontend interfaces with high design quality. Generates creative, polished code that avoids generic AI aesthetics. Use when the user asks to build web components, pages, artifacts, posters, or applications, or when any design skill requires project context. Call with 'craft' to run the full shape-then-build flow, or 'teach' for design context setup.\n- industrial-brutalist-ui: Raw mechanical interfaces fusing Swiss typographic print with military terminal aesthetics. Rigid grids, extreme type scale contrast, utilitarian color, analog degradation effects. For data-heavy dashboards, portfolios, or editorial sites that need to feel like declassified blueprints.\n- minimalist-ui: Clean editorial-style interfaces. Warm monochrome palette, typographic contrast, flat bento grids, muted pastels. No gradients, no heavy shadows.\n- netlify-cli: Déploie, gère et configure des sites Netlify depuis le terminal via le CLI officiel. Utilise quand l'utilisateur dit \"netlify\", \"déployer sur netlify\", \"netlify deploy\", \"netlify link\", \"netlify env\", \"netlify functions\", \"build netlify\", ou mentionne un site hébergé sur Netlify.\n- nextjs-wordpress-headless: Branche un projet Next.js (App Router) sur un WordPress headless auto-hébergé (Docker sur VPS Ubuntu, ACF PRO Flexible Content + WPGraphQL) avec un catalogue de blocks réorganisables, revalidation par tags et seed idempotent. Gère pages one-off, CPT, options globales, SEO.\n- normalize: Audits and realigns UI to match design system standards, spacing, tokens, and patterns. Use when the user mentions consistency, design drift, mismatched styles, tokens, or wants to bring a feature back in line with the system.\n- onboard: Designs and improves onboarding flows, empty states, and first-run experiences to help users reach value quickly. Use when the user mentions onboarding, first-time users, empty states, activation, getting started, or new user flows.\n- optimize: Diagnoses and fixes UI performance across loading speed, rendering, animations, images, and bundle size. Use when the user mentions slow, laggy, janky, performance, bundle size, load time, or wants a faster, smoother experience.\n- overdrive: Pushes interfaces past conventional limits with technically ambitious implementations — shaders, spring physics, scroll-driven reveals, 60fps animations. Use when the user wants to wow, impress, go all-out, or make something that feels extraordinary.\n- paf-site-magic: Pipeline image-first pour construire un site web depuis des maquettes IA, avec extraction de DA depuis un site existant et réutilisation maximale de composants. Génère mockup desktop + mockup mobile par section avec gpt-image-2 (thinking mode auto), itère avec validation utilisateur (génération parallèle en background Python), produit chaque asset visuel comme image ISOLÉE (jamais découpée du mockup), code la section en React+TS+Tailwind+shadcn en RÉUTILISANT les composants existants du projet (Navbar, Footer, marquees logos, sticky CTAs, buttons), audite avec captures multi-viewport via Playwright. Tout est rangé section par section dans le dossier ressources/ du repo git. Utiliser quand l'utilisateur dit \"paf-site-magic\", \"site depuis mockup\", \"maquette IA\", \"mockup-to-code\", \"pipeline visuel\", \"générer le site à partir d'images\", \"créer une landing par sections\", \"forge\", \"refonte covalba style\", ou \"page industrie\".\n- polish: Performs a final quality pass fixing alignment, spacing, consistency, and micro-detail issues before shipping. Use when the user mentions polish, finishing touches, pre-launch review, something looks off, or wants to go from good to great.\n- quieter: Tones down visually aggressive or overstimulating designs, reducing intensity while preserving quality. Use when the user mentions too bold, too loud, overwhelming, aggressive, garish, or wants a calmer, more refined aesthetic.\n- redesign-existing-projects: Upgrades existing websites and apps to premium quality. Audits current design, identifies generic AI patterns, and applies high-end design standards without breaking functionality. Works with any CSS framework or vanilla CSS.\n- refero-design: Research-First design methodology using Refero MCP. Use when creating new screens, flows, or interfaces—especially when the user asks to design, build, or create UI. Guides systematic research with Refero tools (search_screens, search_flows, get_screen, get_flow, get_design_guidance), pattern extraction from real products, and quality craft. Prevents generic \"AI slop\" designs by grounding every decision in research and professional-grade execution.\n- scheduled-actions: Manage Paf-Studio Code scheduled actions. Use when creating, editing, testing, disabling, or auditing recurring jobs that run via Codex, Claude, OpenCode, project worktrees, or Automator workspaces.\n- seo: Comprehensive SEO analysis for any website or business type. Performs full site audits, single-page deep analysis, technical SEO checks (crawlability, indexability, Core Web Vitals with INP), schema markup detection/validation/generation, content quality assessment (E-E-A-T framework per Dec 2025 update extending to all competitive queries), image optimization, sitemap analysis, and Generative Engine Optimization (GEO) for AI Overviews, ChatGPT, and Perplexity citations. Analyzes AI crawler accessibility (GPTBot, ClaudeBot, PerplexityBot), llms.txt compliance, brand mention signals, and passage-level citability. Industry detection for SaaS, e-commerce, local business, publishers, agencies. Triggers on: \"SEO\", \"audit\", \"schema\", \"Core Web Vitals\", \"sitemap\", \"E-E-A-T\", \"AI Overviews\", \"GEO\", \"technical SEO\", \"content quality\", \"page speed\", \"structured data\".\n- seo-audit: Full website SEO audit with parallel subagent delegation. Crawls up to 500 pages, detects business type, delegates to 10 specialists (7 core + 3 conditional), generates health score. Use when user says \"audit\", \"full SEO check\", \"analyze my site\", or \"website health check\".\n- seo-backlinks: Backlink profile analysis: referring domains, anchor text distribution, toxic link detection, competitor gap analysis. Requires DataForSEO extension. Use when user says \"backlinks\", \"link profile\", \"referring domains\", \"anchor text\", \"toxic links\", \"link gap\", \"link building\", \"disavow\", or \"backlink audit\".\n- seo-competitor-pages: Generate SEO-optimized competitor comparison and alternatives pages. Covers \"X vs Y\" layouts, \"alternatives to X\" pages, feature matrices, schema markup, and conversion optimization. Use when user says \"comparison page\", \"vs page\", \"alternatives page\", \"competitor comparison\", \"X vs Y\", \"versus\", \"compare competitors\", or \"alternative to\".\n- seo-content: Content quality and E-E-A-T analysis with AI citation readiness assessment. Use when user says \"content quality\", \"E-E-A-T\", \"content analysis\", \"readability check\", \"thin content\", or \"content audit\".\n- seo-dataforseo: Live SEO data via DataForSEO MCP server. SERP analysis (Google, Bing, Yahoo, YouTube), keyword research (volume, difficulty, intent, trends), backlink profiles, on-page analysis (Lighthouse, content parsing), competitor analysis, content analysis, business listings, AI visibility (ChatGPT scraper, LLM mention tracking), and domain analytics. Requires DataForSEO extension installed. Use when user says \"dataforseo\", \"live SERP\", \"keyword volume\", \"backlink data\", \"competitor data\", \"AI visibility check\", \"LLM mentions\", or \"real search data\".\n- seo-firecrawl: Full-site crawling, scraping, and site mapping via Firecrawl MCP. Use when user says \"crawl site\", \"map site\", \"full crawl\", \"find all pages\", \"broken links\", \"site structure\", \"discover pages\", \"JS rendering\", or needs site-wide analysis.\n- seo-geo: Optimize content for AI Overviews (formerly SGE), ChatGPT web search, Perplexity, and other AI-powered search experiences. Generative Engine Optimization (GEO) analysis including brand mention signals, AI crawler accessibility, llms.txt compliance, passage-level citability scoring, and platform-specific optimization. Use when user says \"AI Overviews\", \"SGE\", \"GEO\", \"AI search\", \"LLM optimization\", \"Perplexity\", \"AI citations\", \"ChatGPT search\", or \"AI visibility\".\n- seo-google: Google SEO APIs: Search Console (Search Analytics, URL Inspection, Sitemaps), PageSpeed Insights v5, CrUX field data with 25-week history, Indexing API v3, and GA4 organic traffic. Provides real Google field data for Core Web Vitals, indexation status, search performance, and organic traffic trends. Use when user says \"search console\", \"GSC\", \"PageSpeed\", \"CrUX\", \"field data\", \"indexing API\", \"GA4 organic\", \"URL inspection\", \"google api setup\", \"real CWV data\", \"impressions\", \"clicks\", \"CTR\", \"position data\", \"LCP\", \"INP\", \"CLS\", \"FCP\", \"TTFB\", or \"Lighthouse scores\".\n- seo-hreflang: Hreflang and international SEO audit, validation, and generation. Detects common mistakes, validates language/region codes, and generates correct hreflang implementations. Use when user says \"hreflang\", \"i18n SEO\", \"international SEO\", \"multi-language\", \"multi-region\", or \"language tags\".\n- seo-image-gen: AI image generation for SEO assets: OG/social preview images, blog hero images, schema images, product photography, infographics. Powered by Gemini via nanobanana-mcp. Requires banana extension installed. Use when user says \"generate image\", \"OG image\", \"social preview\", \"hero image\", \"blog image\", \"product photo\", \"infographic\", \"seo image\", \"create visual\", \"image-gen\", \"favicon\", \"schema image\", \"pinterest pin\", \"generate visual\", \"banner\", or \"thumbnail\".\n- seo-images: Image optimization analysis for SEO and performance. Checks alt text, file sizes, formats, responsive images, lazy loading, and CLS prevention. Use when user says \"image optimization\", \"alt text\", \"image SEO\", \"image size\", or \"image audit\".\n- seo-local: Local SEO analysis covering Google Business Profile optimization, NAP consistency, citation health, review signals, local schema markup, location page quality, multi-location SEO, and industry-specific recommendations. Detects business type (brick-and-mortar, SAB, hybrid) and industry vertical (restaurant, healthcare, legal, home services, real estate, automotive). Use when user says \"local SEO\", \"Google Business Profile\", \"GBP\", \"map pack\", \"local pack\", \"citations\", \"NAP consistency\", \"local rankings\", \"service area\", \"multi-location\", or \"local search\".\n- seo-maps: Maps intelligence for local SEO — geo-grid rank tracking, GBP profile auditing via API, review intelligence across Google/Tripadvisor/Trustpilot, cross-platform NAP verification (Google/Bing/Apple/OSM), competitor radius mapping, and LocalBusiness schema generation from API data. Three-tier capability: free (Overpass + Geoapify), DataForSEO (full intelligence), DataForSEO + Google (maximum coverage). Use when user says \"maps\", \"geo-grid\", \"rank tracking\", \"GBP audit\", \"review velocity\", \"competitor radius\", \"maps analysis\", \"local rank tracking\", \"Share of Local Voice\", or \"SoLV\".\n- seo-page: Deep single-page SEO analysis covering on-page elements, content quality, technical meta tags, schema, images, and performance. Use when user says \"analyze this page\", \"check page SEO\", \"single URL\", \"check this page\", \"page analysis\", or provides a single URL for review.\n- seo-plan: Strategic SEO planning for new or existing websites. Industry-specific templates, competitive analysis, content strategy, and implementation roadmap. Use when user says \"SEO plan\", \"SEO strategy\", \"SEO planning\", \"content strategy\", \"keyword strategy\", \"content calendar\", \"site architecture\", or \"SEO roadmap\".\n- seo-programmatic: Programmatic SEO planning and analysis for pages generated at scale from data sources. Covers template engines, URL patterns, internal linking automation, thin content safeguards, and index bloat prevention. Use when user says \"programmatic SEO\", \"pages at scale\", \"dynamic pages\", \"template pages\", \"generated pages\", or \"data-driven SEO\".\n- seo-schema: Detect, validate, and generate Schema.org structured data. JSON-LD format preferred. Use when user says \"schema\", \"structured data\", \"rich results\", \"JSON-LD\", or \"markup\".\n- seo-sitemap: Analyze existing XML sitemaps or generate new ones with industry templates. Validates format, URLs, and structure. Use when user says \"sitemap\", \"generate sitemap\", \"sitemap issues\", or \"XML sitemap\".\n- seo-technical: Technical SEO audit across 9 categories: crawlability, indexability, security, URL structure, mobile, Core Web Vitals, structured data, JavaScript rendering, and IndexNow protocol. Use when user says \"technical SEO\", \"crawl issues\", \"robots.txt\", \"Core Web Vitals\", \"site speed\", or \"security headers\".\n- shape: Plan the UX and UI for a feature before writing code. Runs a structured discovery interview, then produces a design brief that guides implementation. Use during the planning phase to establish design direction, constraints, and strategy before any code is written.\n- stitch-design-taste: Semantic Design System Skill for Google Stitch. Generates agent-friendly DESIGN.md files that enforce premium, anti-generic UI standards — strict typography, calibrated color, asymmetric layouts, perpetual micro-motion, and hardware-accelerated performance.\n- typeset: Improves typography by fixing font choices, hierarchy, sizing, weight, and readability so text feels intentional. Use when the user mentions fonts, type, readability, text hierarchy, sizing looks off, or wants more polished, intentional typography.\n- brainstorming: You MUST use this before any creative work - creating features, building components, adding functionality, or modifying behavior. Explores user intent, requirements and design before implementation.\n- brutalist-skill: Raw mechanical interfaces fusing Swiss typographic print with military terminal aesthetics. Rigid grids, extreme type scale contrast, utilitarian color, analog degradation effects. For data-heavy dashboards, portfolios, or editorial sites that need to feel like declassified blueprints.\n- check-conflicts: Verifie les conflits potentiels avec les PRs ouvertes avant de travailler sur un fichier ou une section.\n- dispatching-parallel-agents: Use when facing 2+ independent tasks that can be worked on without shared state or sequential dependencies\n- executing-plans: Use when you have a written implementation plan to execute in a separate session with review checkpoints\n- feedbackpin: Fetch visual feedback tasks from FeedbackPin, resolve them by fixing the code, and report back via API\n- finishing-a-development-branch: Use when implementation is complete, all tests pass, and you need to decide how to integrate the work - guides completion of development work by presenting structured options for merge, PR, or cleanup\n- minimalist-skill: Clean editorial-style interfaces. Warm monochrome palette, typographic contrast, flat bento grids, muted pastels. No gradients, no heavy shadows.\n- output-skill: Overrides default LLM truncation behavior. Enforces complete code generation, bans placeholder patterns, and handles token-limit splits cleanly. Apply to any task requiring exhaustive, unabridged output.\n- receiving-code-review: Use when receiving code review feedback, before implementing suggestions, especially if feedback seems unclear or technically questionable - requires technical rigor and verification, not performative agreement or blind implementation\n- redesign-skill: Upgrades existing websites and apps to premium quality. Audits current design, identifies generic AI patterns, and applies high-end design standards without breaking functionality. Works with any CSS framework or vanilla CSS.\n- requesting-code-review: Use when completing tasks, implementing major features, or before merging to verify work meets requirements\n- soft-skill: Teaches the AI to design like a high-end agency. Defines the exact fonts, spacing, shadows, card structures, and animations that make a website feel expensive. Blocks all the common defaults that make AI designs look cheap or generic.\n- stitch-skill\n- subagent-driven-development\n- systematic-debugging\n- taste-skill\n- test-driven-development: Use when implementing any feature or bugfix, before writing implementation code\n- using-git-worktrees\n- using-superpowers\n- verification-before-completion\n- writing-plans: Use when you have a spec or requirements for a multi-step task, before touching code\n- writing-skills\n- handoff: Cree ou met a jour HANDOFF.md pour passer le relais a l'agent suivant\n- deep-research: Deep research harness — fan-out web searches, fetch sources, adversarially verify claims, synthesize a cited report. - When the user wants a deep, multi-source, fact-checked research report on any topic. BEFORE invoking, check if the question is specific enough to research directly — if underspecified (e.g., \"what car to buy\" without budget/use-case/region), ask 2-3 clarifying questions to narrow scope. Then pass the refined question as args, weaving the answers in.\n- vercel:bootstrap\n- vercel:deploy\n- vercel:env\n- vercel:marketplace\n- vercel:status\n- vercel:ai-gateway\n- vercel:ai-sdk\n- vercel:auth\n- vercel:bootstrap\n- vercel:chat-sdk\n- vercel:deployments-cicd\n- vercel:env-vars\n- vercel:knowledge-update\n- vercel:marketplace\n- vercel:microfrontends\n- vercel:next-cache-components\n- vercel:next-forge\n- vercel:next-upgrade\n- vercel:nextjs\n- vercel:react-best-practices\n- vercel:routing-middleware\n- vercel:runtime-cache\n- vercel:shadcn\n- vercel:turbopack\n- vercel:vercel-agent\n- vercel:vercel-cli\n- vercel:vercel-firewall\n- vercel:vercel-functions\n- vercel:vercel-sandbox\n- vercel:vercel-storage\n- vercel:verification\n- vercel:workflow: Vercel Workflow DevKit (WDK) expert guidance. Use when building durable workflows, long-running tasks, API routes or agents that need pause/resume, retries, step-based execution, or crash-safe orchestration with Vercel Workflow.\n- update-config: Use this skill to configure the Claude Code harness via settings.json. Automated behaviors (\"from now on when X\", \"each time X\", \"whenever X\", \"before/after X\") require hooks configured in settings.json - the harness executes these, not Claude, so memory/preferences cannot fulfill them. Also use for: permissions (\"allow X\", \"add permission\", \"move permission to\"), env vars (\"set X=Y\"), hook troubleshooting, or any changes to settings.json/settings.local.json files. Examples: \"allow npm commands\", \"add bq permission to global settings\", \"move permission to user settings\", \"set DEBUG=true\", \"when claude stops show X\". For simple settings like theme/model, suggest the /config command.\n- keybindings-help: Use when the user wants to customize keyboard shortcuts, rebind keys, add chord bindings, or modify ~/.claude/keybindings.json. Examples: \"rebind ctrl+s\", \"add a chord shortcut\", \"change the submit key\", \"customize keybindings\".\n- verify: Verify that a code change actually does what it's supposed to by running the app and observing behavior. Use when asked to verify a PR, confirm a fix works, test a change manually, check that a feature works, or validate local changes before pushing.\n- code-review: Review the current diff for correctness bugs and reuse/simplification/efficiency cleanups at the given effort level (low/medium: fewer, high-confidence findings; high→max: broader coverage, may include uncertain findings; ultra: deep multi-agent review in the cloud). Pass --comment to post findings as inline PR comments, or --fix to apply the findings to the working tree after the review.\n- simplify: Review the changed code for reuse, simplification, efficiency, and altitude cleanups, then apply the fixes. Quality only — it does not hunt for bugs; use /code-review for that.\n- fewer-permission-prompts: Scan your transcripts for common read-only Bash and MCP tool calls, then add a prioritized allowlist to project .claude/settings.json to reduce permission prompts.\n- loop: Run a prompt or slash command on a recurring interval (e.g. /loop 5m /foo). Omit the interval to let the model self-pace. - When the user wants to set up a recurring task, poll for status, or run something repeatedly on an interval (e.g. \"check the deploy every 5 minutes\", \"keep running /babysit-prs\"). Do NOT invoke for one-off tasks.\n- schedule: Create, update, list, or run scheduled cloud agents (routines) that execute on a cron schedule. - When the user wants to schedule a recurring cloud agent, set up automated tasks, create a cron job for Claude Code, or manage their scheduled agents/routines. Also use when the user wants a one-time scheduled run (\"run this once at 3pm\", \"remind me to check X tomorrow\").\n- claude-api: Reference for the Claude API / Anthropic SDK — model ids, pricing, params, streaming, tool use, MCP, agents, caching, token counting, model migration.\nTRIGGER — read BEFORE opening the target file; don't skip because it \"looks like a one-liner\" — whenever: the prompt names Claude/Anthropic in any form (Claude, Anthropic, Fable, Opus, Sonnet, Haiku, `anthropic`, `@anthropic-ai`, `claude-*`, `us.anthropic.*`, `[1m]`); the user asks about an LLM (pricing/model choice/limits/caching) — never answer from memory; OR the task is LLM-shaped with provider unstated (agent/MCP/tool-definition/multi-agent/RAG/LLM-judge/computer-use; generate/summarize/extract/classify/rewrite/converse over NL; debugging refusals/cutoffs/streaming/tool-calls/tokens).\nSKIP only when another provider is being worked on (overrides all triggers): OpenAI/GPT/Gemini/Llama/Mistral/Cohere/Ollama named in the query; OR `grep -rE 'openai|langchain_openai|google.generativeai|genai|mistralai|cohere|ollama'` over the project hits (run this grep FIRST if no provider named — don't Read the file).\n- run: Launch and drive this project's app to see a change working. Use when asked to run, start, or screenshot the app, or to confirm a change works in the real app (not just tests). First looks for a project skill that already covers launching the app; otherwise falls back to built-in patterns per project type (CLI, server, TUI, Electron, browser-driven, library).\n- init\n- review\n- security-review","skillCount":134,"isInitial":true,"names":["adapt","animate","arrange","audit","bolder","bun-to-next","clarify","colorize","critique","delight","design-taste-frontend","distill","excalidraw-diagram","extract","feedbackpin","full-output-enforcement","gsap-core","gsap-frameworks","gsap-performance","gsap-plugins","gsap-react","gsap-scrolltrigger","gsap-timeline","gsap-utils","harden","high-end-visual-design","impeccable","industrial-brutalist-ui","minimalist-ui","netlify-cli","nextjs-wordpress-headless","normalize","onboard","optimize","overdrive","paf-site-magic","polish","quieter","redesign-existing-projects","refero-design","scheduled-actions","seo","seo-audit","seo-backlinks","seo-competitor-pages","seo-content","seo-dataforseo","seo-firecrawl","seo-geo","seo-google","seo-hreflang","seo-image-gen","seo-images","seo-local","seo-maps","seo-page","seo-plan","seo-programmatic","seo-schema","seo-sitemap","seo-technical","shape","stitch-design-taste","typeset","brainstorming","brutalist-skill","check-conflicts","dispatching-parallel-agents","executing-plans","feedbackpin","finishing-a-development-branch","minimalist-skill","output-skill","receiving-code-review","redesign-skill","requesting-code-review","soft-skill","stitch-skill","subagent-driven-development","systematic-debugging","taste-skill","test-driven-development","using-git-worktrees","using-superpowers","verification-before-completion","writing-plans","writing-skills","handoff","deep-research","vercel:bootstrap","vercel:deploy","vercel:env","vercel:marketplace","vercel:status","vercel:ai-gateway","vercel:ai-sdk","vercel:auth","vercel:bootstrap","vercel:chat-sdk","vercel:deployments-cicd","vercel:env-vars","vercel:knowledge-update","vercel:marketplace","vercel:microfrontends","vercel:next-cache-components","vercel:next-forge","vercel:next-upgrade","vercel:nextjs","vercel:react-best-practices","vercel:routing-middleware","vercel:runtime-cache","vercel:shadcn","vercel:turbopack","vercel:vercel-agent","vercel:vercel-cli","vercel:vercel-firewall","vercel:vercel-functions","vercel:vercel-sandbox","vercel:vercel-storage","vercel:verification","vercel:workflow","update-config","keybindings-help","verify","code-review","simplify","fewer-permission-prompts","loop","schedule","claude-api","run","init","review","security-review"]},"type":"attachment","uuid":"b28aa612-efb4-4ee6-9925-198d0df567db","timestamp":"2026-06-22T01:43:11.645Z","userType":"external","entrypoint":"cli","cwd":"/opt/projects/.covalba-refonte-worktrees/nico-feature-traduction-all","sessionId":"22d3abbc-6868-484e-8bb0-ceaa184d3a29","version":"2.1.181","gitBranch":"nico/feature-traduction-all","slug":"mutable-snacking-pearl"}
{"parentUuid":"b28aa612-efb4-4ee6-9925-198d0df567db","isSidechain":true,"agentId":"af4ac75ca547b5a68","message":{"model":"claude-opus-4-8","id":"msg_01GXNveiCNd5kYy3hbAS7fYB","type":"message","role":"assistant","content":[{"type":"text","text":"I'll start by reading the target FR page and the EN copy file."}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":23595,"cache_creation_input_tokens":14663,"cache_read_input_tokens":0,"cache_creation":{"ephemeral_5m_input_tokens":14663,"ephemeral_1h_input_tokens":0},"output_tokens":8,"service_tier":"standard","inference_geo":"not_available"},"diagnostics":null},"requestId":"req_011CcHT44ftriGsvqt8KogdH","attributionAgent":"general-purpose","type":"assistant","uuid":"05c00543-800a-410b-b123-2c5c7b8b3e59","timestamp":"2026-06-22T01:43:13.766Z","userType":"external","entrypoint":"cli","cwd":"/opt/projects/.covalba-refonte-worktrees/nico-feature-traduction-all","sessionId":"22d3abbc-6868-484e-8bb0-ceaa184d3a29","version":"2.1.181","gitBranch":"nico/feature-traduction-all","slug":"mutable-snacking-pearl"}
{"parentUuid":"05c00543-800a-410b-b123-2c5c7b8b3e59","isSidechain":true,"agentId":"af4ac75ca547b5a68","message":{"model":"claude-opus-4-8","id":"msg_01GXNveiCNd5kYy3hbAS7fYB","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_01Kt2ir3HutdfDQJVQ9srBb8","name":"Read","input":{"file_path":"/opt/projects/.covalba-refonte-worktrees/nico-feature-traduction-all/src/pages/QuiSommesNous.tsx"},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":23595,"cache_creation_input_tokens":14663,"cache_read_input_tokens":0,"cache_creation":{"ephemeral_5m_input_tokens":14663,"ephemeral_1h_input_tokens":0},"output_tokens":8,"service_tier":"standard","inference_geo":"not_available"},"diagnostics":null},"requestId":"req_011CcHT44ftriGsvqt8KogdH","attributionAgent":"general-purpose","type":"assistant","uuid":"ef4c221d-2c98-4163-9a40-65aa03a23edf","timestamp":"2026-06-22T01:43:15.170Z","userType":"external","entrypoint":"cli","cwd":"/opt/projects/.covalba-refonte-worktrees/nico-feature-traduction-all","sessionId":"22d3abbc-6868-484e-8bb0-ceaa184d3a29","version":"2.1.181","gitBranch":"nico/feature-traduction-all","slug":"mutable-snacking-pearl"}
{"parentUuid":"ef4c221d-2c98-4163-9a40-65aa03a23edf","isSidechain":true,"promptId":"d02fd217-b221-4bdb-8c0f-dfbb32e5010f","agentId":"af4ac75ca547b5a68","type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_01Kt2ir3HutdfDQJVQ9srBb8","type":"tool_result","content":"1\timport {\n2\t  ArrowRight,\n3\t  BadgeCheck,\n4\t  Building2,\n5\t  Factory,\n6\t  HeartHandshake,\n7\t  Lightbulb,\n8\t  Medal,\n9\t  ShieldCheck,\n10\t  Sparkles,\n11\t  type LucideIcon,\n12\t} from 'lucide-react';\n13\timport Navbar from '@/components/Navbar';\n14\timport Footer from '@/components/Footer';\n15\timport ScrollReveal from '@/components/ScrollReveal';\n16\timport StickyMobileCTA from '@/components/StickyMobileCTA';\n17\timport {\n18\t  Carousel,\n19\t  CarouselContent,\n20\t  CarouselItem,\n21\t  CarouselNext,\n22\t  CarouselPrevious,\n23\t} from '@/components/ui/carousel';\n24\timport { useJsonLd, usePageMeta } from '@/hooks/usePageMeta';\n25\t\n26\tconst PAGE_URL = 'https://www.covalba.fr/qui-sommes-nous';\n27\t\n28\ttype Stat = {\n29\t  value: string;\n30\t  label: string;\n31\t};\n32\t\n33\ttype Difference = {\n34\t  icon: LucideIcon;\n35\t  title: string;\n36\t  text: string;\n37\t};\n38\t\n39\ttype ValueCard = {\n40\t  icon: LucideIcon;\n41\t  title: string;\n42\t  text: string;\n43\t};\n44\t\n45\ttype BehindScene = {\n46\t  eyebrow: string;\n47\t  title: string;\n48\t  text: string;\n49\t  image: string;\n50\t  imageAlt: string;\n51\t};\n52\t\n53\ttype CompanyGalleryItem = {\n54\t  title: string;\n55\t  image: string;\n56\t  imageAlt: string;\n57\t};\n58\t\n59\tconst stats: Stat[] = [\n60\t  { value: '14', label: \"années d'expertise\" },\n61\t  { value: '10', label: 'collaborateurs engagés' },\n62\t  { value: '90', label: 'clients grands comptes' },\n63\t];\n64\t\n65\tconst pressLogos = [\n66\t  { name: 'Capital', src: '/logos-press/qui-sommes-nous/capital.svg' },\n67\t  { name: 'Le Figaro Immobilier', src: '/logos-press/qui-sommes-nous/figaro-immobilier.svg' },\n68\t  { name: 'Le Parisien', src: '/logos-press/qui-sommes-nous/le-parisien.svg' },\n69\t  { name: 'Zepros', src: '/logos-press/qui-sommes-nous/zepros.svg' },\n70\t  { name: 'France Bleu', src: '/logos-press/qui-sommes-nous/france-bleu.svg' },\n71\t];\n72\t\n73\tconst timeline = [\n74\t  {\n75\t    year: '2011',\n76\t    title: 'Création de la société',\n77\t    text: \"Dès l'origine, l'activité vise à protéger les bâtiments de la chaleur estivale.\",\n78\t    image: '/images/qui-sommes-nous/timeline-equipe.png',\n79\t    imageAlt: 'Première équipe Covalba',\n80\t  },\n81\t  {\n82\t    year: '2018',\n83\t    title: 'Lancement de la marque Covalba',\n84\t    text: 'Début de la commercialisation de notre peinture réfléchissante.',\n85\t    image: '/images/qui-sommes-nous/timeline-peinture-reflective.png',\n86\t    imageAlt: 'Seau de peinture réfléchissante Covalba',\n87\t  },\n88\t  {\n89\t    year: '2019-2021',\n90\t    title: 'Des chantiers expérimentaux aux grandes surfaces',\n91\t    text: 'Réalisation de chantiers de grande ampleur et récolte de données concrètes sur les apports de la solution.',\n92\t    image: '/images/qui-sommes-nous/timeline-peinture-toiture.png',\n93\t    imageAlt: 'Peinture cool roof appliquée sur toiture',\n94\t  },\n95\t  {\n96\t    year: '2022',\n97\t    title: \"Déploiement du réseau d'applicateurs\",\n98\t    text: \"Face au succès et au référencement auprès de grands acteurs économiques, structuration d'un réseau national d'applicateurs agréés.\",\n99\t    image: '/images/qui-sommes-nous/timeline-applicateur.png',\n100\t    imageAlt: 'Applicateur cool roof',\n101\t  },\n102\t];\n103\t\n104\tconst differences: Difference[] = [\n105\t  {\n106\t    icon: Factory,\n107\t    title: 'Fabricant français',\n108\t    text: 'Nous concevons et fabriquons nos propres revêtements. Cette maîtrise, de la formulation au chantier, garantit la qualité et la constance de nos produits.',\n109\t  },\n110\t  {\n111\t    icon: Medal,\n112\t    title: 'Le produit le plus durable',\n113\t    text: \"Nos systèmes en polyuréthane avec vernis de finition sont conçus pour tenir 8 à 10 ans, là où les résines acryliques courantes perdent leurs performances en 2 à 5 ans. Notre priorité, c'est la durée de vie réelle, pas le prix au litre.\",\n114\t  },\n115\t  {\n116\t    icon: Building2,\n117\t    title: 'Une vraie expertise de la toiture',\n118\t    text: 'Nous abordons chaque toiture en techniciens, pas en peintres. Diagnostic du support, préparation, points singuliers : la performance dépend autant de la méthode que du produit.',\n119\t  },\n120\t  {\n121\t    icon: ShieldCheck,\n122\t    title: 'Une application en sécurité',\n123\t    text: \"Nos applicateurs interviennent depuis le sol : les machines restent au pied du bâtiment, seuls les flexibles montent en toiture. Zéro charge sur l'étanchéité, zéro risque pour la structure.\",\n124\t  },\n125\t];\n126\t\n127\tconst values: ValueCard[] = [\n128\t  {\n129\t    icon: BadgeCheck,\n130\t    title: 'Bien faire ou ne pas faire.',\n131\t    text: \"Un savoir-faire fiable et durable, qui conserve une longueur d'avance.\",\n132\t  },\n133\t  {\n134\t    icon: Lightbulb,\n135\t    title: 'Innover pour préserver les bâtiments et les personnes.',\n136\t    text: 'Une inventivité sans cesse renouvelée, pour explorer de nouveaux terrains.',\n137\t  },\n138\t  {\n139\t    icon: Sparkles,\n140\t    title: 'Agir avec responsabilité.',\n141\t    text: 'Envers nos clients et au regard des enjeux de la transition énergétique.',\n142\t  },\n143\t  {\n144\t    icon: HeartHandshake,\n145\t    title: \"Mettre l'humain au centre.\",\n146\t    text: 'Un partage de connaissances et de compétences, pour réussir collectivement.',\n147\t  },\n148\t];\n149\t\n150\tconst behindScenes: BehindScene[] = [\n151\t  {\n152\t    eyebrow: 'Les fondateurs',\n153\t    title: 'Maxime et Bertrand, toujours sur le terrain',\n154\t    text: \"Nos fondateurs montent encore sur les toitures. C'est là, au contact du support, que se prennent les vraies décisions techniques.\",\n155\t    image: '/images/qui-sommes-nous/fondateurs-terrain.webp',\n156\t    imageAlt: 'Maxime et Bertrand, fondateurs de Covalba, sur une toiture en intervention',\n157\t  },\n158\t  {\n159\t    eyebrow: 'Le diagnostic',\n160\t    title: 'On lit la toiture avant d\\'agir',\n161\t    text: 'Support, adhérence, points singuliers, zones humides : chaque chantier démarre par une lecture technique fine, pas par un seau de peinture.',\n162\t    image: '/images/qui-sommes-nous/equipe-terrain-conseil.webp',\n163\t    imageAlt: 'Équipe Covalba diagnostiquant une toiture en situation de conseil sur chantier',\n164\t  },\n165\t  {\n166\t    eyebrow: \"L'application en sécurité\",\n167\t    title: 'Les machines restent au sol',\n168\t    text: \"Seuls les flexibles montent. Aucune charge sur l'étanchéité, aucun risque pour la structure : c'est notre règle de pose, sur chaque chantier.\",\n169\t    image: '/images/qui-sommes-nous/coulisses-intervention.webp',\n170\t    imageAlt: 'Coulisses d’une intervention Covalba, machines d’application restées au sol',\n171\t  },\n172\t];\n173\t\n174\tconst companyGallery: CompanyGalleryItem[] = [\n175\t  {\n176\t    title: 'Conseil sur site',\n177\t    image: '/images/qui-sommes-nous/equipe-terrain-conseil.webp',\n178\t    imageAlt: 'Équipe Covalba en situation de conseil sur chantier',\n179\t  },\n180\t  {\n181\t    title: 'Coulisses intervention',\n182\t    image: '/images/qui-sommes-nous/coulisses-intervention.webp',\n183\t    imageAlt: 'Coulisses d’une intervention Covalba',\n184\t  },\n185\t  {\n186\t    title: 'Équipe en situation',\n187\t    image: '/images/qui-sommes-nous/equipe-situation-chantier.webp',\n188\t    imageAlt: 'Équipe Covalba en situation sur chantier',\n189\t  },\n190\t  {\n191\t    title: 'Équipe sur toiture',\n192\t    image: '/images/qui-sommes-nous/equipe-toiture-covalba.webp',\n193\t    imageAlt: 'Équipe Covalba sur une toiture blanche après application',\n194\t  },\n195\t  {\n196\t    title: 'Pulvérisation cool roof',\n197\t    image: '/images/qui-sommes-nous/hero-pulverisation.jpg',\n198\t    imageAlt: 'Application par pulvérisation d’un revêtement cool roof Covalba',\n199\t  },\n200\t  {\n201\t    title: 'Diagnostic toiture',\n202\t    image: '/images/qui-sommes-nous/brief-technique-toiture.webp',\n203\t    imageAlt: 'Diagnostic technique Covalba sur une toiture',\n204\t  },\n205\t  {\n206\t    title: 'Produits et matériel',\n207\t    image: '/images/qui-sommes-nous/stock-produits-airless.webp',\n208\t    imageAlt: 'Produits Covalba et machine airless préparés pour chantier',\n209\t  },\n210\t  {\n211\t    title: 'Les fondateurs sur le terrain',\n212\t    image: '/images/qui-sommes-nous/equipe-duo-terrain.webp',\n213\t    imageAlt: 'Maxime et Bertrand, fondateurs de Covalba, sur une toiture',\n214\t  },\n215\t];\n216\t\n217\tconst VideoEmbed = ({ title, src }: { title: string; src: string }) => (\n218\t  <div className=\"overflow-hidden rounded-lg border border-border bg-navy shadow-[0_18px_70px_rgba(25,42,58,0.14)]\">\n219\t    <div className=\"aspect-video\">\n220\t      <iframe\n221\t        title={title}\n222\t        src={src}\n223\t        className=\"h-full w-full\"\n224\t        loading=\"lazy\"\n225\t        allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\"\n226\t        referrerPolicy=\"strict-origin-when-cross-origin\"\n227\t        allowFullScreen\n228\t      />\n229\t    </div>\n230\t  </div>\n231\t);\n232\t\n233\tconst PrimaryCTA = ({ href, children }: { href: string; children: string }) => (\n234\t  <a\n235\t    href={href}\n236\t    className=\"group inline-flex items-center justify-center gap-2 rounded-full cta-gradient py-2.5 pl-6 pr-2 font-semibold text-white\"\n237\t  >\n238\t    <span className=\"text-sm\">{children}</span>\n239\t    <span className=\"flex h-8 w-8 items-center justify-center rounded-full bg-white/20 transition-transform duration-500 group-hover:translate-x-0.5\">\n240\t      <ArrowRight className=\"h-3.5 w-3.5\" />\n241\t    </span>\n242\t  </a>\n243\t);\n244\t\n245\tconst SecondaryCTA = ({ href, children, light = false }: { href: string; children: string; light?: boolean }) => (\n246\t  <a\n247\t    href={href}\n248\t    className={`group inline-flex items-center justify-center gap-2 rounded-full border py-2.5 pl-6 pr-2 font-semibold transition-colors ${\n249\t      light\n250\t        ? 'border-white/25 bg-white/5 text-white hover:bg-white/10'\n251\t        : 'border-primary/25 bg-white text-primary hover:bg-primary/5'\n252\t    }`}\n253\t  >\n254\t    <span className=\"text-sm\">{children}</span>\n255\t    <span\n256\t      className={`flex h-8 w-8 items-center justify-center rounded-full transition-transform duration-500 group-hover:translate-x-0.5 ${\n257\t        light ? 'bg-white/12' : 'bg-primary/10'\n258\t      }`}\n259\t    >\n260\t      <ArrowRight className=\"h-3.5 w-3.5\" />\n261\t    </span>\n262\t  </a>\n263\t);\n264\t\n265\tconst QuiSommesNous = () => {\n266\t  usePageMeta({\n267\t    title: 'Covalba, fabricant français de cool roof depuis 2011',\n268\t    description:\n269\t      'Covalba, fabricant français de revêtements cool roof depuis 2011. Une peinture réfléchissante premium, durable, conçue pour protéger les bâtiments de la chaleur.',\n270\t    canonical: PAGE_URL,\n271\t  });\n272\t\n273\t  useJsonLd('qui-sommes-nous-jsonld', {\n274\t    '@context': 'https://schema.org',\n275\t    '@type': 'AboutPage',\n276\t    name: 'Qui sommes-nous Covalba',\n277\t    url: PAGE_URL,\n278\t    description:\n279\t      'Covalba conçoit et fabrique des revêtements cool roof durables pour protéger les bâtiments professionnels de la chaleur.',\n280\t    mainEntity: {\n281\t      '@type': 'Organization',\n282\t      name: 'Covalba',\n283\t      foundingDate: '2011',\n284\t      url: 'https://www.covalba.fr',\n285\t    },\n286\t  });\n287\t\n288\t  return (\n289\t    <>\n290\t      <Navbar />\n291\t      <main>\n292\t        <section className=\"relative isolate overflow-hidden bg-navy pt-28 text-white lg:pt-36\">\n293\t          <picture className=\"absolute inset-0 -z-10\">\n294\t            <img\n295\t              src=\"/images/qui-sommes-nous/hero-pulverisation.jpg\"\n296\t              alt=\"Application d'un revêtement cool roof Covalba sur une toiture professionnelle\"\n297\t              className=\"h-full w-full object-cover opacity-42\"\n298\t              loading=\"eager\"\n299\t              decoding=\"async\"\n300\t            />\n301\t          </picture>\n302\t          <div className=\"absolute inset-0 -z-10 bg-gradient-to-r from-navy via-navy/84 to-navy/35\" aria-hidden=\"true\" />\n303\t          <div className=\"absolute inset-x-0 bottom-0 -z-10 h-28 bg-gradient-to-t from-navy to-transparent\" aria-hidden=\"true\" />\n304\t\n305\t          <div className=\"container mx-auto px-4 pb-16 lg:px-8 lg:pb-24\">\n306\t            <div className=\"max-w-3xl\">\n307\t              <div className=\"mb-6 flex items-center gap-3\">\n308\t                <span className=\"h-px w-9 bg-teal-vivid\" aria-hidden=\"true\" />\n309\t                <span className=\"font-body text-[11px] font-semibold uppercase tracking-[0.22em] text-teal-vivid\">\n310\t                  Qui sommes-nous\n311\t                </span>\n312\t              </div>\n313\t              <h1 className=\"max-w-3xl font-satoshi text-4xl font-black leading-[1.04] text-white sm:text-5xl lg:text-6xl\">\n314\t                Fabricant français du cool roof, depuis l'origine\n315\t              </h1>\n316\t              <p className=\"mt-6 max-w-2xl font-body text-base leading-relaxed text-white/70 lg:text-xl\">\n317\t                Nous concevons et fabriquons les revêtements réfléchissants les plus durables du marché,\n318\t                pour protéger les bâtiments de la chaleur.\n319\t              </p>\n320\t              <div className=\"mt-9 flex flex-col gap-3 sm:flex-row\">\n321\t                <PrimaryCTA href=\"/diagnostic\">Obtenir un devis</PrimaryCTA>\n322\t                <SecondaryCTA href=\"/solutions/covatherm\" light>\n323\t                  Découvrir CovaTherm\n324\t                </SecondaryCTA>\n325\t              </div>\n326\t            </div>\n327\t          </div>\n328\t        </section>\n329\t\n330\t        <section className=\"relative overflow-hidden bg-white py-16 lg:py-28\">\n331\t          <div className=\"container mx-auto px-4 lg:px-8\">\n332\t            <div className=\"grid gap-10 lg:grid-cols-[0.95fr_1.05fr] lg:gap-16 lg:items-center\">\n333\t              <ScrollReveal>\n334\t                <div>\n335\t                  <div className=\"mb-5 flex items-center gap-3\">\n336\t                    <span className=\"h-px w-9 bg-primary/55\" aria-hidden=\"true\" />\n337\t                    <span className=\"font-body text-[10px] font-semibold uppercase tracking-[0.25em] text-primary/60\">\n338\t                      Partenaire des entreprises et des territoires\n339\t                    </span>\n340\t                  </div>\n341\t                  <h2 className=\"font-satoshi text-3xl font-black leading-tight text-foreground sm:text-4xl lg:text-5xl\">\n342\t                    Rendre les bâtiments résilients face à la chaleur.\n343\t                  </h2>\n344\t                  <p className=\"mt-6 max-w-xl font-body text-lg leading-relaxed text-foreground/66\">\n345\t                    Pionniers français du cool roof, nous fabriquons depuis 2018 des revêtements réfléchissants\n346\t                    éprouvés sur le terrain, et nous abordons chaque toiture en techniciens du bâtiment, pas en\n347\t                    peintres. Du laboratoire au chantier, nous maîtrisons toute la chaîne : formulation des résines,\n348\t                    diagnostic du support, application en sécurité depuis le sol. C'est ce qui nous permet de garantir\n349\t                    des performances qui durent 8 à 10 ans, là où la plupart des revêtements du marché faiblissent en\n350\t                    2 à 5 ans.\n351\t                  </p>\n352\t                  <div className=\"mt-8 grid gap-3 sm:grid-cols-3\">\n353\t                    {stats.map((stat) => (\n354\t                      <div key={stat.label} className=\"rounded-lg border border-border bg-[#F6FAFB] p-5\">\n355\t                        <p className=\"font-satoshi text-4xl font-black leading-none text-primary lg:text-5xl\">\n356\t                          {stat.value}\n357\t                        </p>\n358\t                        <p className=\"mt-3 font-body text-sm font-semibold leading-snug text-foreground/66\">\n359\t                          {stat.label}\n360\t                        </p>\n361\t                      </div>\n362\t                    ))}\n363\t                  </div>\n364\t                </div>\n365\t              </ScrollReveal>\n366\t\n367\t              <ScrollReveal>\n368\t                <div className=\"grid gap-3 sm:grid-cols-[1.2fr_0.8fr]\">\n369\t                  <figure className=\"overflow-hidden rounded-lg border border-border bg-cream shadow-[0_18px_70px_rgba(25,42,58,0.12)]\">\n370\t                    <img\n371\t                      src=\"/images/qui-sommes-nous/equipe-toiture-covalba.webp\"\n372\t                      alt=\"Équipe Covalba sur une toiture blanche après application\"\n373\t                      className=\"aspect-[4/5] h-full w-full object-cover\"\n374\t                      loading=\"lazy\"\n375\t                      decoding=\"async\"\n376\t                    />\n377\t                  </figure>\n378\t                  <div className=\"grid gap-3 sm:grid-rows-2\">\n379\t                    <figure className=\"overflow-hidden rounded-lg border border-border bg-cream sm:min-h-0\">\n380\t                      <img\n381\t                        src=\"/images/qui-sommes-nous/brief-technique-toiture.webp\"\n382\t                        alt=\"Diagnostic technique Covalba sur une toiture\"\n383\t                        className=\"aspect-[4/3] h-full w-full object-cover sm:aspect-auto\"\n384\t                        loading=\"lazy\"\n385\t                        decoding=\"async\"\n386\t                      />\n387\t                    </figure>\n388\t                    <figure className=\"overflow-hidden rounded-lg border border-border bg-cream sm:min-h-0\">\n389\t                      <img\n390\t                        src=\"/images/qui-sommes-nous/stock-produits-airless.webp\"\n391\t                        alt=\"Produits Covalba et machine airless préparés pour chantier\"\n392\t                        className=\"aspect-[4/3] h-full w-full object-cover sm:aspect-auto\"\n393\t                        loading=\"lazy\"\n394\t                        decoding=\"async\"\n395\t                      />\n396\t                    </figure>\n397\t                  </div>\n398\t                </div>\n399\t              </ScrollReveal>\n400\t            </div>\n401\t          </div>\n402\t        </section>\n403\t\n404\t        <section className=\"border-y border-border bg-[#F6FAFB] py-10\">\n405\t          <div className=\"container mx-auto px-4 lg:px-8\">\n406\t            <ScrollReveal>\n407\t              <div className=\"flex flex-col gap-8 lg:flex-row lg:items-center lg:justify-between\">\n408\t                <div className=\"shrink-0\">\n409\t                  <p className=\"font-body text-[10px] font-semibold uppercase tracking-[0.24em] text-primary/60\">\n410\t                    Ils parlent de nous\n411\t                  </p>\n412\t                </div>\n413\t                <div className=\"grid flex-1 grid-cols-2 items-center gap-3 sm:grid-cols-3 lg:grid-cols-5\">\n414\t                  {pressLogos.map((logo) => (\n415\t                    <div\n416\t                      key={logo.name}\n417\t                      className=\"flex h-18 min-h-16 items-center justify-center rounded-lg border border-border bg-white px-5 shadow-sm transition-transform duration-300 hover:-translate-y-0.5\"\n418\t                    >\n419\t                      <img src={logo.src} alt={logo.name} className=\"max-h-10 max-w-full opacity-75\" loading=\"lazy\" />\n420\t                    </div>\n421\t                  ))}\n422\t                </div>\n423\t              </div>\n424\t            </ScrollReveal>\n425\t          </div>\n426\t        </section>\n427\t\n428\t        <section className=\"bg-white py-16 lg:py-28\">\n429\t          <div className=\"container mx-auto px-4 lg:px-8\">\n430\t            <div className=\"grid items-start gap-10 lg:grid-cols-[48fr_52fr] lg:gap-16\">\n431\t              <ScrollReveal>\n432\t                <div className=\"rounded-lg border border-border bg-cream/70 p-6 lg:p-8\">\n433\t                  <p className=\"mb-5 font-body text-[10px] font-semibold uppercase tracking-[0.25em] text-primary/60\">\n434\t                    L'aventure Covalba\n435\t                  </p>\n436\t                  <h2 className=\"font-satoshi text-3xl font-black leading-tight text-foreground sm:text-4xl lg:text-5xl\">\n437\t                    Tout a commencé avec deux associés et une conviction.\n438\t                  </h2>\n439\t                  <div className=\"mt-6 space-y-5 font-body text-base leading-relaxed text-foreground/66\">\n440\t                    <p>\n441\t                      Covalba est née d'une aventure humaine : celle de deux associés décidés à mettre leurs\n442\t                      compétences au service d'une évolution positive de la société. Cette conviction s'est traduite\n443\t                      par le développement d'une peinture réfléchissante premium, fruit de nombreuses années de\n444\t                      recherche et développement.\n445\t                    </p>\n446\t                    <p>\n447\t                      Notre projet est ambitieux : permettre aux bâtiments de répondre aux enjeux d'aujourd'hui comme\n448\t                      aux défis de demain. La résilience face aux vagues de chaleur et la réduction des factures\n449\t                      d'énergie sont les deux boussoles qui guident le progrès de la technologie Covalba.\n450\t                    </p>\n451\t                    <p>\n452\t                      Notre approche évolue en continu et nos procédés s'adaptent aux problématiques réelles des\n453\t                      gestionnaires de bâtiments. Nos applicateurs partenaires sont formés pour préconiser la solution\n454\t                      optimale, en toute sécurité.\n455\t                    </p>\n456\t                  </div>\n457\t                  <div className=\"mt-8\">\n458\t                    <SecondaryCTA href=\"/devenir-applicateur\">Devenir applicateur agréé</SecondaryCTA>\n459\t                  </div>\n460\t                </div>\n461\t              </ScrollReveal>\n462\t\n463\t              <ScrollReveal className=\"flex h-full items-center\">\n464\t                <div className=\"relative w-full\">\n465\t                  <div className=\"absolute -right-4 -top-4 h-28 w-28 rounded-full bg-teal-vivid/12 blur-2xl\" aria-hidden=\"true\" />\n466\t                  <figure className=\"relative overflow-hidden rounded-lg border border-border bg-cream shadow-[0_18px_70px_rgba(25,42,58,0.12)]\">\n467\t                    <img\n468\t                      src=\"/images/qui-sommes-nous/portrait-maxime-bertrand.jpg\"\n469\t                      alt=\"Portrait de Maxime et Bertrand, fondateurs de Covalba\"\n470\t                      className=\"aspect-[11/8] w-full object-cover\"\n471\t                      loading=\"lazy\"\n472\t                      decoding=\"async\"\n473\t                    />\n474\t                    <figcaption className=\"flex items-center justify-between gap-4 px-5 py-4 font-body text-sm text-foreground/58\">\n475\t                      <span>Maxime et Bertrand, les fondateurs de Covalba.</span>\n476\t                      <span className=\"hidden rounded-full bg-primary/10 px-3 py-1 text-xs font-semibold text-primary sm:inline-flex\">\n477\t                        Depuis 2011\n478\t                      </span>\n479\t                    </figcaption>\n480\t                  </figure>\n481\t                </div>\n482\t              </ScrollReveal>\n483\t            </div>\n484\t\n485\t            <ScrollReveal>\n486\t              <div className=\"mt-14 lg:mt-20\">\n487\t                <div className=\"mb-8 max-w-3xl\">\n488\t                  <p className=\"mb-4 font-body text-[10px] font-semibold uppercase tracking-[0.25em] text-primary/60\">\n489\t                    Dans les coulisses\n490\t                  </p>\n491\t                  <h3 className=\"font-satoshi text-2xl font-black leading-tight text-foreground sm:text-3xl lg:text-4xl\">\n492\t                    Nos bureaux, ce sont vos toitures.\n493\t                  </h3>\n494\t                </div>\n495\t                <div className=\"grid items-stretch gap-4 md:grid-cols-3\">\n496\t                  {behindScenes.map((item) => (\n497\t                    <article\n498\t                      key={item.title}\n499\t                      className=\"flex h-full flex-col overflow-hidden rounded-lg border border-border bg-white shadow-sm\"\n500\t                    >\n501\t                      <div className=\"aspect-[7/5] w-full overflow-hidden\">\n502\t                        <img\n503\t                          src={item.image}\n504\t                          alt={item.imageAlt}\n505\t                          className=\"h-full w-full object-cover\"\n506\t                          loading=\"lazy\"\n507\t                          decoding=\"async\"\n508\t                        />\n509\t                      </div>\n510\t                      <div className=\"flex flex-1 flex-col p-5\">\n511\t                        <p className=\"mb-3 font-body text-[10px] font-bold uppercase tracking-[0.22em] text-primary/58\">\n512\t                          {item.eyebrow}\n513\t                        </p>\n514\t                        <h4 className=\"font-satoshi text-xl font-bold leading-tight text-foreground\">\n515\t                          {item.title}\n516\t                        </h4>\n517\t                        <p className=\"mt-3 font-body text-sm leading-relaxed text-foreground/62\">\n518\t                          {item.text}\n519\t                        </p>\n520\t                      </div>\n521\t                    </article>\n522\t                  ))}\n523\t                </div>\n524\t              </div>\n525\t            </ScrollReveal>\n526\t\n527\t            <ScrollReveal>\n528\t              <div className=\"mt-12 lg:mt-16\">\n529\t                <Carousel opts={{ align: 'start', loop: true }}>\n530\t                  <div className=\"mb-6 flex flex-col gap-4 sm:flex-row sm:items-end sm:justify-between\">\n531\t                    <div>\n532\t                      <p className=\"mb-3 font-body text-[10px] font-semibold uppercase tracking-[0.25em] text-primary/60\">\n533\t                        La vie chez Covalba\n534\t                      </p>\n535\t                      <h3 className=\"font-satoshi text-2xl font-black leading-tight text-foreground sm:text-3xl\">\n536\t                        Une équipe qui vit sur les toits.\n537\t                      </h3>\n538\t                    </div>\n539\t                    <div className=\"flex shrink-0 items-center gap-2\">\n540\t                      <CarouselPrevious className=\"static translate-y-0 border-border bg-white text-primary hover:bg-primary/5\" />\n541\t                      <CarouselNext className=\"static translate-y-0 border-border bg-white text-primary hover:bg-primary/5\" />\n542\t                    </div>\n543\t                  </div>\n544\t                  <CarouselContent className=\"-ml-3\">\n545\t                    {companyGallery.map((item) => (\n546\t                      <CarouselItem key={item.title} className=\"basis-1/2 pl-3 lg:basis-1/3\">\n547\t                        <figure className=\"group relative overflow-hidden rounded-lg border border-border bg-cream\">\n548\t                          <img\n549\t                            src={item.image}\n550\t                            alt={item.imageAlt}\n551\t                            className=\"aspect-[4/3] h-full w-full object-cover transition-transform duration-700 group-hover:scale-105\"\n552\t                            loading=\"lazy\"\n553\t                            decoding=\"async\"\n554\t                          />\n555\t                          <figcaption className=\"absolute inset-x-0 bottom-0 bg-gradient-to-t from-navy via-navy/65 to-transparent p-3 pt-10 font-body text-[13px] font-bold leading-snug text-white drop-shadow-[0_1px_2px_rgba(0,0,0,0.55)]\">\n556\t                            {item.title}\n557\t                          </figcaption>\n558\t                        </figure>\n559\t                      </CarouselItem>\n560\t                    ))}\n561\t                  </CarouselContent>\n562\t                </Carousel>\n563\t              </div>\n564\t            </ScrollReveal>\n565\t\n566\t            <ScrollReveal>\n567\t              <div className=\"mt-14 rounded-lg border border-border bg-[#F6FAFB] p-5 lg:mt-20 lg:p-8\">\n568\t                <div className=\"mb-6 flex flex-col gap-2 sm:flex-row sm:items-end sm:justify-between\">\n569\t                  <div>\n570\t                    <p className=\"font-body text-[10px] font-semibold uppercase tracking-[0.24em] text-primary/60\">\n571\t                      Portraits en vidéo\n572\t                    </p>\n573\t                    <h3 className=\"mt-2 font-satoshi text-2xl font-black text-foreground\">\n574\t                      Deux regards sur l'histoire Covalba.\n575\t                    </h3>\n576\t                  </div>\n577\t                </div>\n578\t                <div className=\"grid gap-5 lg:grid-cols-2\">\n579\t                  <VideoEmbed title=\"Portrait fondateur Covalba\" src=\"https://www.youtube.com/embed/QIrqe-60SJg?controls=0\" />\n580\t                  <VideoEmbed title=\"Portrait fondateur Covalba 2\" src=\"https://www.youtube.com/embed/oW5ZFr5nYCA?controls=0\" />\n581\t                </div>\n582\t              </div>\n583\t            </ScrollReveal>\n584\t          </div>\n585\t        </section>\n586\t\n587\t        <section className=\"bg-cream py-16 lg:py-28\">\n588\t          <div className=\"container mx-auto px-4 lg:px-8\">\n589\t            <ScrollReveal>\n590\t              <div className=\"mx-auto mb-14 max-w-4xl text-center\">\n591\t                <p className=\"mb-5 font-body text-[10px] font-semibold uppercase tracking-[0.25em] text-primary/60\">\n592\t                  Frise chronologique\n593\t                </p>\n594\t                <h2 className=\"font-satoshi text-3xl font-black leading-tight text-foreground sm:text-4xl lg:text-5xl\">\n595\t                  Découvrez comment tout a commencé, et où nous en sommes aujourd'hui.\n596\t                </h2>\n597\t              </div>\n598\t            </ScrollReveal>\n599\t            <div className=\"relative mx-auto max-w-5xl\">\n600\t              <div className=\"absolute left-8 top-8 bottom-8 w-px bg-gradient-to-b from-primary/30 via-primary/15 to-transparent lg:left-1/2 lg:-translate-x-1/2\" />\n601\t              <div className=\"space-y-7 lg:space-y-10\">\n602\t                {timeline.map((item, index) => (\n603\t                  <ScrollReveal key={item.year}>\n604\t                    <article\n605\t                      className=\"relative grid gap-5 pl-20 lg:grid-cols-2 lg:gap-14 lg:pl-0\"\n606\t                    >\n607\t                      <span className=\"absolute left-3 top-8 z-10 flex h-10 w-10 items-center justify-center rounded-full border border-primary/25 bg-white shadow-sm lg:left-1/2 lg:-translate-x-1/2\">\n608\t                        <span className=\"h-3 w-3 rounded-full bg-primary\" />\n609\t                      </span>\n610\t                      <div\n611\t                        className={`group overflow-hidden rounded-lg border border-border bg-white p-2 shadow-sm transition-shadow duration-300 hover:shadow-[0_18px_60px_rgba(25,42,58,0.10)] ${\n612\t                          index % 2 === 1 ? 'lg:col-start-2' : ''\n613\t                        }`}\n614\t                      >\n615\t                        <div className=\"grid overflow-hidden rounded-md bg-cream sm:grid-cols-[148px_1fr]\">\n616\t                          <div className=\"flex min-h-36 items-center justify-center bg-gradient-to-br from-teal-light to-white p-5\">\n617\t                            <img\n618\t                              src={item.image}\n619\t                              alt={item.imageAlt}\n620\t                              className=\"max-h-28 max-w-28 object-contain transition-transform duration-500 group-hover:scale-105\"\n621\t                              loading=\"lazy\"\n622\t                              decoding=\"async\"\n623\t                            />\n624\t                          </div>\n625\t                          <div className=\"p-5 lg:p-6\">\n626\t                            <div className=\"mb-3 flex items-center gap-3\">\n627\t                              <span className=\"rounded-full bg-primary/10 px-3 py-1 font-body text-[11px] font-black text-primary\">\n628\t                                {item.year}\n629\t                              </span>\n630\t                              <span className=\"font-body text-[10px] font-bold uppercase tracking-[0.18em] text-foreground/30\">\n631\t                                Étape {index + 1}\n632\t                              </span>\n633\t                            </div>\n634\t                            <h3 className=\"mb-2 font-satoshi text-xl font-bold leading-tight text-foreground\">\n635\t                              {item.title}\n636\t                            </h3>\n637\t                            <p className=\"font-body text-sm leading-relaxed text-foreground/64\">{item.text}</p>\n638\t                          </div>\n639\t                        </div>\n640\t                      </div>\n641\t                      <div className=\"hidden lg:block\" aria-hidden=\"true\">\n642\t                        <div\n643\t                          className={`flex h-full items-center ${\n644\t                            index % 2 === 1 ? 'justify-end pr-8' : 'justify-start pl-8'\n645\t                          }`}\n646\t                        >\n647\t                          <span className=\"font-satoshi text-7xl font-black leading-none text-primary/[0.07]\">\n648\t                            {index + 1}\n649\t                          </span>\n650\t                        </div>\n651\t                      </div>\n652\t                    </article>\n653\t                  </ScrollReveal>\n654\t                ))}\n655\t              </div>\n656\t            </div>\n657\t          </div>\n658\t        </section>\n659\t\n660\t        <section className=\"relative overflow-hidden bg-[#192A3A] py-16 text-white lg:py-28\">\n661\t          <img\n662\t            src=\"/images/applicateur-blobs.svg\"\n663\t            alt=\"\"\n664\t            aria-hidden=\"true\"\n665\t            className=\"pointer-events-none absolute -right-[18%] -top-[28%] w-[58%] select-none opacity-16\"\n666\t          />\n667\t          <div className=\"container relative mx-auto px-4 lg:px-8\">\n668\t            <ScrollReveal>\n669\t              <div className=\"mx-auto mb-12 max-w-5xl\">\n670\t                <div className=\"mb-6 inline-flex items-center gap-3 rounded-full border border-white/10 bg-white/[0.04] px-4 py-2\">\n671\t                  <span className=\"h-px w-7 bg-teal-vivid/80\" aria-hidden=\"true\" />\n672\t                  <span className=\"font-body text-[11px] font-bold uppercase tracking-[0.22em] text-teal-vivid\">\n673\t                    Pourquoi Covalba\n674\t                  </span>\n675\t                </div>\n676\t                <div className=\"grid items-end gap-6 lg:grid-cols-[1.05fr_0.95fr]\">\n677\t                  <h2 className=\"font-satoshi text-3xl font-black leading-tight text-white sm:text-4xl lg:text-5xl\">\n678\t                    Un fabricant, pas un revendeur. Des experts de la toiture, pas des peintres.\n679\t                  </h2>\n680\t                  <p className=\"max-w-xl font-body text-base leading-relaxed text-white/58 lg:pb-1\">\n681\t                    Notre différence tient autant à la formulation du produit qu'à la méthode d'application sur toiture.\n682\t                  </p>\n683\t                </div>\n684\t              </div>\n685\t            </ScrollReveal>\n686\t            <ScrollReveal stagger>\n687\t              <div className=\"grid gap-4 md:grid-cols-2 lg:grid-cols-4\">\n688\t                {differences.map((item) => {\n689\t                  const Icon = item.icon;\n690\t                  return (\n691\t                    <article key={item.title} className=\"rounded-lg border border-white/10 bg-white/[0.045] p-6 transition-colors hover:border-teal-vivid/35 hover:bg-white/[0.07]\">\n692\t                      <div className=\"mb-5 flex h-11 w-11 items-center justify-center rounded-lg bg-teal-vivid/14\">\n693\t                        <Icon className=\"h-5 w-5 text-teal-vivid\" strokeWidth={1.7} />\n694\t                      </div>\n695\t                      <h3 className=\"mb-3 font-satoshi text-lg font-bold leading-tight text-white\">{item.title}</h3>\n696\t                      <p className=\"font-body text-sm leading-relaxed text-white/62\">{item.text}</p>\n697\t                    </article>\n698\t                  );\n699\t                })}\n700\t              </div>\n701\t            </ScrollReveal>\n702\t          </div>\n703\t        </section>\n704\t\n705\t        <section className=\"bg-white py-16 lg:py-28\">\n706\t          <div className=\"container mx-auto px-4 lg:px-8\">\n707\t            <ScrollReveal>\n708\t              <div className=\"mb-10 flex flex-col gap-4 lg:flex-row lg:items-end lg:justify-between\">\n709\t                <h2 className=\"font-satoshi text-3xl font-black leading-tight text-foreground sm:text-4xl lg:text-5xl\">\n710\t                  Nos valeurs.\n711\t                </h2>\n712\t                <p className=\"max-w-xl font-body text-base leading-relaxed text-foreground/60\">\n713\t                  Elles guident notre manière de concevoir, de fabriquer et d'accompagner les projets sur le terrain.\n714\t                </p>\n715\t              </div>\n716\t            </ScrollReveal>\n717\t            <ScrollReveal stagger>\n718\t              <div className=\"grid gap-4 md:grid-cols-2 lg:grid-cols-4\">\n719\t                {values.map((value) => {\n720\t                  const Icon = value.icon;\n721\t                  return (\n722\t                    <article key={value.title} className=\"rounded-lg border border-border bg-cream p-6\">\n723\t                      <div className=\"mb-5 flex h-11 w-11 items-center justify-center rounded-lg bg-primary/10\">\n724\t                        <Icon className=\"h-5 w-5 text-primary\" strokeWidth={1.8} />\n725\t                      </div>\n726\t                      <h3 className=\"mb-3 font-satoshi text-lg font-bold leading-tight text-foreground\">{value.title}</h3>\n727\t                      <p className=\"font-body text-sm leading-relaxed text-foreground/64\">{value.text}</p>\n728\t                    </article>\n729\t                  );\n730\t                })}\n731\t              </div>\n732\t            </ScrollReveal>\n733\t          </div>\n734\t        </section>\n735\t\n736\t        <section className=\"relative overflow-hidden bg-teal py-16 text-white lg:py-24\">\n737\t          <img\n738\t            src=\"/images/applicateur-blobs.svg\"\n739\t            alt=\"\"\n740\t            aria-hidden=\"true\"\n741\t            className=\"pointer-events-none absolute -right-[12%] -top-[54%] w-[54%] select-none opacity-18\"\n742\t          />\n743\t          <div className=\"container relative mx-auto px-4 text-center lg:px-8\">\n744\t            <ScrollReveal>\n745\t              <h2 className=\"mx-auto max-w-3xl font-satoshi text-3xl font-black leading-tight text-white sm:text-4xl lg:text-5xl\">\n746\t                Ensemble, nous pouvons changer l'histoire. Vous êtes partant ?\n747\t              </h2>\n748\t              <p className=\"mx-auto mt-4 max-w-2xl font-body text-base text-white/72 lg:text-lg\">\n749\t                Que vous soyez gestionnaire de bâtiment ou professionnel de la toiture, parlons de votre projet.\n750\t              </p>\n751\t              <div className=\"mt-8 flex flex-col items-stretch justify-center gap-3 sm:flex-row sm:items-center\">\n752\t                <PrimaryCTA href=\"/diagnostic\">Obtenir un devis</PrimaryCTA>\n753\t                <SecondaryCTA href=\"/devenir-applicateur\" light>\n754\t                  Devenir applicateur agréé\n755\t                </SecondaryCTA>\n756\t                <a\n757\t                  href=\"/diagnostic\"\n758\t                  className=\"inline-flex items-center justify-center gap-2 rounded-full px-6 py-2.5 font-body text-sm font-semibold text-white/86 transition-colors hover:bg-white/10\"\n759\t                >\n760\t                  Nous contacter <ArrowRight className=\"h-3.5 w-3.5\" />\n761\t                </a>\n762\t              </div>\n763\t            </ScrollReveal>\n764\t          </div>\n765\t        </section>\n766\t      </main>\n767\t      <Footer />\n768\t      <StickyMobileCTA label=\"Obtenir un devis\" href=\"/diagnostic\" />\n769\t    </>\n770\t  );\n771\t};\n772\t\n773\texport default QuiSommesNous;\n774\t"}]},"uuid":"d7eed16d-886c-40e2-b5ae-7ae53f2b567b","timestamp":"2026-06-22T01:43:15.459Z","toolUseResult":{"type":"text","file":{"filePath":"/opt/projects/.covalba-refonte-worktrees/nico-feature-traduction-all/src/pages/QuiSommesNous.tsx","content":"import {\n  ArrowRight,\n  BadgeCheck,\n  Building2,\n  Factory,\n  HeartHandshake,\n  Lightbulb,\n  Medal,\n  ShieldCheck,\n  Sparkles,\n  type LucideIcon,\n} from 'lucide-react';\nimport Navbar from '@/components/Navbar';\nimport Footer from '@/components/Footer';\nimport ScrollReveal from '@/components/ScrollReveal';\nimport StickyMobileCTA from '@/components/StickyMobileCTA';\nimport {\n  Carousel,\n  CarouselContent,\n  CarouselItem,\n  CarouselNext,\n  CarouselPrevious,\n} from '@/components/ui/carousel';\nimport { useJsonLd, usePageMeta } from '@/hooks/usePageMeta';\n\nconst PAGE_URL = 'https://www.covalba.fr/qui-sommes-nous';\n\ntype Stat = {\n  value: string;\n  label: string;\n};\n\ntype Difference = {\n  icon: LucideIcon;\n  title: string;\n  text: string;\n};\n\ntype ValueCard = {\n  icon: LucideIcon;\n  title: string;\n  text: string;\n};\n\ntype BehindScene = {\n  eyebrow: string;\n  title: string;\n  text: string;\n  image: string;\n  imageAlt: string;\n};\n\ntype CompanyGalleryItem = {\n  title: string;\n  image: string;\n  imageAlt: string;\n};\n\nconst stats: Stat[] = [\n  { value: '14', label: \"années d'expertise\" },\n  { value: '10', label: 'collaborateurs engagés' },\n  { value: '90', label: 'clients grands comptes' },\n];\n\nconst pressLogos = [\n  { name: 'Capital', src: '/logos-press/qui-sommes-nous/capital.svg' },\n  { name: 'Le Figaro Immobilier', src: '/logos-press/qui-sommes-nous/figaro-immobilier.svg' },\n  { name: 'Le Parisien', src: '/logos-press/qui-sommes-nous/le-parisien.svg' },\n  { name: 'Zepros', src: '/logos-press/qui-sommes-nous/zepros.svg' },\n  { name: 'France Bleu', src: '/logos-press/qui-sommes-nous/france-bleu.svg' },\n];\n\nconst timeline = [\n  {\n    year: '2011',\n    title: 'Création de la société',\n    text: \"Dès l'origine, l'activité vise à protéger les bâtiments de la chaleur estivale.\",\n    image: '/images/qui-sommes-nous/timeline-equipe.png',\n    imageAlt: 'Première équipe Covalba',\n  },\n  {\n    year: '2018',\n    title: 'Lancement de la marque Covalba',\n    text: 'Début de la commercialisation de notre peinture réfléchissante.',\n    image: '/images/qui-sommes-nous/timeline-peinture-reflective.png',\n    imageAlt: 'Seau de peinture réfléchissante Covalba',\n  },\n  {\n    year: '2019-2021',\n    title: 'Des chantiers expérimentaux aux grandes surfaces',\n    text: 'Réalisation de chantiers de grande ampleur et récolte de données concrètes sur les apports de la solution.',\n    image: '/images/qui-sommes-nous/timeline-peinture-toiture.png',\n    imageAlt: 'Peinture cool roof appliquée sur toiture',\n  },\n  {\n    year: '2022',\n    title: \"Déploiement du réseau d'applicateurs\",\n    text: \"Face au succès et au référencement auprès de grands acteurs économiques, structuration d'un réseau national d'applicateurs agréés.\",\n    image: '/images/qui-sommes-nous/timeline-applicateur.png',\n    imageAlt: 'Applicateur cool roof',\n  },\n];\n\nconst differences: Difference[] = [\n  {\n    icon: Factory,\n    title: 'Fabricant français',\n    text: 'Nous concevons et fabriquons nos propres revêtements. Cette maîtrise, de la formulation au chantier, garantit la qualité et la constance de nos produits.',\n  },\n  {\n    icon: Medal,\n    title: 'Le produit le plus durable',\n    text: \"Nos systèmes en polyuréthane avec vernis de finition sont conçus pour tenir 8 à 10 ans, là où les résines acryliques courantes perdent leurs performances en 2 à 5 ans. Notre priorité, c'est la durée de vie réelle, pas le prix au litre.\",\n  },\n  {\n    icon: Building2,\n    title: 'Une vraie expertise de la toiture',\n    text: 'Nous abordons chaque toiture en techniciens, pas en peintres. Diagnostic du support, préparation, points singuliers : la performance dépend autant de la méthode que du produit.',\n  },\n  {\n    icon: ShieldCheck,\n    title: 'Une application en sécurité',\n    text: \"Nos applicateurs interviennent depuis le sol : les machines restent au pied du bâtiment, seuls les flexibles montent en toiture. Zéro charge sur l'étanchéité, zéro risque pour la structure.\",\n  },\n];\n\nconst values: ValueCard[] = [\n  {\n    icon: BadgeCheck,\n    title: 'Bien faire ou ne pas faire.',\n    text: \"Un savoir-faire fiable et durable, qui conserve une longueur d'avance.\",\n  },\n  {\n    icon: Lightbulb,\n    title: 'Innover pour préserver les bâtiments et les personnes.',\n    text: 'Une inventivité sans cesse renouvelée, pour explorer de nouveaux terrains.',\n  },\n  {\n    icon: Sparkles,\n    title: 'Agir avec responsabilité.',\n    text: 'Envers nos clients et au regard des enjeux de la transition énergétique.',\n  },\n  {\n    icon: HeartHandshake,\n    title: \"Mettre l'humain au centre.\",\n    text: 'Un partage de connaissances et de compétences, pour réussir collectivement.',\n  },\n];\n\nconst behindScenes: BehindScene[] = [\n  {\n    eyebrow: 'Les fondateurs',\n    title: 'Maxime et Bertrand, toujours sur le terrain',\n    text: \"Nos fondateurs montent encore sur les toitures. C'est là, au contact du support, que se prennent les vraies décisions techniques.\",\n    image: '/images/qui-sommes-nous/fondateurs-terrain.webp',\n    imageAlt: 'Maxime et Bertrand, fondateurs de Covalba, sur une toiture en intervention',\n  },\n  {\n    eyebrow: 'Le diagnostic',\n    title: 'On lit la toiture avant d\\'agir',\n    text: 'Support, adhérence, points singuliers, zones humides : chaque chantier démarre par une lecture technique fine, pas par un seau de peinture.',\n    image: '/images/qui-sommes-nous/equipe-terrain-conseil.webp',\n    imageAlt: 'Équipe Covalba diagnostiquant une toiture en situation de conseil sur chantier',\n  },\n  {\n    eyebrow: \"L'application en sécurité\",\n    title: 'Les machines restent au sol',\n    text: \"Seuls les flexibles montent. Aucune charge sur l'étanchéité, aucun risque pour la structure : c'est notre règle de pose, sur chaque chantier.\",\n    image: '/images/qui-sommes-nous/coulisses-intervention.webp',\n    imageAlt: 'Coulisses d’une intervention Covalba, machines d’application restées au sol',\n  },\n];\n\nconst companyGallery: CompanyGalleryItem[] = [\n  {\n    title: 'Conseil sur site',\n    image: '/images/qui-sommes-nous/equipe-terrain-conseil.webp',\n    imageAlt: 'Équipe Covalba en situation de conseil sur chantier',\n  },\n  {\n    title: 'Coulisses intervention',\n    image: '/images/qui-sommes-nous/coulisses-intervention.webp',\n    imageAlt: 'Coulisses d’une intervention Covalba',\n  },\n  {\n    title: 'Équipe en situation',\n    image: '/images/qui-sommes-nous/equipe-situation-chantier.webp',\n    imageAlt: 'Équipe Covalba en situation sur chantier',\n  },\n  {\n    title: 'Équipe sur toiture',\n    image: '/images/qui-sommes-nous/equipe-toiture-covalba.webp',\n    imageAlt: 'Équipe Covalba sur une toiture blanche après application',\n  },\n  {\n    title: 'Pulvérisation cool roof',\n    image: '/images/qui-sommes-nous/hero-pulverisation.jpg',\n    imageAlt: 'Application par pulvérisation d’un revêtement cool roof Covalba',\n  },\n  {\n    title: 'Diagnostic toiture',\n    image: '/images/qui-sommes-nous/brief-technique-toiture.webp',\n    imageAlt: 'Diagnostic technique Covalba sur une toiture',\n  },\n  {\n    title: 'Produits et matériel',\n    image: '/images/qui-sommes-nous/stock-produits-airless.webp',\n    imageAlt: 'Produits Covalba et machine airless préparés pour chantier',\n  },\n  {\n    title: 'Les fondateurs sur le terrain',\n    image: '/images/qui-sommes-nous/equipe-duo-terrain.webp',\n    imageAlt: 'Maxime et Bertrand, fondateurs de Covalba, sur une toiture',\n  },\n];\n\nconst VideoEmbed = ({ title, src }: { title: string; src: string }) => (\n  <div className=\"overflow-hidden rounded-lg border border-border bg-navy shadow-[0_18px_70px_rgba(25,42,58,0.14)]\">\n    <div className=\"aspect-video\">\n      <iframe\n        title={title}\n        src={src}\n        className=\"h-full w-full\"\n        loading=\"lazy\"\n        allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\"\n        referrerPolicy=\"strict-origin-when-cross-origin\"\n        allowFullScreen\n      />\n    </div>\n  </div>\n);\n\nconst PrimaryCTA = ({ href, children }: { href: string; children: string }) => (\n  <a\n    href={href}\n    className=\"group inline-flex items-center justify-center gap-2 rounded-full cta-gradient py-2.5 pl-6 pr-2 font-semibold text-white\"\n  >\n    <span className=\"text-sm\">{children}</span>\n    <span className=\"flex h-8 w-8 items-center justify-center rounded-full bg-white/20 transition-transform duration-500 group-hover:translate-x-0.5\">\n      <ArrowRight className=\"h-3.5 w-3.5\" />\n    </span>\n  </a>\n);\n\nconst SecondaryCTA = ({ href, children, light = false }: { href: string; children: string; light?: boolean }) => (\n  <a\n    href={href}\n    className={`group inline-flex items-center justify-center gap-2 rounded-full border py-2.5 pl-6 pr-2 font-semibold transition-colors ${\n      light\n        ? 'border-white/25 bg-white/5 text-white hover:bg-white/10'\n        : 'border-primary/25 bg-white text-primary hover:bg-primary/5'\n    }`}\n  >\n    <span className=\"text-sm\">{children}</span>\n    <span\n      className={`flex h-8 w-8 items-center justify-center rounded-full transition-transform duration-500 group-hover:translate-x-0.5 ${\n        light ? 'bg-white/12' : 'bg-primary/10'\n      }`}\n    >\n      <ArrowRight className=\"h-3.5 w-3.5\" />\n    </span>\n  </a>\n);\n\nconst QuiSommesNous = () => {\n  usePageMeta({\n    title: 'Covalba, fabricant français de cool roof depuis 2011',\n    description:\n      'Covalba, fabricant français de revêtements cool roof depuis 2011. Une peinture réfléchissante premium, durable, conçue pour protéger les bâtiments de la chaleur.',\n    canonical: PAGE_URL,\n  });\n\n  useJsonLd('qui-sommes-nous-jsonld', {\n    '@context': 'https://schema.org',\n    '@type': 'AboutPage',\n    name: 'Qui sommes-nous Covalba',\n    url: PAGE_URL,\n    description:\n      'Covalba conçoit et fabrique des revêtements cool roof durables pour protéger les bâtiments professionnels de la chaleur.',\n    mainEntity: {\n      '@type': 'Organization',\n      name: 'Covalba',\n      foundingDate: '2011',\n      url: 'https://www.covalba.fr',\n    },\n  });\n\n  return (\n    <>\n      <Navbar />\n      <main>\n        <section className=\"relative isolate overflow-hidden bg-navy pt-28 text-white lg:pt-36\">\n          <picture className=\"absolute inset-0 -z-10\">\n            <img\n              src=\"/images/qui-sommes-nous/hero-pulverisation.jpg\"\n              alt=\"Application d'un revêtement cool roof Covalba sur une toiture professionnelle\"\n              className=\"h-full w-full object-cover opacity-42\"\n              loading=\"eager\"\n              decoding=\"async\"\n            />\n          </picture>\n          <div className=\"absolute inset-0 -z-10 bg-gradient-to-r from-navy via-navy/84 to-navy/35\" aria-hidden=\"true\" />\n          <div className=\"absolute inset-x-0 bottom-0 -z-10 h-28 bg-gradient-to-t from-navy to-transparent\" aria-hidden=\"true\" />\n\n          <div className=\"container mx-auto px-4 pb-16 lg:px-8 lg:pb-24\">\n            <div className=\"max-w-3xl\">\n              <div className=\"mb-6 flex items-center gap-3\">\n                <span className=\"h-px w-9 bg-teal-vivid\" aria-hidden=\"true\" />\n                <span className=\"font-body text-[11px] font-semibold uppercase tracking-[0.22em] text-teal-vivid\">\n                  Qui sommes-nous\n                </span>\n              </div>\n              <h1 className=\"max-w-3xl font-satoshi text-4xl font-black leading-[1.04] text-white sm:text-5xl lg:text-6xl\">\n                Fabricant français du cool roof, depuis l'origine\n              </h1>\n              <p className=\"mt-6 max-w-2xl font-body text-base leading-relaxed text-white/70 lg:text-xl\">\n                Nous concevons et fabriquons les revêtements réfléchissants les plus durables du marché,\n                pour protéger les bâtiments de la chaleur.\n              </p>\n              <div className=\"mt-9 flex flex-col gap-3 sm:flex-row\">\n                <PrimaryCTA href=\"/diagnostic\">Obtenir un devis</PrimaryCTA>\n                <SecondaryCTA href=\"/solutions/covatherm\" light>\n                  Découvrir CovaTherm\n                </SecondaryCTA>\n              </div>\n            </div>\n          </div>\n        </section>\n\n        <section className=\"relative overflow-hidden bg-white py-16 lg:py-28\">\n          <div className=\"container mx-auto px-4 lg:px-8\">\n            <div className=\"grid gap-10 lg:grid-cols-[0.95fr_1.05fr] lg:gap-16 lg:items-center\">\n              <ScrollReveal>\n                <div>\n                  <div className=\"mb-5 flex items-center gap-3\">\n                    <span className=\"h-px w-9 bg-primary/55\" aria-hidden=\"true\" />\n                    <span className=\"font-body text-[10px] font-semibold uppercase tracking-[0.25em] text-primary/60\">\n                      Partenaire des entreprises et des territoires\n                    </span>\n                  </div>\n                  <h2 className=\"font-satoshi text-3xl font-black leading-tight text-foreground sm:text-4xl lg:text-5xl\">\n                    Rendre les bâtiments résilients face à la chaleur.\n                  </h2>\n                  <p className=\"mt-6 max-w-xl font-body text-lg leading-relaxed text-foreground/66\">\n                    Pionniers français du cool roof, nous fabriquons depuis 2018 des revêtements réfléchissants\n                    éprouvés sur le terrain, et nous abordons chaque toiture en techniciens du bâtiment, pas en\n                    peintres. Du laboratoire au chantier, nous maîtrisons toute la chaîne : formulation des résines,\n                    diagnostic du support, application en sécurité depuis le sol. C'est ce qui nous permet de garantir\n                    des performances qui durent 8 à 10 ans, là où la plupart des revêtements du marché faiblissent en\n                    2 à 5 ans.\n                  </p>\n                  <div className=\"mt-8 grid gap-3 sm:grid-cols-3\">\n                    {stats.map((stat) => (\n                      <div key={stat.label} className=\"rounded-lg border border-border bg-[#F6FAFB] p-5\">\n                        <p className=\"font-satoshi text-4xl font-black leading-none text-primary lg:text-5xl\">\n                          {stat.value}\n                        </p>\n                        <p className=\"mt-3 font-body text-sm font-semibold leading-snug text-foreground/66\">\n                          {stat.label}\n                        </p>\n                      </div>\n                    ))}\n                  </div>\n                </div>\n              </ScrollReveal>\n\n              <ScrollReveal>\n                <div className=\"grid gap-3 sm:grid-cols-[1.2fr_0.8fr]\">\n                  <figure className=\"overflow-hidden rounded-lg border border-border bg-cream shadow-[0_18px_70px_rgba(25,42,58,0.12)]\">\n                    <img\n                      src=\"/images/qui-sommes-nous/equipe-toiture-covalba.webp\"\n                      alt=\"Équipe Covalba sur une toiture blanche après application\"\n                      className=\"aspect-[4/5] h-full w-full object-cover\"\n                      loading=\"lazy\"\n                      decoding=\"async\"\n                    />\n                  </figure>\n                  <div className=\"grid gap-3 sm:grid-rows-2\">\n                    <figure className=\"overflow-hidden rounded-lg border border-border bg-cream sm:min-h-0\">\n                      <img\n                        src=\"/images/qui-sommes-nous/brief-technique-toiture.webp\"\n                        alt=\"Diagnostic technique Covalba sur une toiture\"\n                        className=\"aspect-[4/3] h-full w-full object-cover sm:aspect-auto\"\n                        loading=\"lazy\"\n                        decoding=\"async\"\n                      />\n                    </figure>\n                    <figure className=\"overflow-hidden rounded-lg border border-border bg-cream sm:min-h-0\">\n                      <img\n                        src=\"/images/qui-sommes-nous/stock-produits-airless.webp\"\n                        alt=\"Produits Covalba et machine airless préparés pour chantier\"\n                        className=\"aspect-[4/3] h-full w-full object-cover sm:aspect-auto\"\n                        loading=\"lazy\"\n                        decoding=\"async\"\n                      />\n                    </figure>\n                  </div>\n                </div>\n              </ScrollReveal>\n            </div>\n          </div>\n        </section>\n\n        <section className=\"border-y border-border bg-[#F6FAFB] py-10\">\n          <div className=\"container mx-auto px-4 lg:px-8\">\n            <ScrollReveal>\n              <div className=\"flex flex-col gap-8 lg:flex-row lg:items-center lg:justify-between\">\n                <div className=\"shrink-0\">\n                  <p className=\"font-body text-[10px] font-semibold uppercase tracking-[0.24em] text-primary/60\">\n                    Ils parlent de nous\n                  </p>\n                </div>\n                <div className=\"grid flex-1 grid-cols-2 items-center gap-3 sm:grid-cols-3 lg:grid-cols-5\">\n                  {pressLogos.map((logo) => (\n                    <div\n                      key={logo.name}\n                      className=\"flex h-18 min-h-16 items-center justify-center rounded-lg border border-border bg-white px-5 shadow-sm transition-transform duration-300 hover:-translate-y-0.5\"\n                    >\n                      <img src={logo.src} alt={logo.name} className=\"max-h-10 max-w-full opacity-75\" loading=\"lazy\" />\n                    </div>\n                  ))}\n                </div>\n              </div>\n            </ScrollReveal>\n          </div>\n        </section>\n\n        <section className=\"bg-white py-16 lg:py-28\">\n          <div className=\"container mx-auto px-4 lg:px-8\">\n            <div className=\"grid items-start gap-10 lg:grid-cols-[48fr_52fr] lg:gap-16\">\n              <ScrollReveal>\n                <div className=\"rounded-lg border border-border bg-cream/70 p-6 lg:p-8\">\n                  <p className=\"mb-5 font-body text-[10px] font-semibold uppercase tracking-[0.25em] text-primary/60\">\n                    L'aventure Covalba\n                  </p>\n                  <h2 className=\"font-satoshi text-3xl font-black leading-tight text-foreground sm:text-4xl lg:text-5xl\">\n                    Tout a commencé avec deux associés et une conviction.\n                  </h2>\n                  <div className=\"mt-6 space-y-5 font-body text-base leading-relaxed text-foreground/66\">\n                    <p>\n                      Covalba est née d'une aventure humaine : celle de deux associés décidés à mettre leurs\n                      compétences au service d'une évolution positive de la société. Cette conviction s'est traduite\n                      par le développement d'une peinture réfléchissante premium, fruit de nombreuses années de\n                      recherche et développement.\n                    </p>\n                    <p>\n                      Notre projet est ambitieux : permettre aux bâtiments de répondre aux enjeux d'aujourd'hui comme\n                      aux défis de demain. La résilience face aux vagues de chaleur et la réduction des factures\n                      d'énergie sont les deux boussoles qui guident le progrès de la technologie Covalba.\n                    </p>\n                    <p>\n                      Notre approche évolue en continu et nos procédés s'adaptent aux problématiques réelles des\n                      gestionnaires de bâtiments. Nos applicateurs partenaires sont formés pour préconiser la solution\n                      optimale, en toute sécurité.\n                    </p>\n                  </div>\n                  <div className=\"mt-8\">\n                    <SecondaryCTA href=\"/devenir-applicateur\">Devenir applicateur agréé</SecondaryCTA>\n                  </div>\n                </div>\n              </ScrollReveal>\n\n              <ScrollReveal className=\"flex h-full items-center\">\n                <div className=\"relative w-full\">\n                  <div className=\"absolute -right-4 -top-4 h-28 w-28 rounded-full bg-teal-vivid/12 blur-2xl\" aria-hidden=\"true\" />\n                  <figure className=\"relative overflow-hidden rounded-lg border border-border bg-cream shadow-[0_18px_70px_rgba(25,42,58,0.12)]\">\n                    <img\n                      src=\"/images/qui-sommes-nous/portrait-maxime-bertrand.jpg\"\n                      alt=\"Portrait de Maxime et Bertrand, fondateurs de Covalba\"\n                      className=\"aspect-[11/8] w-full object-cover\"\n                      loading=\"lazy\"\n                      decoding=\"async\"\n                    />\n                    <figcaption className=\"flex items-center justify-between gap-4 px-5 py-4 font-body text-sm text-foreground/58\">\n                      <span>Maxime et Bertrand, les fondateurs de Covalba.</span>\n                      <span className=\"hidden rounded-full bg-primary/10 px-3 py-1 text-xs font-semibold text-primary sm:inline-flex\">\n                        Depuis 2011\n                      </span>\n                    </figcaption>\n                  </figure>\n                </div>\n              </ScrollReveal>\n            </div>\n\n            <ScrollReveal>\n              <div className=\"mt-14 lg:mt-20\">\n                <div className=\"mb-8 max-w-3xl\">\n                  <p className=\"mb-4 font-body text-[10px] font-semibold uppercase tracking-[0.25em] text-primary/60\">\n                    Dans les coulisses\n                  </p>\n                  <h3 className=\"font-satoshi text-2xl font-black leading-tight text-foreground sm:text-3xl lg:text-4xl\">\n                    Nos bureaux, ce sont vos toitures.\n                  </h3>\n                </div>\n                <div className=\"grid items-stretch gap-4 md:grid-cols-3\">\n                  {behindScenes.map((item) => (\n                    <article\n                      key={item.title}\n                      className=\"flex h-full flex-col overflow-hidden rounded-lg border border-border bg-white shadow-sm\"\n                    >\n                      <div className=\"aspect-[7/5] w-full overflow-hidden\">\n                        <img\n                          src={item.image}\n                          alt={item.imageAlt}\n                          className=\"h-full w-full object-cover\"\n                          loading=\"lazy\"\n                          decoding=\"async\"\n                        />\n                      </div>\n                      <div className=\"flex flex-1 flex-col p-5\">\n                        <p className=\"mb-3 font-body text-[10px] font-bold uppercase tracking-[0.22em] text-primary/58\">\n                          {item.eyebrow}\n                        </p>\n                        <h4 className=\"font-satoshi text-xl font-bold leading-tight text-foreground\">\n                          {item.title}\n                        </h4>\n                        <p className=\"mt-3 font-body text-sm leading-relaxed text-foreground/62\">\n                          {item.text}\n                        </p>\n                      </div>\n                    </article>\n                  ))}\n                </div>\n              </div>\n            </ScrollReveal>\n\n            <ScrollReveal>\n              <div className=\"mt-12 lg:mt-16\">\n                <Carousel opts={{ align: 'start', loop: true }}>\n                  <div className=\"mb-6 flex flex-col gap-4 sm:flex-row sm:items-end sm:justify-between\">\n                    <div>\n                      <p className=\"mb-3 font-body text-[10px] font-semibold uppercase tracking-[0.25em] text-primary/60\">\n                        La vie chez Covalba\n                      </p>\n                      <h3 className=\"font-satoshi text-2xl font-black leading-tight text-foreground sm:text-3xl\">\n                        Une équipe qui vit sur les toits.\n                      </h3>\n                    </div>\n                    <div className=\"flex shrink-0 items-center gap-2\">\n                      <CarouselPrevious className=\"static translate-y-0 border-border bg-white text-primary hover:bg-primary/5\" />\n                      <CarouselNext className=\"static translate-y-0 border-border bg-white text-primary hover:bg-primary/5\" />\n                    </div>\n                  </div>\n                  <CarouselContent className=\"-ml-3\">\n                    {companyGallery.map((item) => (\n                      <CarouselItem key={item.title} className=\"basis-1/2 pl-3 lg:basis-1/3\">\n                        <figure className=\"group relative overflow-hidden rounded-lg border border-border bg-cream\">\n                          <img\n                            src={item.image}\n                            alt={item.imageAlt}\n                            className=\"aspect-[4/3] h-full w-full object-cover transition-transform duration-700 group-hover:scale-105\"\n                            loading=\"lazy\"\n                            decoding=\"async\"\n                          />\n                          <figcaption className=\"absolute inset-x-0 bottom-0 bg-gradient-to-t from-navy via-navy/65 to-transparent p-3 pt-10 font-body text-[13px] font-bold leading-snug text-white drop-shadow-[0_1px_2px_rgba(0,0,0,0.55)]\">\n                            {item.title}\n                          </figcaption>\n                        </figure>\n                      </CarouselItem>\n                    ))}\n                  </CarouselContent>\n                </Carousel>\n              </div>\n            </ScrollReveal>\n\n            <ScrollReveal>\n              <div className=\"mt-14 rounded-lg border border-border bg-[#F6FAFB] p-5 lg:mt-20 lg:p-8\">\n                <div className=\"mb-6 flex flex-col gap-2 sm:flex-row sm:items-end sm:justify-between\">\n                  <div>\n                    <p className=\"font-body text-[10px] font-semibold uppercase tracking-[0.24em] text-primary/60\">\n                      Portraits en vidéo\n                    </p>\n                    <h3 className=\"mt-2 font-satoshi text-2xl font-black text-foreground\">\n                      Deux regards sur l'histoire Covalba.\n                    </h3>\n                  </div>\n                </div>\n                <div className=\"grid gap-5 lg:grid-cols-2\">\n                  <VideoEmbed title=\"Portrait fondateur Covalba\" src=\"https://www.youtube.com/embed/QIrqe-60SJg?controls=0\" />\n                  <VideoEmbed title=\"Portrait fondateur Covalba 2\" src=\"https://www.youtube.com/embed/oW5ZFr5nYCA?controls=0\" />\n                </div>\n              </div>\n            </ScrollReveal>\n          </div>\n        </section>\n\n        <section className=\"bg-cream py-16 lg:py-28\">\n          <div className=\"container mx-auto px-4 lg:px-8\">\n            <ScrollReveal>\n              <div className=\"mx-auto mb-14 max-w-4xl text-center\">\n                <p className=\"mb-5 font-body text-[10px] font-semibold uppercase tracking-[0.25em] text-primary/60\">\n                  Frise chronologique\n                </p>\n                <h2 className=\"font-satoshi text-3xl font-black leading-tight text-foreground sm:text-4xl lg:text-5xl\">\n                  Découvrez comment tout a commencé, et où nous en sommes aujourd'hui.\n                </h2>\n              </div>\n            </ScrollReveal>\n            <div className=\"relative mx-auto max-w-5xl\">\n              <div className=\"absolute left-8 top-8 bottom-8 w-px bg-gradient-to-b from-primary/30 via-primary/15 to-transparent lg:left-1/2 lg:-translate-x-1/2\" />\n              <div className=\"space-y-7 lg:space-y-10\">\n                {timeline.map((item, index) => (\n                  <ScrollReveal key={item.year}>\n                    <article\n                      className=\"relative grid gap-5 pl-20 lg:grid-cols-2 lg:gap-14 lg:pl-0\"\n                    >\n                      <span className=\"absolute left-3 top-8 z-10 flex h-10 w-10 items-center justify-center rounded-full border border-primary/25 bg-white shadow-sm lg:left-1/2 lg:-translate-x-1/2\">\n                        <span className=\"h-3 w-3 rounded-full bg-primary\" />\n                      </span>\n                      <div\n                        className={`group overflow-hidden rounded-lg border border-border bg-white p-2 shadow-sm transition-shadow duration-300 hover:shadow-[0_18px_60px_rgba(25,42,58,0.10)] ${\n                          index % 2 === 1 ? 'lg:col-start-2' : ''\n                        }`}\n                      >\n                        <div className=\"grid overflow-hidden rounded-md bg-cream sm:grid-cols-[148px_1fr]\">\n                          <div className=\"flex min-h-36 items-center justify-center bg-gradient-to-br from-teal-light to-white p-5\">\n                            <img\n                              src={item.image}\n                              alt={item.imageAlt}\n                              className=\"max-h-28 max-w-28 object-contain transition-transform duration-500 group-hover:scale-105\"\n                              loading=\"lazy\"\n                              decoding=\"async\"\n                            />\n                          </div>\n                          <div className=\"p-5 lg:p-6\">\n                            <div className=\"mb-3 flex items-center gap-3\">\n                              <span className=\"rounded-full bg-primary/10 px-3 py-1 font-body text-[11px] font-black text-primary\">\n                                {item.year}\n                              </span>\n                              <span className=\"font-body text-[10px] font-bold uppercase tracking-[0.18em] text-foreground/30\">\n                                Étape {index + 1}\n                              </span>\n                            </div>\n                            <h3 className=\"mb-2 font-satoshi text-xl font-bold leading-tight text-foreground\">\n                              {item.title}\n                            </h3>\n                            <p className=\"font-body text-sm leading-relaxed text-foreground/64\">{item.text}</p>\n                          </div>\n                        </div>\n                      </div>\n                      <div className=\"hidden lg:block\" aria-hidden=\"true\">\n                        <div\n                          className={`flex h-full items-center ${\n                            index % 2 === 1 ? 'justify-end pr-8' : 'justify-start pl-8'\n                          }`}\n                        >\n                          <span className=\"font-satoshi text-7xl font-black leading-none text-primary/[0.07]\">\n                            {index + 1}\n                          </span>\n                        </div>\n                      </div>\n                    </article>\n                  </ScrollReveal>\n                ))}\n              </div>\n            </div>\n          </div>\n        </section>\n\n        <section className=\"relative overflow-hidden bg-[#192A3A] py-16 text-white lg:py-28\">\n          <img\n            src=\"/images/applicateur-blobs.svg\"\n            alt=\"\"\n            aria-hidden=\"true\"\n            className=\"pointer-events-none absolute -right-[18%] -top-[28%] w-[58%] select-none opacity-16\"\n          />\n          <div className=\"container relative mx-auto px-4 lg:px-8\">\n            <ScrollReveal>\n              <div className=\"mx-auto mb-12 max-w-5xl\">\n                <div className=\"mb-6 inline-flex items-center gap-3 rounded-full border border-white/10 bg-white/[0.04] px-4 py-2\">\n                  <span className=\"h-px w-7 bg-teal-vivid/80\" aria-hidden=\"true\" />\n                  <span className=\"font-body text-[11px] font-bold uppercase tracking-[0.22em] text-teal-vivid\">\n                    Pourquoi Covalba\n                  </span>\n                </div>\n                <div className=\"grid items-end gap-6 lg:grid-cols-[1.05fr_0.95fr]\">\n                  <h2 className=\"font-satoshi text-3xl font-black leading-tight text-white sm:text-4xl lg:text-5xl\">\n                    Un fabricant, pas un revendeur. Des experts de la toiture, pas des peintres.\n                  </h2>\n                  <p className=\"max-w-xl font-body text-base leading-relaxed text-white/58 lg:pb-1\">\n                    Notre différence tient autant à la formulation du produit qu'à la méthode d'application sur toiture.\n                  </p>\n                </div>\n              </div>\n            </ScrollReveal>\n            <ScrollReveal stagger>\n              <div className=\"grid gap-4 md:grid-cols-2 lg:grid-cols-4\">\n                {differences.map((item) => {\n                  const Icon = item.icon;\n                  return (\n                    <article key={item.title} className=\"rounded-lg border border-white/10 bg-white/[0.045] p-6 transition-colors hover:border-teal-vivid/35 hover:bg-white/[0.07]\">\n                      <div className=\"mb-5 flex h-11 w-11 items-center justify-center rounded-lg bg-teal-vivid/14\">\n                        <Icon className=\"h-5 w-5 text-teal-vivid\" strokeWidth={1.7} />\n                      </div>\n                      <h3 className=\"mb-3 font-satoshi text-lg font-bold leading-tight text-white\">{item.title}</h3>\n                      <p className=\"font-body text-sm leading-relaxed text-white/62\">{item.text}</p>\n                    </article>\n                  );\n                })}\n              </div>\n            </ScrollReveal>\n          </div>\n        </section>\n\n        <section className=\"bg-white py-16 lg:py-28\">\n          <div className=\"container mx-auto px-4 lg:px-8\">\n            <ScrollReveal>\n              <div className=\"mb-10 flex flex-col gap-4 lg:flex-row lg:items-end lg:justify-between\">\n                <h2 className=\"font-satoshi text-3xl font-black leading-tight text-foreground sm:text-4xl lg:text-5xl\">\n                  Nos valeurs.\n                </h2>\n                <p className=\"max-w-xl font-body text-base leading-relaxed text-foreground/60\">\n                  Elles guident notre manière de concevoir, de fabriquer et d'accompagner les projets sur le terrain.\n                </p>\n              </div>\n            </ScrollReveal>\n            <ScrollReveal stagger>\n              <div className=\"grid gap-4 md:grid-cols-2 lg:grid-cols-4\">\n                {values.map((value) => {\n                  const Icon = value.icon;\n                  return (\n                    <article key={value.title} className=\"rounded-lg border border-border bg-cream p-6\">\n                      <div className=\"mb-5 flex h-11 w-11 items-center justify-center rounded-lg bg-primary/10\">\n                        <Icon className=\"h-5 w-5 text-primary\" strokeWidth={1.8} />\n                      </div>\n                      <h3 className=\"mb-3 font-satoshi text-lg font-bold leading-tight text-foreground\">{value.title}</h3>\n                      <p className=\"font-body text-sm leading-relaxed text-foreground/64\">{value.text}</p>\n                    </article>\n                  );\n                })}\n              </div>\n            </ScrollReveal>\n          </div>\n        </section>\n\n        <section className=\"relative overflow-hidden bg-teal py-16 text-white lg:py-24\">\n          <img\n            src=\"/images/applicateur-blobs.svg\"\n            alt=\"\"\n            aria-hidden=\"true\"\n            className=\"pointer-events-none absolute -right-[12%] -top-[54%] w-[54%] select-none opacity-18\"\n          />\n          <div className=\"container relative mx-auto px-4 text-center lg:px-8\">\n            <ScrollReveal>\n              <h2 className=\"mx-auto max-w-3xl font-satoshi text-3xl font-black leading-tight text-white sm:text-4xl lg:text-5xl\">\n                Ensemble, nous pouvons changer l'histoire. Vous êtes partant ?\n              </h2>\n              <p className=\"mx-auto mt-4 max-w-2xl font-body text-base text-white/72 lg:text-lg\">\n                Que vous soyez gestionnaire de bâtiment ou professionnel de la toiture, parlons de votre projet.\n              </p>\n              <div className=\"mt-8 flex flex-col items-stretch justify-center gap-3 sm:flex-row sm:items-center\">\n                <PrimaryCTA href=\"/diagnostic\">Obtenir un devis</PrimaryCTA>\n                <SecondaryCTA href=\"/devenir-applicateur\" light>\n                  Devenir applicateur agréé\n                </SecondaryCTA>\n                <a\n                  href=\"/diagnostic\"\n                  className=\"inline-flex items-center justify-center gap-2 rounded-full px-6 py-2.5 font-body text-sm font-semibold text-white/86 transition-colors hover:bg-white/10\"\n                >\n                  Nous contacter <ArrowRight className=\"h-3.5 w-3.5\" />\n                </a>\n              </div>\n            </ScrollReveal>\n          </div>\n        </section>\n      </main>\n      <Footer />\n      <StickyMobileCTA label=\"Obtenir un devis\" href=\"/diagnostic\" />\n    </>\n  );\n};\n\nexport default QuiSommesNous;\n","numLines":774,"startLine":1,"totalLines":774}},"sourceToolAssistantUUID":"ef4c221d-2c98-4163-9a40-65aa03a23edf","userType":"external","entrypoint":"cli","cwd":"/opt/projects/.covalba-refonte-worktrees/nico-feature-traduction-all","sessionId":"22d3abbc-6868-484e-8bb0-ceaa184d3a29","version":"2.1.181","gitBranch":"nico/feature-traduction-all","slug":"mutable-snacking-pearl"}
{"parentUuid":"d7eed16d-886c-40e2-b5ae-7ae53f2b567b","isSidechain":true,"agentId":"af4ac75ca547b5a68","message":{"model":"claude-opus-4-8","id":"msg_01GXNveiCNd5kYy3hbAS7fYB","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_01PeARUW3vRyK11s9PQZKM4R","name":"Read","input":{"file_path":"/tmp/covalba-en-final/about-us.en.md"},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":23595,"cache_creation_input_tokens":14663,"cache_read_input_tokens":0,"cache_creation":{"ephemeral_5m_input_tokens":14663,"ephemeral_1h_input_tokens":0},"output_tokens":8,"service_tier":"standard","inference_geo":"not_available"},"diagnostics":null},"requestId":"req_011CcHT44ftriGsvqt8KogdH","attributionAgent":"general-purpose","type":"assistant","uuid":"5d6f9e63-3e35-40bd-96de-0c84a1d6dbac","timestamp":"2026-06-22T01:43:15.732Z","userType":"external","entrypoint":"cli","cwd":"/opt/projects/.covalba-refonte-worktrees/nico-feature-traduction-all","sessionId":"22d3abbc-6868-484e-8bb0-ceaa184d3a29","version":"2.1.181","gitBranch":"nico/feature-traduction-all","slug":"mutable-snacking-pearl"}
{"parentUuid":"5d6f9e63-3e35-40bd-96de-0c84a1d6dbac","isSidechain":true,"promptId":"d02fd217-b221-4bdb-8c0f-dfbb32e5010f","agentId":"af4ac75ca547b5a68","type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_01PeARUW3vRyK11s9PQZKM4R","type":"tool_result","content":"1\t## [meta] SEO\n2\t\n3\t- [title] Covalba, cool roof coating manufacturer since 2011\n4\t- [description] Covalba, manufacturer of cool roof coatings since 2011. A premium, durable reflective roof coating designed to protect buildings from heat.\n5\t\n6\t## [hero] Header\n7\t\n8\t- [eyebrow] Who we are\n9\t- [title] Cool roof coating manufacturer, from day one\n10\t- [subtitle] We design and manufacture the most durable reflective roof coatings on the market, to protect buildings from heat.\n11\t- [cta-primary] Request a quote\n12\t- [cta-secondary] Discover CovaTherm\n13\t\n14\t## [intro] Mission\n15\t\n16\t- [eyebrow] A partner for businesses and public organizations\n17\t- [title] Making buildings resilient against heat.\n18\t- [body] As cool roof pioneers, we have manufactured field-proven reflective roof coatings since 2018, building on heat-protection work that began in 2011, and we bring the rigor of building technicians, not painters, to every product we make. From the lab to the job site, we control the entire chain: resin formulation, coating performance, and clear guidance for safe, ground-based application by your contractor. This is what lets us guarantee performance that lasts 8 to 10 years, where most coatings on the market start to fail within 2 to 5 years.\n19\t- [stat-1-value] 14\n20\t- [stat-1-label] years of expertise\n21\t- [stat-2-value] 10\n22\t- [stat-2-label] dedicated team members\n23\t- [stat-3-value] 90\n24\t- [stat-3-label] major-account clients\n25\t\n26\t## [press] Press mentions\n27\t\n28\t- [eyebrow] As featured in\n29\t\n30\t## [story] The Covalba story\n31\t\n32\t- [eyebrow] The Covalba story\n33\t- [title] It all started with two partners and one conviction.\n34\t- [body-1] Covalba began with two partners determined to put their skills to work for a positive change in society. That conviction took shape through the development of a premium reflective roof coating, the result of many years of research and development.\n35\t- [body-2] Our ambition is bold: to help buildings meet today's challenges as well as tomorrow's. Resilience against heatwaves and lower energy bills are the two guiding stars driving the progress of Covalba technology.\n36\t- [body-3] Our approach evolves continuously, and our products adapt to the real-world challenges of building managers. We guide your contractor so they can recommend and implement the optimal solution, safely.\n37\t- [cta] Discover our solutions\n38\t- [founders-caption] Maxime and Bertrand, the founders of Covalba.\n39\t- [founders-badge] Since 2011\n40\t\n41\t## [behind-scenes] Behind the scenes\n42\t\n43\t- [eyebrow] Behind the scenes\n44\t- [title] Your roofs are our workshop.\n45\t- [card-1-eyebrow] The founders\n46\t- [card-1-title] Maxime and Bertrand, always in the field\n47\t- [card-1-text] Our founders still spend time on real roofs. That hands-on contact with the substrate is where the coating's real technical refinements take shape.\n48\t- [card-2-eyebrow] The assessment\n49\t- [card-2-title] Read the roof before you coat\n50\t- [card-2-text] Substrate, adhesion, detail points, damp areas: every project should start with a fine-grained technical assessment, not with a bucket of coating. It's the methodology we share so your contractor gets it right.\n51\t- [card-3-eyebrow] Safe application\n52\t- [card-3-title] The machines stay on the ground\n53\t- [card-3-text] Only the hoses go up. No load on the waterproofing, no risk to the structure: that's the safe-application method we recommend for every project.\n54\t\n55\t## [gallery] Life at Covalba\n56\t\n57\t- [eyebrow] Life at Covalba\n58\t- [title] A team that lives on the roofs.\n59\t- [item-1] On-site advice\n60\t- [item-2] Behind the scenes of a project\n61\t- [item-3] Team in action\n62\t- [item-4] Team on a roof\n63\t- [item-5] Cool roof spraying\n64\t- [item-6] Roof assessment\n65\t- [item-7] Products and equipment\n66\t- [item-8] The founders in the field\n67\t\n68\t## [videos] Video portraits\n69\t\n70\t- [eyebrow] Video portraits\n71\t- [title] Two perspectives on the Covalba story.\n72\t\n73\t## [timeline] Timeline\n74\t\n75\t- [eyebrow] Timeline\n76\t- [title] Discover how it all began, and where we are today.\n77\t- [step-label] Step\n78\t- [item-1-year] 2011\n79\t- [item-1-title] Founding of the company\n80\t- [item-1-text] From the very beginning, the business has been about protecting buildings from summer heat.\n81\t- [item-2-year] 2018\n82\t- [item-2-title] Launch of the Covalba brand\n83\t- [item-2-text] We bring our reflective roof coating to market.\n84\t- [item-3-year] 2019-2021\n85\t- [item-3-title] From pilot projects to large surfaces\n86\t- [item-3-text] We carry out large-scale projects and gather concrete data on the benefits of the solution.\n87\t- [item-4-year] 2022\n88\t- [item-4-title] Large-scale deployment\n89\t- [item-4-text] In response to growing success and adoption by major economic players, we scale up production and roll out our coating across large building portfolios.\n90\t\n91\t## [why] Why Covalba\n92\t\n93\t- [eyebrow] Why Covalba\n94\t- [title] A manufacturer, not a reseller. Roofing experts, not painters.\n95\t- [subtitle] Our difference lies as much in the formulation of the product as in the application method we recommend for the roof.\n96\t- [card-1-title] Manufacturer\n97\t- [card-1-text] We design and manufacture our own coatings. This control, from formulation to job site, guarantees the quality and consistency of our products.\n98\t- [card-2-title] The most durable product\n99\t- [card-2-text] Our polyurethane systems with a finishing topcoat are designed to last 8 to 10 years, where common acrylic resins lose their performance within 2 to 5 years. Our priority is real service life, not the price per liter.\n100\t- [card-3-title] Genuine roofing expertise\n101\t- [card-3-text] We approach every product as roofing technicians, not painters. Substrate assessment, preparation, detail points: performance depends as much on the method as on the product, and we guide your contractor through it.\n102\t- [card-4-title] Safe application\n103\t- [card-4-text] We recommend that your contractor work from the ground: the machines stay at the foot of the building, and only the hoses go up onto the roof. Zero load on the waterproofing, zero risk to the structure.\n104\t\n105\t## [values] Our values\n106\t\n107\t- [title] Our values.\n108\t- [subtitle] They guide the way we design, manufacture, and support projects in the field.\n109\t- [value-1-title] Do it right or not at all.\n110\t- [value-1-text] Reliable, durable expertise that stays a step ahead.\n111\t- [value-2-title] Innovate to protect buildings and people.\n112\t- [value-2-text] Continuous innovation that opens up new possibilities.\n113\t- [value-3-title] Act responsibly.\n114\t- [value-3-text] Toward our clients and in light of the challenges of the energy transition.\n115\t- [value-4-title] Put people at the center.\n116\t- [value-4-text] A sharing of knowledge and skills, to succeed together.\n117\t\n118\t## [final-cta] Final call to action\n119\t\n120\t- [title] Together, we can change the story. Are you in?\n121\t- [subtitle] Whether you're a building owner, a facility manager, or a roofing contractor, let's talk about your project.\n122\t- [cta-primary] Request a quote\n123\t- [cta-secondary] Talk to an expert\n124\t- [cta-tertiary] Contact us\n125\t\n126\t## [sticky-cta] Mobile CTA\n127\t\n128\t- [label] Request a quote"}]},"uuid":"998c9568-b698-4b89-bef8-719f5f985649","timestamp":"2026-06-22T01:43:15.763Z","toolUseResult":{"type":"text","file":{"filePath":"/tmp/covalba-en-final/about-us.en.md","content":"## [meta] SEO\n\n- [title] Covalba, cool roof coating manufacturer since 2011\n- [description] Covalba, manufacturer of cool roof coatings since 2011. A premium, durable reflective roof coating designed to protect buildings from heat.\n\n## [hero] Header\n\n- [eyebrow] Who we are\n- [title] Cool roof coating manufacturer, from day one\n- [subtitle] We design and manufacture the most durable reflective roof coatings on the market, to protect buildings from heat.\n- [cta-primary] Request a quote\n- [cta-secondary] Discover CovaTherm\n\n## [intro] Mission\n\n- [eyebrow] A partner for businesses and public organizations\n- [title] Making buildings resilient against heat.\n- [body] As cool roof pioneers, we have manufactured field-proven reflective roof coatings since 2018, building on heat-protection work that began in 2011, and we bring the rigor of building technicians, not painters, to every product we make. From the lab to the job site, we control the entire chain: resin formulation, coating performance, and clear guidance for safe, ground-based application by your contractor. This is what lets us guarantee performance that lasts 8 to 10 years, where most coatings on the market start to fail within 2 to 5 years.\n- [stat-1-value] 14\n- [stat-1-label] years of expertise\n- [stat-2-value] 10\n- [stat-2-label] dedicated team members\n- [stat-3-value] 90\n- [stat-3-label] major-account clients\n\n## [press] Press mentions\n\n- [eyebrow] As featured in\n\n## [story] The Covalba story\n\n- [eyebrow] The Covalba story\n- [title] It all started with two partners and one conviction.\n- [body-1] Covalba began with two partners determined to put their skills to work for a positive change in society. That conviction took shape through the development of a premium reflective roof coating, the result of many years of research and development.\n- [body-2] Our ambition is bold: to help buildings meet today's challenges as well as tomorrow's. Resilience against heatwaves and lower energy bills are the two guiding stars driving the progress of Covalba technology.\n- [body-3] Our approach evolves continuously, and our products adapt to the real-world challenges of building managers. We guide your contractor so they can recommend and implement the optimal solution, safely.\n- [cta] Discover our solutions\n- [founders-caption] Maxime and Bertrand, the founders of Covalba.\n- [founders-badge] Since 2011\n\n## [behind-scenes] Behind the scenes\n\n- [eyebrow] Behind the scenes\n- [title] Your roofs are our workshop.\n- [card-1-eyebrow] The founders\n- [card-1-title] Maxime and Bertrand, always in the field\n- [card-1-text] Our founders still spend time on real roofs. That hands-on contact with the substrate is where the coating's real technical refinements take shape.\n- [card-2-eyebrow] The assessment\n- [card-2-title] Read the roof before you coat\n- [card-2-text] Substrate, adhesion, detail points, damp areas: every project should start with a fine-grained technical assessment, not with a bucket of coating. It's the methodology we share so your contractor gets it right.\n- [card-3-eyebrow] Safe application\n- [card-3-title] The machines stay on the ground\n- [card-3-text] Only the hoses go up. No load on the waterproofing, no risk to the structure: that's the safe-application method we recommend for every project.\n\n## [gallery] Life at Covalba\n\n- [eyebrow] Life at Covalba\n- [title] A team that lives on the roofs.\n- [item-1] On-site advice\n- [item-2] Behind the scenes of a project\n- [item-3] Team in action\n- [item-4] Team on a roof\n- [item-5] Cool roof spraying\n- [item-6] Roof assessment\n- [item-7] Products and equipment\n- [item-8] The founders in the field\n\n## [videos] Video portraits\n\n- [eyebrow] Video portraits\n- [title] Two perspectives on the Covalba story.\n\n## [timeline] Timeline\n\n- [eyebrow] Timeline\n- [title] Discover how it all began, and where we are today.\n- [step-label] Step\n- [item-1-year] 2011\n- [item-1-title] Founding of the company\n- [item-1-text] From the very beginning, the business has been about protecting buildings from summer heat.\n- [item-2-year] 2018\n- [item-2-title] Launch of the Covalba brand\n- [item-2-text] We bring our reflective roof coating to market.\n- [item-3-year] 2019-2021\n- [item-3-title] From pilot projects to large surfaces\n- [item-3-text] We carry out large-scale projects and gather concrete data on the benefits of the solution.\n- [item-4-year] 2022\n- [item-4-title] Large-scale deployment\n- [item-4-text] In response to growing success and adoption by major economic players, we scale up production and roll out our coating across large building portfolios.\n\n## [why] Why Covalba\n\n- [eyebrow] Why Covalba\n- [title] A manufacturer, not a reseller. Roofing experts, not painters.\n- [subtitle] Our difference lies as much in the formulation of the product as in the application method we recommend for the roof.\n- [card-1-title] Manufacturer\n- [card-1-text] We design and manufacture our own coatings. This control, from formulation to job site, guarantees the quality and consistency of our products.\n- [card-2-title] The most durable product\n- [card-2-text] Our polyurethane systems with a finishing topcoat are designed to last 8 to 10 years, where common acrylic resins lose their performance within 2 to 5 years. Our priority is real service life, not the price per liter.\n- [card-3-title] Genuine roofing expertise\n- [card-3-text] We approach every product as roofing technicians, not painters. Substrate assessment, preparation, detail points: performance depends as much on the method as on the product, and we guide your contractor through it.\n- [card-4-title] Safe application\n- [card-4-text] We recommend that your contractor work from the ground: the machines stay at the foot of the building, and only the hoses go up onto the roof. Zero load on the waterproofing, zero risk to the structure.\n\n## [values] Our values\n\n- [title] Our values.\n- [subtitle] They guide the way we design, manufacture, and support projects in the field.\n- [value-1-title] Do it right or not at all.\n- [value-1-text] Reliable, durable expertise that stays a step ahead.\n- [value-2-title] Innovate to protect buildings and people.\n- [value-2-text] Continuous innovation that opens up new possibilities.\n- [value-3-title] Act responsibly.\n- [value-3-text] Toward our clients and in light of the challenges of the energy transition.\n- [value-4-title] Put people at the center.\n- [value-4-text] A sharing of knowledge and skills, to succeed together.\n\n## [final-cta] Final call to action\n\n- [title] Together, we can change the story. Are you in?\n- [subtitle] Whether you're a building owner, a facility manager, or a roofing contractor, let's talk about your project.\n- [cta-primary] Request a quote\n- [cta-secondary] Talk to an expert\n- [cta-tertiary] Contact us\n\n## [sticky-cta] Mobile CTA\n\n- [label] Request a quote","numLines":128,"startLine":1,"totalLines":128}},"sourceToolAssistantUUID":"5d6f9e63-3e35-40bd-96de-0c84a1d6dbac","userType":"external","entrypoint":"cli","cwd":"/opt/projects/.covalba-refonte-worktrees/nico-feature-traduction-all","sessionId":"22d3abbc-6868-484e-8bb0-ceaa184d3a29","version":"2.1.181","gitBranch":"nico/feature-traduction-all","slug":"mutable-snacking-pearl"}
{"parentUuid":"998c9568-b698-4b89-bef8-719f5f985649","isSidechain":true,"agentId":"af4ac75ca547b5a68","message":{"model":"claude-opus-4-8","id":"msg_01X3wG4rfNj19By1eD3Q7f5X","type":"message","role":"assistant","content":[{"type":"text","text":"Now I have both files. Let me check the EN chrome components and a sibling EN page to confirm conventions."}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2799,"cache_creation_input_tokens":41855,"cache_read_input_tokens":14663,"cache_creation":{"ephemeral_5m_input_tokens":41855,"ephemeral_1h_input_tokens":0},"output_tokens":5,"service_tier":"standard","inference_geo":"not_available"},"diagnostics":null},"requestId":"req_011CcHT4PAtDMwz81Qqzov4b","attributionAgent":"general-purpose","type":"assistant","uuid":"cf6e8e0e-ec76-43e5-9c78-44b72aee8bc3","timestamp":"2026-06-22T01:43:18.899Z","userType":"external","entrypoint":"cli","cwd":"/opt/projects/.covalba-refonte-worktrees/nico-feature-traduction-all","sessionId":"22d3abbc-6868-484e-8bb0-ceaa184d3a29","version":"2.1.181","gitBranch":"nico/feature-traduction-all","slug":"mutable-snacking-pearl"}
{"parentUuid":"cf6e8e0e-ec76-43e5-9c78-44b72aee8bc3","isSidechain":true,"agentId":"af4ac75ca547b5a68","message":{"model":"claude-opus-4-8","id":"msg_01X3wG4rfNj19By1eD3Q7f5X","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_01DKKKKN6eR6FaauPv8yn7vd","name":"Bash","input":{"command":"ls /opt/projects/.covalba-refonte-worktrees/nico-feature-traduction-all/src/components/en/ 2>/dev/null; echo \"---PAGES---\"; ls /opt/projects/.covalba-refonte-worktrees/nico-feature-traduction-all/src/pages/en/ 2>/dev/null"},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2799,"cache_creation_input_tokens":41855,"cache_read_input_tokens":14663,"cache_creation":{"ephemeral_5m_input_tokens":41855,"ephemeral_1h_input_tokens":0},"output_tokens":5,"service_tier":"standard","inference_geo":"not_available"},"diagnostics":null},"requestId":"req_011CcHT4PAtDMwz81Qqzov4b","attributionAgent":"general-purpose","type":"assistant","uuid":"89f999cb-2eda-472e-81db-74fe424ac6f8","timestamp":"2026-06-22T01:43:20.929Z","userType":"external","entrypoint":"cli","cwd":"/opt/projects/.covalba-refonte-worktrees/nico-feature-traduction-all","sessionId":"22d3abbc-6868-484e-8bb0-ceaa184d3a29","version":"2.1.181","gitBranch":"nico/feature-traduction-all","slug":"mutable-snacking-pearl"}
{"parentUuid":"89f999cb-2eda-472e-81db-74fe424ac6f8","isSidechain":true,"promptId":"d02fd217-b221-4bdb-8c0f-dfbb32e5010f","agentId":"af4ac75ca547b5a68","type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_01DKKKKN6eR6FaauPv8yn7vd","type":"tool_result","content":"FooterEN.tsx\nNavbarEN.tsx\nStickyMobileCTAEN.tsx\nhome\nindustries\nproduct\nroof\n---PAGES---\nCommercialEN.tsx\nCovaThermEN.tsx\nHomeEN.tsx\nindustries\nroofs\nsolutions","is_error":false}]},"uuid":"354147d4-7a3d-4020-a3da-11729acaea5e","timestamp":"2026-06-22T01:43:20.994Z","toolUseResult":{"stdout":"FooterEN.tsx\nNavbarEN.tsx\nStickyMobileCTAEN.tsx\nhome\nindustries\nproduct\nroof\n---PAGES---\nCommercialEN.tsx\nCovaThermEN.tsx\nHomeEN.tsx\nindustries\nroofs\nsolutions","stderr":"","interrupted":false,"isImage":false,"noOutputExpected":false},"sourceToolAssistantUUID":"89f999cb-2eda-472e-81db-74fe424ac6f8","userType":"external","entrypoint":"cli","cwd":"/opt/projects/.covalba-refonte-worktrees/nico-feature-traduction-all","sessionId":"22d3abbc-6868-484e-8bb0-ceaa184d3a29","version":"2.1.181","gitBranch":"nico/feature-traduction-all","slug":"mutable-snacking-pearl"}
{"parentUuid":"354147d4-7a3d-4020-a3da-11729acaea5e","isSidechain":true,"agentId":"af4ac75ca547b5a68","message":{"model":"claude-opus-4-8","id":"msg_01QK52FvhZjn42XyECQ6kydr","type":"message","role":"assistant","content":[{"type":"text","text":"Good, the EN chrome components exist. Let me verify the StickyMobileCTAEN prop signature and confirm an existing EN page's usePageMeta usage pattern."}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":3093,"cache_read_input_tokens":56518,"cache_creation":{"ephemeral_5m_input_tokens":3093,"ephemeral_1h_input_tokens":0},"output_tokens":2,"service_tier":"standard","inference_geo":"not_available"},"diagnostics":null},"requestId":"req_011CcHT4nc2kJM4C2wNr7XYv","attributionAgent":"general-purpose","type":"assistant","uuid":"daa805eb-6983-489e-a657-c3582eff1a6b","timestamp":"2026-06-22T01:43:25.463Z","userType":"external","entrypoint":"cli","cwd":"/opt/projects/.covalba-refonte-worktrees/nico-feature-traduction-all","sessionId":"22d3abbc-6868-484e-8bb0-ceaa184d3a29","version":"2.1.181","gitBranch":"nico/feature-traduction-all","slug":"mutable-snacking-pearl"}
{"parentUuid":"daa805eb-6983-489e-a657-c3582eff1a6b","isSidechain":true,"agentId":"af4ac75ca547b5a68","message":{"model":"claude-opus-4-8","id":"msg_01QK52FvhZjn42XyECQ6kydr","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_017DpcPxmFuvMetekj7r7uiv","name":"Bash","input":{"command":"grep -n \"label\\|href\\|interface\\|Props\\|=>\" /opt/projects/.covalba-refonte-worktrees/nico-feature-traduction-all/src/components/en/StickyMobileCTAEN.tsx | head -20"},"caller":{"type":"direct"}}],"stop_reason":"tool_use","stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":3093,"cache_read_input_tokens":56518,"output_tokens":184,"server_tool_use":{"web_search_requests":0,"web_fetch_requests":0},"service_tier":"standard","cache_creation":{"ephemeral_1h_input_tokens":0,"ephemeral_5m_input_tokens":3093},"inference_geo":"not_available","iterations":[{"input_tokens":2,"output_tokens":184,"cache_read_input_tokens":56518,"cache_creation_input_tokens":3093,"cache_creation":{"ephemeral_5m_input_tokens":3093,"ephemeral_1h_input_tokens":0},"type":"message"}],"speed":"standard"},"diagnostics":null},"requestId":"req_011CcHT4nc2kJM4C2wNr7XYv","attributionAgent":"general-purpose","type":"assistant","uuid":"67795266-b36d-48b6-a360-e1c95fd21c28","timestamp":"2026-06-22T01:43:26.266Z","userType":"external","entrypoint":"cli","cwd":"/opt/projects/.covalba-refonte-worktrees/nico-feature-traduction-all","sessionId":"22d3abbc-6868-484e-8bb0-ceaa184d3a29","version":"2.1.181","gitBranch":"nico/feature-traduction-all","slug":"mutable-snacking-pearl"}
{"parentUuid":"67795266-b36d-48b6-a360-e1c95fd21c28","isSidechain":true,"promptId":"d02fd217-b221-4bdb-8c0f-dfbb32e5010f","agentId":"af4ac75ca547b5a68","type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_017DpcPxmFuvMetekj7r7uiv","type":"tool_result","content":"4:const StickyMobileCTAEN = () => {\n7:  useEffect(() => {\n8:    const onScroll = () => setVisible(window.scrollY > 600);\n10:    return () => window.removeEventListener('scroll', onScroll);\n18:        href=\"/en\"","is_error":false}]},"uuid":"be287d98-9a0f-40f4-9944-4af9d3b328eb","timestamp":"2026-06-22T01:43:26.341Z","toolUseResult":{"stdout":"4:const StickyMobileCTAEN = () => {\n7:  useEffect(() => {\n8:    const onScroll = () => setVisible(window.scrollY > 600);\n10:    return () => window.removeEventListener('scroll', onScroll);\n18:        href=\"/en\"","stderr":"","interrupted":false,"isImage":false,"noOutputExpected":false},"sourceToolAssistantUUID":"67795266-b36d-48b6-a360-e1c95fd21c28","userType":"external","entrypoint":"cli","cwd":"/opt/projects/.covalba-refonte-worktrees/nico-feature-traduction-all","sessionId":"22d3abbc-6868-484e-8bb0-ceaa184d3a29","version":"2.1.181","gitBranch":"nico/feature-traduction-all","slug":"mutable-snacking-pearl"}
{"parentUuid":"be287d98-9a0f-40f4-9944-4af9d3b328eb","isSidechain":true,"agentId":"af4ac75ca547b5a68","message":{"model":"claude-opus-4-8","id":"msg_01MQNhLVz4jkRVD2ufsoPJkd","type":"message","role":"assistant","content":[{"type":"text","text":"StickyMobileCTAEN takes no props. Let me check the full component to confirm."}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":280,"cache_read_input_tokens":59611,"cache_creation":{"ephemeral_5m_input_tokens":280,"ephemeral_1h_input_tokens":0},"output_tokens":1,"service_tier":"standard","inference_geo":"not_available"},"diagnostics":null},"requestId":"req_011CcHT59NhEzwAtnRepdiAW","attributionAgent":"general-purpose","type":"assistant","uuid":"32a1970c-7cd9-45c8-9b56-063d8340c93e","timestamp":"2026-06-22T01:43:28.384Z","userType":"external","entrypoint":"cli","cwd":"/opt/projects/.covalba-refonte-worktrees/nico-feature-traduction-all","sessionId":"22d3abbc-6868-484e-8bb0-ceaa184d3a29","version":"2.1.181","gitBranch":"nico/feature-traduction-all","slug":"mutable-snacking-pearl"}
{"parentUuid":"32a1970c-7cd9-45c8-9b56-063d8340c93e","isSidechain":true,"agentId":"af4ac75ca547b5a68","message":{"model":"claude-opus-4-8","id":"msg_01MQNhLVz4jkRVD2ufsoPJkd","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_01CCvfA4hP7UecJisBpdV7yi","name":"Read","input":{"file_path":"/opt/projects/.covalba-refonte-worktrees/nico-feature-traduction-all/src/components/en/StickyMobileCTAEN.tsx"},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":280,"cache_read_input_tokens":59611,"cache_creation":{"ephemeral_5m_input_tokens":280,"ephemeral_1h_input_tokens":0},"output_tokens":1,"service_tier":"standard","inference_geo":"not_available"},"diagnostics":null},"requestId":"req_011CcHT59NhEzwAtnRepdiAW","attributionAgent":"general-purpose","type":"assistant","uuid":"d67aa138-74e9-46c0-a81f-edf878b6b505","timestamp":"2026-06-22T01:43:29.129Z","userType":"external","entrypoint":"cli","cwd":"/opt/projects/.covalba-refonte-worktrees/nico-feature-traduction-all","sessionId":"22d3abbc-6868-484e-8bb0-ceaa184d3a29","version":"2.1.181","gitBranch":"nico/feature-traduction-all","slug":"mutable-snacking-pearl"}
{"parentUuid":"d67aa138-74e9-46c0-a81f-edf878b6b505","isSidechain":true,"promptId":"d02fd217-b221-4bdb-8c0f-dfbb32e5010f","agentId":"af4ac75ca547b5a68","type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_01CCvfA4hP7UecJisBpdV7yi","type":"tool_result","content":"1\timport { useState, useEffect } from 'react';\n2\timport { ArrowRight } from 'lucide-react';\n3\t\n4\tconst StickyMobileCTAEN = () => {\n5\t  const [visible, setVisible] = useState(false);\n6\t\n7\t  useEffect(() => {\n8\t    const onScroll = () => setVisible(window.scrollY > 600);\n9\t    window.addEventListener('scroll', onScroll);\n10\t    return () => window.removeEventListener('scroll', onScroll);\n11\t  }, []);\n12\t\n13\t  if (!visible) return null;\n14\t\n15\t  return (\n16\t    <div className=\"lg:hidden fixed bottom-0 left-0 right-0 z-50 p-3 bg-card/95 backdrop-blur-md border-t border-border flex items-center gap-2\">\n17\t      <a\n18\t        href=\"/en\"\n19\t        className=\"flex-1 cta-gradient text-white font-semibold py-3 rounded-full text-center text-sm flex items-center justify-center gap-2\"\n20\t      >\n21\t        Request a quote\n22\t        <ArrowRight className=\"w-4 h-4\" />\n23\t      </a>\n24\t    </div>\n25\t  );\n26\t};\n27\t\n28\texport default StickyMobileCTAEN;\n29\t"}]},"uuid":"0562008d-de2f-4864-bf75-27283c0525f0","timestamp":"2026-06-22T01:43:29.162Z","toolUseResult":{"type":"text","file":{"filePath":"/opt/projects/.covalba-refonte-worktrees/nico-feature-traduction-all/src/components/en/StickyMobileCTAEN.tsx","content":"import { useState, useEffect } from 'react';\nimport { ArrowRight } from 'lucide-react';\n\nconst StickyMobileCTAEN = () => {\n  const [visible, setVisible] = useState(false);\n\n  useEffect(() => {\n    const onScroll = () => setVisible(window.scrollY > 600);\n    window.addEventListener('scroll', onScroll);\n    return () => window.removeEventListener('scroll', onScroll);\n  }, []);\n\n  if (!visible) return null;\n\n  return (\n    <div className=\"lg:hidden fixed bottom-0 left-0 right-0 z-50 p-3 bg-card/95 backdrop-blur-md border-t border-border flex items-center gap-2\">\n      <a\n        href=\"/en\"\n        className=\"flex-1 cta-gradient text-white font-semibold py-3 rounded-full text-center text-sm flex items-center justify-center gap-2\"\n      >\n        Request a quote\n        <ArrowRight className=\"w-4 h-4\" />\n      </a>\n    </div>\n  );\n};\n\nexport default StickyMobileCTAEN;\n","numLines":29,"startLine":1,"totalLines":29}},"sourceToolAssistantUUID":"d67aa138-74e9-46c0-a81f-edf878b6b505","userType":"external","entrypoint":"cli","cwd":"/opt/projects/.covalba-refonte-worktrees/nico-feature-traduction-all","sessionId":"22d3abbc-6868-484e-8bb0-ceaa184d3a29","version":"2.1.181","gitBranch":"nico/feature-traduction-all","slug":"mutable-snacking-pearl"}
{"parentUuid":"0562008d-de2f-4864-bf75-27283c0525f0","isSidechain":true,"agentId":"af4ac75ca547b5a68","message":{"model":"claude-opus-4-8","id":"msg_01Ggd336cb96D3KJ8wRrT4ho","type":"message","role":"assistant","content":[{"type":"text","text":"StickyMobileCTAEN is self-contained (no props). Now I have everything. Let me create the EN page.\n\nLink mapping notes:\n- `/diagnostic` → `/en/diagnostic`\n- `/solutions/covatherm` → `/en/solutions/covatherm`\n- `/devenir-applicateur` (applicator recruitment) → product pivot: copy says \"Discover our solutions\" and \"Talk to an expert\", so I'll point those to `/en/solutions/covatherm` and `/en/contact` respectively. \"Contact us\" → `/en/contact`."}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":559,"cache_read_input_tokens":59891,"cache_creation":{"ephemeral_5m_input_tokens":559,"ephemeral_1h_input_tokens":0},"output_tokens":1,"service_tier":"standard","inference_geo":"not_available"},"diagnostics":null},"requestId":"req_011CcHT5N9tQyLh4tbC3ixUZ","attributionAgent":"general-purpose","type":"assistant","uuid":"1a5f88c4-696d-44f8-b66b-bbfc0b202c6e","timestamp":"2026-06-22T01:43:33.357Z","userType":"external","entrypoint":"cli","cwd":"/opt/projects/.covalba-refonte-worktrees/nico-feature-traduction-all","sessionId":"22d3abbc-6868-484e-8bb0-ceaa184d3a29","version":"2.1.181","gitBranch":"nico/feature-traduction-all","slug":"mutable-snacking-pearl"}
{"parentUuid":"1a5f88c4-696d-44f8-b66b-bbfc0b202c6e","isSidechain":true,"agentId":"af4ac75ca547b5a68","message":{"model":"claude-opus-4-8","id":"msg_01Ggd336cb96D3KJ8wRrT4ho","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_01Vy7A9so8ryNuGDr4wNUmtB","name":"Write","input":{"file_path":"/opt/projects/.covalba-refonte-worktrees/nico-feature-traduction-all/src/pages/en/AboutUsEN.tsx","content":"import {\n  ArrowRight,\n  BadgeCheck,\n  Building2,\n  Factory,\n  HeartHandshake,\n  Lightbulb,\n  Medal,\n  ShieldCheck,\n  Sparkles,\n  type LucideIcon,\n} from 'lucide-react';\nimport NavbarEN from '@/components/en/NavbarEN';\nimport FooterEN from '@/components/en/FooterEN';\nimport ScrollReveal from '@/components/ScrollReveal';\nimport StickyMobileCTAEN from '@/components/en/StickyMobileCTAEN';\nimport {\n  Carousel,\n  CarouselContent,\n  CarouselItem,\n  CarouselNext,\n  CarouselPrevious,\n} from '@/components/ui/carousel';\nimport { useJsonLd, usePageMeta } from '@/hooks/usePageMeta';\n\nconst PAGE_URL = 'https://www.covalba.fr/en/about-us';\n\ntype Stat = {\n  value: string;\n  label: string;\n};\n\ntype Difference = {\n  icon: LucideIcon;\n  title: string;\n  text: string;\n};\n\ntype ValueCard = {\n  icon: LucideIcon;\n  title: string;\n  text: string;\n};\n\ntype BehindScene = {\n  eyebrow: string;\n  title: string;\n  text: string;\n  image: string;\n  imageAlt: string;\n};\n\ntype CompanyGalleryItem = {\n  title: string;\n  image: string;\n  imageAlt: string;\n};\n\nconst stats: Stat[] = [\n  { value: '14', label: 'years of expertise' },\n  { value: '10', label: 'dedicated team members' },\n  { value: '90', label: 'major-account clients' },\n];\n\nconst pressLogos = [\n  { name: 'Capital', src: '/logos-press/qui-sommes-nous/capital.svg' },\n  { name: 'Le Figaro Immobilier', src: '/logos-press/qui-sommes-nous/figaro-immobilier.svg' },\n  { name: 'Le Parisien', src: '/logos-press/qui-sommes-nous/le-parisien.svg' },\n  { name: 'Zepros', src: '/logos-press/qui-sommes-nous/zepros.svg' },\n  { name: 'France Bleu', src: '/logos-press/qui-sommes-nous/france-bleu.svg' },\n];\n\nconst timeline = [\n  {\n    year: '2011',\n    title: 'Founding of the company',\n    text: 'From the very beginning, the business has been about protecting buildings from summer heat.',\n    image: '/images/qui-sommes-nous/timeline-equipe.png',\n    imageAlt: 'First Covalba team',\n  },\n  {\n    year: '2018',\n    title: 'Launch of the Covalba brand',\n    text: 'We bring our reflective roof coating to market.',\n    image: '/images/qui-sommes-nous/timeline-peinture-reflective.png',\n    imageAlt: 'Bucket of Covalba reflective roof coating',\n  },\n  {\n    year: '2019-2021',\n    title: 'From pilot projects to large surfaces',\n    text: 'We carry out large-scale projects and gather concrete data on the benefits of the solution.',\n    image: '/images/qui-sommes-nous/timeline-peinture-toiture.png',\n    imageAlt: 'Cool roof coating applied to a roof',\n  },\n  {\n    year: '2022',\n    title: 'Large-scale deployment',\n    text: 'In response to growing success and adoption by major economic players, we scale up production and roll out our coating across large building portfolios.',\n    image: '/images/qui-sommes-nous/timeline-applicateur.png',\n    imageAlt: 'Cool roof applicator',\n  },\n];\n\nconst differences: Difference[] = [\n  {\n    icon: Factory,\n    title: 'Manufacturer',\n    text: 'We design and manufacture our own coatings. This control, from formulation to job site, guarantees the quality and consistency of our products.',\n  },\n  {\n    icon: Medal,\n    title: 'The most durable product',\n    text: 'Our polyurethane systems with a finishing topcoat are designed to last 8 to 10 years, where common acrylic resins lose their performance within 2 to 5 years. Our priority is real service life, not the price per liter.',\n  },\n  {\n    icon: Building2,\n    title: 'Genuine roofing expertise',\n    text: 'We approach every product as roofing technicians, not painters. Substrate assessment, preparation, detail points: performance depends as much on the method as on the product, and we guide your contractor through it.',\n  },\n  {\n    icon: ShieldCheck,\n    title: 'Safe application',\n    text: 'We recommend that your contractor work from the ground: the machines stay at the foot of the building, and only the hoses go up onto the roof. Zero load on the waterproofing, zero risk to the structure.',\n  },\n];\n\nconst values: ValueCard[] = [\n  {\n    icon: BadgeCheck,\n    title: 'Do it right or not at all.',\n    text: 'Reliable, durable expertise that stays a step ahead.',\n  },\n  {\n    icon: Lightbulb,\n    title: 'Innovate to protect buildings and people.',\n    text: 'Continuous innovation that opens up new possibilities.',\n  },\n  {\n    icon: Sparkles,\n    title: 'Act responsibly.',\n    text: 'Toward our clients and in light of the challenges of the energy transition.',\n  },\n  {\n    icon: HeartHandshake,\n    title: 'Put people at the center.',\n    text: 'A sharing of knowledge and skills, to succeed together.',\n  },\n];\n\nconst behindScenes: BehindScene[] = [\n  {\n    eyebrow: 'The founders',\n    title: 'Maxime and Bertrand, always in the field',\n    text: \"Our founders still spend time on real roofs. That hands-on contact with the substrate is where the coating's real technical refinements take shape.\",\n    image: '/images/qui-sommes-nous/fondateurs-terrain.webp',\n    imageAlt: 'Maxime and Bertrand, founders of Covalba, working on a roof',\n  },\n  {\n    eyebrow: 'The assessment',\n    title: 'Read the roof before you coat',\n    text: \"Substrate, adhesion, detail points, damp areas: every project should start with a fine-grained technical assessment, not with a bucket of coating. It's the methodology we share so your contractor gets it right.\",\n    image: '/images/qui-sommes-nous/equipe-terrain-conseil.webp',\n    imageAlt: 'Covalba team assessing a roof while advising on a project',\n  },\n  {\n    eyebrow: 'Safe application',\n    title: 'The machines stay on the ground',\n    text: \"Only the hoses go up. No load on the waterproofing, no risk to the structure: that's the safe-application method we recommend for every project.\",\n    image: '/images/qui-sommes-nous/coulisses-intervention.webp',\n    imageAlt: 'Behind the scenes of a Covalba project, application machines kept on the ground',\n  },\n];\n\nconst companyGallery: CompanyGalleryItem[] = [\n  {\n    title: 'On-site advice',\n    image: '/images/qui-sommes-nous/equipe-terrain-conseil.webp',\n    imageAlt: 'Covalba team advising on a project',\n  },\n  {\n    title: 'Behind the scenes of a project',\n    image: '/images/qui-sommes-nous/coulisses-intervention.webp',\n    imageAlt: 'Behind the scenes of a Covalba project',\n  },\n  {\n    title: 'Team in action',\n    image: '/images/qui-sommes-nous/equipe-situation-chantier.webp',\n    imageAlt: 'Covalba team in action on a project',\n  },\n  {\n    title: 'Team on a roof',\n    image: '/images/qui-sommes-nous/equipe-toiture-covalba.webp',\n    imageAlt: 'Covalba team on a white roof after application',\n  },\n  {\n    title: 'Cool roof spraying',\n    image: '/images/qui-sommes-nous/hero-pulverisation.jpg',\n    imageAlt: 'Spray application of a Covalba cool roof coating',\n  },\n  {\n    title: 'Roof assessment',\n    image: '/images/qui-sommes-nous/brief-technique-toiture.webp',\n    imageAlt: 'Covalba technical assessment on a roof',\n  },\n  {\n    title: 'Products and equipment',\n    image: '/images/qui-sommes-nous/stock-produits-airless.webp',\n    imageAlt: 'Covalba products and airless machine prepared for a project',\n  },\n  {\n    title: 'The founders in the field',\n    image: '/images/qui-sommes-nous/equipe-duo-terrain.webp',\n    imageAlt: 'Maxime and Bertrand, founders of Covalba, on a roof',\n  },\n];\n\nconst VideoEmbed = ({ title, src }: { title: string; src: string }) => (\n  <div className=\"overflow-hidden rounded-lg border border-border bg-navy shadow-[0_18px_70px_rgba(25,42,58,0.14)]\">\n    <div className=\"aspect-video\">\n      <iframe\n        title={title}\n        src={src}\n        className=\"h-full w-full\"\n        loading=\"lazy\"\n        allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\"\n        referrerPolicy=\"strict-origin-when-cross-origin\"\n        allowFullScreen\n      />\n    </div>\n  </div>\n);\n\nconst PrimaryCTA = ({ href, children }: { href: string; children: string }) => (\n  <a\n    href={href}\n    className=\"group inline-flex items-center justify-center gap-2 rounded-full cta-gradient py-2.5 pl-6 pr-2 font-semibold text-white\"\n  >\n    <span className=\"text-sm\">{children}</span>\n    <span className=\"flex h-8 w-8 items-center justify-center rounded-full bg-white/20 transition-transform duration-500 group-hover:translate-x-0.5\">\n      <ArrowRight className=\"h-3.5 w-3.5\" />\n    </span>\n  </a>\n);\n\nconst SecondaryCTA = ({ href, children, light = false }: { href: string; children: string; light?: boolean }) => (\n  <a\n    href={href}\n    className={`group inline-flex items-center justify-center gap-2 rounded-full border py-2.5 pl-6 pr-2 font-semibold transition-colors ${\n      light\n        ? 'border-white/25 bg-white/5 text-white hover:bg-white/10'\n        : 'border-primary/25 bg-white text-primary hover:bg-primary/5'\n    }`}\n  >\n    <span className=\"text-sm\">{children}</span>\n    <span\n      className={`flex h-8 w-8 items-center justify-center rounded-full transition-transform duration-500 group-hover:translate-x-0.5 ${\n        light ? 'bg-white/12' : 'bg-primary/10'\n      }`}\n    >\n      <ArrowRight className=\"h-3.5 w-3.5\" />\n    </span>\n  </a>\n);\n\nconst AboutUsEN = () => {\n  usePageMeta({\n    title: 'Covalba, cool roof coating manufacturer since 2011',\n    description:\n      'Covalba, manufacturer of cool roof coatings since 2011. A premium, durable reflective roof coating designed to protect buildings from heat.',\n    canonical: PAGE_URL,\n  });\n\n  useJsonLd('about-us-jsonld', {\n    '@context': 'https://schema.org',\n    '@type': 'AboutPage',\n    name: 'About Covalba',\n    url: PAGE_URL,\n    description:\n      'Covalba designs and manufactures durable cool roof coatings to protect commercial buildings from heat.',\n    mainEntity: {\n      '@type': 'Organization',\n      name: 'Covalba',\n      foundingDate: '2011',\n      url: 'https://www.covalba.fr',\n    },\n  });\n\n  return (\n    <>\n      <NavbarEN />\n      <main>\n        <section className=\"relative isolate overflow-hidden bg-navy pt-28 text-white lg:pt-36\">\n          <picture className=\"absolute inset-0 -z-10\">\n            <img\n              src=\"/images/qui-sommes-nous/hero-pulverisation.jpg\"\n              alt=\"Application of a Covalba cool roof coating on a commercial roof\"\n              className=\"h-full w-full object-cover opacity-42\"\n              loading=\"eager\"\n              decoding=\"async\"\n            />\n          </picture>\n          <div className=\"absolute inset-0 -z-10 bg-gradient-to-r from-navy via-navy/84 to-navy/35\" aria-hidden=\"true\" />\n          <div className=\"absolute inset-x-0 bottom-0 -z-10 h-28 bg-gradient-to-t from-navy to-transparent\" aria-hidden=\"true\" />\n\n          <div className=\"container mx-auto px-4 pb-16 lg:px-8 lg:pb-24\">\n            <div className=\"max-w-3xl\">\n              <div className=\"mb-6 flex items-center gap-3\">\n                <span className=\"h-px w-9 bg-teal-vivid\" aria-hidden=\"true\" />\n                <span className=\"font-body text-[11px] font-semibold uppercase tracking-[0.22em] text-teal-vivid\">\n                  Who we are\n                </span>\n              </div>\n              <h1 className=\"max-w-3xl font-satoshi text-4xl font-black leading-[1.04] text-white sm:text-5xl lg:text-6xl\">\n                Cool roof coating manufacturer, from day one\n              </h1>\n              <p className=\"mt-6 max-w-2xl font-body text-base leading-relaxed text-white/70 lg:text-xl\">\n                We design and manufacture the most durable reflective roof coatings on the market, to protect\n                buildings from heat.\n              </p>\n              <div className=\"mt-9 flex flex-col gap-3 sm:flex-row\">\n                <PrimaryCTA href=\"/en/diagnostic\">Request a quote</PrimaryCTA>\n                <SecondaryCTA href=\"/en/solutions/covatherm\" light>\n                  Discover CovaTherm\n                </SecondaryCTA>\n              </div>\n            </div>\n          </div>\n        </section>\n\n        <section className=\"relative overflow-hidden bg-white py-16 lg:py-28\">\n          <div className=\"container mx-auto px-4 lg:px-8\">\n            <div className=\"grid gap-10 lg:grid-cols-[0.95fr_1.05fr] lg:gap-16 lg:items-center\">\n              <ScrollReveal>\n                <div>\n                  <div className=\"mb-5 flex items-center gap-3\">\n                    <span className=\"h-px w-9 bg-primary/55\" aria-hidden=\"true\" />\n                    <span className=\"font-body text-[10px] font-semibold uppercase tracking-[0.25em] text-primary/60\">\n                      A partner for businesses and public organizations\n                    </span>\n                  </div>\n                  <h2 className=\"font-satoshi text-3xl font-black leading-tight text-foreground sm:text-4xl lg:text-5xl\">\n                    Making buildings resilient against heat.\n                  </h2>\n                  <p className=\"mt-6 max-w-xl font-body text-lg leading-relaxed text-foreground/66\">\n                    As cool roof pioneers, we have manufactured field-proven reflective roof coatings since 2018,\n                    building on heat-protection work that began in 2011, and we bring the rigor of building\n                    technicians, not painters, to every product we make. From the lab to the job site, we control the\n                    entire chain: resin formulation, coating performance, and clear guidance for safe, ground-based\n                    application by your contractor. This is what lets us guarantee performance that lasts 8 to 10 years,\n                    where most coatings on the market start to fail within 2 to 5 years.\n                  </p>\n                  <div className=\"mt-8 grid gap-3 sm:grid-cols-3\">\n                    {stats.map((stat) => (\n                      <div key={stat.label} className=\"rounded-lg border border-border bg-[#F6FAFB] p-5\">\n                        <p className=\"font-satoshi text-4xl font-black leading-none text-primary lg:text-5xl\">\n                          {stat.value}\n                        </p>\n                        <p className=\"mt-3 font-body text-sm font-semibold leading-snug text-foreground/66\">\n                          {stat.label}\n                        </p>\n                      </div>\n                    ))}\n                  </div>\n                </div>\n              </ScrollReveal>\n\n              <ScrollReveal>\n                <div className=\"grid gap-3 sm:grid-cols-[1.2fr_0.8fr]\">\n                  <figure className=\"overflow-hidden rounded-lg border border-border bg-cream shadow-[0_18px_70px_rgba(25,42,58,0.12)]\">\n                    <img\n                      src=\"/images/qui-sommes-nous/equipe-toiture-covalba.webp\"\n                      alt=\"Covalba team on a white roof after application\"\n                      className=\"aspect-[4/5] h-full w-full object-cover\"\n                      loading=\"lazy\"\n                      decoding=\"async\"\n                    />\n                  </figure>\n                  <div className=\"grid gap-3 sm:grid-rows-2\">\n                    <figure className=\"overflow-hidden rounded-lg border border-border bg-cream sm:min-h-0\">\n                      <img\n                        src=\"/images/qui-sommes-nous/brief-technique-toiture.webp\"\n                        alt=\"Covalba technical assessment on a roof\"\n                        className=\"aspect-[4/3] h-full w-full object-cover sm:aspect-auto\"\n                        loading=\"lazy\"\n                        decoding=\"async\"\n                      />\n                    </figure>\n                    <figure className=\"overflow-hidden rounded-lg border border-border bg-cream sm:min-h-0\">\n                      <img\n                        src=\"/images/qui-sommes-nous/stock-produits-airless.webp\"\n                        alt=\"Covalba products and airless machine prepared for a project\"\n                        className=\"aspect-[4/3] h-full w-full object-cover sm:aspect-auto\"\n                        loading=\"lazy\"\n                        decoding=\"async\"\n                      />\n                    </figure>\n                  </div>\n                </div>\n              </ScrollReveal>\n            </div>\n          </div>\n        </section>\n\n        <section className=\"border-y border-border bg-[#F6FAFB] py-10\">\n          <div className=\"container mx-auto px-4 lg:px-8\">\n            <ScrollReveal>\n              <div className=\"flex flex-col gap-8 lg:flex-row lg:items-center lg:justify-between\">\n                <div className=\"shrink-0\">\n                  <p className=\"font-body text-[10px] font-semibold uppercase tracking-[0.24em] text-primary/60\">\n                    As featured in\n                  </p>\n                </div>\n                <div className=\"grid flex-1 grid-cols-2 items-center gap-3 sm:grid-cols-3 lg:grid-cols-5\">\n                  {pressLogos.map((logo) => (\n                    <div\n                      key={logo.name}\n                      className=\"flex h-18 min-h-16 items-center justify-center rounded-lg border border-border bg-white px-5 shadow-sm transition-transform duration-300 hover:-translate-y-0.5\"\n                    >\n                      <img src={logo.src} alt={logo.name} className=\"max-h-10 max-w-full opacity-75\" loading=\"lazy\" />\n                    </div>\n                  ))}\n                </div>\n              </div>\n            </ScrollReveal>\n          </div>\n        </section>\n\n        <section className=\"bg-white py-16 lg:py-28\">\n          <div className=\"container mx-auto px-4 lg:px-8\">\n            <div className=\"grid items-start gap-10 lg:grid-cols-[48fr_52fr] lg:gap-16\">\n              <ScrollReveal>\n                <div className=\"rounded-lg border border-border bg-cream/70 p-6 lg:p-8\">\n                  <p className=\"mb-5 font-body text-[10px] font-semibold uppercase tracking-[0.25em] text-primary/60\">\n                    The Covalba story\n                  </p>\n                  <h2 className=\"font-satoshi text-3xl font-black leading-tight text-foreground sm:text-4xl lg:text-5xl\">\n                    It all started with two partners and one conviction.\n                  </h2>\n                  <div className=\"mt-6 space-y-5 font-body text-base leading-relaxed text-foreground/66\">\n                    <p>\n                      Covalba began with two partners determined to put their skills to work for a positive change in\n                      society. That conviction took shape through the development of a premium reflective roof coating,\n                      the result of many years of research and development.\n                    </p>\n                    <p>\n                      Our ambition is bold: to help buildings meet today's challenges as well as tomorrow's. Resilience\n                      against heatwaves and lower energy bills are the two guiding stars driving the progress of Covalba\n                      technology.\n                    </p>\n                    <p>\n                      Our approach evolves continuously, and our products adapt to the real-world challenges of building\n                      managers. We guide your contractor so they can recommend and implement the optimal solution,\n                      safely.\n                    </p>\n                  </div>\n                  <div className=\"mt-8\">\n                    <SecondaryCTA href=\"/en/solutions/covatherm\">Discover our solutions</SecondaryCTA>\n                  </div>\n                </div>\n              </ScrollReveal>\n\n              <ScrollReveal className=\"flex h-full items-center\">\n                <div className=\"relative w-full\">\n                  <div className=\"absolute -right-4 -top-4 h-28 w-28 rounded-full bg-teal-vivid/12 blur-2xl\" aria-hidden=\"true\" />\n                  <figure className=\"relative overflow-hidden rounded-lg border border-border bg-cream shadow-[0_18px_70px_rgba(25,42,58,0.12)]\">\n                    <img\n                      src=\"/images/qui-sommes-nous/portrait-maxime-bertrand.jpg\"\n                      alt=\"Portrait of Maxime and Bertrand, founders of Covalba\"\n                      className=\"aspect-[11/8] w-full object-cover\"\n                      loading=\"lazy\"\n                      decoding=\"async\"\n                    />\n                    <figcaption className=\"flex items-center justify-between gap-4 px-5 py-4 font-body text-sm text-foreground/58\">\n                      <span>Maxime and Bertrand, the founders of Covalba.</span>\n                      <span className=\"hidden rounded-full bg-primary/10 px-3 py-1 text-xs font-semibold text-primary sm:inline-flex\">\n                        Since 2011\n                      </span>\n                    </figcaption>\n                  </figure>\n                </div>\n              </ScrollReveal>\n            </div>\n\n            <ScrollReveal>\n              <div className=\"mt-14 lg:mt-20\">\n                <div className=\"mb-8 max-w-3xl\">\n                  <p className=\"mb-4 font-body text-[10px] font-semibold uppercase tracking-[0.25em] text-primary/60\">\n                    Behind the scenes\n                  </p>\n                  <h3 className=\"font-satoshi text-2xl font-black leading-tight text-foreground sm:text-3xl lg:text-4xl\">\n                    Your roofs are our workshop.\n                  </h3>\n                </div>\n                <div className=\"grid items-stretch gap-4 md:grid-cols-3\">\n                  {behindScenes.map((item) => (\n                    <article\n                      key={item.title}\n                      className=\"flex h-full flex-col overflow-hidden rounded-lg border border-border bg-white shadow-sm\"\n                    >\n                      <div className=\"aspect-[7/5] w-full overflow-hidden\">\n                        <img\n                          src={item.image}\n                          alt={item.imageAlt}\n                          className=\"h-full w-full object-cover\"\n                          loading=\"lazy\"\n                          decoding=\"async\"\n                        />\n                      </div>\n                      <div className=\"flex flex-1 flex-col p-5\">\n                        <p className=\"mb-3 font-body text-[10px] font-bold uppercase tracking-[0.22em] text-primary/58\">\n                          {item.eyebrow}\n                        </p>\n                        <h4 className=\"font-satoshi text-xl font-bold leading-tight text-foreground\">\n                          {item.title}\n                        </h4>\n                        <p className=\"mt-3 font-body text-sm leading-relaxed text-foreground/62\">\n                          {item.text}\n                        </p>\n                      </div>\n                    </article>\n                  ))}\n                </div>\n              </div>\n            </ScrollReveal>\n\n            <ScrollReveal>\n              <div className=\"mt-12 lg:mt-16\">\n                <Carousel opts={{ align: 'start', loop: true }}>\n                  <div className=\"mb-6 flex flex-col gap-4 sm:flex-row sm:items-end sm:justify-between\">\n                    <div>\n                      <p className=\"mb-3 font-body text-[10px] font-semibold uppercase tracking-[0.25em] text-primary/60\">\n                        Life at Covalba\n                      </p>\n                      <h3 className=\"font-satoshi text-2xl font-black leading-tight text-foreground sm:text-3xl\">\n                        A team that lives on the roofs.\n                      </h3>\n                    </div>\n                    <div className=\"flex shrink-0 items-center gap-2\">\n                      <CarouselPrevious className=\"static translate-y-0 border-border bg-white text-primary hover:bg-primary/5\" />\n                      <CarouselNext className=\"static translate-y-0 border-border bg-white text-primary hover:bg-primary/5\" />\n                    </div>\n                  </div>\n                  <CarouselContent className=\"-ml-3\">\n                    {companyGallery.map((item) => (\n                      <CarouselItem key={item.title} className=\"basis-1/2 pl-3 lg:basis-1/3\">\n                        <figure className=\"group relative overflow-hidden rounded-lg border border-border bg-cream\">\n                          <img\n                            src={item.image}\n                            alt={item.imageAlt}\n                            className=\"aspect-[4/3] h-full w-full object-cover transition-transform duration-700 group-hover:scale-105\"\n                            loading=\"lazy\"\n                            decoding=\"async\"\n                          />\n                          <figcaption className=\"absolute inset-x-0 bottom-0 bg-gradient-to-t from-navy via-navy/65 to-transparent p-3 pt-10 font-body text-[13px] font-bold leading-snug text-white drop-shadow-[0_1px_2px_rgba(0,0,0,0.55)]\">\n                            {item.title}\n                          </figcaption>\n                        </figure>\n                      </CarouselItem>\n                    ))}\n                  </CarouselContent>\n                </Carousel>\n              </div>\n            </ScrollReveal>\n\n            <ScrollReveal>\n              <div className=\"mt-14 rounded-lg border border-border bg-[#F6FAFB] p-5 lg:mt-20 lg:p-8\">\n                <div className=\"mb-6 flex flex-col gap-2 sm:flex-row sm:items-end sm:justify-between\">\n                  <div>\n                    <p className=\"font-body text-[10px] font-semibold uppercase tracking-[0.24em] text-primary/60\">\n                      Video portraits\n                    </p>\n                    <h3 className=\"mt-2 font-satoshi text-2xl font-black text-foreground\">\n                      Two perspectives on the Covalba story.\n                    </h3>\n                  </div>\n                </div>\n                <div className=\"grid gap-5 lg:grid-cols-2\">\n                  <VideoEmbed title=\"Covalba founder portrait\" src=\"https://www.youtube.com/embed/QIrqe-60SJg?controls=0\" />\n                  <VideoEmbed title=\"Covalba founder portrait 2\" src=\"https://www.youtube.com/embed/oW5ZFr5nYCA?controls=0\" />\n                </div>\n              </div>\n            </ScrollReveal>\n          </div>\n        </section>\n\n        <section className=\"bg-cream py-16 lg:py-28\">\n          <div className=\"container mx-auto px-4 lg:px-8\">\n            <ScrollReveal>\n              <div className=\"mx-auto mb-14 max-w-4xl text-center\">\n                <p className=\"mb-5 font-body text-[10px] font-semibold uppercase tracking-[0.25em] text-primary/60\">\n                  Timeline\n                </p>\n                <h2 className=\"font-satoshi text-3xl font-black leading-tight text-foreground sm:text-4xl lg:text-5xl\">\n                  Discover how it all began, and where we are today.\n                </h2>\n              </div>\n            </ScrollReveal>\n            <div className=\"relative mx-auto max-w-5xl\">\n              <div className=\"absolute left-8 top-8 bottom-8 w-px bg-gradient-to-b from-primary/30 via-primary/15 to-transparent lg:left-1/2 lg:-translate-x-1/2\" />\n              <div className=\"space-y-7 lg:space-y-10\">\n                {timeline.map((item, index) => (\n                  <ScrollReveal key={item.year}>\n                    <article\n                      className=\"relative grid gap-5 pl-20 lg:grid-cols-2 lg:gap-14 lg:pl-0\"\n                    >\n                      <span className=\"absolute left-3 top-8 z-10 flex h-10 w-10 items-center justify-center rounded-full border border-primary/25 bg-white shadow-sm lg:left-1/2 lg:-translate-x-1/2\">\n                        <span className=\"h-3 w-3 rounded-full bg-primary\" />\n                      </span>\n                      <div\n                        className={`group overflow-hidden rounded-lg border border-border bg-white p-2 shadow-sm transition-shadow duration-300 hover:shadow-[0_18px_60px_rgba(25,42,58,0.10)] ${\n                          index % 2 === 1 ? 'lg:col-start-2' : ''\n                        }`}\n                      >\n                        <div className=\"grid overflow-hidden rounded-md bg-cream sm:grid-cols-[148px_1fr]\">\n                          <div className=\"flex min-h-36 items-center justify-center bg-gradient-to-br from-teal-light to-white p-5\">\n                            <img\n                              src={item.image}\n                              alt={item.imageAlt}\n                              className=\"max-h-28 max-w-28 object-contain transition-transform duration-500 group-hover:scale-105\"\n                              loading=\"lazy\"\n                              decoding=\"async\"\n                            />\n                          </div>\n                          <div className=\"p-5 lg:p-6\">\n                            <div className=\"mb-3 flex items-center gap-3\">\n                              <span className=\"rounded-full bg-primary/10 px-3 py-1 font-body text-[11px] font-black text-primary\">\n                                {item.year}\n                              </span>\n                              <span className=\"font-body text-[10px] font-bold uppercase tracking-[0.18em] text-foreground/30\">\n                                Step {index + 1}\n                              </span>\n                            </div>\n                            <h3 className=\"mb-2 font-satoshi text-xl font-bold leading-tight text-foreground\">\n                              {item.title}\n                            </h3>\n                            <p className=\"font-body text-sm leading-relaxed text-foreground/64\">{item.text}</p>\n                          </div>\n                        </div>\n                      </div>\n                      <div className=\"hidden lg:block\" aria-hidden=\"true\">\n                        <div\n                          className={`flex h-full items-center ${\n                            index % 2 === 1 ? 'justify-end pr-8' : 'justify-start pl-8'\n                          }`}\n                        >\n                          <span className=\"font-satoshi text-7xl font-black leading-none text-primary/[0.07]\">\n                            {index + 1}\n                          </span>\n                        </div>\n                      </div>\n                    </article>\n                  </ScrollReveal>\n                ))}\n              </div>\n            </div>\n          </div>\n        </section>\n\n        <section className=\"relative overflow-hidden bg-[#192A3A] py-16 text-white lg:py-28\">\n          <img\n            src=\"/images/applicateur-blobs.svg\"\n            alt=\"\"\n            aria-hidden=\"true\"\n            className=\"pointer-events-none absolute -right-[18%] -top-[28%] w-[58%] select-none opacity-16\"\n          />\n          <div className=\"container relative mx-auto px-4 lg:px-8\">\n            <ScrollReveal>\n              <div className=\"mx-auto mb-12 max-w-5xl\">\n                <div className=\"mb-6 inline-flex items-center gap-3 rounded-full border border-white/10 bg-white/[0.04] px-4 py-2\">\n                  <span className=\"h-px w-7 bg-teal-vivid/80\" aria-hidden=\"true\" />\n                  <span className=\"font-body text-[11px] font-bold uppercase tracking-[0.22em] text-teal-vivid\">\n                    Why Covalba\n                  </span>\n                </div>\n                <div className=\"grid items-end gap-6 lg:grid-cols-[1.05fr_0.95fr]\">\n                  <h2 className=\"font-satoshi text-3xl font-black leading-tight text-white sm:text-4xl lg:text-5xl\">\n                    A manufacturer, not a reseller. Roofing experts, not painters.\n                  </h2>\n                  <p className=\"max-w-xl font-body text-base leading-relaxed text-white/58 lg:pb-1\">\n                    Our difference lies as much in the formulation of the product as in the application method we\n                    recommend for the roof.\n                  </p>\n                </div>\n              </div>\n            </ScrollReveal>\n            <ScrollReveal stagger>\n              <div className=\"grid gap-4 md:grid-cols-2 lg:grid-cols-4\">\n                {differences.map((item) => {\n                  const Icon = item.icon;\n                  return (\n                    <article key={item.title} className=\"rounded-lg border border-white/10 bg-white/[0.045] p-6 transition-colors hover:border-teal-vivid/35 hover:bg-white/[0.07]\">\n                      <div className=\"mb-5 flex h-11 w-11 items-center justify-center rounded-lg bg-teal-vivid/14\">\n                        <Icon className=\"h-5 w-5 text-teal-vivid\" strokeWidth={1.7} />\n                      </div>\n                      <h3 className=\"mb-3 font-satoshi text-lg font-bold leading-tight text-white\">{item.title}</h3>\n                      <p className=\"font-body text-sm leading-relaxed text-white/62\">{item.text}</p>\n                    </article>\n                  );\n                })}\n              </div>\n            </ScrollReveal>\n          </div>\n        </section>\n\n        <section className=\"bg-white py-16 lg:py-28\">\n          <div className=\"container mx-auto px-4 lg:px-8\">\n            <ScrollReveal>\n              <div className=\"mb-10 flex flex-col gap-4 lg:flex-row lg:items-end lg:justify-between\">\n                <h2 className=\"font-satoshi text-3xl font-black leading-tight text-foreground sm:text-4xl lg:text-5xl\">\n                  Our values.\n                </h2>\n                <p className=\"max-w-xl font-body text-base leading-relaxed text-foreground/60\">\n                  They guide the way we design, manufacture, and support projects in the field.\n                </p>\n              </div>\n            </ScrollReveal>\n            <ScrollReveal stagger>\n              <div className=\"grid gap-4 md:grid-cols-2 lg:grid-cols-4\">\n                {values.map((value) => {\n                  const Icon = value.icon;\n                  return (\n                    <article key={value.title} className=\"rounded-lg border border-border bg-cream p-6\">\n                      <div className=\"mb-5 flex h-11 w-11 items-center justify-center rounded-lg bg-primary/10\">\n                        <Icon className=\"h-5 w-5 text-primary\" strokeWidth={1.8} />\n                      </div>\n                      <h3 className=\"mb-3 font-satoshi text-lg font-bold leading-tight text-foreground\">{value.title}</h3>\n                      <p className=\"font-body text-sm leading-relaxed text-foreground/64\">{value.text}</p>\n                    </article>\n                  );\n                })}\n              </div>\n            </ScrollReveal>\n          </div>\n        </section>\n\n        <section className=\"relative overflow-hidden bg-teal py-16 text-white lg:py-24\">\n          <img\n            src=\"/images/applicateur-blobs.svg\"\n            alt=\"\"\n            aria-hidden=\"true\"\n            className=\"pointer-events-none absolute -right-[12%] -top-[54%] w-[54%] select-none opacity-18\"\n          />\n          <div className=\"container relative mx-auto px-4 text-center lg:px-8\">\n            <ScrollReveal>\n              <h2 className=\"mx-auto max-w-3xl font-satoshi text-3xl font-black leading-tight text-white sm:text-4xl lg:text-5xl\">\n                Together, we can change the story. Are you in?\n              </h2>\n              <p className=\"mx-auto mt-4 max-w-2xl font-body text-base text-white/72 lg:text-lg\">\n                Whether you're a building owner, a facility manager, or a roofing contractor, let's talk about your\n                project.\n              </p>\n              <div className=\"mt-8 flex flex-col items-stretch justify-center gap-3 sm:flex-row sm:items-center\">\n                <PrimaryCTA href=\"/en/diagnostic\">Request a quote</PrimaryCTA>\n                <SecondaryCTA href=\"/en/contact\" light>\n                  Talk to an expert\n                </SecondaryCTA>\n                <a\n                  href=\"/en/contact\"\n                  className=\"inline-flex items-center justify-center gap-2 rounded-full px-6 py-2.5 font-body text-sm font-semibold text-white/86 transition-colors hover:bg-white/10\"\n                >\n                  Contact us <ArrowRight className=\"h-3.5 w-3.5\" />\n                </a>\n              </div>\n            </ScrollReveal>\n          </div>\n        </section>\n      </main>\n      <FooterEN />\n      <StickyMobileCTAEN />\n    </>\n  );\n};\n\nexport default AboutUsEN;\n"},"caller":{"type":"direct"}}],"stop_reason":"tool_use","stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":559,"cache_read_input_tokens":59891,"output_tokens":13308,"server_tool_use":{"web_search_requests":0,"web_fetch_requests":0},"service_tier":"standard","cache_creation":{"ephemeral_1h_input_tokens":0,"ephemeral_5m_input_tokens":559},"inference_geo":"not_available","iterations":[{"input_tokens":2,"output_tokens":13308,"cache_read_input_tokens":59891,"cache_creation_input_tokens":559,"cache_creation":{"ephemeral_5m_input_tokens":559,"ephemeral_1h_input_tokens":0},"type":"message"}],"speed":"standard"},"diagnostics":null},"requestId":"req_011CcHT5N9tQyLh4tbC3ixUZ","attributionAgent":"general-purpose","type":"assistant","uuid":"8ac91607-cb59-490c-8748-ad6854a2edc1","timestamp":"2026-06-22T01:45:18.839Z","userType":"external","entrypoint":"cli","cwd":"/opt/projects/.covalba-refonte-worktrees/nico-feature-traduction-all","sessionId":"22d3abbc-6868-484e-8bb0-ceaa184d3a29","version":"2.1.181","gitBranch":"nico/feature-traduction-all","slug":"mutable-snacking-pearl"}
{"parentUuid":"8ac91607-cb59-490c-8748-ad6854a2edc1","isSidechain":true,"promptId":"d02fd217-b221-4bdb-8c0f-dfbb32e5010f","agentId":"af4ac75ca547b5a68","type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_01Vy7A9so8ryNuGDr4wNUmtB","type":"tool_result","content":"File created successfully at: /opt/projects/.covalba-refonte-worktrees/nico-feature-traduction-all/src/pages/en/AboutUsEN.tsx (file state is current in your context — no need to Read it back)"}]},"uuid":"b6e0fbd5-9921-4212-8a90-afdc3b9e2737","timestamp":"2026-06-22T01:45:18.888Z","toolUseResult":{"type":"create","filePath":"/opt/projects/.covalba-refonte-worktrees/nico-feature-traduction-all/src/pages/en/AboutUsEN.tsx","content":"import {\n  ArrowRight,\n  BadgeCheck,\n  Building2,\n  Factory,\n  HeartHandshake,\n  Lightbulb,\n  Medal,\n  ShieldCheck,\n  Sparkles,\n  type LucideIcon,\n} from 'lucide-react';\nimport NavbarEN from '@/components/en/NavbarEN';\nimport FooterEN from '@/components/en/FooterEN';\nimport ScrollReveal from '@/components/ScrollReveal';\nimport StickyMobileCTAEN from '@/components/en/StickyMobileCTAEN';\nimport {\n  Carousel,\n  CarouselContent,\n  CarouselItem,\n  CarouselNext,\n  CarouselPrevious,\n} from '@/components/ui/carousel';\nimport { useJsonLd, usePageMeta } from '@/hooks/usePageMeta';\n\nconst PAGE_URL = 'https://www.covalba.fr/en/about-us';\n\ntype Stat = {\n  value: string;\n  label: string;\n};\n\ntype Difference = {\n  icon: LucideIcon;\n  title: string;\n  text: string;\n};\n\ntype ValueCard = {\n  icon: LucideIcon;\n  title: string;\n  text: string;\n};\n\ntype BehindScene = {\n  eyebrow: string;\n  title: string;\n  text: string;\n  image: string;\n  imageAlt: string;\n};\n\ntype CompanyGalleryItem = {\n  title: string;\n  image: string;\n  imageAlt: string;\n};\n\nconst stats: Stat[] = [\n  { value: '14', label: 'years of expertise' },\n  { value: '10', label: 'dedicated team members' },\n  { value: '90', label: 'major-account clients' },\n];\n\nconst pressLogos = [\n  { name: 'Capital', src: '/logos-press/qui-sommes-nous/capital.svg' },\n  { name: 'Le Figaro Immobilier', src: '/logos-press/qui-sommes-nous/figaro-immobilier.svg' },\n  { name: 'Le Parisien', src: '/logos-press/qui-sommes-nous/le-parisien.svg' },\n  { name: 'Zepros', src: '/logos-press/qui-sommes-nous/zepros.svg' },\n  { name: 'France Bleu', src: '/logos-press/qui-sommes-nous/france-bleu.svg' },\n];\n\nconst timeline = [\n  {\n    year: '2011',\n    title: 'Founding of the company',\n    text: 'From the very beginning, the business has been about protecting buildings from summer heat.',\n    image: '/images/qui-sommes-nous/timeline-equipe.png',\n    imageAlt: 'First Covalba team',\n  },\n  {\n    year: '2018',\n    title: 'Launch of the Covalba brand',\n    text: 'We bring our reflective roof coating to market.',\n    image: '/images/qui-sommes-nous/timeline-peinture-reflective.png',\n    imageAlt: 'Bucket of Covalba reflective roof coating',\n  },\n  {\n    year: '2019-2021',\n    title: 'From pilot projects to large surfaces',\n    text: 'We carry out large-scale projects and gather concrete data on the benefits of the solution.',\n    image: '/images/qui-sommes-nous/timeline-peinture-toiture.png',\n    imageAlt: 'Cool roof coating applied to a roof',\n  },\n  {\n    year: '2022',\n    title: 'Large-scale deployment',\n    text: 'In response to growing success and adoption by major economic players, we scale up production and roll out our coating across large building portfolios.',\n    image: '/images/qui-sommes-nous/timeline-applicateur.png',\n    imageAlt: 'Cool roof applicator',\n  },\n];\n\nconst differences: Difference[] = [\n  {\n    icon: Factory,\n    title: 'Manufacturer',\n    text: 'We design and manufacture our own coatings. This control, from formulation to job site, guarantees the quality and consistency of our products.',\n  },\n  {\n    icon: Medal,\n    title: 'The most durable product',\n    text: 'Our polyurethane systems with a finishing topcoat are designed to last 8 to 10 years, where common acrylic resins lose their performance within 2 to 5 years. Our priority is real service life, not the price per liter.',\n  },\n  {\n    icon: Building2,\n    title: 'Genuine roofing expertise',\n    text: 'We approach every product as roofing technicians, not painters. Substrate assessment, preparation, detail points: performance depends as much on the method as on the product, and we guide your contractor through it.',\n  },\n  {\n    icon: ShieldCheck,\n    title: 'Safe application',\n    text: 'We recommend that your contractor work from the ground: the machines stay at the foot of the building, and only the hoses go up onto the roof. Zero load on the waterproofing, zero risk to the structure.',\n  },\n];\n\nconst values: ValueCard[] = [\n  {\n    icon: BadgeCheck,\n    title: 'Do it right or not at all.',\n    text: 'Reliable, durable expertise that stays a step ahead.',\n  },\n  {\n    icon: Lightbulb,\n    title: 'Innovate to protect buildings and people.',\n    text: 'Continuous innovation that opens up new possibilities.',\n  },\n  {\n    icon: Sparkles,\n    title: 'Act responsibly.',\n    text: 'Toward our clients and in light of the challenges of the energy transition.',\n  },\n  {\n    icon: HeartHandshake,\n    title: 'Put people at the center.',\n    text: 'A sharing of knowledge and skills, to succeed together.',\n  },\n];\n\nconst behindScenes: BehindScene[] = [\n  {\n    eyebrow: 'The founders',\n    title: 'Maxime and Bertrand, always in the field',\n    text: \"Our founders still spend time on real roofs. That hands-on contact with the substrate is where the coating's real technical refinements take shape.\",\n    image: '/images/qui-sommes-nous/fondateurs-terrain.webp',\n    imageAlt: 'Maxime and Bertrand, founders of Covalba, working on a roof',\n  },\n  {\n    eyebrow: 'The assessment',\n    title: 'Read the roof before you coat',\n    text: \"Substrate, adhesion, detail points, damp areas: every project should start with a fine-grained technical assessment, not with a bucket of coating. It's the methodology we share so your contractor gets it right.\",\n    image: '/images/qui-sommes-nous/equipe-terrain-conseil.webp',\n    imageAlt: 'Covalba team assessing a roof while advising on a project',\n  },\n  {\n    eyebrow: 'Safe application',\n    title: 'The machines stay on the ground',\n    text: \"Only the hoses go up. No load on the waterproofing, no risk to the structure: that's the safe-application method we recommend for every project.\",\n    image: '/images/qui-sommes-nous/coulisses-intervention.webp',\n    imageAlt: 'Behind the scenes of a Covalba project, application machines kept on the ground',\n  },\n];\n\nconst companyGallery: CompanyGalleryItem[] = [\n  {\n    title: 'On-site advice',\n    image: '/images/qui-sommes-nous/equipe-terrain-conseil.webp',\n    imageAlt: 'Covalba team advising on a project',\n  },\n  {\n    title: 'Behind the scenes of a project',\n    image: '/images/qui-sommes-nous/coulisses-intervention.webp',\n    imageAlt: 'Behind the scenes of a Covalba project',\n  },\n  {\n    title: 'Team in action',\n    image: '/images/qui-sommes-nous/equipe-situation-chantier.webp',\n    imageAlt: 'Covalba team in action on a project',\n  },\n  {\n    title: 'Team on a roof',\n    image: '/images/qui-sommes-nous/equipe-toiture-covalba.webp',\n    imageAlt: 'Covalba team on a white roof after application',\n  },\n  {\n    title: 'Cool roof spraying',\n    image: '/images/qui-sommes-nous/hero-pulverisation.jpg',\n    imageAlt: 'Spray application of a Covalba cool roof coating',\n  },\n  {\n    title: 'Roof assessment',\n    image: '/images/qui-sommes-nous/brief-technique-toiture.webp',\n    imageAlt: 'Covalba technical assessment on a roof',\n  },\n  {\n    title: 'Products and equipment',\n    image: '/images/qui-sommes-nous/stock-produits-airless.webp',\n    imageAlt: 'Covalba products and airless machine prepared for a project',\n  },\n  {\n    title: 'The founders in the field',\n    image: '/images/qui-sommes-nous/equipe-duo-terrain.webp',\n    imageAlt: 'Maxime and Bertrand, founders of Covalba, on a roof',\n  },\n];\n\nconst VideoEmbed = ({ title, src }: { title: string; src: string }) => (\n  <div className=\"overflow-hidden rounded-lg border border-border bg-navy shadow-[0_18px_70px_rgba(25,42,58,0.14)]\">\n    <div className=\"aspect-video\">\n      <iframe\n        title={title}\n        src={src}\n        className=\"h-full w-full\"\n        loading=\"lazy\"\n        allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\"\n        referrerPolicy=\"strict-origin-when-cross-origin\"\n        allowFullScreen\n      />\n    </div>\n  </div>\n);\n\nconst PrimaryCTA = ({ href, children }: { href: string; children: string }) => (\n  <a\n    href={href}\n    className=\"group inline-flex items-center justify-center gap-2 rounded-full cta-gradient py-2.5 pl-6 pr-2 font-semibold text-white\"\n  >\n    <span className=\"text-sm\">{children}</span>\n    <span className=\"flex h-8 w-8 items-center justify-center rounded-full bg-white/20 transition-transform duration-500 group-hover:translate-x-0.5\">\n      <ArrowRight className=\"h-3.5 w-3.5\" />\n    </span>\n  </a>\n);\n\nconst SecondaryCTA = ({ href, children, light = false }: { href: string; children: string; light?: boolean }) => (\n  <a\n    href={href}\n    className={`group inline-flex items-center justify-center gap-2 rounded-full border py-2.5 pl-6 pr-2 font-semibold transition-colors ${\n      light\n        ? 'border-white/25 bg-white/5 text-white hover:bg-white/10'\n        : 'border-primary/25 bg-white text-primary hover:bg-primary/5'\n    }`}\n  >\n    <span className=\"text-sm\">{children}</span>\n    <span\n      className={`flex h-8 w-8 items-center justify-center rounded-full transition-transform duration-500 group-hover:translate-x-0.5 ${\n        light ? 'bg-white/12' : 'bg-primary/10'\n      }`}\n    >\n      <ArrowRight className=\"h-3.5 w-3.5\" />\n    </span>\n  </a>\n);\n\nconst AboutUsEN = () => {\n  usePageMeta({\n    title: 'Covalba, cool roof coating manufacturer since 2011',\n    description:\n      'Covalba, manufacturer of cool roof coatings since 2011. A premium, durable reflective roof coating designed to protect buildings from heat.',\n    canonical: PAGE_URL,\n  });\n\n  useJsonLd('about-us-jsonld', {\n    '@context': 'https://schema.org',\n    '@type': 'AboutPage',\n    name: 'About Covalba',\n    url: PAGE_URL,\n    description:\n      'Covalba designs and manufactures durable cool roof coatings to protect commercial buildings from heat.',\n    mainEntity: {\n      '@type': 'Organization',\n      name: 'Covalba',\n      foundingDate: '2011',\n      url: 'https://www.covalba.fr',\n    },\n  });\n\n  return (\n    <>\n      <NavbarEN />\n      <main>\n        <section className=\"relative isolate overflow-hidden bg-navy pt-28 text-white lg:pt-36\">\n          <picture className=\"absolute inset-0 -z-10\">\n            <img\n              src=\"/images/qui-sommes-nous/hero-pulverisation.jpg\"\n              alt=\"Application of a Covalba cool roof coating on a commercial roof\"\n              className=\"h-full w-full object-cover opacity-42\"\n              loading=\"eager\"\n              decoding=\"async\"\n            />\n          </picture>\n          <div className=\"absolute inset-0 -z-10 bg-gradient-to-r from-navy via-navy/84 to-navy/35\" aria-hidden=\"true\" />\n          <div className=\"absolute inset-x-0 bottom-0 -z-10 h-28 bg-gradient-to-t from-navy to-transparent\" aria-hidden=\"true\" />\n\n          <div className=\"container mx-auto px-4 pb-16 lg:px-8 lg:pb-24\">\n            <div className=\"max-w-3xl\">\n              <div className=\"mb-6 flex items-center gap-3\">\n                <span className=\"h-px w-9 bg-teal-vivid\" aria-hidden=\"true\" />\n                <span className=\"font-body text-[11px] font-semibold uppercase tracking-[0.22em] text-teal-vivid\">\n                  Who we are\n                </span>\n              </div>\n              <h1 className=\"max-w-3xl font-satoshi text-4xl font-black leading-[1.04] text-white sm:text-5xl lg:text-6xl\">\n                Cool roof coating manufacturer, from day one\n              </h1>\n              <p className=\"mt-6 max-w-2xl font-body text-base leading-relaxed text-white/70 lg:text-xl\">\n                We design and manufacture the most durable reflective roof coatings on the market, to protect\n                buildings from heat.\n              </p>\n              <div className=\"mt-9 flex flex-col gap-3 sm:flex-row\">\n                <PrimaryCTA href=\"/en/diagnostic\">Request a quote</PrimaryCTA>\n                <SecondaryCTA href=\"/en/solutions/covatherm\" light>\n                  Discover CovaTherm\n                </SecondaryCTA>\n              </div>\n            </div>\n          </div>\n        </section>\n\n        <section className=\"relative overflow-hidden bg-white py-16 lg:py-28\">\n          <div className=\"container mx-auto px-4 lg:px-8\">\n            <div className=\"grid gap-10 lg:grid-cols-[0.95fr_1.05fr] lg:gap-16 lg:items-center\">\n              <ScrollReveal>\n                <div>\n                  <div className=\"mb-5 flex items-center gap-3\">\n                    <span className=\"h-px w-9 bg-primary/55\" aria-hidden=\"true\" />\n                    <span className=\"font-body text-[10px] font-semibold uppercase tracking-[0.25em] text-primary/60\">\n                      A partner for businesses and public organizations\n                    </span>\n                  </div>\n                  <h2 className=\"font-satoshi text-3xl font-black leading-tight text-foreground sm:text-4xl lg:text-5xl\">\n                    Making buildings resilient against heat.\n                  </h2>\n                  <p className=\"mt-6 max-w-xl font-body text-lg leading-relaxed text-foreground/66\">\n                    As cool roof pioneers, we have manufactured field-proven reflective roof coatings since 2018,\n                    building on heat-protection work that began in 2011, and we bring the rigor of building\n                    technicians, not painters, to every product we make. From the lab to the job site, we control the\n                    entire chain: resin formulation, coating performance, and clear guidance for safe, ground-based\n                    application by your contractor. This is what lets us guarantee performance that lasts 8 to 10 years,\n                    where most coatings on the market start to fail within 2 to 5 years.\n                  </p>\n                  <div className=\"mt-8 grid gap-3 sm:grid-cols-3\">\n                    {stats.map((stat) => (\n                      <div key={stat.label} className=\"rounded-lg border border-border bg-[#F6FAFB] p-5\">\n                        <p className=\"font-satoshi text-4xl font-black leading-none text-primary lg:text-5xl\">\n                          {stat.value}\n                        </p>\n                        <p className=\"mt-3 font-body text-sm font-semibold leading-snug text-foreground/66\">\n                          {stat.label}\n                        </p>\n                      </div>\n                    ))}\n                  </div>\n                </div>\n              </ScrollReveal>\n\n              <ScrollReveal>\n                <div className=\"grid gap-3 sm:grid-cols-[1.2fr_0.8fr]\">\n                  <figure className=\"overflow-hidden rounded-lg border border-border bg-cream shadow-[0_18px_70px_rgba(25,42,58,0.12)]\">\n                    <img\n                      src=\"/images/qui-sommes-nous/equipe-toiture-covalba.webp\"\n                      alt=\"Covalba team on a white roof after application\"\n                      className=\"aspect-[4/5] h-full w-full object-cover\"\n                      loading=\"lazy\"\n                      decoding=\"async\"\n                    />\n                  </figure>\n                  <div className=\"grid gap-3 sm:grid-rows-2\">\n                    <figure className=\"overflow-hidden rounded-lg border border-border bg-cream sm:min-h-0\">\n                      <img\n                        src=\"/images/qui-sommes-nous/brief-technique-toiture.webp\"\n                        alt=\"Covalba technical assessment on a roof\"\n                        className=\"aspect-[4/3] h-full w-full object-cover sm:aspect-auto\"\n                        loading=\"lazy\"\n                        decoding=\"async\"\n                      />\n                    </figure>\n                    <figure className=\"overflow-hidden rounded-lg border border-border bg-cream sm:min-h-0\">\n                      <img\n                        src=\"/images/qui-sommes-nous/stock-produits-airless.webp\"\n                        alt=\"Covalba products and airless machine prepared for a project\"\n                        className=\"aspect-[4/3] h-full w-full object-cover sm:aspect-auto\"\n                        loading=\"lazy\"\n                        decoding=\"async\"\n                      />\n                    </figure>\n                  </div>\n                </div>\n              </ScrollReveal>\n            </div>\n          </div>\n        </section>\n\n        <section className=\"border-y border-border bg-[#F6FAFB] py-10\">\n          <div className=\"container mx-auto px-4 lg:px-8\">\n            <ScrollReveal>\n              <div className=\"flex flex-col gap-8 lg:flex-row lg:items-center lg:justify-between\">\n                <div className=\"shrink-0\">\n                  <p className=\"font-body text-[10px] font-semibold uppercase tracking-[0.24em] text-primary/60\">\n                    As featured in\n                  </p>\n                </div>\n                <div className=\"grid flex-1 grid-cols-2 items-center gap-3 sm:grid-cols-3 lg:grid-cols-5\">\n                  {pressLogos.map((logo) => (\n                    <div\n                      key={logo.name}\n                      className=\"flex h-18 min-h-16 items-center justify-center rounded-lg border border-border bg-white px-5 shadow-sm transition-transform duration-300 hover:-translate-y-0.5\"\n                    >\n                      <img src={logo.src} alt={logo.name} className=\"max-h-10 max-w-full opacity-75\" loading=\"lazy\" />\n                    </div>\n                  ))}\n                </div>\n              </div>\n            </ScrollReveal>\n          </div>\n        </section>\n\n        <section className=\"bg-white py-16 lg:py-28\">\n          <div className=\"container mx-auto px-4 lg:px-8\">\n            <div className=\"grid items-start gap-10 lg:grid-cols-[48fr_52fr] lg:gap-16\">\n              <ScrollReveal>\n                <div className=\"rounded-lg border border-border bg-cream/70 p-6 lg:p-8\">\n                  <p className=\"mb-5 font-body text-[10px] font-semibold uppercase tracking-[0.25em] text-primary/60\">\n                    The Covalba story\n                  </p>\n                  <h2 className=\"font-satoshi text-3xl font-black leading-tight text-foreground sm:text-4xl lg:text-5xl\">\n                    It all started with two partners and one conviction.\n                  </h2>\n                  <div className=\"mt-6 space-y-5 font-body text-base leading-relaxed text-foreground/66\">\n                    <p>\n                      Covalba began with two partners determined to put their skills to work for a positive change in\n                      society. That conviction took shape through the development of a premium reflective roof coating,\n                      the result of many years of research and development.\n                    </p>\n                    <p>\n                      Our ambition is bold: to help buildings meet today's challenges as well as tomorrow's. Resilience\n                      against heatwaves and lower energy bills are the two guiding stars driving the progress of Covalba\n                      technology.\n                    </p>\n                    <p>\n                      Our approach evolves continuously, and our products adapt to the real-world challenges of building\n                      managers. We guide your contractor so they can recommend and implement the optimal solution,\n                      safely.\n                    </p>\n                  </div>\n                  <div className=\"mt-8\">\n                    <SecondaryCTA href=\"/en/solutions/covatherm\">Discover our solutions</SecondaryCTA>\n                  </div>\n                </div>\n              </ScrollReveal>\n\n              <ScrollReveal className=\"flex h-full items-center\">\n                <div className=\"relative w-full\">\n                  <div className=\"absolute -right-4 -top-4 h-28 w-28 rounded-full bg-teal-vivid/12 blur-2xl\" aria-hidden=\"true\" />\n                  <figure className=\"relative overflow-hidden rounded-lg border border-border bg-cream shadow-[0_18px_70px_rgba(25,42,58,0.12)]\">\n                    <img\n                      src=\"/images/qui-sommes-nous/portrait-maxime-bertrand.jpg\"\n                      alt=\"Portrait of Maxime and Bertrand, founders of Covalba\"\n                      className=\"aspect-[11/8] w-full object-cover\"\n                      loading=\"lazy\"\n                      decoding=\"async\"\n                    />\n                    <figcaption className=\"flex items-center justify-between gap-4 px-5 py-4 font-body text-sm text-foreground/58\">\n                      <span>Maxime and Bertrand, the founders of Covalba.</span>\n                      <span className=\"hidden rounded-full bg-primary/10 px-3 py-1 text-xs font-semibold text-primary sm:inline-flex\">\n                        Since 2011\n                      </span>\n                    </figcaption>\n                  </figure>\n                </div>\n              </ScrollReveal>\n            </div>\n\n            <ScrollReveal>\n              <div className=\"mt-14 lg:mt-20\">\n                <div className=\"mb-8 max-w-3xl\">\n                  <p className=\"mb-4 font-body text-[10px] font-semibold uppercase tracking-[0.25em] text-primary/60\">\n                    Behind the scenes\n                  </p>\n                  <h3 className=\"font-satoshi text-2xl font-black leading-tight text-foreground sm:text-3xl lg:text-4xl\">\n                    Your roofs are our workshop.\n                  </h3>\n                </div>\n                <div className=\"grid items-stretch gap-4 md:grid-cols-3\">\n                  {behindScenes.map((item) => (\n                    <article\n                      key={item.title}\n                      className=\"flex h-full flex-col overflow-hidden rounded-lg border border-border bg-white shadow-sm\"\n                    >\n                      <div className=\"aspect-[7/5] w-full overflow-hidden\">\n                        <img\n                          src={item.image}\n                          alt={item.imageAlt}\n                          className=\"h-full w-full object-cover\"\n                          loading=\"lazy\"\n                          decoding=\"async\"\n                        />\n                      </div>\n                      <div className=\"flex flex-1 flex-col p-5\">\n                        <p className=\"mb-3 font-body text-[10px] font-bold uppercase tracking-[0.22em] text-primary/58\">\n                          {item.eyebrow}\n                        </p>\n                        <h4 className=\"font-satoshi text-xl font-bold leading-tight text-foreground\">\n                          {item.title}\n                        </h4>\n                        <p className=\"mt-3 font-body text-sm leading-relaxed text-foreground/62\">\n                          {item.text}\n                        </p>\n                      </div>\n                    </article>\n                  ))}\n                </div>\n              </div>\n            </ScrollReveal>\n\n            <ScrollReveal>\n              <div className=\"mt-12 lg:mt-16\">\n                <Carousel opts={{ align: 'start', loop: true }}>\n                  <div className=\"mb-6 flex flex-col gap-4 sm:flex-row sm:items-end sm:justify-between\">\n                    <div>\n                      <p className=\"mb-3 font-body text-[10px] font-semibold uppercase tracking-[0.25em] text-primary/60\">\n                        Life at Covalba\n                      </p>\n                      <h3 className=\"font-satoshi text-2xl font-black leading-tight text-foreground sm:text-3xl\">\n                        A team that lives on the roofs.\n                      </h3>\n                    </div>\n                    <div className=\"flex shrink-0 items-center gap-2\">\n                      <CarouselPrevious className=\"static translate-y-0 border-border bg-white text-primary hover:bg-primary/5\" />\n                      <CarouselNext className=\"static translate-y-0 border-border bg-white text-primary hover:bg-primary/5\" />\n                    </div>\n                  </div>\n                  <CarouselContent className=\"-ml-3\">\n                    {companyGallery.map((item) => (\n                      <CarouselItem key={item.title} className=\"basis-1/2 pl-3 lg:basis-1/3\">\n                        <figure className=\"group relative overflow-hidden rounded-lg border border-border bg-cream\">\n                          <img\n                            src={item.image}\n                            alt={item.imageAlt}\n                            className=\"aspect-[4/3] h-full w-full object-cover transition-transform duration-700 group-hover:scale-105\"\n                            loading=\"lazy\"\n                            decoding=\"async\"\n                          />\n                          <figcaption className=\"absolute inset-x-0 bottom-0 bg-gradient-to-t from-navy via-navy/65 to-transparent p-3 pt-10 font-body text-[13px] font-bold leading-snug text-white drop-shadow-[0_1px_2px_rgba(0,0,0,0.55)]\">\n                            {item.title}\n                          </figcaption>\n                        </figure>\n                      </CarouselItem>\n                    ))}\n                  </CarouselContent>\n                </Carousel>\n              </div>\n            </ScrollReveal>\n\n            <ScrollReveal>\n              <div className=\"mt-14 rounded-lg border border-border bg-[#F6FAFB] p-5 lg:mt-20 lg:p-8\">\n                <div className=\"mb-6 flex flex-col gap-2 sm:flex-row sm:items-end sm:justify-between\">\n                  <div>\n                    <p className=\"font-body text-[10px] font-semibold uppercase tracking-[0.24em] text-primary/60\">\n                      Video portraits\n                    </p>\n                    <h3 className=\"mt-2 font-satoshi text-2xl font-black text-foreground\">\n                      Two perspectives on the Covalba story.\n                    </h3>\n                  </div>\n                </div>\n                <div className=\"grid gap-5 lg:grid-cols-2\">\n                  <VideoEmbed title=\"Covalba founder portrait\" src=\"https://www.youtube.com/embed/QIrqe-60SJg?controls=0\" />\n                  <VideoEmbed title=\"Covalba founder portrait 2\" src=\"https://www.youtube.com/embed/oW5ZFr5nYCA?controls=0\" />\n                </div>\n              </div>\n            </ScrollReveal>\n          </div>\n        </section>\n\n        <section className=\"bg-cream py-16 lg:py-28\">\n          <div className=\"container mx-auto px-4 lg:px-8\">\n            <ScrollReveal>\n              <div className=\"mx-auto mb-14 max-w-4xl text-center\">\n                <p className=\"mb-5 font-body text-[10px] font-semibold uppercase tracking-[0.25em] text-primary/60\">\n                  Timeline\n                </p>\n                <h2 className=\"font-satoshi text-3xl font-black leading-tight text-foreground sm:text-4xl lg:text-5xl\">\n                  Discover how it all began, and where we are today.\n                </h2>\n              </div>\n            </ScrollReveal>\n            <div className=\"relative mx-auto max-w-5xl\">\n              <div className=\"absolute left-8 top-8 bottom-8 w-px bg-gradient-to-b from-primary/30 via-primary/15 to-transparent lg:left-1/2 lg:-translate-x-1/2\" />\n              <div className=\"space-y-7 lg:space-y-10\">\n                {timeline.map((item, index) => (\n                  <ScrollReveal key={item.year}>\n                    <article\n                      className=\"relative grid gap-5 pl-20 lg:grid-cols-2 lg:gap-14 lg:pl-0\"\n                    >\n                      <span className=\"absolute left-3 top-8 z-10 flex h-10 w-10 items-center justify-center rounded-full border border-primary/25 bg-white shadow-sm lg:left-1/2 lg:-translate-x-1/2\">\n                        <span className=\"h-3 w-3 rounded-full bg-primary\" />\n                      </span>\n                      <div\n                        className={`group overflow-hidden rounded-lg border border-border bg-white p-2 shadow-sm transition-shadow duration-300 hover:shadow-[0_18px_60px_rgba(25,42,58,0.10)] ${\n                          index % 2 === 1 ? 'lg:col-start-2' : ''\n                        }`}\n                      >\n                        <div className=\"grid overflow-hidden rounded-md bg-cream sm:grid-cols-[148px_1fr]\">\n                          <div className=\"flex min-h-36 items-center justify-center bg-gradient-to-br from-teal-light to-white p-5\">\n                            <img\n                              src={item.image}\n                              alt={item.imageAlt}\n                              className=\"max-h-28 max-w-28 object-contain transition-transform duration-500 group-hover:scale-105\"\n                              loading=\"lazy\"\n                              decoding=\"async\"\n                            />\n                          </div>\n                          <div className=\"p-5 lg:p-6\">\n                            <div className=\"mb-3 flex items-center gap-3\">\n                              <span className=\"rounded-full bg-primary/10 px-3 py-1 font-body text-[11px] font-black text-primary\">\n                                {item.year}\n                              </span>\n                              <span className=\"font-body text-[10px] font-bold uppercase tracking-[0.18em] text-foreground/30\">\n                                Step {index + 1}\n                              </span>\n                            </div>\n                            <h3 className=\"mb-2 font-satoshi text-xl font-bold leading-tight text-foreground\">\n                              {item.title}\n                            </h3>\n                            <p className=\"font-body text-sm leading-relaxed text-foreground/64\">{item.text}</p>\n                          </div>\n                        </div>\n                      </div>\n                      <div className=\"hidden lg:block\" aria-hidden=\"true\">\n                        <div\n                          className={`flex h-full items-center ${\n                            index % 2 === 1 ? 'justify-end pr-8' : 'justify-start pl-8'\n                          }`}\n                        >\n                          <span className=\"font-satoshi text-7xl font-black leading-none text-primary/[0.07]\">\n                            {index + 1}\n                          </span>\n                        </div>\n                      </div>\n                    </article>\n                  </ScrollReveal>\n                ))}\n              </div>\n            </div>\n          </div>\n        </section>\n\n        <section className=\"relative overflow-hidden bg-[#192A3A] py-16 text-white lg:py-28\">\n          <img\n            src=\"/images/applicateur-blobs.svg\"\n            alt=\"\"\n            aria-hidden=\"true\"\n            className=\"pointer-events-none absolute -right-[18%] -top-[28%] w-[58%] select-none opacity-16\"\n          />\n          <div className=\"container relative mx-auto px-4 lg:px-8\">\n            <ScrollReveal>\n              <div className=\"mx-auto mb-12 max-w-5xl\">\n                <div className=\"mb-6 inline-flex items-center gap-3 rounded-full border border-white/10 bg-white/[0.04] px-4 py-2\">\n                  <span className=\"h-px w-7 bg-teal-vivid/80\" aria-hidden=\"true\" />\n                  <span className=\"font-body text-[11px] font-bold uppercase tracking-[0.22em] text-teal-vivid\">\n                    Why Covalba\n                  </span>\n                </div>\n                <div className=\"grid items-end gap-6 lg:grid-cols-[1.05fr_0.95fr]\">\n                  <h2 className=\"font-satoshi text-3xl font-black leading-tight text-white sm:text-4xl lg:text-5xl\">\n                    A manufacturer, not a reseller. Roofing experts, not painters.\n                  </h2>\n                  <p className=\"max-w-xl font-body text-base leading-relaxed text-white/58 lg:pb-1\">\n                    Our difference lies as much in the formulation of the product as in the application method we\n                    recommend for the roof.\n                  </p>\n                </div>\n              </div>\n            </ScrollReveal>\n            <ScrollReveal stagger>\n              <div className=\"grid gap-4 md:grid-cols-2 lg:grid-cols-4\">\n                {differences.map((item) => {\n                  const Icon = item.icon;\n                  return (\n                    <article key={item.title} className=\"rounded-lg border border-white/10 bg-white/[0.045] p-6 transition-colors hover:border-teal-vivid/35 hover:bg-white/[0.07]\">\n                      <div className=\"mb-5 flex h-11 w-11 items-center justify-center rounded-lg bg-teal-vivid/14\">\n                        <Icon className=\"h-5 w-5 text-teal-vivid\" strokeWidth={1.7} />\n                      </div>\n                      <h3 className=\"mb-3 font-satoshi text-lg font-bold leading-tight text-white\">{item.title}</h3>\n                      <p className=\"font-body text-sm leading-relaxed text-white/62\">{item.text}</p>\n                    </article>\n                  );\n                })}\n              </div>\n            </ScrollReveal>\n          </div>\n        </section>\n\n        <section className=\"bg-white py-16 lg:py-28\">\n          <div className=\"container mx-auto px-4 lg:px-8\">\n            <ScrollReveal>\n              <div className=\"mb-10 flex flex-col gap-4 lg:flex-row lg:items-end lg:justify-between\">\n                <h2 className=\"font-satoshi text-3xl font-black leading-tight text-foreground sm:text-4xl lg:text-5xl\">\n                  Our values.\n                </h2>\n                <p className=\"max-w-xl font-body text-base leading-relaxed text-foreground/60\">\n                  They guide the way we design, manufacture, and support projects in the field.\n                </p>\n              </div>\n            </ScrollReveal>\n            <ScrollReveal stagger>\n              <div className=\"grid gap-4 md:grid-cols-2 lg:grid-cols-4\">\n                {values.map((value) => {\n                  const Icon = value.icon;\n                  return (\n                    <article key={value.title} className=\"rounded-lg border border-border bg-cream p-6\">\n                      <div className=\"mb-5 flex h-11 w-11 items-center justify-center rounded-lg bg-primary/10\">\n                        <Icon className=\"h-5 w-5 text-primary\" strokeWidth={1.8} />\n                      </div>\n                      <h3 className=\"mb-3 font-satoshi text-lg font-bold leading-tight text-foreground\">{value.title}</h3>\n                      <p className=\"font-body text-sm leading-relaxed text-foreground/64\">{value.text}</p>\n                    </article>\n                  );\n                })}\n              </div>\n            </ScrollReveal>\n          </div>\n        </section>\n\n        <section className=\"relative overflow-hidden bg-teal py-16 text-white lg:py-24\">\n          <img\n            src=\"/images/applicateur-blobs.svg\"\n            alt=\"\"\n            aria-hidden=\"true\"\n            className=\"pointer-events-none absolute -right-[12%] -top-[54%] w-[54%] select-none opacity-18\"\n          />\n          <div className=\"container relative mx-auto px-4 text-center lg:px-8\">\n            <ScrollReveal>\n              <h2 className=\"mx-auto max-w-3xl font-satoshi text-3xl font-black leading-tight text-white sm:text-4xl lg:text-5xl\">\n                Together, we can change the story. Are you in?\n              </h2>\n              <p className=\"mx-auto mt-4 max-w-2xl font-body text-base text-white/72 lg:text-lg\">\n                Whether you're a building owner, a facility manager, or a roofing contractor, let's talk about your\n                project.\n              </p>\n              <div className=\"mt-8 flex flex-col items-stretch justify-center gap-3 sm:flex-row sm:items-center\">\n                <PrimaryCTA href=\"/en/diagnostic\">Request a quote</PrimaryCTA>\n                <SecondaryCTA href=\"/en/contact\" light>\n                  Talk to an expert\n                </SecondaryCTA>\n                <a\n                  href=\"/en/contact\"\n                  className=\"inline-flex items-center justify-center gap-2 rounded-full px-6 py-2.5 font-body text-sm font-semibold text-white/86 transition-colors hover:bg-white/10\"\n                >\n                  Contact us <ArrowRight className=\"h-3.5 w-3.5\" />\n                </a>\n              </div>\n            </ScrollReveal>\n          </div>\n        </section>\n      </main>\n      <FooterEN />\n      <StickyMobileCTAEN />\n    </>\n  );\n};\n\nexport default AboutUsEN;\n","structuredPatch":[],"originalFile":null,"userModified":false},"sourceToolAssistantUUID":"8ac91607-cb59-490c-8748-ad6854a2edc1","userType":"external","entrypoint":"cli","cwd":"/opt/projects/.covalba-refonte-worktrees/nico-feature-traduction-all","sessionId":"22d3abbc-6868-484e-8bb0-ceaa184d3a29","version":"2.1.181","gitBranch":"nico/feature-traduction-all","slug":"mutable-snacking-pearl"}
{"parentUuid":"b6e0fbd5-9921-4212-8a90-afdc3b9e2737","isSidechain":true,"agentId":"af4ac75ca547b5a68","message":{"model":"claude-opus-4-8","id":"msg_01SoKTvJK239K9dVa832rL7k","type":"message","role":"assistant","content":[{"type":"text","text":"Done.\n\n## File created\n`/opt/projects/.covalba-refonte-worktrees/nico-feature-traduction-all/src/pages/en/AboutUsEN.tsx` (default export `AboutUsEN`).\n\n## What was done\nFaithful EN copy of `QuiSommesNous.tsx` — identical JSX structure, Tailwind classes, lucide icons, image/asset paths, ScrollReveal, Carousel, and VideoEmbed/CTA helper components. All copy comes from `about-us.en.md` values only. EN chrome swapped in: `NavbarEN`, `FooterEN`, `StickyMobileCTAEN`. `usePageMeta` uses the `[meta]` title/description with canonical `https://www.covalba.fr/en/about-us`; JSON-LD localized.\n\n## Link mapping (all internal links → live EN routes)\n- Hero CTAs: `/diagnostic` → `/en/diagnostic`; `/solutions/covatherm` → `/en/solutions/covatherm`\n- Final CTA: primary → `/en/diagnostic`; tertiary \"Contact us\" → `/en/contact`\n\n## Decisions / things to flag\n- **Product-pivot rewrites (intentional, applicator is the buyer's contractor):** Two FR CTAs targeted applicator recruitment (`/devenir-applicateur` \"Devenir applicateur agréé\"). The EN copy file replaced these — the story CTA `[cta]` is now \"Discover our solutions\" and the final `[cta-secondary]` is \"Talk to an expert\". I pointed both at product/contact routes (`/en/solutions/covatherm` and `/en/contact`) rather than any applicator page. No recruitment language remains.\n- **Removed the FR \"Fabricant français\" framing:** the `[why]` card-1 title is \"Manufacturer\" (not \"French manufacturer\") per the EN file — Made-in-France not reintroduced. Hero alt text also dropped \"professional/French\" specifics in favor of \"commercial roof\".\n- **`[final-cta] subtitle`** adds a third persona (\"building owner, facility manager, or roofing contractor\") vs FR's two — rendered verbatim from the EN file.\n- **No unmapped keys, nothing left in French** in user-visible copy. Image `src` paths intentionally keep their FR `/images/qui-sommes-nous/...` slugs (shared assets, not user-visible); all `imageAlt` text was translated to English.\n- Did not run npm/tsc/build/git, and FR files were not touched."}],"stop_reason":"end_turn","stop_sequence":null,"stop_details":null,"usage":{"input_tokens":131,"cache_creation_input_tokens":13388,"cache_read_input_tokens":60450,"output_tokens":860,"server_tool_use":{"web_search_requests":0,"web_fetch_requests":0},"service_tier":"standard","cache_creation":{"ephemeral_1h_input_tokens":0,"ephemeral_5m_input_tokens":13388},"inference_geo":"not_available","iterations":[{"input_tokens":131,"output_tokens":860,"cache_read_input_tokens":60450,"cache_creation_input_tokens":13388,"cache_creation":{"ephemeral_5m_input_tokens":13388,"ephemeral_1h_input_tokens":0},"type":"message"}],"speed":"standard"},"diagnostics":null},"requestId":"req_011CcHTDSjh8WnkQgweJrpFJ","attributionAgent":"general-purpose","type":"assistant","uuid":"0350e8b9-67bb-4d76-92a0-37a1d5978ba9","timestamp":"2026-06-22T01:45:32.622Z","userType":"external","entrypoint":"cli","cwd":"/opt/projects/.covalba-refonte-worktrees/nico-feature-traduction-all","sessionId":"22d3abbc-6868-484e-8bb0-ceaa184d3a29","version":"2.1.181","gitBranch":"nico/feature-traduction-all","slug":"mutable-snacking-pearl"}
