{{-- Shared for every public page. --}} @php // One source for the fallbacks every meta tag below reuses. $defaultDescription = 'Tattoo studio software that takes the request first. Clients send the idea, placement, references and budget; you review it and offer times. Consent forms and reminders follow on their own.'; $socialImage = asset('images/inkloop-social.png'); // Query strings never change the page, so the canonical drops them to keep // Google from treating ?utm=… as duplicate URLs. $canonical = url()->current(); // Built once so the and both social titles cannot drift, and so the // suffix logic is not repeated as a fragile inline directive per tag. $pageTitle = trim($__env->yieldContent('title')); $fullTitle = $pageTitle !== '' ? $pageTitle.' — InkLoop' : 'InkLoop — tattoo studio software'; $description = trim($__env->yieldContent('meta_description')) ?: $defaultDescription; @endphp <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="csrf-token" content="{{ csrf_token() }}"> @include('partials.sentry-meta') <title>{{ $fullTitle }} {{-- Private, tokenized and signed-out pages pass robots => noindex from their layout, so only the marketing pages are left indexable. --}} {{-- Open Graph: what a link renders as when shared in a DM, Slack or a post. --}} @include('partials.favicon') @include('partials.seo') @vite(['resources/css/app.css', 'resources/js/app.js']) @include('partials.analytics') {{-- Who publishes the site. Site-wide, so every page carries it. --}} {{-- Per-page structured data (SoftwareApplication on the home page, the pricing FAQ on /pricing). --}} @yield('schema') @stack('head')