diff --git a/bootstrap.css b/bootstrap.css
index 54c1b06514ad5599dab416983034e29dbd1ffa74..8b943e2d3a18327e33b2c1f48c44d400f1fb2143 100644
--- a/bootstrap.css
+++ b/bootstrap.css
@@ -6,7 +6,7 @@
  * http://www.apache.org/licenses/LICENSE-2.0
  *
  * Designed and built with all the love in the world @twitter by @mdo and @fat.
- * Date: Sat Jan  7 04:20:37 PST 2012
+ * Date: Sat Jan  7 04:26:09 PST 2012
  */
 html, body {
   margin: 0;
@@ -824,6 +824,16 @@ textarea[readonly] {
   background-color: #bcddbc;
   border-color: #468847;
 }
+input:invalid, textarea:invalid, select:invalid {
+  color: #b94a48;
+  border-color: #ee5f5b;
+}
+input:invalid:focus, textarea:invalid:focus, select:invalid:focus {
+  border-color: #e9322d;
+  -webkit-box-shadow: 0 0 6px #f8b9b7;
+  -moz-box-shadow: 0 0 6px #f8b9b7;
+  box-shadow: 0 0 6px #f8b9b7;
+}
 .form-actions {
   padding: 17px 20px 18px;
   margin-top: 18px;
diff --git a/bootstrap.min.css b/bootstrap.min.css
index 2f0839b93180f2de7052048c0abdca6df3c82719..4075d46debc5a63e1e5d9d3adb6ff0a9ab524512 100644
--- a/bootstrap.min.css
+++ b/bootstrap.min.css
@@ -155,6 +155,7 @@ input[disabled],select[disabled],textarea[disabled],input[readonly],select[reado
 .control-group.success>label,.control-group.success .help-block,.control-group.success .help-inline{color:#468847;}
 .control-group.success input,.control-group.success textarea{color:#468847;border-color:#57a957;}.control-group.success input:focus,.control-group.success textarea:focus{border-color:#458845;-webkit-box-shadow:0 0 6px #9acc9a;-moz-box-shadow:0 0 6px #9acc9a;box-shadow:0 0 6px #9acc9a;}
 .control-group.success .input-prepend .add-on,.control-group.success .input-append .add-on{color:#468847;background-color:#bcddbc;border-color:#468847;}
+input:invalid,textarea:invalid,select:invalid{color:#b94a48;border-color:#ee5f5b;}input:invalid:focus,textarea:invalid:focus,select:invalid:focus{border-color:#e9322d;-webkit-box-shadow:0 0 6px #f8b9b7;-moz-box-shadow:0 0 6px #f8b9b7;box-shadow:0 0 6px #f8b9b7;}
 .form-actions{padding:17px 20px 18px;margin-top:18px;margin-bottom:18px;background-color:#f5f5f5;border-top:1px solid #ddd;}
 .uneditable-input{display:block;background-color:#ffffff;border-color:#eee;-webkit-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.025);-moz-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.025);box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.025);cursor:not-allowed;}
 input:-moz-placeholder{color:#999999;}
diff --git a/lib/forms.less b/lib/forms.less
index f0b7c2ea66df55b8e18ad6a828597809937c8817..19e2aa8bc1d124b7a3aaa7e488ed926b42bf9790 100644
--- a/lib/forms.less
+++ b/lib/forms.less
@@ -299,6 +299,19 @@ textarea[readonly] {
   .formFieldState(#468847, #57a957, lighten(#57a957, 30%));
 }
 
+// HTML5 invalid states
+// Shares styles with the .control-group.error above
+input:invalid,
+textarea:invalid,
+select:invalid {
+  color: #b94a48;
+  border-color: #ee5f5b;
+  &:focus {
+    border-color: darken(#ee5f5b, 10%);
+    .box-shadow(0 0 6px lighten(#ee5f5b, 20%));    
+  }
+}
+
 
 
 // FORM ACTIONS