The correct phrase is:
Will you be late tonight?
One is not "late" until a certain time has passed, so it is incorrect to ask if someone is late in the present tense when speaking about a later time (tonight).
You could ask:
Are you going to be late tonight?
Using "to be" as an auxiliary verb allows for the different tense.
Firstly, note that the best gift [that] I [have] ever have isn't a "sentence" - it's a "noun phrase" (within which the "head noun" is gift). Also note that it's perfect okay to include or omit either/both the "relativiser" that and the "auxiliary verb" have, and this has no effect on the meaning (it's entirely a stylistic choice).
BUT the second instance of have isn't an auxiliary. It's a normal verb usage, with the meaning get, obtain, acquire, receive,... So our choice is between...
1: This is the best gift I ever get
2: This is the best gift I ever got
3: This is the best gift I will ever get
In all those examples, the optional word ever provides emphasis (drawing attention to the fact that I never get or got or will get any gift better than this on any occasions whatsoever).
In most contexts, Past Tense (best I ever had) is the correct choice (in which case you're not necessarily ruling out the possibility of getting an even better gift in the future). You're saying that at no time in the past did you ever have anything better.
But note that Present Tense (best I ever have) doesn't exactly refer to present = now = time of speaking. It's the "timeless" use of the verb form, implying "never at all" (in the Past, Present, OR Future). And that's probably not the intended meaning.
It's possible to be even more emphatic by using could instead of will for the "future" reference in #3 above...
4: This is the best gift I could ever get
(there never was and never could be a better gift)
...and it's possible, though a bit clunky, to use that form for the "Past up until Present" context...
5: This is the best gift I could ever have got
(no past or current gift is better, but feasibly there might be a better future gift)
Best Answer
It's not the staying that happened in the past. It's the obligation to stay. Might have had to stay indicates that at some point before now, he was given the obligation to stay.
If you want to describe it strictly in the present tense, you could say, "He might be having to stay late tonight." It sounds a little odd to my ear, but I think that's simply because have doesn't often appear in the present progressive (be having) tense.