*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,sans-serif;line-height:1.6;color:#333;background:linear-gradient(135deg,#667eea,#764ba2);min-height:100vh}#app{max-width:1200px;margin:0 auto;padding:20px}header{text-align:center;margin-bottom:40px;color:#fff}header h1{font-size:2.5rem;margin-bottom:10px;text-shadow:2px 2px 4px rgba(0,0,0,.3)}header p{font-size:1.2rem;opacity:.9}main{background:#fff;border-radius:12px;padding:30px;box-shadow:0 10px 30px #0003}.controls{margin-bottom:30px}.date-selector{margin-bottom:20px}.date-selector label{display:block;margin-bottom:8px;font-weight:600;color:#555}.date-selector select{padding:10px 15px;border:2px solid #e0e0e0;border-radius:8px;font-size:1rem;background:#fff;cursor:pointer;transition:border-color .3s ease}.date-selector select:focus{outline:none;border-color:#667eea}.summary-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:20px;margin-bottom:20px}.summary-card{background:linear-gradient(135deg,#f093fb,#f5576c);color:#fff;padding:20px;border-radius:10px;text-align:center;box-shadow:0 4px 15px #0000001a}.summary-card.charging{background:linear-gradient(135deg,#4facfe,#00f2fe)}.summary-card.discharging{background:linear-gradient(135deg,#fa709a,#fee140)}.summary-card h4{font-size:.9rem;margin-bottom:10px;opacity:.9;text-transform:uppercase;letter-spacing:1px}.summary-card .value{font-size:1.8rem;font-weight:700;margin-bottom:5px}.summary-card .unit{font-size:.9rem;opacity:.8}.charts-container{display:grid;grid-template-columns:repeat(auto-fit,minmax(500px,1fr));gap:30px;margin-bottom:40px}.chart-section{background:#f8f9fa;padding:20px;border-radius:10px;border:1px solid #e9ecef}.chart-section h3{margin-bottom:20px;color:#495057;text-align:center}.chart-section canvas{max-width:100%;height:300px!important}.data-table-container{margin-top:30px}.data-table-container h3{margin-bottom:20px;color:#495057}.table-wrapper{overflow-x:auto;border-radius:8px;border:1px solid #e9ecef}table{width:100%;border-collapse:collapse;background:#fff}th,td{padding:12px 15px;text-align:left;border-bottom:1px solid #e9ecef}th{background:#f8f9fa;font-weight:600;color:#495057;position:sticky;top:0}tr:hover{background:#f8f9fa}.charging-row{border-left:4px solid #4facfe}.discharging-row{border-left:4px solid #fa709a}.loading{text-align:center;padding:40px;color:#6c757d}.loading:after{content:"...";animation:dots 1.5s steps(3,end) infinite}@keyframes dots{0%,20%{content:"."}40%{content:".."}60%,to{content:"..."}}.error{background:#f8d7da;color:#721c24;padding:15px;border-radius:8px;border:1px solid #f5c6cb;margin:20px 0}.auth-container{display:flex;justify-content:center;align-items:center;min-height:80vh}.auth-form{background:#fff;border-radius:12px;padding:40px;box-shadow:0 10px 30px #0003;max-width:500px;width:100%;text-align:center}.auth-form h1{color:#667eea;margin-bottom:10px;font-size:2rem}.auth-form p{margin-bottom:30px;color:#666;font-size:1.1rem}.form-group{margin-bottom:20px;text-align:left}.form-group label{display:block;margin-bottom:5px;font-weight:600;color:#333}.form-group input{width:100%;padding:12px;border:2px solid #e1e5e9;border-radius:8px;font-size:16px;transition:border-color .3s ease}.form-group input:focus{outline:none;border-color:#667eea;box-shadow:0 0 0 3px #667eea1a}.form-group small{display:block;margin-top:5px;color:#666;font-size:.9rem}.connect-btn{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border:none;padding:15px 30px;border-radius:8px;font-size:16px;font-weight:600;cursor:pointer;transition:transform .2s ease,box-shadow .2s ease;width:100%;margin-top:10px}.connect-btn:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 8px 25px #667eea4d}.connect-btn:disabled{opacity:.7;cursor:not-allowed}.error-message{background:#fee;color:#c33;padding:12px;border-radius:8px;border:1px solid #fcc;margin-top:15px;text-align:center}.reconnect-btn{background:#fff3;color:#fff;border:2px solid rgba(255,255,255,.3);padding:8px 16px;border-radius:6px;font-size:14px;cursor:pointer;transition:all .3s ease;margin-left:20px}.reconnect-btn:hover{background:#ffffff4d;border-color:#ffffff80}.stored-creds-info{background:#f0f9ff;border:2px solid #bfdbfe;border-radius:8px;padding:15px;margin-bottom:20px;text-align:center}.stored-creds-info p{margin:0;color:#1e40af}.stored-creds-info strong{color:#1d4ed8}.form-actions{display:flex;flex-direction:column;gap:10px;margin-top:20px}.connect-btn.secondary{background:linear-gradient(135deg,#10b981,#059669);width:100%;margin-top:0}.connect-btn.secondary:hover:not(:disabled){box-shadow:0 8px 25px #10b9814d}.clear-btn{background:#f87171;color:#fff;border:none;padding:12px 20px;border-radius:6px;font-size:14px;cursor:pointer;transition:all .2s ease;width:100%}.clear-btn:hover{background:#ef4444;transform:translateY(-1px)}.loading-message{text-align:center;padding:40px 20px}.spinner{width:50px;height:50px;border:4px solid #f3f3f3;border-top:4px solid #667eea;border-radius:50%;animation:spin 1s linear infinite;margin:0 auto 20px}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@media (max-width: 768px){#app{padding:10px}main{padding:20px}header h1{font-size:2rem}.charts-container{grid-template-columns:1fr}.chart-section canvas{height:250px!important}.summary-cards{grid-template-columns:1fr}}
