  Divisible codes are defined by the property that codeword weights share a
common divisor greater than one. They are used to design signals for
communications and sensing, and this paper explores how they can be used to
protect quantum information as it is transformed by logical gates. Given a CSS
code $\mathcal{C}$, we derive conditions that are both necessary and sufficient
for a transversal diagonal physical operator $U_Z$ to preserve $\mathcal{C}$
and induce $U_L$. The group of $Z$-stabilizers in a CSS code $\mathcal{C}$ is
determined by the dual of a classical $[n, k_1]$ binary code $\mathcal{C}_1$,
and the group of $X$-stabilizers is determined by a classical $[n, k_2]$ binary
code $\mathcal{C}_2$ that is contained in $\mathcal{C}_1$. The requirement that
a diagonal physical operator $U_Z$ fixes a CSS code $\mathcal{C}$ leads to
constraints on the congruence of weights in cosets of $\mathcal{C}_2$. These
constraints are a perfect fit to divisible codes, and represent an opportunity
to take advantage of the extensive literature on classical codes with two or
three weights. We construct new families of CSS codes using cosets of the first
order Reed Muller code defined by quadratic forms. We provide a simple
alternative to the standard method of deriving the coset weight distributions
(based on Dickson normal form) that may be of independent interest. Finally, we
develop an approach to circumventing the Eastin-Knill Theorem which states that
no QECC can implement a universal set of logical gates through transversal
gates alone. The essential idea is to design stabilizer codes in layers, with
$N_1$ inner qubits and $N_2$ outer qubits, and to assemble a universal set of
fault tolerant gates on the inner qubits.
