.header{background:linear-gradient(135deg,var(--primary-blue),#667eea);color:#fff;padding:1.5rem 2rem;display:flex;justify-content:space-between;align-items:center;box-shadow:var(--shadow);position:sticky;top:0;z-index:1000}.header-left{display:flex;align-items:center;gap:1rem}.header-icon{font-size:2rem;animation:pulse 2s infinite}@keyframes pulse{0%,to{transform:scale(1)}50%{transform:scale(1.1)}}.header-title h1{font-size:1.5rem;font-weight:700;margin:0}.header-subtitle{font-size:.85rem;opacity:.9}.header-right{display:flex;align-items:center;gap:1.5rem}.connection-badge{display:flex;align-items:center;gap:.5rem;background:#fff3;padding:.5rem 1rem;border-radius:20px;font-size:.9rem}.connection-dot{width:10px;height:10px;border-radius:50%;background:var(--primary-red);animation:blink 1.5s infinite}.connection-dot.connected{background:var(--primary-green)}@keyframes blink{0%,to{opacity:1}50%{opacity:.3}}.container{display:grid;grid-template-columns:250px 1fr;min-height:calc(100vh - 80px)}.sidebar{background:var(--sidebar-dark);padding:2rem 0;box-shadow:2px 0 10px #0000000d;transition:var(--transition)}.sidebar-nav{list-style:none}.sidebar-nav li{margin:.5rem 0}.sidebar-nav a{display:flex;align-items:center;gap:1rem;padding:1rem 2rem;color:var(--text-dark);text-decoration:none;transition:var(--transition)}.sidebar-nav a:hover,.sidebar-nav a.active{background:linear-gradient(90deg,var(--primary-blue),transparent);border-left:4px solid var(--primary-blue)}.sidebar-nav i{font-size:1.2rem;width:24px}.main-content{padding:2rem;overflow-y:auto}@media (max-width: 1024px){.container{grid-template-columns:1fr}.sidebar{display:none}.header-title h1{font-size:1.2rem}}@media (max-width: 768px){.main-content,.header{padding:1rem}.header-right{gap:.5rem}.connection-badge{font-size:.75rem;padding:.4rem .8rem}}.card{background:var(--card-dark);border-radius:15px;padding:1.5rem;box-shadow:var(--shadow);transition:var(--transition)}.card:hover{transform:translateY(-5px);box-shadow:0 8px 25px #00000026}.card-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.card-title{font-size:1.1rem;font-weight:600;display:flex;align-items:center;gap:.5rem}.card-icon{font-size:1.5rem}.status-card{text-align:center}.status-value{font-size:2.5rem;font-weight:700;margin:1rem 0}.status-label{font-size:.9rem;opacity:.7}.status-indicator-wrapper{display:flex;align-items:center;justify-content:center;gap:.5rem;margin-bottom:.5rem}.status-indicator{display:inline-block;width:12px;height:12px;border-radius:50%}.status-indicator.status-on{background:var(--primary-green);box-shadow:0 0 10px var(--primary-green)}.status-indicator.status-off{background:var(--primary-red);box-shadow:0 0 10px var(--primary-red)}.status-indicator.status-warning{background:var(--primary-yellow);box-shadow:0 0 10px var(--primary-yellow)}.dashboard-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:1.5rem;margin-bottom:2rem}.power-alert{padding:1rem;border-radius:10px;margin:1rem 0;display:flex;align-items:center;gap:1rem;animation:pulse-alert 1.5s infinite}.power-alert.normal{background:#50c8781a;border-left:4px solid var(--primary-green)}.power-alert.warning{background:#ffd7001a;border-left:4px solid var(--primary-yellow)}.power-alert.danger{background:#ff6b6b1a;border-left:4px solid var(--primary-red)}.gauge-container{position:relative;width:200px;height:200px;margin:1rem auto;display:flex;align-items:center;justify-content:center}.gauge-value{text-align:center}.gauge-number{font-size:2rem;font-weight:700}.gauge-unit{font-size:.9rem;opacity:.7}.toggle-switch{position:relative;display:inline-block;width:60px;height:30px}.toggle-switch input{opacity:0;width:0;height:0}.toggle-slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background-color:#ccc;transition:.4s;border-radius:30px}.toggle-slider:before{position:absolute;content:"";height:22px;width:22px;left:4px;bottom:4px;background-color:#fff;transition:.4s;border-radius:50%}.toggle-switch input:checked+.toggle-slider{background:linear-gradient(135deg,var(--primary-green),#45B849)}.toggle-switch input:checked+.toggle-slider:before{transform:translate(30px)}.control-buttons{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:1rem;margin-top:1rem}.control-btn{padding:1rem;border:none;border-radius:10px;font-size:1rem;font-weight:600;cursor:pointer;transition:var(--transition);display:flex;align-items:center;justify-content:center;gap:.5rem}.btn-primary{background:linear-gradient(135deg,var(--primary-blue),#667eea);color:#fff}.btn-success{background:linear-gradient(135deg,var(--primary-green),#45B849);color:#fff}.btn-danger{background:linear-gradient(135deg,var(--primary-red),#E85D75);color:#fff}.btn-warning{background:linear-gradient(135deg,var(--primary-yellow),#FFA500);color:#fff}.control-btn:hover{transform:scale(1.05);box-shadow:0 5px 15px #0003}.control-btn:active{transform:scale(.98)}.control-btn:disabled{opacity:.5;cursor:not-allowed}.charts-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(400px,1fr));gap:1.5rem;margin-top:2rem}.chart-container{position:relative;height:300px}.chart-average-box{position:absolute;bottom:-20px;right:10px;background:#000000b3;border-radius:6px;padding:5px 8px;font-size:10px;font-weight:600;color:#ecf0f1;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);box-shadow:0 2px 8px #0000004d;z-index:10}.chart-average-label{font-size:8px;opacity:.8;margin-bottom:1px}.chart-average-value{font-size:11px;font-weight:700}.command-log{background:#1a1d2e;border-radius:10px;padding:1rem;max-height:300px;overflow-y:auto;font-family:Courier New,monospace}.log-entry{padding:.5rem;margin:.3rem 0;border-left:3px solid var(--primary-blue);background:#4a90e21a;border-radius:5px;font-size:.85rem;animation:slideIn .3s ease}.log-entry.warning{border-left-color:var(--primary-yellow);background:#ffd7001a}.log-entry.error{border-left-color:var(--primary-red);background:#ff6b6b1a}.log-entry.success{border-left-color:var(--primary-green);background:#50c8781a}.log-timestamp{color:#888;margin-right:.5rem}.log-message{color:#ecf0f1}@media (max-width: 768px){.charts-grid{grid-template-columns:1fr}}.history-page{max-width:1400px;margin:0 auto}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:1.5rem;margin-bottom:2rem}.stat-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.stat-icon{font-size:2rem;padding:.8rem;border-radius:12px}.stat-value{font-size:2rem;font-weight:700;margin:.5rem 0}.stat-label{font-size:.9rem;opacity:.7}.chart-container{height:400px;position:relative}.filter-controls{display:flex;gap:1rem;margin-bottom:1.5rem;flex-wrap:wrap}.filter-btn{padding:.6rem 1.2rem;border:2px solid var(--primary-blue);background:transparent;color:var(--primary-blue);border-radius:8px;cursor:pointer;font-weight:600;transition:var(--transition)}.filter-btn:hover,.filter-btn.active{background:var(--primary-blue);color:#fff}.export-btn{padding:.6rem 1.5rem;background:linear-gradient(135deg,var(--primary-green),#45B849);color:#fff;border:none;border-radius:8px;cursor:pointer;font-weight:600;display:flex;align-items:center;gap:.5rem;transition:var(--transition)}.export-btn:hover{transform:scale(1.05);box-shadow:0 5px 15px #50c8784d}.history-table{width:100%;border-collapse:collapse}.history-table thead{background:linear-gradient(135deg,var(--primary-blue),#667eea);color:#fff}.history-table th,.history-table td{padding:1rem;text-align:left;border-bottom:1px solid rgba(255,255,255,.1)}.history-table tbody tr{transition:var(--transition)}.history-table tbody tr:hover{background:#4a90e21a}.duration-badge{display:inline-block;padding:.4rem .8rem;border-radius:20px;font-size:.85rem;font-weight:600}.duration-short{background:#50c87833;color:var(--primary-green)}.duration-medium{background:#ffd70033;color:orange}.duration-long{background:#ff6b6b33;color:var(--primary-red)}.voltage-drop{font-weight:600;color:var(--primary-red)}.energy-value{font-weight:600;color:var(--primary-purple)}.empty-state{text-align:center;padding:3rem;opacity:.6}.empty-state i{font-size:4rem;margin-bottom:1rem}.loading-state{text-align:center;padding:2rem;font-size:1.2rem}@media (max-width: 768px){.stats-grid{grid-template-columns:1fr}.filter-controls{flex-direction:column}.history-table{font-size:.85rem}.history-table th,.history-table td{padding:.6rem}}.global-control{display:flex;justify-content:center;align-items:center;min-height:calc(100vh - 80px);padding:20px}.control-container{background:#fff;border-radius:20px;box-shadow:0 20px 60px #0000004d;padding:40px;max-width:500px;width:100%;text-align:center}.control-container h1{background:linear-gradient(135deg,#d4af37,#000,#d4af37);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;margin-bottom:10px;font-size:1.5em;font-weight:700;letter-spacing:1px}.subtitle{color:#666;margin-bottom:20px;font-size:1.1em}.connection-status{display:inline-block;padding:8px 16px;border-radius:20px;font-size:.9em;margin-bottom:30px;font-weight:700}.connection-status.connected{background:#4ade80;color:#fff}.connection-status.disconnected{background:#ef4444;color:#fff}.connection-status.connecting{background:#fbbf24;color:#fff}.led-indicator{width:100px;height:100px;border-radius:50%;margin:0 auto 20px;background:#ef4444;box-shadow:0 0 40px #ef444480;transition:all .3s ease}.led-indicator.on{background:#4ade80;box-shadow:0 0 40px #4ade80cc}.led-indicator.off{background:#ef4444;box-shadow:0 0 40px #ef444480}.status{font-size:1.5em;font-weight:700;margin-bottom:30px;color:#ef4444}.status.on{color:#4ade80}.button-group{display:flex;gap:20px;margin-top:30px}.btn{flex:1;padding:20px 30px;font-size:1.2em;font-weight:700;border:none;border-radius:12px;cursor:pointer;transition:all .3s ease;color:#fff;text-transform:uppercase;letter-spacing:1px}.btn:hover{transform:translateY(-2px);box-shadow:0 10px 20px #0003}.btn:active{transform:translateY(0)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-on{background:linear-gradient(135deg,#4ade80,#22c55e)}.btn-on:hover{background:linear-gradient(135deg,#22c55e,#16a34a)}.btn-off{background:linear-gradient(135deg,#ef4444,#dc2626)}.btn-off:hover{background:linear-gradient(135deg,#dc2626,#b91c1c)}.btn-success{background:linear-gradient(135deg,#4ade80,#22c55e)}.btn-danger{background:linear-gradient(135deg,#ef4444,#dc2626)}.btn-purple{background:linear-gradient(135deg,#a855f7,#9333ea)}.pulse-section{margin-top:30px;padding:20px;background:#fef3c7;border-radius:10px;border:2px solid #fbbf24}.pulse-section h3{color:#f59e0b;margin-bottom:10px;font-size:1.2em}.sensor-section{margin-top:30px;padding:20px;background:linear-gradient(135deg,#dbeafe,#bfdbfe);border-radius:10px;border:2px solid #3b82f6}.sensor-section h3{color:#1e40af;margin-bottom:15px;font-size:1.3em}.sensor-group{background:#ffffff80;padding:10px;border-radius:8px;margin-bottom:10px}.sensor-group-title{font-size:.85em;color:#1e40af;font-weight:700;margin-bottom:8px;text-align:center}.sensor-display{display:flex;justify-content:space-around;gap:15px}.sensor-value{flex:1;background:#fff;padding:10px;border-radius:8px;box-shadow:0 2px 8px #0000001a}.sensor-label{font-size:.75em;color:#64748b;margin-bottom:3px;text-transform:uppercase;letter-spacing:1px}.sensor-reading{font-size:1.3em;font-weight:700;color:#1e40af;font-family:Courier New,monospace}.sensor-unit{font-size:.8em;color:#64748b;margin-left:3px}.power-alert{margin-top:30px;padding:20px;border-radius:10px;border:3px solid;transition:all .3s ease}.power-alert.normal{background:linear-gradient(135deg,#d1fae5,#a7f3d0);border-color:#10b981}.power-alert.warning{background:linear-gradient(135deg,#fee2e2,#fecaca);border-color:#ef4444;animation:pulse-alert 1.5s infinite}@keyframes pulse-alert{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}.power-alert h3{margin-bottom:10px;font-size:1.3em}.power-alert.normal h3{color:#065f46}.power-alert.warning h3{color:#991b1b}.power-status-text{font-size:1.1em;font-weight:700;margin-top:10px}.power-alert.normal .power-status-text{color:#059669}.power-alert.warning .power-status-text{color:#dc2626}.info{margin-top:30px;padding:20px;background:#f3f4f6;border-radius:10px;text-align:left}.info h3{color:#667eea;margin-bottom:10px}.info p{color:#666;font-size:.9em;line-height:1.6;margin-bottom:5px}.command-log{margin-top:20px;padding:20px;background:#1f2937;border-radius:10px;max-height:300px;overflow-y:auto}.command-log h3{color:#60a5fa;margin-bottom:15px;font-size:1.2em}.command-log-content{font-family:Courier New,monospace;font-size:.9em;line-height:1.8}.command-entry{padding:8px;margin-bottom:5px;background:#374151;border-left:3px solid #60a5fa;border-radius:4px;color:#e5e7eb;animation:slideIn .3s ease}.command-entry.warning{border-left-color:#f59e0b;background:#451a03;color:#fbbf24}.command-entry.success{border-left-color:#10b981;color:#6ee7b7}.command-entry.error{border-left-color:#ef4444;background:#450a0a;color:#fca5a5}@keyframes slideIn{0%{opacity:0;transform:translate(-10px)}to{opacity:1;transform:translate(0)}}.command-timestamp{color:#9ca3af;font-size:.85em;margin-right:10px}:root{--primary-blue: #4A90E2;--primary-green: #50C878;--primary-yellow: #FFD700;--primary-red: #FF6B6B;--primary-purple: #9D4EDD;--bg-light: #F5F7FA;--bg-dark: #1A1D2E;--card-light: #FFFFFF;--card-dark: #252B42;--text-light: #2C3E50;--text-dark: #ECF0F1;--sidebar-light: #FFFFFF;--sidebar-dark: #16213E;--shadow: 0 4px 15px rgba(0, 0, 0, .1);--transition: all .3s ease}*{margin:0;padding:0;box-sizing:border-box}body{font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;background:var(--bg-dark);color:var(--text-dark);transition:var(--transition);overflow-x:hidden}#root{min-height:100vh}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--bg-dark)}::-webkit-scrollbar-thumb{background:var(--primary-blue);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#3a7bc8}
