{{ $page_title ?? 'Skinbase' }}
@isset($page_robots)
@endisset
@isset($page_canonical)
@endisset
@isset($page_rel_prev)
@endisset
@isset($page_rel_next)
@endisset
{{-- Global RSS feed discovery --}}
@vite(['resources/css/app.css','resources/css/nova-grid.css','resources/scss/nova.scss','resources/js/nova.js','resources/js/entry-search.jsx'])
@stack('head')
@if(isset($page) && is_array($page))
@inertiaHead
@endif
@if(config('services.google_adsense.publisher_id'))
{{-- Google AdSense — consent-gated loader --}}
{{-- Script is only injected after the user accepts all cookies. --}}
{{-- If consent was given on a previous visit it fires on page load. --}}
@endif
@php
$authBgRoutes = [
'login', 'register', 'register.notice', 'password.request', 'password.reset',
'verification.notice', 'registration.verify', 'setup.password.create', 'setup.username.create', 'password.confirm'
];
$useAuthBackground = request()->route() && in_array(request()->route()->getName(), $authBgRoutes);
$authBackgrounds = [
'/gfx/skinbase_back_001.webp',
'/gfx/skinbase_back_002.webp',
'/gfx/skinbase_back_003.webp',
'/gfx/skinbase_back_004.webp',
];
$selectedAuthBg = $useAuthBackground ? $authBackgrounds[array_rand($authBackgrounds)] : null;
@endphp
@include('layouts.nova.toolbar')
@yield('content')
@include('layouts.nova.footer')
{{-- Toast notifications (Alpine) --}}
@php
$toastMessage = session('status') ?? session('error') ?? null;
$toastType = session('error') ? 'error' : 'success';
$toastBorder = session('error') ? 'border-red-500' : 'border-green-500';
@endphp
@if($toastMessage)
@if(session('error'))
@else
@endif
{!! nl2br(e($toastMessage)) !!}
@endif
{{-- Cookie Consent Banner --}}
🍪
We use essential cookies to keep you logged in and protect your session.
With your permission we also load advertising cookies from third-party networks.
Learn more ↗