diff --git a/resources/views/livewire/servers/show.blade.php b/resources/views/livewire/servers/show.blade.php
index bd24244..d5f5545 100644
--- a/resources/views/livewire/servers/show.blade.php
+++ b/resources/views/livewire/servers/show.blade.php
@@ -276,14 +276,20 @@
$showFw = $fwSupported && ($fwInstalled || $fwReadError);
$showF2b = $f2bSupported && ($f2bInstalled || $f2bReadError);
$panelCount = ($showFw ? 1 : 0) + ($showF2b ? 1 : 0);
+
+ // A single installed tool would otherwise sit in a capped, left-aligned box
+ // beside a large void. Instead the lone panel spans the full content width and
+ // splits its OWN body into two columns on lg — a rich, deliberate card rather
+ // than a fragment. Two tools keep the side-by-side grid.
+ $lone = $panelCount === 1;
@endphp
@if ($panelCount > 0)
- {{-- Two tools → side-by-side; a lone tool is capped so it doesn't stretch edge-to-edge. --}}
+ {{-- Two tools → side-by-side; a lone tool spans full width and lays its body out
+ internally in two columns (see $lone), so neither case leaves dead space. --}}
+ @forelse ($fwRules as $rule)
{{-- $ruleTone, NOT $tone: the page-level $tone is a closure used by the
gauges/Volumes panel; reusing the name here would clobber it. --}}
@php $ruleTone = $actTone[$rule['action'] ?? 'ALLOW'] ?? 'online'; @endphp
@@ -362,11 +373,12 @@
@endunless
- @empty
-
-
{{ __('servers.firewall_no_rules') }}
-
- @endforelse
+ @empty
+
+
{{ __('servers.firewall_no_rules') }}
+
+ @endforelse
+
@endif
@@ -404,39 +416,52 @@
@else
- {{-- Compact summary; the full jail/banned-IP list (which can grow very
- long) lives in a scrollable modal, opened via the button below. --}}
-
- @foreach ($f2bIgnore as $ip)
-
- {{ $ip }}
- @unless (in_array($ip, ['127.0.0.1/8', '::1'], true))
-
- @endunless
-
- @endforeach
+ {{-- Lone fail2ban: status summary + "Gesperrte IPs ansehen" in the left
+ column, the whitelist (ignoreip) management in the right. Two-tool
+ case keeps the single stacked column. --}}
+
$lone])>
+ {{-- Compact summary; the full jail/banned-IP list (which can grow very
+ long) lives in a scrollable modal, opened via the button below. --}}
+