@extends('layouts.app') @php use App\Helpers\SeoHelper; use App\Helpers\MarketContent; $locale = app()->getLocale(); $pageSeo = SeoHelper::getPageSeo('services'); $localizedRoute = function($routeName, $params = []) use ($locale) { return SeoHelper::localizedRoute($routeName, $params, $locale); }; @endphp @section('title', $pageSeo['title'] ?? __('messages.services.meta_title')) @section('meta_description', $pageSeo['description'] ?? __('messages.services.meta_description')) @section('meta_keywords', $pageSeo['keywords'] ?? __('messages.services.meta_keywords')) @section('robots', 'index, follow') @php $firstService = $servicesData ? collect($servicesData)->first() : null; $servicesOgImage = ($firstService && !empty($firstService['listingImage'])) ? asset($firstService['listingImage']) : asset('images/og-services.jpg'); @endphp @section('og_image', $servicesOgImage) @push('head') @php $firstSvcImage = ($firstService && !empty($firstService['listingImage'])) ? asset($firstService['listingImage']) : null; @endphp @if($firstSvcImage) @endif @endpush @push('schema') @endpush @section('content')
{{-- ═══════════════════════════════════════════════════════════ HERO — Light teal (matches homepage) ═══════════════════════════════════════════════════════════ --}}

{{ __('messages.services_page.grid_title') }}

{{-- ═══════════════════════════════════════════════════════════ SERVICES GRID — Each service as a full card with image ═══════════════════════════════════════════════════════════ --}} @if(isset($servicesData) && count($servicesData) > 0)
@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)
{{ $svcAlt }}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
@endif {{-- ═══════════════════════════════════════════════════════════ WHY CRIAZO — Light teal section ═══════════════════════════════════════════════════════════ --}}

{{ __('messages.services_page.why.badge') }}

{{ __('messages.services_page.why.title') }}

{{ __('messages.services_page.why.description') }}

{{ __('messages.services_page.why.cards.execution_speed.title') }}

{{ __('messages.services_page.why.cards.execution_speed.description') }}

{{ __('messages.services_page.why.cards.roi_first.title') }}

{{ __('messages.services_page.why.cards.roi_first.description') }}

{{ __('messages.services_page.why.cards.specialist_team.title') }}

{{ __('messages.services_page.why.cards.specialist_team.description') }}

{{ __('messages.services_page.why.cards.long_term.title') }}

{{ __('messages.services_page.why.cards.long_term.description') }}

{{ __('messages.services_page.how.badge') }}

{{ __('messages.services_page.how.title') }}

{{ __('messages.services_page.how.steps.analyze.label') }}

{{ __('messages.services_page.how.steps.analyze.title') }}

{{ __('messages.services_page.how.steps.analyze.description') }}

{{ __('messages.services_page.how.steps.strategy.label') }}

{{ __('messages.services_page.how.steps.strategy.title') }}

{{ __('messages.services_page.how.steps.strategy.description') }}

{{ __('messages.services_page.how.steps.execute.label') }}

{{ __('messages.services_page.how.steps.execute.title') }}

{{ __('messages.services_page.how.steps.execute.description') }}

{{-- ═══════════════════════════════════════════════════════════ SERVICE CATEGORIES NAV — Clean navigation by category ═══════════════════════════════════════════════════════════ --}}

{{ __('messages.services.development') }} · {{ __('messages.services.marketing') }} · {{ __('messages.services.strategy') }}

{{ __('messages.services.categories_title') }}

{{-- ═══════════════════════════════════════════════════════════ FINAL CTA — Light teal ═══════════════════════════════════════════════════════════ --}}

{{ __('messages.services_page.cta.badge') }}

{{ __('messages.services_page.cta.title') }}

{{ __('messages.services_page.cta.description') }}

{{ __('messages.services_page.cta.reassurance') }}

@push('styles') @endpush @include('components.sticky-cta-bar', [ 'stickyCtaTitle' => __('messages.services.ready_transform'), 'stickyCtaContactUrl' => $localizedRoute('contact.index'), 'stickyCtaSimulateUrl' => $localizedRoute('calculator.index'), ]) @include('components.explore-site-section', ['hideServicesSlider' => true]) @endsection