         detailSV.frame = self.bounds
         backgroundIV.frame = detailSV.bounds
         
+        self.detailFrame.size = CGSize(width: LayoutHelper.XScreen(85), height: LayoutHelper.YScreen(100) - 20)
+        self.detailFrame.origin.x = (LayoutHelper.XScreen(100) - detailFrame.width) / 2
+        self.detailFrame.origin.y = 40
+        
     }
     
     private func layout(_ animated: Bool = false, showingDetail: Bool = false){
         
-        self.backgroundIV.frame.size = CGSize(width: self.frame.width, height: self.backgroundIV.frame.height)
-        
-        guard animated else { return }
-        
-        if showingDetail { self.frame.size = CGSize(width: LayoutHelper.XScreen(85), height: LayoutHelper.YScreen(100) - 20)
-
+        if showingDetail {
+            
+            //self.transform = CGAffineTransform.identity       //Rescale to 100% after tapDownInside
+            self.frame = detailFrame
+            self.blurView.alpha = 1
+            self.layer.shadowOpacity = 0
         } else {
-             // Scale to full screen
+            
             self.frame = self.originalFrame
-        }
+            self.blurView.alpha = 0
+            self.layer.shadowOpacity = 1
+        }
+        
         detailSV.frame.size = self.frame.size
+        backgroundIV.frame.size = CGSize(width: self.frame.width, height: self.backgroundIV.frame.height)
+        backgroundIV.frame.origin = self.bounds.origin
     }
     
     
     //Actions
     @objc  func cardTapped(){
+        
+        guard shouldPresentDetailView else {
+            resetAnimated {
+                self.delegate?.cardDidTapInside?(card: self)
+            }
+            return
+        }
+        
         if !isDetailPresented {
             superview?.bringSubview(toFront: self)
-            showDetailAnimated()
+            
+            resetAnimated {
+                self.showDetailAnimated()
+            }
         }
     }
 

            if let color = new { self.layer.backgroundColor = color.cgColor }
            if backgroundColor != UIColor.clear { backgroundColor = UIColor.clear }
        }
    }
    
    override open var frame: CGRect {
        didSet{ layout() }
    }
    
    var delegate: CardDelegate?

    
    private func showDetailAnimated(){
        
        superview?.insertSubview(blurView, belowSubview: self)
        self.bounceIntensity = 7
        delegate?.cardWillShowDetailView?(card: self)
        
        // Layout
        UIView.animate(withDuration: 0.3, delay: 0, options: .curveEaseOut, animations: {
           
            self.layout(true, showingDetail: true)
            self.delegate?.cardIsShowingDetail?(card: self)
        }){ _ in
            
            self.prepareDetailView()
            self.isDetailPresented = true
            self.delegate?.cardDidShowDetailView?(card: self)
        }
        
        // Bounce
        UIView.animate(withDuration: 0.2, delay: 0, options: .curveEaseOut, animations: {
            
            self.transform = self.bounceTransform
            
        }) { _ in UIView.animate(withDuration: 0.3, delay: 0, options: .curveEaseOut, animations: {
                            
            self.transform = CGAffineTransform.identity
            })
