*,:before,:after{box-sizing:border-box;margin:0;padding:0}html,body,#root{background:#0d0d1a;width:100%;height:100%;overflow:hidden}*{box-sizing:border-box;margin:0;padding:0}body{color:#e0e0e0;background:#1a1a2e;height:100vh;font-family:Segoe UI,sans-serif;overflow:hidden}.app-container{flex-direction:column;height:100vh;display:flex}.app-header{background:#fff;border-bottom:2px solid #0f3460;align-items:center;gap:12px;padding:8px 24px;display:flex;box-shadow:0 2px 10px #0000004d}.app-header h1{color:#1a1a2e;letter-spacing:1px;font-size:1.2rem;font-weight:600}.app-header span{color:#444;font-size:.8rem}.status-dot{background:#0f8;border-radius:50%;width:10px;height:10px;margin-left:auto;animation:2s infinite pulse;box-shadow:0 0 6px #0f8}.status-dot.desconectado{background:#f44;box-shadow:0 0 6px #f44}@keyframes pulse{0%,to{opacity:1}50%{opacity:.4}}.main-content{flex:1;display:flex;overflow:hidden}.visor-container{background:#0d0d1a;flex:1;position:relative}.visor-placeholder{color:#444;flex-direction:column;justify-content:center;align-items:center;gap:16px;width:100%;height:100%;display:flex}.visor-placeholder .icon{font-size:4rem}.upload-btn{color:#e0e0e0;cursor:pointer;background:#0f3460;border:1px dashed #e94560;border-radius:8px;padding:12px 24px;font-size:.9rem;transition:all .2s}.upload-btn:hover{background:#e94560;border-style:solid}.panel-lateral{background:#16213e;border-left:2px solid #0f3460;flex-direction:column;width:320px;display:flex;overflow:hidden}.panel-header{text-transform:uppercase;letter-spacing:1px;color:#e94560;background:#0f3460;padding:16px;font-size:.85rem;font-weight:600}.sensores-lista{flex-direction:column;flex:1;gap:10px;padding:12px;display:flex;overflow-y:auto}.sensor-card{background:#1a1a2e;border:1px solid #0f3460;border-radius:8px;padding:12px;transition:border-color .3s}.sensor-card:hover{border-color:#e94560}.sensor-card.alerta{border-color:#f44;box-shadow:0 0 8px #ff44444d}.sensor-nombre{color:#888;margin-bottom:4px;font-size:.75rem}.sensor-elemento{color:#e0e0e0;margin-bottom:8px;font-size:.85rem;font-weight:600}.sensor-valor{color:#0f8;font-size:1.6rem;font-weight:700}.sensor-valor.alerta{color:#f44}.sensor-unidad{color:#888;margin-left:4px;font-size:.8rem}.sensor-timestamp{color:#555;margin-top:6px;font-size:.7rem}.sin-conexion{text-align:center;color:#555;padding:20px;font-size:.85rem}
