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 C, we derive conditions that are both necessary and sufficient for a transversal diagonal physical operator UZ to preserve C and induce UL. The group of Z-stabilizers in a CSS code C is determined by the dual of a classical [n, k1] binary code C1, and the group of X-stabilizers is determined by a classical [n, k2] binary code C2 that is contained in C1. The requirement that a diagonal physical operator UZ fixes a CSS code C leads to constraints on the congruence of weights in cosets of C2. 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 N1 inner qubits and N2 outer qubits, and to assemble a universal set of fault tolerant gates on the inner qubits.