{{-- Shared layout for all RankWizAI error pages. Self-contained by design — inline CSS, no external assets, no JS bundle dependency. Each error template (404, 500, 419, 403, 429, 503) extends this layout and overrides only its unique sections. This keeps the surface usable even when Vite or Inertia have failed to load (the most common case during a 500 or 503). Available @section blocks: @section('title') — contents (required) @section('code') — large status numeral, e.g. 404 (required) @section('codeLabel') — aria-label for the numeral (required) @section('headline') — h1 message (required) @section('body') — supporting paragraph (required) @section('actions') — primary/secondary CTA buttons (optional) @section('signature') — small-print operator signature (required) Dark mode is driven by the user's OS preference via prefers-color-scheme. The application's class-based .dark theme is a session/cookie value the error surface intentionally does not depend on, since the session may be the thing that's broken. --}} <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="color-scheme" content="light dark"> <meta name="robots" content="noindex"> <title>@yield('title') · {{ config('app.name', 'RankWizAI') }} {{-- SEC-004: nonce-pinned inline styles for CSP compliance. --}}
{{ config('app.name', 'RankWizAI') }}
@yield('code')

@yield('headline')

@yield('body') @hasSection('actions')
@yield('actions')
@endif

@yield('signature')