{{-- "We are updating" — one panel, used in both places it can appear. It showed up twice with two different faces: the console's own overlay in the app's light tokens while the application was still up, and then this, the 503 page, once the containers went down. Two designs for one event, one replacing the other mid-update. The styles are inline and self-contained rather than Tailwind classes, because the other place this renders is the 503 page — shown while the application is mid-deploy or freshly installed, exactly when the Vite manifest may not exist. A stylesheet reference there would throw instead of rendering the reassurance the visitor came for. Prefixed class names: this is injected into the console's own document, which has a stylesheet of its own, and `.badge` is not a name to claim globally. ── On the colours, because they were wrong twice ──────────────────────── Every value below is a copy of a token from resources/css/portal-tokens.css. They were not: the first version used Tailwind's slate ramp (#0f172a, #64748b, #e2e8f0), which is blue-tinted, against a product whose neutrals are warm. Even in daylight the panel read cooler than everything around it. And it carried a `prefers-color-scheme: dark` block, which nothing else in this product has. On a phone set to dark mode the update screen — and only the update screen — turned dark blue. Reported exactly that way. A dark mode for one page is not a dark mode; it is one page that does not match. --}}
{{-- The real mark, not a rounded orange tile. An empty brand square reads as an image that failed to load, and this panel is shown at the one moment somebody is already wondering whether something is broken. --}}
CluPilot Cloud
{{ __('updating.badge') }}

{{ __('updating.title') }}

{{ $body ?? __('updating.body') }}

{{-- Proof of life, for everybody. Whoever is looking at this — a customer or the operator who pressed the button — wants one thing answered: is anything happening, or am I staring at a dead page. This says yes without asking them to read anything. --}} {{-- The current step, in the console only, as one quiet line. It used to be a card with the step in it, a "läuft seit …" line and the deployment's raw output underneath — rsync listing every font file it copied. None of that is anybody's question while they wait: the file list is noise, and the placeholder card ("Wird jetzt gestartet.") was a box drawn around the absence of information. What is left is what an operator can act on: which step, so a run that stops on one is visible without a shell. --}} @if ($detail ?? false)

@endif

{{ __('updating.auto') }}

{{-- Only when the server has stopped answering for long enough that this is no longer a restart. An always-present close button would be a lie — the deployment does not stop because somebody dismissed a panel — but being held behind one while the application is broken is worse. --}} @if ($detail ?? false)

{{ __('updating.stuck') }}

@endif