Redesign dashboard with steampunk neon theme and live gauges.

Ambient background, 3D neon cards, brass HUD styling, glowing charts, gauge rings, and refreshed Command Deck, Fleet Roster, Forge, and Calibrate pages.
This commit is contained in:
drjones
2026-05-27 00:43:34 -07:00
parent 6db9a33a20
commit 9d223b8137
20 changed files with 1638 additions and 307 deletions

View File

@@ -231,16 +231,28 @@
.agent-list-item {
cursor: pointer;
transition: all 0.2s ease;
transition: all 0.25s ease;
padding: 1rem !important;
}
.agent-list-item:hover {
border-color: var(--accent-blue);
border-color: var(--neon-cyan);
box-shadow: 0 0 16px rgba(0, 245, 255, 0.12);
}
.agent-list-item.selected {
border-color: var(--accent-blue);
background: rgba(59, 130, 246, 0.05);
border-color: var(--neon-cyan);
background: rgba(0, 245, 255, 0.06);
box-shadow: inset 0 0 24px rgba(0, 245, 255, 0.08), 0 0 20px rgba(0, 245, 255, 0.15);
}
.header-count {
font-size: 0.75rem;
letter-spacing: 0.2em;
color: var(--neon-cyan);
padding: 0.5rem 1rem;
border: 1px solid var(--border-brass);
background: rgba(8, 6, 4, 0.8);
}
.agent-list-header {
@@ -692,3 +704,272 @@
.table-card {
overflow-x: auto;
}
/* ═══ Steampunk Command Deck ═══ */
.command-deck {
max-width: 1600px;
}
.deck-hero {
display: flex;
align-items: flex-end;
justify-content: space-between;
gap: 2rem;
margin-bottom: 2rem;
padding-bottom: 1.5rem;
border-bottom: 1px solid var(--border-brass);
position: relative;
}
.deck-hero::after {
content: '';
position: absolute;
bottom: -1px;
left: 0;
width: 120px;
height: 2px;
background: linear-gradient(90deg, var(--neon-cyan), transparent);
box-shadow: 0 0 12px var(--neon-cyan);
}
.deck-eyebrow {
font-size: 0.65rem;
letter-spacing: 0.25em;
color: var(--brass);
margin-bottom: 0.5rem;
}
.deck-hero h1 {
font-size: 2.25rem;
background: linear-gradient(180deg, var(--brass-light) 20%, var(--text-primary) 80%);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
margin-bottom: 0.35rem;
}
.deck-hero-status {
display: flex;
align-items: center;
gap: 1rem;
padding: 1rem 1.25rem;
background: rgba(12, 10, 8, 0.8);
border: 1px solid var(--border-brass);
border-radius: 2px;
}
.live-beacon {
position: relative;
width: 48px;
height: 48px;
display: flex;
align-items: center;
justify-content: center;
}
.beacon-ring {
position: absolute;
inset: 0;
border: 2px solid var(--text-muted);
border-radius: 50%;
opacity: 0.4;
}
.live-beacon.on .beacon-ring {
border-color: var(--neon-green);
animation: pulse-glow 2s ease-in-out infinite;
box-shadow: 0 0 20px rgba(57, 255, 20, 0.3);
}
.beacon-core {
width: 12px;
height: 12px;
border-radius: 50%;
background: var(--text-muted);
}
.live-beacon.on .beacon-core {
background: var(--neon-green);
box-shadow: 0 0 12px var(--neon-green);
}
.live-label {
display: block;
font-size: 0.75rem;
letter-spacing: 0.15em;
color: var(--neon-cyan);
}
.live-sub {
font-size: 0.85rem;
color: var(--text-muted);
}
.gauge-row {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 1rem;
margin-bottom: 1.5rem;
}
.gauge-card {
display: flex;
align-items: center;
justify-content: center;
padding: 1.25rem !important;
min-height: 140px;
}
.steampunk-stats .stat-card-wrap {
text-align: center;
padding: 1.25rem !important;
}
.steampunk-stats .stat-label {
color: var(--brass-light);
letter-spacing: 0.15em;
}
.steampunk-stats .stat-value {
font-family: var(--font-tech);
font-size: 1.85rem;
}
.stat-dim {
font-size: 1rem;
color: var(--text-muted);
font-weight: 400;
}
.neon-glow-cyan {
color: var(--neon-cyan) !important;
text-shadow: 0 0 20px rgba(0, 245, 255, 0.5);
}
.neon-glow-purple {
color: var(--neon-purple) !important;
text-shadow: 0 0 20px rgba(178, 75, 243, 0.5);
}
.chart-row-full {
margin-bottom: 2rem;
}
.section-title {
display: flex;
align-items: center;
gap: 1rem;
font-size: 1.25rem;
color: var(--brass-light);
margin-bottom: 1.25rem;
}
.section-ornament {
color: var(--neon-cyan);
font-size: 0.75rem;
text-shadow: 0 0 8px var(--neon-cyan);
}
.section-line {
flex: 1;
height: 1px;
background: linear-gradient(90deg, var(--border-brass), transparent);
}
.machine-panel {
animation: fadeInSteampunk 0.5s ease backwards;
}
.agent-hash-bar {
height: 4px;
background: rgba(201, 162, 39, 0.15);
border-radius: 2px;
margin: 0.75rem 0 1rem;
overflow: hidden;
}
.agent-hash-fill {
height: 100%;
background: linear-gradient(90deg, var(--brass-dark), var(--neon-cyan));
box-shadow: 0 0 10px rgba(0, 245, 255, 0.4);
transition: width 0.6s ease;
border-radius: 2px;
}
.agent-detail-lines div {
border-bottom-color: rgba(201, 162, 39, 0.15) !important;
}
.steampunk-table {
width: 100%;
border-collapse: collapse;
}
.steampunk-table th {
font-family: var(--font-tech);
font-size: 0.7rem;
letter-spacing: 0.12em;
text-transform: uppercase;
color: var(--brass);
text-align: left;
padding: 0.75rem 1rem;
border-bottom: 1px solid var(--border-brass);
}
.steampunk-table td {
padding: 0.65rem 1rem;
border-bottom: 1px solid rgba(201, 162, 39, 0.08);
font-size: 0.9rem;
}
.steampunk-table tbody tr:hover {
background: rgba(0, 245, 255, 0.04);
}
.mono-sm {
font-family: var(--font-tech);
font-size: 0.8rem;
letter-spacing: 0.05em;
}
.empty-state {
grid-column: 1 / -1;
text-align: center;
padding: 3rem !important;
}
.empty-icon {
font-size: 3rem;
color: var(--brass);
opacity: 0.6;
margin-bottom: 1rem;
animation: gear-spin 30s linear infinite;
}
.page-header h1 {
font-family: var(--font-display);
font-size: 1.75rem;
color: var(--brass-light);
}
.page-subtitle {
color: var(--text-secondary);
font-size: 1rem;
margin-top: 0.35rem;
}
@media (max-width: 1100px) {
.gauge-row {
grid-template-columns: repeat(2, 1fr);
}
}
@media (max-width: 768px) {
.deck-hero {
flex-direction: column;
align-items: flex-start;
}
.gauge-row {
grid-template-columns: 1fr;
}
}