- {/* Hero + KPI overlap — KPI bottom aligns with banner bottom */}
-
+ {/* Hero + KPI overlap — KPI bottom aligns with banner bottom */}
+

- {/* KPI cards positioned so their bottom edge aligns with banner bottom */}
-
-
-
+ {/* KPI cards positioned so their bottom edge aligns with banner bottom */}
+
+
+
- {/* 24px breathing room between KPI row and middle row */}
-
-
- {/* Middle Row */}
+ {/* Middle Row — stretches to fill available vertical space */}
+
+
- {/* Gap */}
-
-
- {/* Bottom Row */}
+ {/* Bottom Row — anchored to the bottom */}
+
diff --git a/src/components/MiddleRow.tsx b/src/components/MiddleRow.tsx
index b9afe3d..f65a027 100644
--- a/src/components/MiddleRow.tsx
+++ b/src/components/MiddleRow.tsx
@@ -32,6 +32,9 @@ const cardBase: React.CSSProperties = {
transition: 'border-color 0.2s ease',
position: 'relative',
overflow: 'hidden',
+ height: '100%',
+ display: 'flex',
+ flexDirection: 'column',
}
function getBarColor(percentage: number) {
@@ -42,7 +45,7 @@ function getBarColor(percentage: number) {
export default function MiddleRow() {
return (
-
+
{/* Resource Overview */}
{/* Subtle hex pattern overlay */}
@@ -50,7 +53,7 @@ export default function MiddleRow() {
{/* Gold top edge lighting */}
-
+
Resource Overview
@@ -59,7 +62,7 @@ export default function MiddleRow() {
-
+
{resources.map((res) => {
const percentage = res.unit === '%' ? res.current : (res.current / res.max) * 100
const displayValue = res.unit === '%' ? `${res.current}%` : `${res.current} / ${res.max}${res.unit}`
@@ -84,7 +87,7 @@ export default function MiddleRow() {
{/* Gold top edge */}
-
+
Recent Activity
@@ -93,7 +96,7 @@ export default function MiddleRow() {
-
+
{activities.map((item, i) => {
const Icon = item.icon
return (
@@ -118,14 +121,14 @@ export default function MiddleRow() {
{/* Amber edge lighting */}
-
+
-
+
{alerts.map((alert, i) => (
diff --git a/src/components/Sidebar.tsx b/src/components/Sidebar.tsx
index e2f5fd4..d7d6a8a 100644
--- a/src/components/Sidebar.tsx
+++ b/src/components/Sidebar.tsx
@@ -28,51 +28,54 @@ export default function Sidebar({ collapsed, onToggle }: SidebarProps) {
return (