Index: src/js/_enqueues/admin/user-profile.js
===================================================================
--- src/js/_enqueues/admin/user-profile.js	(revision 45539)
+++ src/js/_enqueues/admin/user-profile.js	(working copy)
@@ -9,8 +9,6 @@
 		$pass1Row,
 		$pass1Wrap,
 		$pass1,
-		$pass1Text,
-		$pass1Label,
 		$pass2,
 		$weakRow,
 		$weakCheckbox,
@@ -36,7 +34,7 @@
 		}
 
 		if ( 1 !== parseInt( $toggleButton.data( 'start-masked' ), 10 ) ) {
-			$pass1Wrap.addClass( 'show-password' );
+			$pass1.attr( 'type', 'text' );
 		} else {
 			$toggleButton.trigger( 'click' );
 		}
@@ -50,26 +48,6 @@
 
 		$pass1Wrap = $pass1.parent();
 
-		$pass1Text = $( '<input type="text"/>' )
-			.attr( {
-				'id':           'pass1-text',
-				'name':         'pass1-text',
-				'autocomplete': 'off'
-			} )
-			.addClass( $pass1[0].className )
-			.data( 'pw', $pass1.data( 'pw' ) )
-			.val( $pass1.val() )
-			.on( 'input', function () {
-				if ( $pass1Text.val() === currentPass ) {
-					return;
-				}
-				$pass2.val( $pass1Text.val() );
-				$pass1.val( $pass1Text.val() ).trigger( 'pwupdate' );
-				currentPass = $pass1Text.val();
-			} );
-
-		$pass1.after( $pass1Text );
-
 		if ( 1 === parseInt( $pass1.data( 'reveal' ), 10 ) ) {
 			generatePassword();
 		}
@@ -80,65 +58,40 @@
 			}
 
 			currentPass = $pass1.val();
-			if ( $pass1Text.val() !== currentPass ) {
-				$pass1Text.val( currentPass );
-			}
-			$pass1.add( $pass1Text ).removeClass( 'short bad good strong' );
+
+			$pass1.removeClass( 'short bad good strong' );
 			showOrHideWeakPasswordCheckbox();
 		} );
 	}
 
-	function resetToggle() {
+	function resetToggle( show ) {
 		$toggleButton
-			.data( 'toggle', 0 )
 			.attr({
-				'aria-label': userProfileL10n.ariaHide
+				'aria-label': show ? userProfileL10n.ariaShow : userProfileL10n.ariaHide
 			})
 			.find( '.text' )
-				.text( userProfileL10n.hide )
+				.text( show ? userProfileL10n.show : userProfileL10n.hide )
 			.end()
 			.find( '.dashicons' )
-				.removeClass( 'dashicons-visibility' )
-				.addClass( 'dashicons-hidden' );
-
-		$pass1Text.focus();
-
-		$pass1Label.attr( 'for', 'pass1-text' );
+				.removeClass( show ? 'dashicons-hidden' : 'dashicons-visibility' )
+				.addClass( show ? 'dashicons-visibility' : 'dashicons-hidden' );
 	}
 
 	function bindToggleButton() {
 		$toggleButton = $pass1Row.find('.wp-hide-pw');
 		$toggleButton.show().on( 'click', function () {
-			if ( 1 === parseInt( $toggleButton.data( 'toggle' ), 10 ) ) {
-				$pass1Wrap.addClass( 'show-password' );
-
-				resetToggle();
-
-				if ( ! _.isUndefined( $pass1Text[0].setSelectionRange ) ) {
-					$pass1Text[0].setSelectionRange( 0, 100 );
-				}
+			if ( 'password' === $pass1.attr( 'type' ) ) {
+				$pass1.attr( 'type', 'text' );
+				resetToggle( false );
 			} else {
-				$pass1Wrap.removeClass( 'show-password' );
-				$toggleButton
-					.data( 'toggle', 1 )
-					.attr({
-						'aria-label': userProfileL10n.ariaShow
-					})
-					.find( '.text' )
-						.text( userProfileL10n.show )
-					.end()
-					.find( '.dashicons' )
-						.removeClass('dashicons-hidden')
-						.addClass('dashicons-visibility');
-
-				$pass1.focus();
-
-				$pass1Label.attr( 'for', 'pass1' );
+				$pass1.attr( 'type', 'password' );
+				resetToggle( true );
 
 				if ( ! _.isUndefined( $pass1[0].setSelectionRange ) ) {
 					$pass1[0].setSelectionRange( 0, 100 );
 				}
 			}
+			$pass1.focus();
 		});
 	}
 
@@ -147,8 +100,7 @@
 			$generateButton,
 			$cancelButton;
 
-		$pass1Row = $('.user-pass1-wrap');
-		$pass1Label = $pass1Row.find('th label').attr( 'for', 'pass1-text' );
+		$pass1Row = $('.user-pass1-wrap, .user-pass-wrap');
 
 		// hide this
 		$('.user-pass2-wrap').hide();
@@ -168,6 +120,9 @@
 		$pass1 = $('#pass1');
 		if ( $pass1.length ) {
 			bindPass1();
+		} else {
+			// Password field for the login form
+			$pass1 = $('#user_pass');
 		}
 
 		/**
@@ -189,7 +144,6 @@
 		if ( $pass1.is( ':hidden' ) ) {
 			$pass1.prop( 'disabled', true );
 			$pass2.prop( 'disabled', true );
-			$pass1Text.prop( 'disabled', true );
 		}
 
 		$passwordWrapper = $pass1Row.find( '.wp-pwd' );
@@ -211,18 +165,11 @@
 			// Enable the inputs when showing.
 			$pass1.attr( 'disabled', false );
 			$pass2.attr( 'disabled', false );
-			$pass1Text.attr( 'disabled', false );
 
-			if ( $pass1Text.val().length === 0 ) {
+			if ( $pass1.val().length === 0 ) {
 				generatePassword();
 			}
 
-			_.defer( function() {
-				$pass1Text.focus();
-				if ( ! _.isUndefined( $pass1Text[0].setSelectionRange ) ) {
-					$pass1Text[0].setSelectionRange( 0, 100 );
-				}
-			}, 0 );
 		} );
 
 		$cancelButton = $pass1Row.find( 'button.wp-cancel-pw' );
@@ -230,7 +177,7 @@
 			updateLock = false;
 
 			// Clear any entered password.
-			$pass1Text.val( '' );
+			$pass1.val( '' );
 
 			// Generate a new password.
 			wp.ajax.post( 'generate-password' )
@@ -248,9 +195,8 @@
 			// Disable the inputs when hiding to prevent autofill and submission.
 			$pass1.prop( 'disabled', true );
 			$pass2.prop( 'disabled', true );
-			$pass1Text.prop( 'disabled', true );
 
-			resetToggle();
+			resetToggle( false );
 
 			if ( $pass1Row.closest( 'form' ).is( '#your-profile' ) ) {
 				// Clear password field to prevent update
@@ -265,7 +211,6 @@
 			$pass1.prop( 'disabled', false );
 			$pass2.prop( 'disabled', false );
 			$pass2.val( $pass1.val() );
-			$pass1Wrap.removeClass( 'show-password' );
 		});
 	}
 
@@ -305,7 +250,7 @@
 		var passStrength = $('#pass-strength-result')[0];
 
 		if ( passStrength.className ) {
-			$pass1.add( $pass1Text ).addClass( passStrength.className );
+			$pass1.addClass( passStrength.className );
 			if ( $( passStrength ).is( '.short, .bad' ) ) {
 				if ( ! $weakCheckbox.prop( 'checked' ) ) {
 					$submitButtons.prop( 'disabled', true );
Index: src/wp-admin/css/forms.css
===================================================================
--- src/wp-admin/css/forms.css	(revision 45539)
+++ src/wp-admin/css/forms.css	(working copy)
@@ -1370,6 +1370,10 @@
 		box-sizing: border-box;
 	}
 
+	#profile-page .form-table #pass1 {
+		padding-right: 88px;
+	}
+
 	.form-table .form-required.form-invalid td:after {
 		float: right;
 		margin: -30px 3px 0 0;
Index: src/wp-admin/css/login.css
===================================================================
--- src/wp-admin/css/login.css	(revision 45539)
+++ src/wp-admin/css/login.css	(working copy)
@@ -80,9 +80,11 @@
 
 .login .password-input-wrapper {
 	position: relative;
+	margin: 2px 0 16px 0;
 }
 
 .login .input.password-input {
+	padding-right: 40px;
 	margin: 0;
 }
 
@@ -124,6 +126,36 @@
 	transform: none;
 }
 
+.login .wp-hide-pw-wrap {
+	vertical-align: middle;
+	height: 28px;
+}
+
+.login .wp-pwd {
+	position: relative;
+}
+
+.login .wp-pwd .button {
+	background: 0 0;
+	border: none;
+	box-shadow: none;
+	line-height: 2;
+	margin: 0;
+	padding: 5px 10px;
+	position: absolute;
+	right: 0;
+	top: 0;
+}
+
+.login .wp-pwd .button span.dashicons {
+	vertical-align: middle;
+	top: 0;
+}
+
+.no-js .hide-if-no-js{
+	display: none;
+}
+
 .login form {
 	margin-top: 20px;
 	margin-left: 0;
@@ -262,7 +294,7 @@
 
 .login #pass-strength-result {
 	font-weight: 600;
-	margin: -1px 5px 16px 0;
+	margin: -17px 5px 16px 0;
 	padding: 6px 5px;
 	text-align: center;
 	width: 100%;
Index: src/wp-login.php
===================================================================
--- src/wp-login.php	(revision 45539)
+++ src/wp-login.php	(working copy)
@@ -186,7 +186,10 @@
 
 	?>
 	</head>
-	<body class="login <?php echo esc_attr( implode( ' ', $classes ) ); ?>">
+	<body class="login no-js <?php echo esc_attr( implode( ' ', $classes ) ); ?>">
+	<script type="text/javascript">
+		document.body.className = document.body.className.replace('no-js','js');
+	</script>
 	<?php
 	/**
 	 * Fires in the login page header after the body tag is opened.
@@ -620,10 +623,10 @@
 		?>
 
 	<form name="lostpasswordform" id="lostpasswordform" action="<?php echo esc_url( network_site_url( 'wp-login.php?action=lostpassword', 'login_post' ) ); ?>" method="post">
-	<p>
-		<label for="user_login" ><?php _e( 'Username or Email Address' ); ?><br />
-		<input type="text" name="user_login" id="user_login" class="input" value="<?php echo esc_attr( $user_login ); ?>" size="20" autocapitalize="off" /></label>
-	</p>
+	<div>
+		<label for="user_login" ><?php _e( 'Username or Email Address' ); ?></label>
+		<input type="text" name="user_login" id="user_login" class="input" value="<?php echo esc_attr( $user_login ); ?>" size="20" autocapitalize="off" />
+	</div>
 		<?php
 		/**
 		 * Fires inside the lostpassword form tags, before the hidden fields.
@@ -633,11 +636,11 @@
 		do_action( 'lostpassword_form' );
 		?>
 		<input type="hidden" name="redirect_to" value="<?php echo esc_attr( $redirect_to ); ?>" />
-		<p class="submit"><input type="submit" name="wp-submit" id="wp-submit" class="button button-primary button-large" value="<?php esc_attr_e( 'Get New Password' ); ?>" /></p>
+		<div class="submit"><input type="submit" name="wp-submit" id="wp-submit" class="button button-primary button-large" value="<?php esc_attr_e( 'Get New Password' ); ?>" /></div>
 	</form>
 
-	<p id="nav">
-	<a href="<?php echo esc_url( wp_login_url() ); ?>"><?php _e( 'Log in' ); ?></a>
+	<div id="nav">
+		<a href="<?php echo esc_url( wp_login_url() ); ?>"><?php _e( 'Log in' ); ?></a>
 		<?php
 		if ( get_option( 'users_can_register' ) ) :
 			$registration_url = sprintf( '<a href="%s">%s</a>', esc_url( wp_registration_url() ), __( 'Register' ) );
@@ -646,9 +649,9 @@
 
 			/** This filter is documented in wp-includes/general-template.php */
 			echo apply_filters( 'register', $registration_url );
-	endif;
+		endif;
 		?>
-	</p>
+	</div>
 
 		<?php
 		login_footer( 'user_login' );
@@ -720,16 +723,19 @@
 	<input type="hidden" id="user_login" value="<?php echo esc_attr( $rp_login ); ?>" autocomplete="off" />
 
 	<div class="user-pass1-wrap">
-		<p>
-			<label for="pass1"><?php _e( 'New password' ); ?></label>
-		</p>
+
+		<label for="pass1"><?php _e( 'New password' ); ?></label>
 
 		<div class="wp-pwd">
 			<div class="password-input-wrapper">
 				<input type="password" data-reveal="1" data-pw="<?php echo esc_attr( wp_generate_password( 16 ) ); ?>" name="pass1" id="pass1" class="input password-input" size="24" value="" autocomplete="off" aria-describedby="pass-strength-result" />
-				<button type="button" class="button button-secondary wp-hide-pw hide-if-no-js">
-					<span class="dashicons dashicons-hidden" aria-hidden="true"></span>
-				</button>
+
+				<div class="wp-hide-pw-wrap hide-if-no-js">
+					<button type="button" class="button button-secondary wp-hide-pw" data-toggle="0" aria-label="<?php esc_attr_e( 'Hide password' ); ?>">
+						<span class="dashicons dashicons-hidden" aria-hidden="true"></span>
+					</button>
+				</div>
+
 			</div>
 			<div id="pass-strength-result" class="hide-if-no-js" aria-live="polite"><?php _e( 'Strength indicator' ); ?></div>
 		</div>
@@ -741,10 +747,10 @@
 		</div>
 	</div>
 
-	<p class="user-pass2-wrap">
-		<label for="pass2"><?php _e( 'Confirm new password' ); ?></label><br />
+	<div class="user-pass2-wrap">
+		<label for="pass2"><?php _e( 'Confirm new password' ); ?></label>
 		<input type="password" name="pass2" id="pass2" class="input" size="20" value="" autocomplete="off" />
-	</p>
+	</div>
 
 	<p class="description indicator-hint"><?php echo wp_get_password_hint(); ?></p>
 	<br class="clear" />
@@ -760,11 +766,11 @@
 		do_action( 'resetpass_form', $user );
 		?>
 	<input type="hidden" name="rp_key" value="<?php echo esc_attr( $rp_key ); ?>" />
-	<p class="submit"><input type="submit" name="wp-submit" id="wp-submit" class="button button-primary button-large" value="<?php esc_attr_e( 'Reset Password' ); ?>" /></p>
+	<div class="submit"><input type="submit" name="wp-submit" id="wp-submit" class="button button-primary button-large" value="<?php esc_attr_e( 'Reset Password' ); ?>" /></div>
 	</form>
 
-	<p id="nav">
-	<a href="<?php echo esc_url( wp_login_url() ); ?>"><?php _e( 'Log in' ); ?></a>
+	<div id="nav">
+		<a href="<?php echo esc_url( wp_login_url() ); ?>"><?php _e( 'Log in' ); ?></a>
 		<?php
 		if ( get_option( 'users_can_register' ) ) :
 			$registration_url = sprintf( '<a href="%s">%s</a>', esc_url( wp_registration_url() ), __( 'Register' ) );
@@ -773,9 +779,9 @@
 
 			/** This filter is documented in wp-includes/general-template.php */
 			echo apply_filters( 'register', $registration_url );
-	endif;
+		endif;
 		?>
-	</p>
+	</div>
 
 		<?php
 		login_footer( 'user_pass' );
@@ -832,14 +838,14 @@
 		login_header( __( 'Registration Form' ), '<p class="message register">' . __( 'Register For This Site' ) . '</p>', $errors );
 		?>
 	<form name="registerform" id="registerform" action="<?php echo esc_url( site_url( 'wp-login.php?action=register', 'login_post' ) ); ?>" method="post" novalidate="novalidate">
-	<p>
-		<label for="user_login"><?php _e( 'Username' ); ?><br />
-		<input type="text" name="user_login" id="user_login" class="input" value="<?php echo esc_attr( wp_unslash( $user_login ) ); ?>" size="20" autocapitalize="off" /></label>
-	</p>
-	<p>
-		<label for="user_email"><?php _e( 'Email' ); ?><br />
-		<input type="email" name="user_email" id="user_email" class="input" value="<?php echo esc_attr( wp_unslash( $user_email ) ); ?>" size="25" /></label>
-	</p>
+	<div>
+		<label for="user_login"><?php _e( 'Username' ); ?></label>
+		<input type="text" name="user_login" id="user_login" class="input" value="<?php echo esc_attr( wp_unslash( $user_login ) ); ?>" size="20" autocapitalize="off" />
+	</div>
+	<div>
+		<label for="user_email"><?php _e( 'Email' ); ?></label>
+		<input type="email" name="user_email" id="user_email" class="input" value="<?php echo esc_attr( wp_unslash( $user_email ) ); ?>" size="25" />
+	</div>
 		<?php
 		/**
 		 * Fires following the 'Email' field in the user registration form.
@@ -851,14 +857,14 @@
 	<p id="reg_passmail"><?php _e( 'Registration confirmation will be emailed to you.' ); ?></p>
 	<br class="clear" />
 	<input type="hidden" name="redirect_to" value="<?php echo esc_attr( $redirect_to ); ?>" />
-	<p class="submit"><input type="submit" name="wp-submit" id="wp-submit" class="button button-primary button-large" value="<?php esc_attr_e( 'Register' ); ?>" /></p>
+	<div class="submit"><input type="submit" name="wp-submit" id="wp-submit" class="button button-primary button-large" value="<?php esc_attr_e( 'Register' ); ?>" /></div>
 	</form>
 
-	<p id="nav">
-	<a href="<?php echo esc_url( wp_login_url() ); ?>"><?php _e( 'Log in' ); ?></a>
+	<div id="nav">
+		<a href="<?php echo esc_url( wp_login_url() ); ?>"><?php _e( 'Log in' ); ?></a>
 		<?php echo esc_html( $login_link_separator ); ?>
-	<a href="<?php echo esc_url( wp_lostpassword_url() ); ?>"><?php _e( 'Lost your password?' ); ?></a>
-	</p>
+		<a href="<?php echo esc_url( wp_lostpassword_url() ); ?>"><?php _e( 'Lost your password?' ); ?></a>
+	</div>
 
 		<?php
 		login_footer( 'user_login' );
@@ -1074,17 +1080,28 @@
 		} else {
 			$aria_describedby_error = '';
 		}
+
+		wp_enqueue_script( 'user-profile' );
 		?>
 
 	<form name="loginform" id="loginform" action="<?php echo esc_url( site_url( 'wp-login.php', 'login_post' ) ); ?>" method="post">
-	<p>
-		<label for="user_login"><?php _e( 'Username or Email Address' ); ?><br />
-		<input type="text" name="log" id="user_login"<?php echo $aria_describedby_error; ?> class="input" value="<?php echo esc_attr( $user_login ); ?>" size="20" autocapitalize="off" /></label>
-	</p>
-	<p>
-		<label for="user_pass"><?php _e( 'Password' ); ?><br />
-		<input type="password" name="pwd" id="user_pass"<?php echo $aria_describedby_error; ?> class="input" value="" size="20" /></label>
-	</p>
+	<div>
+		<label for="user_login"><?php _e( 'Username or Email Address' ); ?></label>
+		<input type="text" name="log" id="user_login"<?php echo $aria_describedby_error; ?> class="input" value="<?php echo esc_attr( $user_login ); ?>" size="20" autocapitalize="off" />
+	</div>
+		<div class="user-pass-wrap">
+			<label for="user_pass"><?php _e( 'Password' ); ?></label>
+			<div class="wp-pwd">
+				<div class="password-input-wrapper">
+					<input type="password" name="pwd" id="user_pass"<?php echo $aria_describedby_error; ?> class="input password-input" value="" size="20" />
+					<div class="wp-hide-pw-wrap hide-if-no-js" style="">
+						<button type="button" class="button button-secondary wp-hide-pw" data-toggle="0" title="<?php esc_attr_e( 'Show password' ); ?>" aria-label="<?php esc_attr_e( 'Show password' ); ?>">
+							<span class="dashicons dashicons-visibility"></span>
+						</button>
+					</div>
+				</div>
+			</div>
+		</div>
 		<?php
 		/**
 		 * Fires following the 'Password' field in the login form.
@@ -1093,8 +1110,8 @@
 		 */
 		do_action( 'login_form' );
 		?>
-	<p class="forgetmenot"><label for="rememberme"><input name="rememberme" type="checkbox" id="rememberme" value="forever" <?php checked( $rememberme ); ?> /> <?php esc_html_e( 'Remember Me' ); ?></label></p>
-	<p class="submit">
+	<div class="forgetmenot"><label for="rememberme"><input name="rememberme" type="checkbox" id="rememberme" value="forever" <?php checked( $rememberme ); ?> /> <?php esc_html_e( 'Remember Me' ); ?></label></div>
+	<div class="submit">
 		<input type="submit" name="wp-submit" id="wp-submit" class="button button-primary button-large" value="<?php esc_attr_e( 'Log In' ); ?>" />
 		<?php	if ( $interim_login ) { ?>
 		<input type="hidden" name="interim-login" value="1" />
@@ -1105,25 +1122,25 @@
 		<input type="hidden" name="customize-login" value="1" />
 	<?php endif; ?>
 		<input type="hidden" name="testcookie" value="1" />
-	</p>
+	</div>
 	</form>
 
-		<?php if ( ! $interim_login ) { ?>
-	<p id="nav">
-			<?php
-			if ( ! isset( $_GET['checkemail'] ) || ! in_array( $_GET['checkemail'], array( 'confirm', 'newpass' ) ) ) :
-				if ( get_option( 'users_can_register' ) ) :
-					$registration_url = sprintf( '<a href="%s">%s</a>', esc_url( wp_registration_url() ), __( 'Register' ) );
+	<?php if ( ! $interim_login ) { ?>
+	<div id="nav">
+		<?php
+		if ( ! isset( $_GET['checkemail'] ) || ! in_array( $_GET['checkemail'], array( 'confirm', 'newpass' ) ) ) :
+			if ( get_option( 'users_can_register' ) ) :
+				$registration_url = sprintf( '<a href="%s">%s</a>', esc_url( wp_registration_url() ), __( 'Register' ) );
 
-					/** This filter is documented in wp-includes/general-template.php */
-					echo apply_filters( 'register', $registration_url );
+				/** This filter is documented in wp-includes/general-template.php */
+				echo apply_filters( 'register', $registration_url );
 
-					echo esc_html( $login_link_separator );
-				endif;
-				?>
+				echo esc_html( $login_link_separator );
+			endif;
+			?>
 		<a href="<?php echo esc_url( wp_lostpassword_url() ); ?>"><?php _e( 'Lost your password?' ); ?></a>
-			<?php endif; ?>
-	</p>
+		<?php endif; ?>
+	</div>
 	<?php } ?>
 
 	<script type="text/javascript">
