     public func captchaSiteURL() -> URL {
         return (MWKLanguageLinkController.sharedInstance().appLanguage?.siteURL())!
     }
+    
+    fileprivate var showCaptchaContainer: Bool = false {
+        didSet {
+            UIView.animate(withDuration: 0.4, animations: {
+                self.setCaptchaAlpha(self.showCaptchaContainer ? 1 : 0)
+            }, completion: { _ in
+                self.enableProgressiveButtonIfNecessary()
+            })
+        }
+    }
+
+    fileprivate func setCaptchaAlpha(_ alpha: CGFloat) {
+        captchaContainer.alpha = alpha
+        captchaTitleLabel.alpha = alpha
+    }
 }

    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        
        captchaViewController = WMFCaptchaViewController.wmf_initialViewControllerFromClassStoryboard()
        captchaViewController?.captchaDelegate = self
        wmf_addChildController(captchaViewController, andConstrainToEdgesOfContainerView: captchaContainer)

        passwordUnderlineHeight.constant = 1.0 / UIScreen.main.scale
    
        view.wmf_configureSubviewsForDynamicType()
        
        setCaptchaAlpha(0)
    }
    
    @IBAction func textFieldDidChange(_ sender: UITextField) {
