[guided]We want to prove that $\mathfrak a^\perp$ is an ideal. By definition, this means that whenever $x \in \mathfrak a^\perp$ and $g \in \mathfrak g$, the bracket $[g,x]$ again lies in $\mathfrak a^\perp$. Since $\mathfrak a^\perp$ is defined by orthogonality to every element of $\mathfrak a$, the correct test is to pair $[g,x]$ with an arbitrary $a \in \mathfrak a$ under the Killing form.
Let $x \in \mathfrak a^\perp$, $g \in \mathfrak g$, and $a \in \mathfrak a$. The invariance identity proved above gives
\begin{align*}
\kappa_{\mathfrak g}([g,x],a)
&= \kappa_{\mathfrak g}(g,[x,a]).
\end{align*}
This expression does not yet use the fact that $x$ is orthogonal to $\mathfrak a$, because $g$ is not assumed to lie in $\mathfrak a^\perp$. We therefore move the bracket once more. By symmetry of the Killing form and then invariance,
\begin{align*}
\kappa_{\mathfrak g}(g,[x,a])
&= \kappa_{\mathfrak g}([x,a],g) \\
&= \kappa_{\mathfrak g}(x,[a,g]).
\end{align*}
Now the ideal hypothesis is used: since $\mathfrak a \trianglelefteq \mathfrak g$, the bracket $[a,g]$ belongs to $\mathfrak a$. Since $x \in \mathfrak a^\perp$, the definition of $\mathfrak a^\perp$ gives
\begin{align*}
\kappa_{\mathfrak g}(x,[a,g])=0.
\end{align*}
Thus
\begin{align*}
\kappa_{\mathfrak g}([g,x],a)=0
\end{align*}
for every $a \in \mathfrak a$. This is exactly the statement that $[g,x] \in \mathfrak a^\perp$. Therefore $\mathfrak a^\perp$ is closed under brackets with all elements of $\mathfrak g$, so $\mathfrak a^\perp$ is an ideal of $\mathfrak g$.[/guided]