@php $isProduct = $kind === 'material'; $indexRoute = $isProduct ? 'materials' : 'services'; $detailRoute = $isProduct ? 'materials.show' : 'services.show'; $quoteUrl = route('quote', [$isProduct ? 'material' : 'project' => $entry->title]); $setting = fn (string $key, string $fallback) => ($entry->detailOption($key) !== '' ? $entry->detailOption($key) : $fallback); $detailStyle = '--detail-leading:' . (is_numeric($entry->detailOption('line_height')) ? min(2.5, max(1, (float) $entry->detailOption('line_height'))) . 'em' : 'var(--type-body-leading, 1.25em)') . ';--detail-size:' . (is_numeric($entry->detailOption('body_font_size')) ? min(22, max(15, (float) $entry->detailOption('body_font_size'))) . 'px' : 'var(--type-body-size, 17px)'); @endphp
{{ $setting('hero_eyebrow', $entry->category ?: ($isProduct ? 'Natural stone' : 'Stone applications')) }}

{{ $setting('hero_heading', $isProduct ? $entry->title . ' ' . $copy['detail_heading'] : $entry->title) }}

{{ $setting('hero_intro', $entry->summary ?: 'Contact VIPO to discuss your specific material and project requirements.') }}

{{ $setting('photo_disclaimer','Photos are for material inspiration. Confirm current finishes, dimensions and availability directly with VIPO.') }}
{{ $setting('hero_image_alt', $entry->title . ' material inspiration') }}{{ $setting('photo_label', $isProduct ? 'MATERIAL INSPIRATION' : 'SERVICE INSPIRATION') }}
@foreach($detailBlocks as $block) @if($block['type'] === 'custom') @php($section = $block['section']) @include('site.partials.entry-section') @elseif($block['name'] === 'overview' && $entry->body)
{{ $isProduct ? $copy['detail_intro'] : $copy['detail_eyebrow'] }}

{{ $setting('body_heading', $isProduct ? 'What makes '.strtolower($entry->title).' worth considering?' : $copy['detail_heading']) }}

{{ $entry->body }}
@elseif($block['name'] === 'highlights' && $entry->highlights)

{{ $setting('highlights_heading', $copy['detail_highlights']) }}

    @foreach(preg_split('/\r?\n/', trim($entry->highlights)) as $line)@if(trim($line))
  • {{ trim($line) }}
  • @endif @endforeach
@elseif($block['name'] === 'uses' && $entry->best_for)

{{ $setting('uses_heading', $copy['detail_uses']) }}

@if($isProduct)

{{ $copy['detail_uses_intro'] }}

@endif
@foreach(preg_split('/\r?\n/', trim($entry->best_for)) as $line)@if(trim($line))
{{ trim($line) }}
@endif @endforeach
@elseif($block['name'] === 'tips' && $entry->selection_tips)

{{ $setting('tips_heading', $isProduct ? $copy['detail_selection'] : $copy['detail_tips']) }}

{{ $entry->selection_tips }}
@elseif($block['name'] === 'process' && !$isProduct)
{{ $setting('process_eyebrow',$copy['detail_process_eyebrow']) }}

{{ $setting('process_heading', $copy['detail_process_heading']) }}

    @foreach(range(1,3) as $n)
  1. {{ $setting('process_'.$n, $copy['detail_process_'.$n]) }}
  2. @endforeach
{{ $setting('process_button','Start the conversation') }}
@elseif($block['name'] === 'faq')

{{ $setting('faq_heading', $copy['detail_faq_heading']) }}

@foreach(range(1,$isProduct ? 3 : 2) as $n)
{{ $setting('faq_'.$n.'_q', $copy['detail_faq_'.$n.'_q']) }}

{{ $setting('faq_'.$n.'_a', $copy['detail_faq_'.$n.'_a']) }}

@endforeach
@elseif($block['name'] === 'brief' && $isProduct)
{{ $setting('brief_eyebrow',$copy['detail_brief_eyebrow']) }}

{{ $setting('brief_heading',$copy['detail_brief_heading']) }}

{{ $setting('brief_body',$copy['detail_brief_text']) }}

{{ $setting('brief_button','Send your sizes for a tailored quote') }}
@elseif($block['name'] === 'gallery' && $isProduct && $productGallery->isNotEmpty()) @endif @endforeach
@if($entry->detailOption('show_quote_card','1') === '1') @endif
@if($entry->detailOption('show_related','1') === '1' && $related->isNotEmpty()) @endif @include('site.partials.cta')