Index: wp-content/themes/twentyfourteen/contributor-page.php
===================================================================
--- wp-content/themes/twentyfourteen/contributor-page.php	(revision 0)
+++ wp-content/themes/twentyfourteen/contributor-page.php	(revision 0)
@@ -0,0 +1,39 @@
+<?php
+/**
+ * Template Name: Contributor Page
+ *
+ * @package WordPress
+ * @subpackage Twenty_Fourteen
+ */
+
+get_header(); ?>
+
+	<div id="primary" class="content-area">
+		<div id="content" class="site-content full-width" role="main">
+			<?php
+				while ( have_posts() ) :
+					the_post();
+			?>
+
+			<article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
+				<?php
+					the_title( '<header class="entry-header"><h1 class="entry-title">', '</h1></header><!-- .entry-header -->' );
+
+					twentyfourteen_list_authors();
+
+					edit_post_link( __( 'Edit', 'twentyfourteen' ), '<footer class="entry-meta"><span class="edit-link">', '</span></footer>' );
+				?>
+			</article><!-- #post-## -->
+
+			<?php
+					// If comments are open or we have at least one comment, load up the comment template.
+					if ( comments_open() || get_comments_number() )
+						comments_template();
+				endwhile;
+			?>
+		</div><!-- #content -->
+	</div><!-- #primary -->
+
+<?php
+get_sidebar();
+get_footer();
Index: wp-content/themes/twentyfourteen/functions.php
===================================================================
--- wp-content/themes/twentyfourteen/functions.php	(revision 25447)
+++ wp-content/themes/twentyfourteen/functions.php	(working copy)
@@ -340,6 +340,45 @@
 }
 endif;
 
+if ( ! function_exists( 'twentyfourteen_list_authors' ) ) :
+/**
+ * Prints a list of all site contributors who published at least one post.
+ *
+ * @return void
+ */
+function twentyfourteen_list_authors() {
+	$contributor_ids = get_users( array(
+		'fields'  => 'ID',
+		'orderby' => 'post_count',
+		'who'     => 'authors',
+	) );
+
+	foreach ( $contributor_ids as $contributor_id ) :
+		$post_count = count_user_posts( $contributor_id );
+
+		// Move on if user has not published a post (yet).
+		if ( ! $post_count )
+			continue;
+	?>
+
+	<div class="contributor clear">
+		<div class="contributor-avatar"><?php echo get_avatar( $contributor_id, 128 ); ?></div>
+		<div class="contributor-summary">
+			<h2 class="contributor-name"><?php echo get_the_author_meta( 'display_name', $contributor_id ); ?></h2>
+			<p class="contributor-bio">
+				<?php echo get_the_author_meta( 'description', $contributor_id ); ?>
+			</p>
+			<a class="contributor-posts-link genericon-document" href="<?php echo esc_url( get_author_posts_url( $contributor_id ) ); ?>">
+				<?php printf( __( '%d Articles', 'twentyfourteen' ), $post_count ); ?>
+			</a>
+		</div>
+	</div><!-- .contributor -->
+
+	<?php
+	endforeach;
+}
+endif;
+
 /**
  * Gets recent formatted posts that are not featured in FC plugin.
  *
Index: wp-content/themes/twentyfourteen/style.css
===================================================================
--- wp-content/themes/twentyfourteen/style.css	(revision 25447)
+++ wp-content/themes/twentyfourteen/style.css	(working copy)
@@ -326,6 +326,7 @@
 	*overflow: visible;  /* Corrects inner spacing displayed oddly in IE6/7 */
 }
 button,
+.contributor-posts-link,
 html input[type="button"],
 input[type="reset"],
 input[type="submit"] {
@@ -343,6 +344,7 @@
 	vertical-align: top;
 }
 button:hover,
+.contributor-posts-link:hover,
 html input[type="button"]:hover,
 input[type="reset"]:hover,
 input[type="submit"]:hover,
@@ -354,6 +356,7 @@
 	cursor: pointer;
 }
 button:active,
+.contributor-posts-link:active,
 html input[type="button"]:active,
 input[type="reset"]:active,
 input[type="submit"]:active {
@@ -1715,13 +1718,14 @@
 	margin: 24px 0 0;
 	margin: 2.4rem 0 0;
 }
+
 .post-navigation [rel="prev"],
 .post-navigation [rel="next"],
 .image-navigation .previous-image,
 .image-navigation .next-image  {
 	border-bottom: 1px solid rgba(0, 0, 0, 0.1);
 	-moz-box-sizing: border-box;
-	box-sizing: border-box;
+	box-sizing:      border-box;
 	float: none;
 	padding: 11px 10px;
 	padding: 1.1rem 1.0rem;
@@ -2301,6 +2305,48 @@
 	width: 198px;
 }
 
+/* =Contributor Page
+----------------------------------------------- */
+
+.contributor {
+	border-bottom: 1px solid rgba(0, 0, 0, 0.1);
+	-moz-box-sizing: border-box;
+	box-sizing:      border-box;
+	padding: 50px 0 35px;
+}
+.contributor-avatar {
+	float: left;
+	padding: 2px;
+	border: 1px solid #e7e7e7;
+	margin-right: 30px;
+}
+.contributor-avatar .avatar {
+	vertical-align: middle;
+}
+.contributor-summary {
+	float: left;
+	max-width: 474px;
+	width: -webkit-calc(100% - 164px);
+	width:         calc(100% - 164px);
+}
+.contributor-name {
+	font-size: 18px;
+	font-size: 1.8rem;
+	margin-bottom: 5px;
+	margin-bottom: 0.5rem;
+	text-transform: uppercase;
+}
+.contributor-bio {
+	color: #767676;
+}
+.contributor-posts-link {
+	display: inline-block;
+}
+.contributor-posts-link:before {
+	vertical-align: text-top;
+}
+
+
 /* =Media Queries
 ----------------------------------------------- */
 
@@ -2384,6 +2430,7 @@
 	.parent-post-link:before {
 		content: '';
 	}
+
 	.content-area .featured-post:before,
 	.content-area .post-format a:before,
 	.content-area .post-format + .entry-date a:before,
@@ -2401,7 +2448,6 @@
 		margin: 0 2px 0 0;
 		margin: 0 0.2rem 0 0;
 		text-transform: none;
-		vertical-align: top;
 	}
 	.content-area .entry-meta > span {
 		margin-right: 10px;
@@ -2676,6 +2722,7 @@
 	.error404 .content-area .page-header {
 		margin: 0 8.03571428% 0 12.5%;
 	}
+	.contributor,
 	.content-area .full-width .entry-header,
 	.content-area .full-width .entry-content,
 	.content-area .full-width footer.entry-meta {
@@ -2894,6 +2941,7 @@
 		padding: 0 0 12px;
 		padding: 0 0 1.2rem;
 	}
+	.contributor,
 	.content-area .full-width .entry-header,
 	.content-area .full-width .entry-content,
 	.content-area .full-width .page-content,
@@ -3015,6 +3063,7 @@
 	.error404 .content-area .page-header {
 		margin: 0 8.03571428% 0 12.5%;
 	}
+	.contributor,
 	.content-area .full-width .entry-header,
 	.content-area .full-width .entry-content,
 	.content-area .full-width .page-content,
@@ -3055,6 +3104,7 @@
 	.ephemera {
 		padding-right: 0;
 	}
+	.contributor,
 	.content-area .full-width .entry-header,
 	.content-area .full-width .entry-content,
 	.content-area .full-width .page-content,
