diff --git a/django/contrib/admin/static/admin/css/base.css b/django/contrib/admin/static/admin/css/base.css
index d6a0da076b..a37555aeb5 100644
--- a/django/contrib/admin/static/admin/css/base.css
+++ b/django/contrib/admin/static/admin/css/base.css
@@ -20,10 +20,14 @@ a:link, a:visited {
     text-decoration: none;
 }
 
-a:hover {
+a:focus, a:hover {
     color: #036;
 }
 
+a:focus {
+    text-decoration: underline;
+}
+
 a img {
     border: none;
 }
@@ -33,6 +37,10 @@ a.section:link, a.section:visited {
     text-decoration: none;
 }
 
+a.section:focus, a.section:hover {
+    text-decoration: underline;
+}
+
 /* GLOBAL DEFAULTS */
 
 p, ol, ul, dl {
@@ -308,7 +316,7 @@ table thead th .text a {
     padding: 8px 10px;
 }
 
-table thead th.sortable:hover {
+table thead th .text a:focus, table thead th .text a:hover {
     background: #eee;
 }
 
@@ -359,10 +367,12 @@ table thead th.sorted .sortoptions a.sortremove:after {
     color: #999;
 }
 
+table thead th.sorted .sortoptions a.sortremove:focus:after,
 table thead th.sorted .sortoptions a.sortremove:hover:after {
     color: #447e9b;
 }
 
+table thead th.sorted .sortoptions a.sortremove:focus,
 table thead th.sorted .sortoptions a.sortremove:hover {
     background-position: 0 -14px;
 }
@@ -371,6 +381,7 @@ table thead th.sorted .sortoptions a.ascending {
     background-position: 0 -28px;
 }
 
+table thead th.sorted .sortoptions a.ascending:focus,
 table thead th.sorted .sortoptions a.ascending:hover {
     background-position: 0 -42px;
 }
@@ -380,6 +391,7 @@ table thead th.sorted .sortoptions a.descending {
     background-position: 0 -56px;
 }
 
+table thead th.sorted .sortoptions a.descending:focus,
 table thead th.sorted .sortoptions a.descending:hover {
     background-position: 0 -70px;
 }
@@ -405,7 +417,6 @@ input[type=number], textarea, select, .vTextField {
     border-radius: 4px;
     padding: 5px 6px;
     margin-top: 0;
-    outline: none;
 }
 
 input[type=text]:focus, input[type=password]:focus, input[type=email]:focus,
@@ -428,7 +439,6 @@ select[multiple] {
     background: #79aec8;
     padding: 10px 15px;
     border: none;
-    outline: none;
     border-radius: 4px;
     color: #fff;
     cursor: pointer;
@@ -439,6 +449,7 @@ a.button {
 }
 
 .button:active, input[type=submit]:active, input[type=button]:active,
+.button:focus, input[type=submit]:focus, input[type=button]:focus,
 .button:hover, input[type=submit]:hover, input[type=button]:hover {
     background: #609ab6;
 }
@@ -455,6 +466,7 @@ a.button {
 }
 
 .button.default:active, input[type=submit].default:active,
+.button.default:focus, input[type=submit].default:focus,
 .button.default:hover, input[type=submit].default:hover {
     background: #205067;
 }
@@ -633,7 +645,7 @@ div.breadcrumbs a {
     color: #fff;
 }
 
-div.breadcrumbs a:hover {
+div.breadcrumbs a:focus, div.breadcrumbs a:hover {
     color: #c4dce8;
 }
 
@@ -658,8 +670,9 @@ a.deletelink:link, a.deletelink:visited {
     color: #CC3434;
 }
 
-a.deletelink:hover {
+a.deletelink:focus, a.deletelink:hover {
     color: #993333;
+    text-decoration: none;
 }
 
 /* OBJECT TOOLS */
@@ -704,18 +717,26 @@ a.deletelink:hover {
     color: #fff;
 }
 
-.object-tools a:hover, .object-tools li:hover a {
+.object-tools a:focus, .object-tools a:hover {
     background-color: #417690;
 }
 
-.object-tools a.viewsitelink, .object-tools a.golink {
-    background: #999 url(../img/tooltag-arrowright.svg) 93% center no-repeat;
+.object-tools a:focus{
+    text-decoration: none;
+}
+
+.object-tools a.viewsitelink, .object-tools a.golink,.object-tools a.addlink {
+    background-repeat: no-repeat;
+    background-position: 93% center;
     padding-right: 26px;
 }
 
+.object-tools a.viewsitelink, .object-tools a.golink {
+    background-image: url(../img/tooltag-arrowright.svg);
+}
+
 .object-tools a.addlink {
-    background: #999 url(../img/tooltag-add.svg) 93% center no-repeat;
-    padding-right: 26px;
+    background-image: url(../img/tooltag-add.svg);
 }
 
 /* OBJECT HISTORY */
@@ -802,7 +823,7 @@ table#change-history tbody th {
     color: #fff;
 }
 
-#header a:hover {
+#header a:focus , #header a:hover {
     text-decoration: underline;
 }
 
@@ -849,7 +870,7 @@ table#change-history tbody th {
     border-bottom: 1px solid rgba(255, 255, 255, 0.25);
 }
 
-#user-tools a:hover {
+#user-tools a:focus, #user-tools a:hover {
     text-decoration: none;
     border-bottom-color: #79aec8;
     color: #79aec8;
@@ -909,6 +930,7 @@ table#change-history tbody th {
 }
 
 .delete-confirmation form input[type="submit"]:active,
+.delete-confirmation form input[type="submit"]:focus,
 .delete-confirmation form input[type="submit"]:hover {
     background: #a41515;
 }
@@ -926,11 +948,11 @@ table#change-history tbody th {
 }
 
 .delete-confirmation form .cancel-link:active,
+.delete-confirmation form .cancel-link:focus,
 .delete-confirmation form .cancel-link:hover {
     background: #ccc;
 }
 
-
 /* POPUP */
 .popup #content {
     padding: 20px;
diff --git a/django/contrib/admin/static/admin/css/changelists.css b/django/contrib/admin/static/admin/css/changelists.css
index 63cfe1bf61..fd9e784478 100644
--- a/django/contrib/admin/static/admin/css/changelists.css
+++ b/django/contrib/admin/static/admin/css/changelists.css
@@ -93,7 +93,6 @@
 }
 
 #changelist #toolbar form #searchbar:focus {
-    outline: none;
     border-color: #999;
 }
 
@@ -108,6 +107,7 @@
     color: #333;
 }
 
+#changelist #toolbar form input[type="submit"]:focus,
 #changelist #toolbar form input[type="submit"]:hover {
     border-color: #999;
 }
@@ -168,10 +168,6 @@
     color: #999;
 }
 
-#changelist-filter a:hover {
-    color: #036;
-}
-
 #changelist-filter li.selected {
     border-left: 5px solid #eaeaea;
     padding-left: 10px;
@@ -182,6 +178,12 @@
     color: #5b80b2;
 }
 
+#changelist-filter a:focus, #changelist-filter a:hover,
+#changelist-filter li.selected a:focus,
+#changelist-filter li.selected a:hover {
+    color: #036;
+}
+
 /* DATE DRILLDOWN */
 
 .change-list ul.toplinks {
@@ -203,6 +205,7 @@
     color: #999;
 }
 
+.change-list ul.toplinks .date-back a:focus,
 .change-list ul.toplinks .date-back a:hover {
     color: #036;
 }
@@ -232,7 +235,7 @@
     color: #5b80b2;
 }
 
-.paginator a.showall:hover {
+.paginator a.showall:focus, .paginator a.showall:hover {
     background: none;
     color: #036;
 }
@@ -248,7 +251,7 @@
     vertical-align: top;
 }
 
-.paginator a:hover {
+.paginator a:focus, .paginator a:hover {
     color: white;
     background: #036;
 }
@@ -309,6 +312,10 @@
     margin-left: 10px;
 }
 
+#changelist .actions select:focus {
+    border-color: #999;
+}
+
 #changelist .actions label {
     display: inline-block;
     vertical-align: middle;
@@ -329,6 +336,6 @@
     color: #333;
 }
 
-#changelist .actions .button:hover {
+#changelist .actions .button:focus, #changelist .actions .button:hover {
     border-color: #999;
 }
diff --git a/django/contrib/admin/static/admin/css/forms.css b/django/contrib/admin/static/admin/css/forms.css
index afdb559cba..2a21257b6a 100644
--- a/django/contrib/admin/static/admin/css/forms.css
+++ b/django/contrib/admin/static/admin/css/forms.css
@@ -53,7 +53,6 @@ form ul.radiolist label {
 form ul.radiolist input[type="radio"] {
     margin: -2px 4px 0 0;
     padding: 0;
-    outline: none;
 }
 
 form ul.inline {
@@ -276,6 +275,7 @@ body.popup .submit-row {
     color: #fff;
 }
 
+.submit-row a.deletelink:focus,
 .submit-row a.deletelink:hover,
 .submit-row a.deletelink:active {
     background: #a41515;
@@ -460,7 +460,6 @@ body.popup .submit-row {
     background: url(../img/icon-addlink.svg) 0 1px no-repeat;
     padding-left: 16px;
     font-size: 12px;
-    outline: 0; /* Remove dotted border around link */
 }
 
 .empty-form {
diff --git a/django/contrib/admin/static/admin/css/widgets.css b/django/contrib/admin/static/admin/css/widgets.css
index 979ae77cae..15d3f8341f 100644
--- a/django/contrib/admin/static/admin/css/widgets.css
+++ b/django/contrib/admin/static/admin/css/widgets.css
@@ -90,26 +90,32 @@
     display: block;
     text-indent: -3000px;
     overflow: hidden;
+    cursor: default;
+    opacity: 0.3;
+}
+
+.active.selector-add, .active.selector-remove {
+    opacity: 1;
+}
+
+.active.selector-add:hover, .active.selector-remove:hover {
+    cursor: pointer;
 }
 
 .selector-add {
     background: url(../img/selector-icons.svg) 0 -96px no-repeat;
-    cursor: default;
 }
 
-.active.selector-add {
+.active.selector-add:focus, .active.selector-add:hover {
     background-position: 0 -112px;
-    cursor: pointer;
 }
 
 .selector-remove {
     background: url(../img/selector-icons.svg) 0 -64px no-repeat;
-    cursor: default;
 }
 
-.active.selector-remove {
+.active.selector-remove:focus, .active.selector-remove:hover {
     background-position: 0 -80px;
-    cursor: pointer;
 }
 
 a.selector-chooseall, a.selector-clearall {
@@ -121,38 +127,41 @@ a.selector-chooseall, a.selector-clearall {
     font-weight: bold;
     line-height: 16px;
     color: #666;
+    text-decoration: none;
+    opacity: 0.3;
 }
 
-a.selector-chooseall {
-    padding: 0 18px 0 0;
-}
-
-a.selector-clearall {
-    padding: 0 0 0 18px;
-}
-
+a.active.selector-chooseall:focus, a.active.selector-clearall:focus,
 a.active.selector-chooseall:hover, a.active.selector-clearall:hover {
     color: #447e9b;
 }
 
+a.active.selector-chooseall, a.active.selector-clearall {
+    opacity: 1;
+}
+
+a.active.selector-chooseall:hover, a.active.selector-clearall:hover {
+    cursor: pointer;
+}
+
 a.selector-chooseall {
+    padding: 0 18px 0 0;
     background: url(../img/selector-icons.svg) right -160px no-repeat;
     cursor: default;
 }
 
-a.active.selector-chooseall {
+a.active.selector-chooseall:focus, a.active.selector-chooseall:hover {
     background-position: 100% -176px;
-    cursor: pointer;
 }
 
 a.selector-clearall {
+    padding: 0 0 0 18px;
     background: url(../img/selector-icons.svg) 0 -128px no-repeat;
     cursor: default;
 }
 
-a.active.selector-clearall {
+a.active.selector-clearall:focus, a.active.selector-clearall:hover {
     background-position: 0 -144px;
-    cursor: pointer;
 }
 
 /* STACKED SELECTORS */
@@ -283,6 +292,7 @@ table p.datetime {
     background: url(../img/icon-clock.svg) 0 0 no-repeat;
 }
 
+.datetimeshortcuts a:focus .clock-icon,
 .datetimeshortcuts a:hover .clock-icon {
     background-position: 0 -16px;
 }
@@ -292,6 +302,7 @@ table p.datetime {
     top: -1px;
 }
 
+.datetimeshortcuts a:focus .date-icon,
 .datetimeshortcuts a:hover .date-icon {
     background-position: 0 -16px;
 }
@@ -428,6 +439,7 @@ span.clearable-file-input label {
     color: #444;
 }
 
+.calendar td a:focus, .timelist a:focus,
 .calendar td a:hover, .timelist a:hover {
     background: #79aec8;
     color: white;
@@ -446,7 +458,8 @@ span.clearable-file-input label {
     padding: 1px 3px;
 }
 
-.calendarnav a:link, #calendarnav a:visited, #calendarnav a:hover {
+.calendarnav a:link, #calendarnav a:visited,
+#calendarnav a:focus, #calendarnav a:hover {
     color: #999;
 }
 
@@ -474,6 +487,7 @@ span.clearable-file-input label {
     background: url(../img/calendar-icons.svg) 0 0 no-repeat;
 }
 
+.calendarbox .calendarnav-previous:focus,
 .calendarbox .calendarnav-previous:hover {
     background-position: 0 -15px;
 }
@@ -483,6 +497,7 @@ span.clearable-file-input label {
     background: url(../img/calendar-icons.svg) 0 -30px no-repeat;
 }
 
+.calendarbox .calendarnav-next:focus,
 .calendarbox .calendarnav-next:hover {
     background-position: 0 -45px;
 }
@@ -496,7 +511,7 @@ span.clearable-file-input label {
     color: #333;
 }
 
-.calendar-cancel:hover {
+.calendar-cancel:focus, .calendar-cancel:hover {
     background: #ddd;
 }
 
@@ -524,10 +539,9 @@ ul.timelist, .timelist li {
     width: 16px;
     height: 16px;
     border: 0px none;
-    outline: 0; /* Remove dotted border around link */
 }
 
-.inline-deletelink:hover {
+.inline-deletelink:focus, .inline-deletelink:hover {
     cursor: pointer;
 }
 
@@ -542,6 +556,11 @@ ul.timelist, .timelist li {
 }
 
 .related-widget-wrapper-link:link {
+    opacity: .8;
+}
+
+.related-widget-wrapper-link:link:focus,
+.related-widget-wrapper-link:link:hover {
     opacity: 1;
 }