@foreach($servicesData as $svc)
@php
$svcSlug = $svc['slug'] ?? $svc['id'] ?? '';
$svcNameKey = 'messages.services_data.' . str_replace('-', '_', $svcSlug) . '.name';
$svcNameTranslated = __($svcNameKey);
$marketSvc = MarketContent::service($svcSlug, $locale);
$svcName = $marketSvc['name'] ?? ($svcNameTranslated !== $svcNameKey ? $svcNameTranslated : ($svc['name'] ?? ''));
$serviceCopy = [
'web-development' => [
'hook' => __('messages.services_page.service_copy.web-development.hook'),
'desc' => __('messages.services_page.service_copy.web-development.desc'),
'bullets' => trans('messages.services_page.service_copy.web-development.bullets'),
'cta' => __('messages.services_page.service_copy.web-development.cta'),
],
'ecommerce' => [
'hook' => __('messages.services_page.service_copy.ecommerce.hook'),
'desc' => __('messages.services_page.service_copy.ecommerce.desc'),
'bullets' => trans('messages.services_page.service_copy.ecommerce.bullets'),
'cta' => __('messages.services_page.service_copy.ecommerce.cta'),
],
'shopify' => [
'hook' => __('messages.services_page.service_copy.shopify.hook'),
'desc' => __('messages.services_page.service_copy.shopify.desc'),
'bullets' => trans('messages.services_page.service_copy.shopify.bullets'),
'cta' => __('messages.services_page.service_copy.shopify.cta'),
],
'digital-marketing' => [
'hook' => __('messages.services_page.service_copy.digital-marketing.hook'),
'desc' => __('messages.services_page.service_copy.digital-marketing.desc'),
'bullets' => trans('messages.services_page.service_copy.digital-marketing.bullets'),
'cta' => __('messages.services_page.service_copy.digital-marketing.cta'),
],
'seo-sem' => [
'hook' => __('messages.services_page.service_copy.seo-sem.hook'),
'desc' => __('messages.services_page.service_copy.seo-sem.desc'),
'bullets' => trans('messages.services_page.service_copy.seo-sem.bullets'),
'cta' => __('messages.services_page.service_copy.seo-sem.cta'),
],
'paid-traffic' => [
'hook' => __('messages.services_page.service_copy.paid-traffic.hook'),
'desc' => __('messages.services_page.service_copy.paid-traffic.desc'),
'bullets' => trans('messages.services_page.service_copy.paid-traffic.bullets'),
'cta' => __('messages.services_page.service_copy.paid-traffic.cta'),
],
'google-ads' => [
'hook' => __('messages.services_page.service_copy.google-ads.hook'),
'desc' => __('messages.services_page.service_copy.google-ads.desc'),
'bullets' => trans('messages.services_page.service_copy.google-ads.bullets'),
'cta' => __('messages.services_page.service_copy.google-ads.cta'),
],
'social-media' => [
'hook' => __('messages.services_page.service_copy.social-media.hook'),
'desc' => __('messages.services_page.service_copy.social-media.desc'),
'bullets' => trans('messages.services_page.service_copy.social-media.bullets'),
'cta' => __('messages.services_page.service_copy.social-media.cta'),
],
'branding' => [
'hook' => __('messages.services_page.service_copy.branding.hook'),
'desc' => __('messages.services_page.service_copy.branding.desc'),
'bullets' => trans('messages.services_page.service_copy.branding.bullets'),
'cta' => __('messages.services_page.service_copy.branding.cta'),
],
'hosting' => [
'hook' => __('messages.services_page.service_copy.hosting.hook'),
'desc' => __('messages.services_page.service_copy.hosting.desc'),
'bullets' => trans('messages.services_page.service_copy.hosting.bullets'),
'cta' => __('messages.services_page.service_copy.hosting.cta'),
],
'optimization' => [
'hook' => __('messages.services_page.service_copy.optimization.hook'),
'desc' => __('messages.services_page.service_copy.optimization.desc'),
'bullets' => trans('messages.services_page.service_copy.optimization.bullets'),
'cta' => __('messages.services_page.service_copy.optimization.cta'),
],
];
$currentCopy = $serviceCopy[$svcSlug] ?? null;
$marketBenefits = array_map(
fn ($card) => is_array($card) ? ($card['title'] ?? '') : $card,
array_slice($marketSvc['benefit_cards'] ?? [], 0, 3)
);
$svcHook = $marketSvc['summary'] ?? ($currentCopy['hook'] ?? null);
$baseDesc = $marketSvc['intro'] ?? ($currentCopy['desc'] ?? ($svc['listingDescription'] ?? ''));
$svcBenefits = $marketBenefits ?: ($currentCopy['bullets'] ?? array_slice(($svc['features'] ?? []), 0, 3));
$svcPrimaryCta = $marketSvc['cta_text'] ?? ($currentCopy['cta'] ?? __('messages.services_page.fallback_view_service'));
$svcImage = !empty($svc['listingImage']) ? asset($svc['listingImage']) : null;
$svcAlt = $marketSvc['alt_text'] ?? \App\Helpers\SeoHelper::generateImageAlt($svcName, __('messages.services.service'), __('messages.meta.author'));
// Desktop priority layout (3-column grid), balanced to avoid holes.
// Featured services: Web Development, SEO & SEM, Google Ads, Branding & Naming.
$layoutMap = [
// Row 1 (2 + 1)
'web-development' => ['span' => 'lg:col-span-2', 'order' => 'lg:order-1', 'featured' => true, 'badge' => __('messages.services_page.badges.flagship'), 'extra' => __('messages.services_page.featured_extra.web-development')],
'paid-traffic' => ['span' => 'lg:col-span-1', 'order' => 'lg:order-2', 'featured' => false, 'extra' => null],
// Row 2 (1 + 2)
'social-media' => ['span' => 'lg:col-span-1', 'order' => 'lg:order-3', 'featured' => false, 'extra' => null],
'seo-sem' => ['span' => 'lg:col-span-2', 'order' => 'lg:order-4', 'featured' => true, 'badge' => __('messages.services_page.badges.most_requested'), 'extra' => __('messages.services_page.featured_extra.seo-sem')],
// Row 3 (2 + 1)
'google-ads' => ['span' => 'lg:col-span-2', 'order' => 'lg:order-5', 'featured' => true, 'badge' => __('messages.services_page.badges.performance_pick'), 'extra' => __('messages.services_page.featured_extra.google-ads')],
'ecommerce' => ['span' => 'lg:col-span-1', 'order' => 'lg:order-6', 'featured' => false, 'extra' => null],
// Row 4 (1 + 2)
'digital-marketing' => ['span' => 'lg:col-span-1', 'order' => 'lg:order-7', 'featured' => false, 'extra' => null],
'branding' => ['span' => 'lg:col-span-2', 'order' => 'lg:order-8', 'featured' => true, 'badge' => __('messages.services_page.badges.premium_choice'), 'extra' => __('messages.services_page.featured_extra.branding') ],
// Row 5 (1 + 1 + 1)
'optimization' => ['span' => 'lg:col-span-1', 'order' => 'lg:order-9', 'featured' => false, 'extra' => null],
'shopify' => ['span' => 'lg:col-span-1', 'order' => 'lg:order-10', 'featured' => false, 'extra' => null],
'hosting' => ['span' => 'lg:col-span-1', 'order' => 'lg:order-11', 'featured' => false, 'extra' => null],
];
$layout = $layoutMap[$svcSlug] ?? ['span' => 'lg:col-span-1', 'order' => 'lg:order-99', 'featured' => false, 'badge' => null, 'extra' => null];
$isFeatured = $layout['featured'];
$featuredBadge = $layout['badge'] ?? null;
$svcDesc = $baseDesc . (($isFeatured && !empty($layout['extra'])) ? ' ' . $layout['extra'] : '');
$cardClass = $layout['span'] . ' ' . $layout['order'];
$visibleBenefits = array_slice($svcBenefits, 0, 3);
$imageWrapClass = 'relative overflow-hidden bg-neutral-100 h-64 md:h-72 lg:h-80';
$imageObjectClass = 'w-full h-full object-cover object-center group-hover:scale-105 transition-transform duration-500';
@endphp
@if($svcImage)

first) fetchpriority="high" @endif>
@if($isFeatured && !empty($featuredBadge))
{{ $featuredBadge }}
@endif
@endif
{{ $svcName }}
@if($svcHook)
{{ $svcHook }}
@endif
{{ $svcDesc }}
@if(count($visibleBenefits) > 0)
@if($isFeatured)
@foreach($visibleBenefits as $f)
{{ is_array($f) ? ($f['title'] ?? '') : $f }}@if(!$loop->last) · @endif
@endforeach
@else
@foreach($visibleBenefits as $f)
-
{{ is_array($f) ? ($f['title'] ?? '') : $f }}
@endforeach
@endif
@endif
@endforeach