presseportale/resources/views/errors/layout.blade.php
Kevin Adametz c3db80c651 R0.5: eigene Fehlerseiten 403/404/419/500/503 (self-contained, domain-aware)
Bisher griffen die Laravel-Default-Seiten. Gemeinsames Inline-CSS-Layout
ohne Vite-Abhaengigkeit (rendert auch bei kaputtem Asset-Build), nutzt
die geteilte domainName-Variable mit Fallback, noindex, Dark-Mode via
prefers-color-scheme.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-03 08:01:29 +00:00

93 lines
2.9 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{{--
Gemeinsames Grundgerüst der Fehlerseiten. Bewusst self-contained
(Inline-CSS, keine Vite-Assets), damit die Seiten auch bei kaputtem
Asset-Build oder vor dem ersten `npm run build` zuverlässig rendern.
--}}
<!DOCTYPE html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="robots" content="noindex">
<title>@yield('code') · @yield('title') – {{ $domainName ?? 'Pressekonto' }}</title>
<style>
:root {
color-scheme: light dark;
--bg: #f6f7f8;
--panel: #ffffff;
--ink: #1c2427;
--ink-2: #5b6b70;
--rule: #e3e7e9;
--accent: #526266;
}
@media (prefers-color-scheme: dark) {
:root {
--bg: #161b1d;
--panel: #1f2629;
--ink: #e8ecee;
--ink-2: #9fb0b5;
--rule: #313b3f;
--accent: #82a0a7;
}
}
* { box-sizing: border-box; margin: 0; padding: 0; }
body {
font-family: ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
background: var(--bg);
color: var(--ink);
min-height: 100vh;
display: flex;
align-items: center;
justify-content: center;
padding: 24px;
}
main {
background: var(--panel);
border: 1px solid var(--rule);
border-radius: 8px;
padding: 48px 40px;
max-width: 460px;
width: 100%;
text-align: center;
}
.code {
font-size: 13px;
font-weight: 700;
letter-spacing: 0.18em;
color: var(--ink-2);
text-transform: uppercase;
}
h1 { font-size: 22px; margin: 12px 0 10px; }
p { font-size: 14.5px; line-height: 1.6; color: var(--ink-2); }
a.home {
display: inline-block;
margin-top: 24px;
padding: 10px 22px;
border-radius: 6px;
background: var(--accent);
color: #fff;
font-size: 14px;
font-weight: 600;
text-decoration: none;
}
.brand {
margin-top: 28px;
padding-top: 18px;
border-top: 1px solid var(--rule);
font-size: 12px;
letter-spacing: 0.08em;
color: var(--ink-2);
text-transform: uppercase;
}
</style>
</head>
<body>
<main>
<div class="code">@yield('code')</div>
<h1>@yield('title')</h1>
<p>@yield('message')</p>
<a class="home" href="/">Zur Startseite</a>
<div class="brand">{{ $domainName ?? 'Pressekonto' }}</div>
</main>
</body>
</html>