z-index и stacking context
Основы
z-index управляет порядком наложения по оси Z. Работает только на позиционированных элементах (position ≠ static) или flex/grid-элементах.
Stacking context
Элемент создаёт новый stacking context при наличии:
position ≠ static+z-index ≠ autoopacity < 1transform,filter,perspectiveisolation: isolate
Внутри stacking context z-index работает только между дочерними элементами - не выходит наружу.
<div style="position:relative; z-index:1"> <!-- контекст A -->
<div style="position:relative; z-index:9999">
<!-- 9999 работает только внутри A -->
</div>
</div>
<div style="position:relative; z-index:2"> <!-- контекст B, выше A -->
</div>
Элемент с z-index:9999 будет под вторым div-ом, потому что его контекст (z-index:1) ниже.