From e0495eeb9c16ca3f5ddabd7d4ac7eec21d63ebb2 Mon Sep 17 00:00:00 2001 From: MayaTheShy Date: Mon, 16 Feb 2026 02:02:31 -0500 Subject: [PATCH] feat: Revamp Control Panel styling with enhanced layout, improved responsiveness, and updated visual elements --- client/src/components/ControlPanel.css | 232 ++++++++++++++++++++----- 1 file changed, 191 insertions(+), 41 deletions(-) diff --git a/client/src/components/ControlPanel.css b/client/src/components/ControlPanel.css index 74e368a..a680e3f 100644 --- a/client/src/components/ControlPanel.css +++ b/client/src/components/ControlPanel.css @@ -72,69 +72,136 @@ } .turtle-list { - width: 350px; - border-right: 2px solid #334155; + width: 380px; + border-right: 1px solid #334155; display: flex; flex-direction: column; - background: #1e293b; + background: linear-gradient(180deg, #1e293b 0%, #0f172a 100%); } .turtle-list h2 { - padding: 1rem 1.5rem; - font-size: 1.25rem; - font-weight: 600; - border-bottom: 1px solid #334155; + padding: 1.25rem 1.5rem; + font-size: 1rem; + font-weight: 700; + letter-spacing: 0.05em; + text-transform: uppercase; + border-bottom: 2px solid #334155; + color: #94a3b8; + background: #1e293b; } .turtle-cards { flex: 1; overflow-y: auto; padding: 1rem; + gap: 0.75rem; + display: flex; + flex-direction: column; +} + +.turtle-cards::-webkit-scrollbar { + width: 8px; +} + +.turtle-cards::-webkit-scrollbar-track { + background: #0f172a; + border-radius: 4px; +} + +.turtle-cards::-webkit-scrollbar-thumb { + background: #334155; + border-radius: 4px; +} + +.turtle-cards::-webkit-scrollbar-thumb:hover { + background: #475569; } .empty-state { - padding: 2rem 1.5rem; + padding: 3rem 2rem; text-align: center; - color: #94a3b8; -} - -.empty-state .hint { - margin-top: 0.5rem; - font-size: 0.875rem; color: #64748b; } +.empty-state::before { + content: '🔍'; + display: block; + font-size: 3rem; + margin-bottom: 1rem; + opacity: 0.5; +} + +.empty-state .hint { + margin-top: 1rem; + font-size: 0.875rem; + color: #475569; + font-style: italic; +} + .turtle-card { - background: #0f172a; - border: 2px solid #334155; - border-radius: 0.5rem; - padding: 1rem; - margin-bottom: 0.75rem; + background: linear-gradient(135deg, #1e293b 0%, #0f172a 100%); + border: 1px solid #334155; + border-radius: 0.75rem; + padding: 1.25rem; cursor: pointer; - transition: all 0.2s; + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); + position: relative; + overflow: hidden; +} + +.turtle-card::before { + content: ''; + position: absolute; + top: 0; + left: 0; + right: 0; + height: 3px; + background: linear-gradient(90deg, #3b82f6, #60a5fa); + transform: scaleX(0); + transition: transform 0.3s ease; } .turtle-card:hover { border-color: #60a5fa; - transform: translateX(4px); + transform: translateY(-2px); + box-shadow: 0 8px 16px rgba(0, 0, 0, 0.3), 0 0 20px rgba(96, 165, 250, 0.1); +} + +.turtle-card:hover::before { + transform: scaleX(1); } .turtle-card.selected { border-color: #60a5fa; - background: #1e293b; - box-shadow: 0 0 20px rgba(96, 165, 250, 0.3); + background: linear-gradient(135deg, #1e3a5f 0%, #0f172a 100%); + box-shadow: 0 0 0 2px rgba(96, 165, 250, 0.2), 0 8px 24px rgba(96, 165, 250, 0.3); +} + +.turtle-card.selected::before { + transform: scaleX(1); } .turtle-header { display: flex; justify-content: space-between; align-items: center; - margin-bottom: 0.75rem; + margin-bottom: 1rem; + padding-bottom: 0.75rem; + border-bottom: 1px solid #334155; } .turtle-header h3 { font-size: 1.125rem; - font-weight: 600; + font-weight: 700; + color: #f1f5f9; + display: flex; + align-items: center; + gap: 0.5rem; +} + +.turtle-header h3::before { + content: '🐢'; + font-size: 1.25rem; } .mode-badge { @@ -149,57 +216,126 @@ .turtle-stats { display: flex; flex-direction: column; - gap: 0.5rem; + gap: 0.625rem; } .turtle-stats .stat { display: flex; justify-content: space-between; + align-items: center; font-size: 0.875rem; + padding: 0.5rem; + background: rgba(15, 23, 42, 0.5); + border-radius: 0.375rem; + border: 1px solid rgba(51, 65, 85, 0.5); } .turtle-stats .label { color: #94a3b8; + font-weight: 500; + display: flex; + align-items: center; + gap: 0.5rem; } .turtle-stats .value { color: #f1f5f9; - font-weight: 500; + font-weight: 600; font-family: 'Courier New', monospace; + font-size: 0.9rem; } .turtle-details { flex: 1; - padding: 2rem; + padding: 2.5rem; overflow-y: auto; + background: linear-gradient(180deg, #0f172a 0%, #020617 100%); +} + +.turtle-details::-webkit-scrollbar { + width: 10px; +} + +.turtle-details::-webkit-scrollbar-track { + background: #0f172a; + border-radius: 5px; +} + +.turtle-details::-webkit-scrollbar-thumb { + background: #334155; + border-radius: 5px; +} + +.turtle-details::-webkit-scrollbar-thumb:hover { + background: #475569; } .turtle-details.empty { display: flex; align-items: center; justify-content: center; + flex-direction: column; color: #64748b; - font-size: 1.125rem; + font-size: 1.25rem; + gap: 1rem; +} + +.turtle-details.empty::before { + content: '👈'; + font-size: 4rem; + opacity: 0.5; + animation: bounce 2s infinite; +} + +@keyframes bounce { + 0%, 100% { + transform: translateX(0); + } + 50% { + transform: translateX(-10px); + } } .turtle-details h2 { - font-size: 1.75rem; - margin-bottom: 1.5rem; - color: #60a5fa; + font-size: 2rem; + margin-bottom: 2rem; + color: #f1f5f9; + font-weight: 700; + display: flex; + align-items: center; + gap: 0.75rem; + padding-bottom: 1rem; + border-bottom: 2px solid #334155; +} + +.turtle-details h2::before { + content: '🐢'; + font-size: 2rem; } .detail-section { margin-bottom: 2rem; - padding: 1.5rem; - background: #1e293b; - border-radius: 0.5rem; + padding: 1.75rem; + background: linear-gradient(135deg, #1e293b 0%, #0f172a 100%); + border-radius: 0.75rem; border: 1px solid #334155; + box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); + transition: all 0.3s ease; +} + +.detail-section:hover { + border-color: #475569; + box-shadow: 0 6px 12px rgba(0, 0, 0, 0.2); } .detail-section h3 { - font-size: 1.25rem; - margin-bottom: 1rem; - color: #f1f5f9; + font-size: 1.375rem; + margin-bottom: 1.25rem; + color: #60a5fa; + font-weight: 700; + display: flex; + align-items: center; + gap: 0.5rem; } .detail-section h4 { @@ -211,24 +347,38 @@ .status-grid { display: grid; grid-template-columns: repeat(2, 1fr); - gap: 1rem; + gap: 1.25rem; } .status-item { display: flex; flex-direction: column; - gap: 0.25rem; + gap: 0.5rem; + padding: 1rem; + background: rgba(15, 23, 42, 0.6); + border-radius: 0.5rem; + border: 1px solid rgba(51, 65, 85, 0.5); + transition: all 0.2s ease; +} + +.status-item:hover { + background: rgba(30, 41, 59, 0.6); + border-color: #60a5fa; } .status-item .label { color: #94a3b8; font-size: 0.875rem; + font-weight: 600; + text-transform: uppercase; + letter-spacing: 0.05em; } .status-item .value { color: #f1f5f9; - font-weight: 600; + font-weight: 700; font-family: 'Courier New', monospace; + font-size: 1.125rem; } .command-grid {