Find the First Bracket Match
Brain-Flak, 685, 155, 151, 137 bytes

(())({&lt;{}({}()&lt;(()()()())&gt;)({}(&lt;&gt;))&lt;&gt;{(({})){({}[()])&lt;&gt;}{}}{}&lt;&gt;
([{}()]{})(({})){{}({}[()])(&lt;()&gt;)}{}(&lt;&gt;)&lt;&gt;{{}&lt;&gt;{}({}&lt;&gt;)}{}(&lt;&gt;[]&lt;&gt;)&gt;()}&lt;&gt;)


Try it online!

136 bytes of code, plus one byte for -a. One indexed.

530 bytes golfed off! That's probably the largest golf I've ever done.

14 bytes saved thanks to Riley!

This abuses a formula of the opening/closing parenthesis: if you take the ASCII values, increment it by one, and take modulo of 4, the openers (({[&lt;) will always get 0 or 1, whereas the closers ()}]&gt;) will always get 2 or 3.

Explanation:

#Push 1
(())

#While true
({&lt;

    #Pop stack height
    {}

    #Compute (TOS + 1) % 4
    ({}()&lt;(()()()())&gt;)({}(&lt;&gt;))&lt;&gt;{(({})){({}[()])&lt;&gt;}{}}{}&lt;&gt;([{}()]{})

    #Decrement if positive
    (({})){{}({}[()])(&lt;()&gt;)}{}

    #Push 0 onto alternate
    (&lt;&gt;)

    #Toggle back
    &lt;&gt;

    #Pop two zeros from alternate if closer
    {{}&lt;&gt;{}({}&lt;&gt;)}{}

    #Push height of alternate stack
    (&lt;&gt;[]&lt;&gt;)

#Make each time through evaluate to 1
&gt;()

#Endwhile
}

#Push the number of loops onto the offstack
&lt;&gt;)